Documente Academic
Documente Profesional
Documente Cultură
16F84
Hay muchos mecanismos, motores pequeos, particularmente servo PWM de
codificacin que utilizan como medio de entrada. Seales PWM tambin se pueden
utilizar para variar el voltaje aplicado a un dispositivo mediante el logro de una tensin
media efectiva. Con tan muchas aplicaciones, por lo tanto, es necesario disponer de un
medio fiable de generar una seal PWM.
MOTIVACIN Y AUDIENCIA
El foco de este tutorial es demostrar un mtodo para generar una seal PWM utilizando
un PIC 16F84. Este tutorial te ensear:
Qu es una seal PWM.
Cmo escribir cdigo para generar una seal PWM utilizando un PIC 16F84.
Para ello, se supone que usted ya:
ANTECEDENTES
Figura 1
Una seal PWM es simplemente un pulso de longitud variable, en efecto, una onda
rectangular. Esto se ilustra en la Figura 1, que tambin muestra cmo un servo puede
reaccionar a diferentes entradas PWM. Para nuestro circuito, la tensin mxima emitida
ser de 5 V CC, y la mnima ser de 0 V CC. La longitud del impulso generado es
algunas veces charcterized por un ciclo de trabajo. El ciclo de trabajo es el porcentaje de
la seal que la salida permanece alta. Por ejemplo, una constante de 5 V sera
equivalente a un ciclo de trabajo del 100%. Una salida de onda cuadrada tpica de un
generador de funcin tiene un ciclo de trabajo del 50%. 0 V corresponderan a un ciclo
de trabajo del 0%.
PROGRAMACIN
PWM.asm
;
;
;
;
;
ARCHIVO: PWM.asm
AUTH: Keith Sevcik
FECHA: 05/21/03
DESC: Este programa genera una forma de onda PWM.
NOTA: Probado en PIC16F84-04 / P
; -------------------------------------------------------------------org 0x000
movlw 0x00, 0x00 W de carga con hacer la salida del puerto B
tris PORTB; copia W tristate a las salidas del puerto B
movlw 0x00; w relleno con ceros
movwf PORTB; set puerto b salidas a menor
Rstrt movlw d'0 '
movwf PORTB
movlw d'157 ', la duracin del ciclo de servicio
movwf deber
b0loop movf deber, w
movwf temp
bsf PORTB, 0
PWMA nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
decfsz temp
Ir PWMA
movlw d'255 '
movwf temp
movf deber, w
subwf temp, f
BCF PORTB, 0
pwmb nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
decfsz temp
Ir pwmb
Ir Rstrt
; --------------------------------------------------------------------final
; --------------------------------------------------------------------, Al tiempo de grabacin, seleccione:
, Memoria uprotected
, Temporizador watchdog deshabilitado
Encabezado y compara
La primera parte del cdigo es el encabezado y el registro equivale. Para obtener ms
informacin sobre el significado de la cabecera de ver el tutorial anterior.
Lista p = 16F84
radix hex
; --------------------------------------------------------------------PORTB equ 0x06; puerto b equiparar
deber equ 0x0C, longitud de ciclo de trabajo
temp equ 0x0d, longitud de ciclo de trabajo
; -------------------------------------------------------------------c equ 0, bit de estado para comprobar despus de la sustraccin
; -------------------------------------------------------------------org 0x000
El equiparar slo signifficance aqu es PWM. Este registro se utiliza para almacenar la
longitud de la seal PWM a ser generado.
INSTRUCCIONES
La siguiente porcin de cdigo contiene las instrucciones reales que indican al PIC que
hacer.
inicio movlw 0x00; W de carga con 0x00 hacen salida del puerto B
tris PORTB; copia W tristate a las salidas del puerto B
movlw 0x00; w relleno con ceros
movwf PORTB; set puerto b salidas a menor
Estas lneas establecen puerto B como salidas. Todas las salidas son, entonces, a la baja.
Rstrt movlw d'0 '
movwf PORTB
movlw d'157 ', la duracin del ciclo de servicio
movwf deber
Despus de configurar los puertos, se inicia el bucle principal. Al principio del bucle
principal, todos los hoteles, los pines del puerto se encuentran a la baja slo en caso de
que son altos cuando no deberan. El ciclo de trabajo se ajusta entonces a 157 (un ciclo
de trabajo del 50%. 255 corresponde a 100% y el 0 corresponde a 0%).
b0loop movf deber, w
movwf temp
bsf PORTB, 0
PWMA nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
decfsz temp
Ir PWMA
La siguiente porcin de cdigo genera la parte baja de la seal PWM. El valor 255 se
almacena en la temperatura, y el ciclo de trabajo se resta de esta. Esto le da a la longitud
restante de la seal a ser generado. Temperatura se decrementa a continuacin, de la
misma manera que el anterior, esta vez con B0 conjunto a bajo. Una vez que toda la
seal PWM se ha generado, se repite el cdigo.
Este cdigo hace que una seal PWM para ser generado con un ciclo de trabajo
proporcional al valor establecido. La frecuencia de la seal tambin se puede ajustar
mediante la variacin del retardo (el nmero de NOP de utilizado).
APLICACIONES
Una aplicacin comn de las seales de PWM es de control del motor. Al variar el ciclo
de trabajo de una seal PWM enviada a un motor, se puede variar la potencia efectiva
de la seal y por lo tanto reducir la velocidad del motor o reducir la velocidad del motor
hasta en funcin del tiempo de un pulso que enva al motor. La seal generada por el
PIC no se puede conectar directamente al motor, sin embargo, debido a que el PIC es
incapaz de manejar la potencia requerida por el motor. Por lo tanto, es necesario el uso
de un transistor para regular el flujo de corriente al motor. Un transistor es como un
interruptor elctrico. Cuando se enva un lgico alto (+5 V) para el transistor, que
permite que la corriente fluya. Cuando se enva un lgico bajo (0 V), que restringe el
flujo de corriente. Para las seales digitales, esto significa que la seal puede ser
reproducida exactamente, excepto la nueva seal se escala hasta una corriente mucho
ms grande. La Figura 2 muestra un esquema para controlar un motor utilizando un
transistor NPN TIP31.
La figura 2
Como muestra la esquemticas, la salida de la seleccin est conectado a la base. El
terminal negativo del motor se conecta entonces a la base y el colector est conectado a
tierra. Cuando el otuput PWM del PIC se enva al transistor, que le dar la vuelta al
transistor encendido y apagado y posteriormente generar la misma seal PWM al motor,
lo que le permite controlar el motor con una seal PWM.
PALABRAS FINALES
Despus de completar este tutorial, debe estar familiarizado con las seales PWM y
cmo programar un PIC 16F84 para generarlos.
Si tiene alguna pregunta acerca de este tutorial que me puedes escribir a
Keithicus@drexel.edu .