Sunteți pe pagina 1din 7

Creacin de una seal PWM usar un PIC

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:

Haber completado "una va rpida a la programacin de PIC" .

El resto del tutorial se presenta de la siguiente manera:

Lista de Componentes y Suministros


Fondo
Programacin
Aplicaciones
Palabras finales

LISTA DE PIEZAS Y FUENTES


Para completar este tutorial, debe tener el circuito del tutorial "una va rpida para PIC
de programacin" (menos los interruptores DIP y circuitos LED resistencias). Este
circuito ser la nica parte requerida para este tutorial. Usted tambin necesitar una
fuente de alimentacin de CC y el acceso a un osciloscopio para observar la seal.

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

; --------------------------------------------------------------------; Cpu equipara (mapa de memoria)


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
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

; Cristal estndar (4 MHz)


, Encendido con temporizador en la

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

El siguiente fragmento de cdigo es el bucle de la seal PWM generada en el pin B0. El


bucle pwm1a genera la parte alta de la seal PWM. El ciclo de trabajo se almacena en
temperatura y luego el pasador est en lo alto. despus de una pausa, la temperatura se
reduce y con tal de que no llega a cero la pausa se repite y la temperatura se disminuye
de nuevo. Despus de temperatura llega a cero, el cdigo contina.
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

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 .

S-ar putea să vă placă și