Se plantea el siguiente proyecto:
Controlar la temperatura de una estufa eléctrica con una
termocopla tipo K, donde uno pueda “setear la temperatura” por medio de un potenciómetro
y un relé cambie sus velocidades de conmutación para calentar o hacer que se
enfríe la plancha metálica.
Entendiendo el problema:
- La plancha de metal estará fría desde su conexión.
- Con un potenciómetro se indicará la temperatura deseada
- Al momento de conectarla el sistema empezara a hacer que el relé interrumpa con tiempos de intervalo para calentar la plancha de metal.
- Cada vez que se esté acercando a la temperatura deseada el relé debe interrumpir más rápido y cuando llegue a dicha temperatura detendrá su conmutación.
- El PICAXE debe medir con ADC las muestras de la termocopla y asi controlar las temporizaciones, yo hice esto conectando la termocopla a mi multímetro midiendo temperatura y comparándola con la lectura de PICAXE.
Debes ver es el comportamiento de una
termocopla tipo K.
Así que haremos los siguientes circuitos, siento en este
caso el circuito de muestreo el más importante:
Control por relé
Circuito digital para PICAXE
Circuito de muestreo de termocopla
Ahora debemos usar un tema que ya habíamos visto en PICAXE
con interrupciones, solo que en vez de hacer interrupción por cambio de pin, haremos
interrupción por timer.
Con este simple código podemos calcular los tiempos en ticks
para la ejecución del timer según cada tiempo y variación de la temperatura,
solo es cuestión de simularlo y ver los resultados en :
Symbol PERIODO_TIEMPO = 50000 'número de microsegundos entre interrupcionesSymbol FRECUENCIA = 8 'frecuencia de operacion del picaxeSymbol TIEMPO_TICK = 256 / FRECUENCIASymbol TICKS_PRECARGADOS = PERIODO_TIEMPO / TIEMPO_TICKSymbol VALOR_PRECARGADO = 0 - TICKS_PRECARGADOSSymbol PRECARGA = VALOR_PRECARGADO & $FFFF‘Resultados:'1s = 20728'95ms = 35849'90ms = 37411'85ms = 38974'80ms = 40536'75ms = 42099'70ms = 43661'65ms = 45224'60ms = 46786'55ms = 48349'50ms = 49911'45ms = 51474'40ms = 53036'35ms = 54599'30ms = 56161'25ms = 57724'20ms = 59286'15ms = 60849'10ms = 62411'5ms = 63974
Teniendo dos lectura analogas, la del potenciometro y la de la salida del circuito de instrumentación. Y con estos cálculos de tiempo los agregamos a nuestro
programa final:
output c.4,c.5,b.6 'salida a reléb1 = 0b10 = 0w7 = 20728SetIntFlags $80, $80timer = $FFFFSetTimer w7ae:readadc c.3,b0 'lectura de valor analogico del potenciometroreadadc c.1,b2 'lectura de valor analogico de amplificador de instrumentacion de la termocopla'sertxd(#b11,"- ",#b2,13,10)'pause 100if b2 < 10 thenpwmout c.5,99,80 '24° temperatura ambienteendifif b2 > 10 and b2 < 21 thenpwmout c.5,99,120 '70° temperaturaendifif b2 > 20 and b2 < 30 thenpwmout c.5,99,145 '90° temperaturaendifif b2 > 29 and b2 < 60 thenpwmout c.5,99,160 '140° temperaturaendifif b2 > 59 and b2 < 71 thenpwmout c.5,99,220 '200° temperaturaendifif b2 > 70 and b2 < 96 thenpwmout c.5,99,300 '250° temperaturaendifif b2 > 95 thenpwmout c.5,99,350 '300° temperaturaendifgoto aeinterrupt:b11 = b0 - b2if b2 > b0 or b11 < 15 thenb10 = 1b5 = 0high b.6low b.5endifif b0 > b2 and b11 > 14 thenb10 = 0b5 = b0 - b2high b.5low b.6endifif b10 = 0 thentoggle c.4, b.0endifif b10 = 1 thenlow c.4endifif b5 > 9 and b5 < 20 thenb10 = 0w7 = 63974 '5ms interrupcionendifif b5 > 20 and b5 < 30 thenb10 = 0w7 = 59286 '10ms interrupcionendifif b5 > 30 and b5 < 50 thenb10 = 0w7 = 53036 '20ms interrupcionendifif b5 > 50 and b5 < 70 thenb10 = 0w7 = 49911 '30ms interrupcionendifif b5 > 70 and b5 < 90 thenb10 = 0w7 = 40536 '40ms interrupcionendifif b5 > 91 thenb10 = 0w7 = 20728 '50ms interrupcionendifSetIntFlags $80, $80timer = $FFFFSetTimer w7 '50ms interrupcionreturn
No hay comentarios:
Publicar un comentario