Duda con PWM arduino

Hola a todos, verán, debo hacer un sistema que se adapte a una temperatura que yo proporcione por medio del PWM de arduino y usando un LM35, es decir, yo doy una temperatura (35°) y el pwm tendrá que mandar cierto pulso para calentar una resistencia y llegar hasta la temperatura que yo di tomando en cuenta la temperatura ambiente obviamente. Siento que no es muy complicado porque ya he trabajado con el sensor de temperatura pero nunca he usado el PWM y estoy desorientado con su código y funcionamiento, el PWM modulará el voltaje que pase por la resistencia o no? el voltaje puede ser mayor a 5v porque he visto que lo máximo del PWM equivale a eso? ...
 
Sería un "Proporcional" , o sea que si estás muy por debajo de la temperatura fijada el PWM tendrá un ciclo alto , digamos un 90% , a medida que te vayas acercando a la temperatura seteada el ciclo se irá disminuyendo hasta llegar al 0 o a un digamos 2 % para mantener la temperatura.
 
hola ricardo, te comento, yo he trabajado con el pwm de arduino pero no con el sensor lm35, lo conozco "asi de vista" como quien diria...pero no lo he usado nunca, solo se que entrega una tension proporcional segun la temperatura que este sensando. el microcontrolador que estes usando dudo que entrege mas de 5v ya que creo que el 99,9% de los micros se los alimenta con 5v.
con respecto al codigo, tendrias que buscar el pinouts de tu microcontrolador para saber que patas soportan salida PWM. por ejemplo, el atmega328p tiene 6 salidas pwm las cuales las tenes que configurar primero como salidas.

pongamos de ejemplo el atmega328p

void setup() {

pinMode (3, OUTPUT); //aca configuro esta "pata" como salida
pinMode (5, INPUT); //aca configuro esta "pata" como entrada

}

entonces en la salida 3 (la salida n°3 es la pata 5 fisica del integrado) la puedo usar como pwm. y la entrada n°5 es el pin 11 del integrado. creo que por default todas las las patas estan configuradas como entradas y solo hay que configurar las que se van a usar como salidas.

esa es la parte de "configuracion" en el programa.

la linea de codigo de la salida pwm es la siguiente.

void loop ()
{
analogWrite (3, 128) // esta linea lo que hace es tirar una señal pwm cuadrada o al 50% ya que el minimo valor es 0 (apagado) y el maximo es (255). antes de todo eso tenes que mapear la entrada del sensor.

que significa mapear? no es otra cosa mas que cambiarle los limites minimo y maximos del valor que lee, o mejor dicho, que devuelve la funcion analogRead() (obviamente que todo depende lo que vayas a hacer)

por ejemplo, la entrada analogica del micro tiene una resolucion de 0 a 1023, y la salida analogica tiene 0 a 255... entonces si se quiere mostrar un pwm en un led de 0 a 1023 este led se apagaria 4 veces ya que al llegar a 256 la salida se reinicia a 0.

el mapeo es asi

val = analogRead(5); //val es una variable INT que tenes que crear
val = map(val, 0, 1023, 0, 255); //si el sensor envia 5v el micro retorna un valor de 1023
analogWrite(3, val); //entonces convierte los limites 0-1023 a 0-255
//para que puedas "escribir" pwm en la salida

claro que esto ya queda segun tu necesidad.

para calentar una R...vas a tener que usar un transistor a la salida y alimentar esa R con una fuente ya que el micro no te va a calientar una resistencia porque para que caliente con 5v la R tiene que ser muy chica. y si es de bajo valor vas a quemar el micro. te conviene usar un transistor y por lo menos una fuente de 15v con buena corriente para calentar era R.



fig-14.gif

esto seria lo ideal ya que aislas el micro con los 15v o lo que vayas a usar y no pasa nada.

-------------

fig-2.gif

sino esto es lo basico para una salida de potencia desde un micro.

espero haberte ayudado
 
Nos recomendaron usar 12v con resistencia de 10ohm pero el punto no es ese sino como hago esa relacion entre voltaje-temperatura, que el PWM sepa cuando llegó a la temperatura deseada y hacer que se mantenga.



si neutron me has aclarado los comandos del pwm sobre todo no entendia lo del mapeo, gracias!
 
Última edición:
tendrias que poner otro lm35 pegadito a la resistencia e ir aumentando de a poco el pwm hasta que el lm35 te tire el dato que esperas a determinada temperatura y ahi mantener ese ciclo de trabajo.. o sino ir haciendo un testeo, hay tester que vienen con medicion de temperatura...podrias setear un pwm y hacer saltos cada 5% y medir la temperatura en cada salto, te haces una tablita. entonces sabes que con un X% de pwm tenes Y°c.. entonces ya sabes que ciclo de trabajo necesitas para determinada temperatura de la R...

son ideas, seguro hay otras mejores
 
hola a todos tengo una duda sobre el arduino ,no conozco una forma de cambiar la frecuencia del pwm a lo que yo quiero generar ,he encontrado las fomas que se hace con los registro de los timers pero me dan unas frecuencias que no me funcionan ,la frecuencia que necesito es de 249 hz ,que se podria hacer ahi ?
 
Atrás
Arriba