0% encontró este documento útil (0 votos)
15 vistas7 páginas

Controlador Temperatura

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1/ 7

Reporte de Proyecto

“Controlador de temperatura usando el modulo PWM del


microcontrolador MC9S12”
Microprocesadores y microcontroladores

Junio 2009
Objetivo: Implementar un control de temperatura, aplicando los temas
vistos en el curso.

El proyecto consiste en un controlador de temperatura, utilizando el microcontrolador


MC9S12 de Freescale. El termostato usara los módulos del convertidor Analógico a
digital,ATD, el modulo modulación por ancho de pulso,PWM y el modulo de
comunicación serial, SCI.

El principio de funcionamiento es muy sencillo, un controlador de lazo cerrado al que se la


asigna un valor de referencia, una señal de entrada, y una señal de salida que será
retroalimentada para verificar el error que hay entre ambas señales. A su vez, este error será el
que se encargue de activar el modulo del PWM, si el error es positivo, significa que el voltaje
del sensor es mayor al del referencia y se activara de manera proporcional el pulso del PWM. Si
el error es negativo, se desactiva el PWM hasta que el error vuelva a ser positivo.

Los elementos externos son pocos, pero necesarios para el funcionamiento del proyecto. En la
figura 1 vemos el diagrama a bloques del proyecto.

R(s) + H(s)
Control

-
H(s)

Figura 1 Circuito de lazo cerrado

El controlador entonces, realizara una conversión de valores analógicos a digitales, comparará


los valores y realizará un ajuste para que el sistema se mantenga estable. Al mismo tiempo,
enviara los valores medidos directamente a una terminal de computadora, que pueden ser
vistos en el programa hyperterminal de Windows o cualquier otro programa que permita
visualizar los datos recibidos en el puerto serie.

Figura 2. Diagrama simplificado del controlador


El proceso será entonces, recibir la señal del actuador (LM35), amplificarla para que el
microcontrolador la pueda leer, convertirla a digital, recibir la señal de referencia y también
convertirla a digital, realizar una comparación de señales, y en base a esta comparación,
realizara el ajuste necesario, via el modulo de pwm, mientras mayor sea la diferencia de
señales, mayor será el ancho del pulso del modulo, para mantener la temperatura lo mas
cercana a la temperatura deseada. Cuando la diferencia de señales sea negativa, se encenderá
un calefactor via el puerto T, como se indica en la figura 2.

Para poder ver los valores de las señales, usaremos el modulo de Labview para visualizar datos
del puerto serie. Este modulo, es muy sencillo de implementar y tiene la ventaja de que
podemos conectar el controlador a cualquier computadora que disponga de este software para
realizar mediciones.

El diagrama de flujo es el siguiente:

Figura 3 Diagrama del controlador de temperatura


El programa principal es el siguiente, esta compilado con el software Metrowerks Codewarrior.

;*****************************************************************
;* Proyecto Final Microprocesadores *
;* Equipo 9 *
;* *
;* Termostato usando el PWM del mc9s12 y el puerto serial *
;*****************************************************************

ROMStart EQU $4000 ; absolute address to place code/constant data

; variable/data section
ORG RAMStart
; Insert here your data definition. For demonstration, temp_byte is used.
ref rmb 1
sensor rmb 1
error rmb 1

; code section
ORG ROMStart
Entry: LDS #RAMEnd
MOVB #$80,ATDCTL2 ; Se enciende el ATD.
ldaa #$FF ;retardo para estabilizar la inicializacion del atd
loop deca
bne loop
MOVB #$FF,DDRT ;Puerto T como salida
MOVB #$81,ATDCTL4 ; PROGRAMO TIMING
movw #26,SCI0BD ;prog vel de tranms 9600 bps
movb #$08,SCI0CR2 ;prendiendo la transmision
movb #$00,PWMCTL ;modo 8-bit
movb #$FF,PWMPOL ;Polaridad en High
movb #$00,PWMCAE ;alineado a la izquierda
movb #$00,PWMCLK ;PCLK3 = 0
movb #$70,PWMPRCLK ;PCKB = 7 division entre 128
movb #$FF,PWMPER3 ;Periodo del PWM igual a 255
movb #$08,PWME ;Habilta el canal 3 del PWM

