Bueno, hace rato que no subia nada para darle de comer a la revista Saber Electronica, asi que aqui nuevamente trayendoles algo para jugar en casa...
El control de la velocidad de un motor de alterna, puede ser algo bastante complicado, dependiendo la tecnica de control a emplear; Mas alla del tipo de motor que estemos empleando y el diseño de nuestra etapa de potencia, bien sabemos que el control de velocidad de un motor empleando los retardos para acortar los angulos de un triac, no es cosa sencilla, y la mayoria de las veces podemos llegar a chamusquear varios triac o incluso, quemar el motor...
En estos dias, se me acerco un amigo (Gaston), pidiendo una ayuda para ver como se podia atacar este tema con un micro Picaxe... Mi recomendacion, en vista de la magnitud de su proyecto y lo complejo que puiede llegar a ser hacer todo lo que el queria con tan solo un microcontrolador, fue recomendarle emplear otra tecnica de control; "La de variar la frecuencia de alimentacion", para obtener un control mas fino con pocos elementos. A todo esto, las caractersiticas de esta tecnica, es que no tenemos casi nada de complicaciones, no perdemos torque, el hardware es minusculo, y lo mejor de todo, no nos importa sincronizarnos con la red.
Vista del diagrama basico del presente trabajo:
Si bien, muchos de ustedes al igual que Gaston, van a querer aprovechar al maximo el microcontrolador anexando otras cosas mas, tengan en cuenta que los retardos que se suman por otras acciones, pueden afectar el correcto trabajo del motor.
Mis recomendaciones, en caso de querer emplear otro tipo de Picaxe, es que respeten la salida PWM, en este caso la salida 3; Si tienen la opcio de trabajarlo con un picaxe 08M, pongan este con un set de 8Mhz y veran maravillas.... Para los casos en que tengan que sumar paros automaticos y o ir a otras instrucciones, para ahorrarnos lineas y recursos empleados por varios comandos, yo les recomiendo emplear el comando BRANCH, que con un poco de mania, quizas puedan hacer algo similar a un WHILE...WEND en PBP.
Captura oscilosgrama de como trabaja el pwm y las salidas 6 y 7 cuando atacan a los transistores (tendria que haber acercado un poco mas la captura, por que no se ve muy claro como trabaja la tabla de la rutnia con efecto vectorial)
Captura oscilosgrama de variacion Max-Min (es una lastima que proteus no tenga un frecuencimetro para mostrarles los verdaderos resultados)
Rutina para el control de frecuencia con un Picaxe 18X;*************************************
;******** www.Ucontrol.com.ar ************
;********* Variador Frecuencia ************
;************* Picaxe 18X ***************
;*************************************
;*************************************
symbol basedelay = 52 ' seteamos como 50/60HZ la maxima velocidad
;*************************************
;************** I/O ******************
;*************************************
symbol PosSwitch = 7
symbol NegSwitch = 6
symbol PWMpin = 3
symbol SpeedPot = 0
;*************************************
;************* RAM *******************
;*************************************
symbol speed = b7
symbol stepctr = b8
symbol sineval = b9
symbol voltsval = b10
symbol delay = b11
symbol pwmval = w6
;*************************************
;********* Tabla de Datos ************
;*************************************
symbol VoltsTbl = 0
eeprom 0,(255,246,237,229,221,214,207,201)
eeprom 8,(195,190,184,179,175,170,166,162)
eeprom 16,(158,154,151,147,144,141,138,135)
eeprom 24,(133,130,128,125,123,121,118,116)
eeprom 32,(114,112,111,109,107,105,104,102)
eeprom 40,(101,99,98,96,95,93,92,91)
eeprom 48,(90,88,87,86,85,84,83,82)
eeprom 56,(81,80,79,78,77,76,75,74)
symbol SineTbl = 64
eeprom 64,(0,25,50,74,98,120,142,162)
eeprom 72,(180,197,212,225,236,244,250,254)
eeprom 80,(255,254,250,244,236,225,212,197)
eeprom 88,(180,162,142,120,98,74,50,25)
;**************************************
;**************************************
;**************************************
Main:
low PWMpin
pause 1000
do
gosub LeerValor_pote ' Lectura del pote velocidad,y seteo de constante
high NegSwitch ' genera media onda positiva
low PosSwitch
gosub EnviaCiclo_trabajo
high PosSwitch ' genera media onda negativa
low NegSwitch
gosub EnviaCiclo_trabajo
loop
end
LeerValor_pote:
readadc 0,b1
if b1 = speed then
return
endif
speed = b1
b1 = 255 - b1
b1 = b1 / 4 ' b1 = 0 (min velocidad) a63 (max velocidad)
read b1,voltsval ' introducimos el valor dela constante voltaje
b1 = b1 * 2
delay = basedelay + b1 ' seteo del retardo parapulso de salida
return
EnviaCiclo_trabajo:
for stepctr = 0 to 31
b0 = SineTbl + stepctr ' introducimos el valor para la onda
read b0,sineval
pwmval = sineval * voltsval ' constante multiplicadora por tension
pwmval = pwmval / 64
pwmout PWMpin,254,pwmval ' envia el valor equivalente
PWM (0 a 1016)
pulsout 3,delay ' retardo
next
return
;*****************************************************************************
;*****************************Fin del Programa************************************