Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PIC 16F84
Hay muchos pequeos mecanismos, en particular los servomotores, que utilizan
codificacin PWM como un medio de entrada. seales PWM tambin se pueden utilizar
para variar el voltaje aplicado a un dispositivo mediante la consecucin de una tensin
media efectiva. Con tantas aplicaciones, por lo tanto, es necesario contar con un medio
confiable para generar una seal PWM.
MOTIVACIN Y PBLICO
El objetivo de este tutorial es demostrar un mtodo para generar una seal PWM utilizando
un PIC 16F84. Este tutorial le ensear:
de resistencia LED). Este circuito ser la nica parte requerida para este tutorial. Tambin
necesitar un adaptador de corriente y el acceso a un osciloscopio para observar la seal.
FONDO
Figura 1
Una seal PWM es simplemente un impulso 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 ser
emitida +5 V CC, y la mnima ser 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 + 5V sera equivalente a un
ciclo de trabajo del 100%. Una salida de onda cuadrada tpica de un generador de funciones
tiene un ciclo de trabajo del 50%. 0 V correspondera a un ciclo de trabajo 0%.
PROGRAMACIN
PWM.asm
;
;
;
;
;
ARCHIVO: PWM.asm
AUTH: Keith Sevcik
FECHA: 5/21/03
DESC: Este programa genera una forma de onda PWM.
NOTA: Probado en PIC16F84-04 / P
; -------------------------------------------------------------------org 0x000
movlw 0x00; carga W con 0x00 hacer salida del puerto B
PORTB tris; copiar de triple W a las salidas del puerto B
movlw 0x00; w llenar con ceros
PORTB movwf; Configure el puerto b salidas a la baja
Rstrt movlw d'0 '
movwf PORTB
movlw d'157 '; Deber duracin del ciclo
deber movwf
b0loop deber MOVF, w
temp movwf
PORTB BSF, 0
PWMA nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
temp DECFSZ
Goto PWMA
movlw d'255 '
temp movwf
deber MOVF, w
temp SUBWF, f
PORTB millones de pies cbicos, 0
nop pwmb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
temp DECFSZ
pwmb Goto
Goto Rstrt
; --------------------------------------------------------------------fin
; --------------------------------------------------------------------; en el tiempo de combustin, seleccione:
; memoria uprotected
; temporizador de vigilancia desactivado
; cristal estndar (4 MHz)
; power-up Timer On
Encabezado y equivale
La primera parte del cdigo es el encabezado y el registro equivale. Para obtener ms
informacin sobre el significado de la cabecera ver el tutorial anterior.
Lista P = 16F84
hexagonal radix
; --------------------------------------------------------------------PORTB equ 0x06; b equivale puerto
0x0c equ deber; longitud del ciclo de trabajo
temp 0x0D equ; longitud del ciclo de trabajo
; -------------------------------------------------------------------c equ 0;
; -------------------------------------------------------------------org 0x000
La nica equate de signifficance aqu es PWM. Este registro se utiliza para almacenar la
longitud de la seal PWM se genere.
INSTRUCCIONES
La siguiente porcin de cdigo contiene las instrucciones reales que cuentan la PIC qu
hacer.
iniciar movlw
PORTB
movlw
PORTB
Estas lneas configurar el puerto B como salidas. Todas las salidas se establecen a
continuacin, a la baja.
Rstrt movlw d'0 '
movwf PORTB
movlw d'157 ';
deber movwf
Despus de configurar los puertos, se inicia el bucle principal. Al comienzo del bucle
principal, todos los pines del puerto B se ajustan a la baja slo en caso de que son altos
cuando no deberan ser. 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 deber MOVF, w
temp movwf
PORTB BSF, 0
PWMA nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
temp DECFSZ
Goto PWMA
temp SUBWF, f
PORTB millones de pies cbicos, 0
nop pwmb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
temp DECFSZ
pwmb Goto
Goto Rstrt
La siguiente parte del cdigo genera la parte baja de la seal PWM. El valor 255 se
almacena en temp, y el ciclo de trabajo se resta de este. Esto le da a la longitud restante de
la seal que se genera.Temperatura se decrementa entonces de la misma manera que antes,
esta vez con el conjunto de B0 a bajo. Una vez que se ha generado toda la seal PWM, el
cdigo se repite.
Este cdigo hace que una seal de PWM para ser generado con un ciclo de trabajo
proporcional a el conjunto de valores. 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 control del motor. Al variar el ciclo de
trabajo de una seal PWM enviado a un motor, se puede variar la potencia efectiva de la
seal y por lo tanto reducir la velocidad del motor o acelerar el motor hasta dependiendo de
la duracin de un pulso se 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 tanto, es necesario utilizar un transistor para regular el
flujo de corriente al motor. Un transistor es como un interruptor elctrico. Cuando se enva
un estado lgico alto (+ 5V) 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 reproducido con exactitud, excepto la nueva seal se
escala hasta una corriente mucho ms grande. La figura 2 muestra un esquema de control
de un motor utilizando un transistor NPN TIP31.
Figura 2
Como muestra el esquemticas, la salida de la recogida est conectado a la base. El
terminal negativo del motor se conecta a la base y el colector est conectado a
tierra. Cuando el PWM otuput de la PIC se enva al transistor, se le dar la vuelta al
transistor encendido y apagado y posteriormente generar la misma seal PWM al motor, lo
que permite controlar el motor con una seal PWM.
ULTIMAS PALABRAS
Despus de completar esta gua 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 puede enviar por correo electrnico
a Keithicus@drexel.edu .
http://www.pages.drexel.edu/~kws23/tutorials/PWM/PWM.html
Usted puede saber que cuando se trata de mquinas, la programacin se utiliza a menudo
para indicar a la mquina cmo interactuar con su mundo. Pero alguna vez se pregunt
cmo se implementa realmente fsicamente esta programacin? Una forma es utilizar las
fotografas (controladores programables de interrupcin). Estos chips permiten escribir
cdigo que lee las seales de entrada, realiza funciones y enva seales a las salidas
basndose en las condiciones que se definan. Este tutorial se explica el proceso bsico de la
escritura de programas para las fotos y "quema" esos programas en el dispositivo.
MOTIVACIN Y PBLICO
El objetivo de este tutorial es conseguir rpidamente familiarizado con los PIC
para que pueda empezar a utilizarlos en sus aplicaciones. Como tal, este
tutorial te ensear cmo:
Ultimas palabras
LISTA DE PIEZAS Y FUENTES
Se requerir la mayora de las piezas para construir un circuito para probar sus programas
en. Las piezas que se indican en la Tabla 1 son los consumibles utilizados en el circuito:
TABLA 1
PARTE DESCRIPCIN
VENDEDO
PARTE PRECIO (2002)
R
PIC16F84-04 / P
Jameco
145.1
5.95
11
40-PIN ZIF
Jameco
10402
10.95
9
Interruptor pulsador
Jameco
71642 1.49
8-POSICION DIP
Jameco
38842 0,79
27967 1.89
0,1 UF PAC
Jameco
Jameco
160.8
0.39
81
Jameco
104.0
1.95
53
Jameco
104.2
0.29
56
CANT
100 ohmios
220 ohmios
JUNTA DE 6 PULGADAS
PROTOTIPADO CIRCUITO
RADIO
SHACK
276170
2.99
RADIO
SHACK
276158
2.39
El PIC vamos a utilizar (PIC16F84) fue elegido porque es un PIC muy comn y porque
puede ser programado y reprogramado sin hardware adicional (muchos PIC debe ser
expuesto a la luz UV para borrar los programas existentes).
Para construir el circuito, tambin necesitar:
tambin un recurso muy valioso en el aprendizaje de cmo utilizar los PIC. En este tutorial
se refiere al libro para aclarar una parte del cdigo.
CONSTRUCCIN
El circuito utilizado para probar los programas PIC se representa en la figura 1.
Figura 1
Este circuito est configurado para probar y mostrar las funciones bsicas del CFP. En este
tutorial, Puerto B en el PIC (prendedores 6- 13) se utiliza como una salida. Los LED estn
conectados a todos los 8 de las lneas del puerto B, y se iluminarn cuando la lnea se
establece en un nivel lgico alto o "1". Port A (patillas 17, 18, 1, 2 y 3) se utiliza como una
entrada. Sus lneas estn conectadas a los interruptores DIP, que fijar la lnea a un lgico
alto cuando el interruptor est en la posicin "On".
Se recomienda que los circuitos LED y el interruptor dip ser construidos sobre una tabla
separada y conectados al PIC a travs de un cable. Esto le permite construir circuitos ms
complicados en el futuro y cambiar fcilmente entre los circuitos.
Un ZIF (fuerza de insercin cero) toma se utiliza para hacer la instalacin y retirada
repetidas de la PIC fcil, y para ayudar a prevenir las patillas de la PIC se dae.
PROGRAMACIN
Lo que sigue son unos pocos cdigos de ejemplo que ilustran la funcionalidad
del PIC. En cada caso, se le dar el cdigo, seguido de una explicacin de cmo
funciona el cdigo.
ARCHIVO: outLed.asm
AUTH: (Su nombre aqu)
FECHA: (fecha)
DESC: Hace B0, B2, B4, B6 y B1 baja, B3, B5, B7 hi
NOTA: Probado en PIC16F84-04 / P.
Refs: Fcil Pic'n p. 23 (Predko p. 173 es falsa?)
Lista P = 16F84
hexagonal radix
hecho
fin
; --------------------------------------------------------------------; en el tiempo de combustin, seleccione:
; memoria uprotected
; temporizador de vigilancia desactivado
; cristal estndar (4 MHz)
; power-up Timer On
Al evaluar el cdigo de seguridad, en primer lugar, es importante darse cuenta de que todo
lo que despus de un punto y coma es un comentario y es ignorado por el compilador. El
cdigo real utilizado por el compilador para programar el PIC se muestra a continuacin:
Lista P = 16F84
hexagonal radix
myPortB equ 0x06
org 0x000
iniciar movlw 0x00
tris myPortB
b'10101010 movlw '
movwf myPortB
Goto crculo crculo
fin
ENCABEZAMIENTO
La primera parte del cdigo se llama la cabecera. Esta informacin ayuda al compilador
para formatear el cdigo correctamente. En nuestro caso, cada cabecera ser idntico.
La primera lnea
Lista p = 16F84
org es sinnimo de origen. La funcin org tiene algunos usos especiales, pero este tutorial
slo se utiliza la sentencia org como se muestra. Cuando se utiliza de esta manera, la
declaracin org define el principio del cdigo.
INSTRUCCIONES
La siguiente porcin de cdigo contiene las instrucciones reales que cuentan la PIC qu
hacer.
iniciar movlw 0x00
Esta lnea est etiquetado como el inicio del cdigo. La funcin 'movlw' mueve un literal
(un nmero) al registro W. archivo No se puede asignar directamente los valores de
presentar registros. Todos los valores deben primero pasar a travs del registro W.
tris myPortB
Este comando etiquetas de la lnea de cdigo como "crculo", y luego se refiere bac a s
mismo, estableciendo as el programa en un bucle continuo.
FIN
Por ltimo, el compilador se le dice que ha llegado al final del cdigo con una declaracin
final.
fin
ARCHIVO: Dip2Led.asm
AUTH: (Su nombre aqu)
FECHA: (fecha)
DESC: Leer Puerto Un interruptor DIP y la pantalla LED de puerto B
NOTA: Probado en PIC16F84-04 / P.
Refs: Fcil Pic'n p. 60
Lista P = 16F84
hexagonal radix
bucle infinito
fin
; --------------------------------------------------------------------; en el tiempo de combustin, seleccione:
; memoria uprotected
; temporizador de vigilancia desactivado
; cristal estndar (4 MHz)
; power-up Timer On
Este cdigo es muy similar al cdigo anterior. Puerto B se declara como salidas de la
misma manera. En este caso, el puerto A se define como entradas por el cdigo
movlw 0xFF
tris myPortA
Esto llena el registro W con 1 de, y utiliza los de 1 a declarar el puerto A como entradas. En
lugar de asignar un literal al puerto B, el puerto A se lee en el registro W.
MOVF myPortA, w
Este comando dice mover el archivo de registro 'myPortA' en el registro W. Y como antes,
el contenido del registro W se asignan a los LED en el puerto B
movwf myPortB
;
;
;
;
;
;
;
;
;
modo
;
;
ARCHIVO: Clock.asm
AUTH: (Su nombre aqu)
FECHA: (fecha)
DESC: 1.0 - Temporizador interno, comenzar a parpadear cada 32,8 ms
NOTA: Probado en PIC16F84-04 / P.
4 rendimientos de cristal MHz 1 MHz de frecuencia de reloj interno.
"opcin" est configurado para dividir el reloj interno por 256.
Esto da lugar a 1 MHz / 256 = 3906,25 Hz o 256 us.
TMR0 bits de 0 a 7 se comprueba (255 decimal), produciendo de este
Bucle de retardo 255 * 256 us = 65,28 ms
Refs: Fcil Pic'n p. 113
Lista P = 16F84
hexagonal radix
regreso ;
fin
; --------------------------------------------------------------------; en el tiempo de combustin, seleccione:
; memoria uprotected
; temporizador de vigilancia desactivado
; cristal estndar (4 MHz)
; power-up Timer On
Esta es una de 8 bits, contador de lectura / escritura se almacena a este registro de archivo
en particular. En nuestro caso, la frecuencia de reloj interna es 1 MHz (frecuencia externa
se divide por 4). Esta frecuencia se puede dividir an ms mediante el establecimiento de
un valor pre-escalador (el valor de la frecuencia interna ser dividido por). Sobre la base de
la configuracin de 3 bits de opcin, el valor pre-escalador se puede variar entre 8 valores
que van de 1 a 256. En nuestro caso, se establecen los 3 bits de opciones, que divide la
frecuencia del reloj interno por 256. Esto da la frecuencia del contador a ser de 1 MHz /
256 = 3906,25 Hz. El siguiente comando
iniciar CLRWDT
establecer los bits de opciones. El significado de los bits de opciones son las siguientes:
Propsito bits
0 Valor de divisor
1 Valor de divisor
2 Valor de divisor
3 de divisor Asignacin (0 = Timer0, 1 = temporizador de vigilancia)
4 Timer0 reloj borde externo seleccionar (0 = ascendente, 1 = cayendo)
5 Timer0 fuente de reloj (0 = ciclo de instruccin interna, 1 = externo)
borde 6 de interrupcin de seleccin (0 = cada, 1 = aumento)
7 Puerto B Pullup Enable (0 = habilitado, 1 = deshabilitado)
Como se puede ver, en este cdigo, los bits de divisor se establecen en 111 (dividir por
256), pre-escalador se enva al Timer0, incrementos TMR0 en el flanco de subida, la fuente
Timer0 es el reloj de ciclo de instruccin interna, las interrupciones se producen en los
flancos ascendentes y Puerto B pull-ups estn desactivados.
Procediendo a travs del cdigo, la siguiente parte define el puerto B como salidas, como se
ha visto en los ejemplos anteriores. El cdigo siguiente que es la carne de este programa.
ir BSF PORTB, 0
retardo de
retardo de
bcf PORTB,
retardo de
retardo de
ir a ir
llamada
llamada
0
llamada
llamada
1
2
3
4
5
6
7
Cuando se llama retardo, el programa salta a esta parte del cdigo. TMR0 (el contador) se
borra primero (y luego empieza a contar). El cdigo restante pone a prueba cada bit en
Timer0 para ver si se ajusta a hi. Si no es as, vuelve al 'nuevo'. Si se establece a alta, se
salta la siguiente lnea de cdigo ( "Ir de nuevo") y los testculos el siguiente bit. Este bucle
contina hasta que se alcanza la instruccin de retorno, en cuyo caso la subrutina se sale y
el cdigo de producto de que cualquier demora se llam originalmente. Como puede verse,
la subrutina de retardo continuar hasta que todos los bits iguales TMR0 '1', o hasta que los
recuentos de TMR0 a 255.
Ahora que ya sabe cmo escribir cdigo, lo que necesita saber cmo obtener el cdigo en el
PIC. El proceso de programacin de un PIC se refiere a menudo como "quemado". Para
grabar el cdigo en el PIC, vamos a utilizar la versin para Windows de MPLAB.
En el programa MPLAB, toda la informacin acerca de su programa se almacena en unos
archivos de proyecto. Los archivos de proyecto contienen informacin sobre el programa,
el dispositivo que est utilizando, uno o ms cdigos de lenguaje ensamblador y los
archivos compilados hexagonales. El proceso de grabacin de un PIC contiene tres pasos
principales. La primera es que escribir el cdigo en lenguaje ensamblador. Una vez que el
cdigo est escrito, debe ser compilado en un archivo hexadecimal para la programacin en
el dispositivo. Despus de compilar el cdigo correctamente, el ltimo paso es programar el
dispositivo.
Comience por abrir el programa MPLAB.
Crear un nuevo proyecto por ir a Project> Nuevo proyecto. En el nuevo cuadro de dilogo
proyecto seleccionar un directorio para colocar el proyecto y dar al nuevo proyecto un
nombre. Cuando haya terminado, haga clic en "Aceptar".
Ahora ver el cuadro de dilogo Editar Proyecto. Seleccione el dispositivo apropiado, y
establecer el modo de desarrollo de MPLAB-SIM Simulador. En la ventana de archivos de
proyecto haga clic en el archivo que tiene el nombre de su archivo con la extensin
.hex. Haga clic en el botn Propiedades de nodos y en la ventana que aparece, haga clic en
"Aceptar". Esto establece las propiedades del nodo por defecto y le permite aadir nodos
ms tarde.
Salir del cuadro Editar propiedades haciendo clic en "Aceptar".
Ahora usted puede crear cdigo ensamblador. Conseguido a Archivo> Nuevo. Un editor de
cuadros de texto en blanco debera aparecer. Introduce el cdigo de ensamblado en esta
ventana. Cuando haya terminado, guarde el cdigo (Archivo> Guardar, dar el cdigo de un
nombre y haga clic en "Aceptar").
Ahora debe asignar el cdigo fuente que acaba de hacer con el proyecto. Ir al proyecto>
Editar Proyecto. En el cuadro de dilogo Editar proyecto, haga clic en el botn Aadir
nodo. Busque el cdigo de montaje que acaba de encontrar. Seleccionarlo y hacer clic en
"Aceptar". El nombre de archivo del cdigo ensamblador debe aparecer ahora en la
ventana. Haga clic en "Aceptar" para cerrar el cuadro de edicin del proyecto.
Ahora que el cdigo fuente est asociada con el proyecto, es hora de compilar el cdigo. Ir
a Proyecto> Proyecto. Si la compilacin tiene xito, ver la ventana de generacin
resultados aparecen con el mensaje "Construccin completada con xito". Si hubo errores
que se muestran en la ventana. Despus de compilar con xito, guardar el proyecto
(Proyecto> Guardar proyecto).
El paso final es para programar el dispositivo. Seleccionar PICSTART Plus> Activar
programador. El cuadro de dilogo Programador de estado debera aparecer. En este punto,
usted debe tener el programador de dispositivos PICSTART Plus enchufado y TH cable
serie conectado al puerto serie del ordenador. Coloque el PIC en el zcalo ZIF con la pata 1
en la esquina superior izquierda, y bloquearlo en su sitio.
La parte ms importante de este paso es asegurar la configuracin de bits se establecen de
manera apropiada. Si se han fijado, al final de cada cdigo de ejemplo fue una nota que
indica cmo se deben establecer los bits de configuracin
;
;
;
;
;
Despus de completar este tutorial sers capaz de programa de un PIC para enviar salidas,
leer las entradas, y crear funciones usando un reloj. Despus de crear un programa en
cdigo ensamblador, usted debera ser capaz de grabar ese programa en el dispositivo para
su uso en su aplicacin.
Los conceptos que se muestran aqu se presentan en situaciones relativamente triviales. Sin
embargo, estos conceptos son fundamentales para el uso del PIC para aplicaciones ms
grandes y complejas.
Si tiene alguna pregunta acerca de este tutorial que me puede enviar por correo electrnico
a Keithicus@drexel.edu . Feliz PIC'n!