MUESTREA MOVB #$10,ATDCTL5 ; multicanal a convertir


JSR ESPERA
;STAB PORTB
transmit brclr SCI0SR1,#$80,transmit
stab SCI0DRL ;Salida hacia el puerto serie para monitorear la temperatura
;clr PORTA
; LDAA ATDDR1H
;transmit2 brclr SCI0SR1,#$80,transmit2
; staa SCI0DRL ;Temperatura de referencia fijada por el usuario

ldaa ATDDR1H ;cargo en A el valor del Voltaje de referencia


staa ref ;almaceno en ref
ldab sensor
subb ref ;resto B(sensor) - ref y lo guardo en B : error
stab error
bmi MAYOR
bpl MENOR

MAYOR BSET PTT,#$02 ;La resta es negativa, por lo tanto se enciende el calefactor
BRA SIGUE
MENOR BCLR PTT,#$02 ;Apaga el calefactor
movb error,PWMDTY3 ;La resta es positiva, por lo tanto el valor sensado es mayor que la ref, y el ventilador enciende
;con un ciclo de trabajo de (error/255)*100
transmit brclr SCI0SR1,#$80,transmit
stab SCI0DRL ;Salida hacia el puerto serie para monitorear la temperatura

SIGUE BRA MUESTREA


ESPERA BRCLR ATDSTAT0,#$80,ESPERA ; Canal 0 del AD para recibir la temperatura del sensor LM35DZ
LDAB ATDDR0H ;cargo en B el dato del PAD0 que viene del sensor
stab sensor
RTS
Dato Hex Volts °C
255 FF 5 50
239 EF 4.68 46.8
213 D5 4.16 41.6
196 C4 3.82 38.2
180 B4 3.5 35
144 90 2.78 27.8
111 6F 2.12 21.2
105 69 2 20
104 68 1.98 19.8
56 38 1.02 10.2
0 0 0 0
Tabla 1 simplificada de valores del ATD y el sensor

En la tabla 1, vemos los datos simplificados, ya que la tabla completa es de 256 valores, en el
que encontramos que para tener el dato en grados centígrados, es necesario multiplicar por
una constante de proporcionalidad de 0.19607, los datos en código hexadecimal.

Figura 5 Valores del ATD para 8 bits de resolución

En la figura 5 vemos los valores del ATD para una resolución de 8 bits, y es de esta forma como
programamos el ATD en el programa principal. El PWM lo fijamos para un periodo de 255, y el
ciclo de trabajo es proporcional al error encontrado por la resta del valor del sensor, menos el
valor de la referencia. La comunicación serie se da con una velocidad de 9600 bps y se envían
dos datos, el valor del sensor, y el valor de la referencia. Esta señal se envía por código ASCII
al puerto serie de la computadora, por lo que es necesario implementar una interface que
decodifique los datos y los muestre como valor numérico. La interface la implementamos con el
programa Labview 6i.
En el diagrama 2 vemos el diagrama simplificado del termostato, y usamos un amplificador con
ganancia de 10 para acondicionar la señal del sensor LM35, a la entrada de ambas señales se
les coloco un circuito RC a manera de debouncing. La salida del canal del PWM, se envía a un
transistor que hace funcionar un ventilador.

Figura 4 Interface de Labview monitoreando los datos

En la figura siguiente, vemos el diagrama interno de la interface de Labview, donde podemos


observar, como convertimos del puerto serial, el string a arreglo de byte, para multiplicarlo por
0.196 que es el valor proporcional entre voltaje y temperatura (Tabla 1). Después del producto,
lo mandamos al display de salida.

Figura 5 Diagrama interno de la interface en Labview


MATERIAL EMPLEADO

Tarjeta de desarrollo RACOM MC9S12C32


Amplificador operacional LM358
Transistor BC547
Diodo 1N4001
Resistores y capacitores
Protoboard
Fuente de 12 V
Ventilador de 12 VCD

BIBLIOGRAFIA

G.J.Lipovski, “Introduction to Microcontrollers Architecture,Programming, and Interfacing for the


Motorola 6812”, 2nd Edition, Elsevier Academic Press

Página electrónica de Freescale Semiconductors www.freescale.com


Página elecrónica de National Instruments para Labview http://www.ni.com/

También podría gustarte