Professional Documents
Culture Documents
C. MATERIALES Y EQUIPOS.
PIC 16F628A
Programador Pickit 2 V2.6
1 Protoboard
Resistencias 300 y 4k7 ohmios
Fuente de 5V
Leds
Pulsadores
D. MARCO TERICO.
Modulacin por Ancho de Pulso (PWM):
La Modulacin de Ancho de Pulso conocido como PWM (Pulse Wide Modulation),
bsicamente consiste en enviar a los terminales de control un tren de pulsos los cuales
varan en mayor o menor medida el tiempo en que se mantiene el nivel alto de esos
pulsos, manteniendo la frecuencia constante.
Ejemplo:
X= 128
HPWM 1, X, 245
Estamos generando usando el mdulo CCP1, una frecuencia de 245 Hz con DC de 50%.
Cuando se necesita un duty variable se puede establecer una variable tipo byte, para
incrementar o decrementar el valor segn se requiera.
PULSOUT Pin, Period
Genera un pulso de un periodo especificado en un Pin. Si se usa un oscilador de 4MHz
el periodo del pulso sera incrementado en 10us. Si el oscilador es de 20 MHz el periodo
tiene una resolucin de 2us. Definiendo un valor de OSC no tiene efecto en PULSOUT.
La resolucin siempre cambia con la velocidad del oscilador especificado.
Ejemplo:
PULSOUT PORTB.5, 100
Enva un pulso de duracin de 1ms (en 4MHz) por el Pin5.
INSTRUCCIN PULSIN
PULSIN Pin,State,Var
Mide el ancho del pulso en Pin. Si State es cero se mide el ancho de un pulso bajo. Si
State es uno, se mide el ancho de un pulso alto . El ancho medido s coloca en Var. Si el
flanco del pulso no llega, o el ancho del pulso es demasiado grande para ser medido ,
Var=0 . Si se usa una variable de 8 bit, solo se usan los bits menos significativos de la
medicin de 16 bits. Pin puede ser una constante, 0 - 15, o una variable que contenga
un nmero de 0-15 (p.ej. B0) un nmero de Pin (p.ej. PORTA.0) La resolucin de PULSIN
depende de la frecuencia del oscilador. Si se usa un oscilador de 4 Mhz, el ancho de
pulso se obtiene en incrementos de 10 us .Si se usa un oscilador
de 20 Mhz, el ancho de pulso tendr una resolucin de 2 us. Definir un valor de OSC no
tiene efectos sobre PULSIN. La resolucin siempre cambia con la velocidad del oscilador
en uso.
PULSIN PORTB.4,1,W3 mide el pulso alto en pin 4 guardado en W3
COUNT
COUNT NN_PIN, PERIODO, VARX
COUNT, cuenta el nmero de pulsos en el Pin (NN_PIN) del PIC, durante el tiempo
(PERIODO), y guarda el resultado en una variable (VARX). El Pin es colocado
automticamente como entrada.
EJEMPLO:
SOUND PORTB.0,[50,10,100,20] ; Se ha combinado dos frecuencias de 3937 Hz con
una duracin de 10 ms y 7874 Hz con una duracin de 20 ms.
Las canciones estn compuestas por notas musicales (DO, RE, MI, FA, SOL, LA, SI).
A cada una de estas notas le corresponde una frecuencia. La tabla muestra la
frecuencia que corresponde a cada nota:
Las notas tienen una duracin, que est determinada por las figuras musicales; para
este
caso se usar la siguiente duracin:
Fusa 62 ms
Semicorchea 125 ms
Corchea 250 ms
PIC 16F628A
El Pic es un microcontrolador de 8 bit, posee una arquitectura RISC avanzada as como
un juego reducido de 35 instrucciones. Este microcontrolador es el remplazo del
obsoleto pic16f84a, los pines del pic16f628a son compatibles con el pic16f84a, as se
podran actualizar proyectos que hemos utilizado con el pic16f84a.
DIAGRAMA DE PINES
E. PROCEDIMIENTO
Realizar todos los ejercicios planteados en clase en los software necesarios.
Copiar la programacin del documento y finalmente verificar su
funcionamiento.
Armar el circuito en el simulador Proteus.
Finalmente armar el circuito en un Protoboard.
EJERCICIOS:
RA7/OSC1/CLKIN
RA6/OSC2/CLKOUT
RA5/MCLR
RA0/AN0
RA1/AN1
RA2/AN2/VREF
RA3/AN3/CMP1
RA4/T0CKI/CMP2
RB0/INT
RB1/RX/DT
RB2/TX/CK
RB3/CCP1
RB4
RB5
RB6/T1OSO/T1CKI
RB7/T1OSI
17
18
1
2
3
6
7
8
9
10
11
12
13
A
B
C
D
R1
330R
D1
LED-GREEN
PIC16F628A
Periodo: 1ms
Duty: 0,5ms (128 equivalente a la mitad del periodo)
Los valores son los esperados ya que 128 (duty) es la mitad del periodo total con
una duracin de 1000 ms
b. Modifique el programa para obtener un duty del 25% del 75% respectivamente.
Duty 25% = 63,75
DEFINE CCP1_REG PORTB
DEFINE CCP1_BIT 3
INICIO:
HPWM 1, 64, 1000
GOTO INICIO
c. Cambie el programa para obtener una seal de 5KHZ, con un duty del 60%.
DEFINE CCP1_REG PORTB
DEFINE CCP1_BIT 3
INICIO:
HPWM 1, 153, 5000
GOTO INICIO
d. Realice un programa para generar una seal de 500 HZ con un duty variable
desde el 25% al 100%. Debe haber un pulsador para subir PS y otro PB para bajar.
Al arrancar el programa con un pulsador PI la seal tendr un duty de 50%. Con
un pulsador PP, la seal se hace 0.
DEFINE CCP1_REG PORTB
DEFINE CCP1_BIT 3
PS VAR PORTA.0 ; VARIABLE PULSADOR1
PB VAR PORTA.1 ; VARIABLE PULSADOR2
PI VAR PORTA.2 ; VARIABLE PULSADOR3
PP VAR PORTA.3 ; VARIABLE PULSADOR4
A VAR BYTE
B VAR BYTE
A=64
INICIO:
HPWM 1, A, 500
IF (PS = 0) AND (A<255) THEN
GOSUB ANTIRREBOTE
A=A+20
ENDIF
IF (PB = 0) AND (A>64) THEN
GOSUB ANTIRREBOTE
A=A-20
ENDIF
IF (PI = 0) THEN
GOSUB ANTIRREBOTE
RA7/OSC1/CLKIN
RA6/OSC2/CLKOUT
RA5/MCLR
RA0/AN0
RA1/AN1
RA2/AN2/VREF
RA3/AN3/CMP1
RA4/T0CKI/CMP2
RB0/INT
RB1/RX/DT
RB2/TX/CK
RB3/CCP1
RB4
RB5
RB6/T1OSO/T1CKI
RB7/T1OSI
PIC16F628A
INICIO:
SOUND PORTB.0, [100, 10, 50, 10]
GOTO INICIO
17
18
1
2
3
6
7
8
9
10
11
12
13
LS1
SOUNDER
G. Recomendaciones
H. Referencias Bibliogrfica.
Recuperado 15 de junio de 2015 de:
http://www.sc.ehu.es/sbweb/webcentro/automatica/web_avr/archivos/Manu
al_AT90S8515/Arquitectura/interrup_externas&tiempo_respu.htm.
Recuperado el 15 de junio de 2015 de: http://www.taringa.net/posts/hazlo-tumismo/14017158/Programador-PIC-USB-PICKIT-2-Clone.html
Recuperado 15 de JUNIO de 2015 de: http://www.ecured.cu/index.php/2n3906
Recuperado el 14 de JUNIO de 2015 de : http://proyectoaulapic16f628a.blogspot.com/