Programación con Microcontroladores PIC



A continuación empezaremos con el curso de Microcontroladores PIC,que constará de 7 prácticas de laboratorio, en cada  práctica de laboratorio explicaremos las definiciones, conceptos acerca del tema tratado en cada una de ellas, así también adjuntaremos simulaciones en Microcode y Bascom AVR.
Además adjuntaremos simulaciones adicionales que te servirán de gran aporte para tu aprendizaje, cualquier duda o sugerencia estaremos encantados de responderte, mucha suerte en el curso.    

Práctica #1
ü  Tema: Reconocimiento y programación mediante los software Microcode y Pickit 2 para el PIC 16F628A.
Práctica #2 
ü  Tema: Manejo de decodificadores y displays con el PIC 16F628A. 
Práctica #3 
ü  Tema: Control de velocidad de un motor de CC con el PIC 16628A mediante una señal PMW Y visualización en una LCD
Práctica #4 
ü  Tema: Modos de transmisión de datos por medio de la comunicación Serial de un PIC 16F628A .
Práctica #5 
ü  Tema: Control de temperatura con un LM35 por medio de un PIC16F877A.
Práctica #6 
ü  Tema: Programación en  Bascom-AVR y manejo del Microprocesador ATMEGA16.
Práctica #7 
ü  Tema: Lectura de temperatura y voltaje mediante la utilización de los conversores análogo digital del AVR  ATMEGA16.

Links de interés

- Instalador Pickit2 2010 


- Microcode Studio 3 [Full]


- Instalador Bascom AVR 


Electrónica Práctica con Microcontroladores  PIC: Santiago Corrales. V
                                                

Microcontroladores "Programación en PIC": Carlos. A. Reyes ( Segunda y Tercera Edición)


Microcontroladores PIC -Diseño Práctico de Aplicaciones –José Angulo, Ignacio Martínez –


Bueno sin más preámbulos comenzaremos con la primera práctica.

Práctica #1

1) TEMA:

Reconocimiento y programación mediante los software Microcode y Pickit 2 para el PIC 16F628A

2) OBJETIVOS:

2.1. OBJETIVO GENERAL

-Reconocer y programar mediante los software Microcode y Pickit 2 para el PIC 16F628A


2.2. OBJETIVOS SECUNDARIOS:

* Indagar sobre las características técnicas del PIC 16F628A

* Realizar los distintos programas propuestos en clase mediante el uso del software Microcode.

* Simular la programación en el software Proteus

* Armar los circuitos en protoboard

* Grabar los programas en el PIC 16F628A mediante el software Pickit 2 y comprobar su funcionamiento.

* Utilizar el MCLR(reset externo) en el PIC 16F628A .

3) MATERIALES

Práctica Luz Intermitente led

· PIC 16f628A

· Resistencia de 330 Ω

· Diodo led Rojo

Práctica Contador del 1 al 15

· PIC 16F628A

· 4 Resistencias de 330 Ω

· 4 Diodos led

Práctica Contador del 1 al 15 y pulsador con antirebote

· PIC 16F628A

· 4 Resistencias de 330 Ω

· 1 Resistencia de 4.7 kΩ

· 1 Pulsador NA(Normalmente abierto)

· 4 Diodos led

Práctica Secuencia de encendido de luces y uso del MCLR

· PIC 16F628A

· 4 Resistencias de 330 Ω

· 1 Resistencia de 4.7 kΩ

· 1 Pulsador NA(Normalmente abierto)

· 4 Diodos led

4) MARCO TEÓRICO

EL MICROCONTROLADOR PIC16F628A.

Los Microcontroladores PIC (Peripheral interface Controller), son fabricados por la empresa MICROCHIP Technology INC. cuya central se encuentra en Chandler, Arizona, esta empresa ocupa el primer lugar en venta de Microcontroladores de 8 bits desde el año 2002. Su gran éxito se debe a la gran variedad (más de 180 modelos), gran versatilidad, gran velocidad, bajo costo, bajo consumo de potencia, y gran disponibilidad de herramientas para su programación. Uno de los Microcontroladores más populares en la actualidad es el PIC16F628A y sus variantes PIC16F627A y PIC16F648A, estos modelos (serie A) soportan hasta 100.000 ciclos de escritura en su memoria FLASH, y 1’000.000 ciclos en su memoria Eeprom, este está reemplazando rápidamente al popular PIC16F84A, pues presenta grandes ventajas como son ver figura 1:


Figura 1. Tabla de comparación entre el PIC16F84A y los PIC16F6XX.

Todas estas y otras ventajas más como el oscilador interno RC de 4MHZ, MCLR programable, mayor capacidad de corriente, Programación en bajo voltaje, etc. Lo hacen al PIC16F628A, como el Microcontrolador ideal para estudiantes y aficionados, ya que al tener oscilador interno y el MCLR (master clear) sea programable, es mucho más sencillo ponerlo en funcionamiento, basta con conectar al pin 14 a 5V y el pin 5 a tierra para que empiece a trabajar.

CARACTERÍSTICAS GENERALES.

Se puede resumir las características más relevantes del PIC16F628A, estas son:

•           Velocidad de operación hasta 20 MHZ con oscilador externo.
•           Oscilador interno RC (resistencia condensador) de 4 MHZ calibrado de fábrica al  ±1 %.
•           Admite 8 configuraciones de oscilador.
•           8 niveles de PILA.
•           Procesador con arquitectura HARVARD.
•           Conjunto reducido de instrucciones RISC (35) gama media.
•           Instrucciones de un ciclo excepto los saltos (200nS por instrucción a 20 MHZ).
•           Resistencias PULL-UP programables en el puerto B.
•           Pin RA5 MCLR programable como reset externo o pin de entrada.
•           Rango de operación desde 3V hasta 5.5V.
•           15 pines de I/O y 1 sólo de entrada (RA5).
•           Temporizador Perro guardián WDT independiente del oscilador.
•           Programable con bajo voltaje LPV (5V.)
•           Programación serial en Circuito ICSP por 2 pines: RB6 reloj y RB7 datos.
•           Código de protección programable por sectores.
•           Memoria de programa FLASH 2048K de 100.000 ciclos escritura/borrado.
•           Memoria de datos EEPROM de 1.000.000 ciclos escritura/borrado de 100 años retención
•           2 circuitos comparadores análogos con entradas multiplexadas.
•           3 Tuners, Timer 0 a 8 bits, Timer 1 a 16 bits y Timer 2 a 8 bits.
•           Módulos CCP, Captura compara 16 bits, y PWM, modulación de ancho de pulso 10 bits.
•           10 fuentes de interrupción
•           Módulo de comunicación serial USART/SCI.
•           Capacidad de corriente para encender leds directamente (25 mA I/O) por cada pin.

DIAGRAMA DE PINES Y FUNCIONES.

Excluyendo los dos pines de alimentación, todos los 16 pines restantes pueden ser configurados

como entradas o salidas, algunos de ellos tienen funciones especiales, ver figura 1.


Figura 1 Presentación más popular del PIC16F628A el PDIP y su diagrama de Pines


NOTA: sus 2 puertos el A y el B entregan un total de 200mA cada uno, es decir 25 mA cada pin.
En modo sumidero pueden soportar cada uno de sus puertos 200mA. es decir 25 mA. cada pin.

DECLARACIONES DISPONIBLES EN EL COMPILADOR PBP 2.47.

Debemos entender que declaraciones son cada una de las palabras que el compilador pbp 2.47
tiene reservado para realizar una tarea específica, las más utilizadas son: HIGH, LOW, PAUSE,
GOSUB, GOTO, LCDOUT, SERIN, SEROUT, FOR, NEXT, IF, THEN, SOUND, END.



5) DESARROLLO DE LA PRÁCTICA

Práctica Luz Intermitente led

Realizamos el programa en el software Microcode.

led var portb.0
inicio
high led
pause 1000
low led
pause 1000
goto inicio

Configuración del bit de palabra para led intermitente
Nota: Ingresa esta palabra cuando vayas a quemar en el quemador de PICS

                                          Bit 4      Bit 3     Bit 2     Bit 1    Bit 0
                                              1            0          0         0         1

Luego se procede a armar el circuito de la siguiente figura 2 en protoboard como se muestra a continuación


Figura 2 Circuito encendedor del led intermitente

Práctica Contador  del 1 al 15

Realizamos el programa en el software Microcode.

cmcon=7
TRISA=%1
TRISB=0
p1 var porta.0
x var byte
x=0
inicio
 portb=x
if p1=0 then gosub ar
 goto inicio
 ar:
  if p1=0 then ar
  x=x+1
  return


Configuración del bit de palabra para el contador  del 1 al 15

                                          Bit 4      Bit 3     Bit 2     Bit 1    Bit 0
                                              1           0          0         0         1


Luego se procede a armar el circuito de la siguiente figura 3 en el protoboard como se muestra a continuación.


Figura 3 Contador con pulsador del 1 al 15

Práctica Contador  del 1 al 15 con for

Realizamos el programa en el software Microcode.

trisb=0
x var byte
inicio
for x=0 to 15  step 1
portb=x
pause 1000
next x
goto inicio

Configuración del bit de palabra para el contador con pulsos del 1 al 15 con for

                                          Bit 4      Bit 3     Bit 2     Bit 1    Bit 0
                                              1          0          0           0         1

Luego se procede a armar el circuito de la siguiente figura 3 en el protoboard como se muestra a continuación.


Figura 4 Contador con pulsador del 1 al 15 con for

Práctica Secuencia del encendido de luces  con el uso del  MCLR

Realizamos el programa en el software Microcode.

led1 var portb.0
led2 var portb.1
led3 var portb.2
led4 var portb.3
inicio
 high led1
 pause 300
 low led1        
 high led2
 pause 300
 low led2
 high led3
 pause 300                  
 low led3
 high led4
 pause 300
 low led4
 high led3
 pause 300
 low led3
 high led2
 pause 300
 low led2
goto inicio

Configuración del bit de palabra para activar el MCLR

                                   Bit 6       Bit 5      Bit 4      Bit 3     Bit 2     Bit 1    Bit 0
                                       1           1            1          0          0           0         1

Luego se procede a armar el circuito de la siguiente figura 5 en el protoboard como se muestra a continuación.


Figura 5 Contador con pulsador del 1 al 15 con el uso de  MCLR

6) CONCLUSIONES

· Una de las características principales del PIC 16F628A es su velocidad de operación y esto se comprueba con el uso de un antirebote en la programación de un contador que se incrementa mediante un pulsador externo.


· El MCLR (RA5) conectado a Vcc nos permite el correcto funcionamiento del PIC en los distintos circuitos.


· En la implementación del hardware se ha tomado varias consideraciones como voltajes de alimentación del PIC 16F628A y los bits de configuración al momento de grabar los datos en el Microcontrolador mediante el software Pickit2.


· Considerar el valor mínimo de la resistencia para no exceder las corrientes que circular por los pines que es de 25mA.

7) RECOMENDACIONES

· Es importante colocar el pin 4 MCLR a Vcc (5 voltios) para que el mejor funcionamiento del PIC 16F628A


· Se debe tomar en cuenta la habilitación del MCLR al momento de colocar los bits de configuración al momento de grabar los datos en el Microcontrolador.


· Considerar el rango de voltaje de alimentación del PIC16F628A.


8) BIBLIOGRAFÍA

Ø  Carlos A. Reyes, “Microcontroladores PIC y programación en Basic”, tercera edición, Volumen 1, Microchip, 2008, 63-65.

9) ANEXOS





Práctica #2

1) TEMA:

Manejo de decodificadores y displays con el PIC 16628A

2) OBJETIVOS:

2.1. OBJETIVO GENERAL

Reconocer decodificadores, displays, uso de Flags en los contadores y programar mediante los software Microcode y Pickit 2 para el PIC 16F628A 

2.2. OBJETIVOS SECUNDARIOS:

- Indagar sobre las características técnicas del decodificador 7447 (Decodificador)

- Investigar sobre la configuración de pines de los displays de 7 segmentos

- Realizar los distintos programas propuestos en clase mediante el uso del software Microcode.

- Simular la programación en el software Proteus

- Armar los circuitos en protoboard

3) MATERIALES

Práctica Contador con Displays  del 1 al 99 con for anidado

·         PIC 16F628A
·         Decodificador 7447
·         7 Resistencias de 330 Ω
·         2 Resistencias de 4.7 kΩ
·         2 Transistores 2n3904 NPN
·         2 Displays de 7 Segmentos (Ánodo Común)

Práctica Contador con displays del 1 al 99 con pulsador (banderas)

·          PIC 16F628A
·         Decodificador 7447
·         7 Resistencias de 330 Ω
·         3 Resistencias de 4.7 kΩ
·         2 Transistores 2n3904 NPN
·         2 Displays de 7 Segmentos (Ánodo Común)
·         1 Pulsador NA(Normalmente abierto)

4) MARCO TEÓRICO

MANEJO DE UN DISPLAY DE 7 SEGMENTOS CON EL CI. 7447

Los displays son muy utilizados para visualizar datos, son utilizados como periféricos de salida un display tipo ánodo común, para lo cual se facilita el diagrama en la figura 1.


                                  Figura 1. Esquema de pines ánodo común con el BCD 7447 de un display

EL DECODIFICADOR 7447 

El circuito integrado 7447 es un circuito que decodifica señales binarias de 4 bits en unas líneas de salida que posterior mente pueden ser representadas por un display de 7 segmentos mostrando los dígitos decimales. A continuación se muestra el C.I. 7447 véase la figura 2, donde se puede observar que los pines 7,1,2 y 6 funcionan como entradas de un numero binario, mientras los pines 9,10,11,12,13,14,15 pertenecen a las líneas de salida y a cada uno de estos pines le corresponde un segmento del display. También se encuentran los pines de alimentación 16+ y 8- y los pines de control.


Figura 2 Circuito Integrado Decodificador BCD 7447

USO DEL FLAG O VARIABLE DE UN BIT


Usted se preguntará cómo hacer para que el número se incremente apenas se pulsa la tecla y no 
cuando soltamos como actualmente sucede, pues bien para esto utilizamos banderas que no son 
nada más que una variable de 1 bit, esta nos indica cuando ha sido pulsada. El siguiente es un 
ejercicio adicional aplicando la bandera.

trisb=%11110000 ;hace salidas sólo los bits más bajos de Puerto B
numero VAR BYTE ;crea la variable número con valor 255
bot VAR portb.4 ;nombre para el puerto B.4
flag VAR BIT ;creamos la variable flag de un bit
encerar:
numero = 0 ;carga con cero a la variable número
display:
portb=numero ;sacar por el puerto b el contenido de número
IF bot=0 THEN aumentar ; si el botón es pulsado ir a aumentar continúa
PAUSE 80 ; pause para estabilizar el rebote de la tecla
Flag=0 ;cargar la variable con cero
GOTO display ;ir a display
aumentar:
IF flag = 1 THEN GOTO display ;pregunta si la variable es uno
flag = 1 ;cargar la variable con uno
IF numero=9 THEN encerar ;si número es =9 encerar número =0
numero=numero + 1 ;sumar 1 a la variable número
GOTO display ;ir a display
END

5) DESARROLLO DE LA PRÁCTICA

Práctica Contador con Displays  del 1 al 99 con for anidado

Realizamos el programa en el software Microcode.

trisb=0
cmcon=7
TRISA=
x var byte
y var byte
z var byte
inicio
 for y=0 to 9
       for x=0 to 9
            for z=1 to 100
             porta=%01
             portb=x
             pause 5    
             porta=%10
             portb=y 
             pause 5   
           next
       next
 next
 goto inicio

Configuración del bit de palabra para el contador con displays del 1 al 99 con for anidado

                                          Bit 4      Bit 3     Bit 2     Bit 1    Bit 0
                                              1            0         0         0         1

Luego se procede a armar el circuito de la siguiente figura 1 en el protoboard como se muestra a continuación


Figura 3 Contador con Displays con pulsador del 1 al 99 con lazo for anidados

Práctica Contador con displays del 1 al 99 con pulsador (banderas)

Realizamos el programa en el software Microcode.

trisb=0
cmcon=7
trisa=010100
p1 var porta.2
x var byte
y var byte
y1 var bit
z var byte
z=0
y=0
x=0
encerar
     x=0
    if y=9 and x=0 then
        y=0
    else
        y=y+z
    endif
inicio
    porta=%01
    portb=x
    pause 5
    porta=%10
    portb=y
    pause 5
    if p1=0 then  aumentar
    y1=0
goto inicio
aumentar:
    if y1=1 then goto inicio
    y1=1
    z=1
    if x=9 then encerar
    x=x+1
goto inicio
end


Configuración del bit de palabra para uso de bandera con pulsador

                                   Bit 6       Bit 5      Bit 4      Bit 3     Bit 2     Bit 1    Bit 0
                                       0            0          1            0         0           0         1

Luego se procede a armar el circuito de la siguiente figura 2 en el protoboard como se muestra a continuación.


Figura 4 Contador con displays del 1 al 99 con pulsador (banderas)

6) CONCLUSIONES

-Una de las características principales del PIC 16F628A es su velocidad de operación y esto se comprueba con el uso de un antirebote en la programación de un contador que se incrementa mediante un pulsador externo.

- El MCLR (RA5) conectado a Vcc nos permite el correcto funcionamiento del PIC en los distintos circuitos.

- El uso del decodificador nos permite usar menos puertos del pic16f628A

7) RECOMENDACIONES

-Es importante colocar el pin 4 MCLR a Vcc (5 voltios) para que el mejor funcionamiento del PIC 16F628A

· Se debe tomar en cuenta la habilitación del MCLR colocando el bit de palabra en 0 de grabar los datos en el Microcontrolador.

· Considerar el rango de voltaje de alimentación del PIC16F628A.

· Es importante al momento de realizar la práctica con el decodificador (7447) cortocircuitar los pines 5 y 3(RBI-LT), colocarlos a Vcc para el correcto funcionamiento para los displays.

· Se debe tomar en cuenta la alimentación del display ya que existen de dos tipos ánodo y cátodo.
   
8) BIBLIOGRAFÍA

Ø 
Carlos A. Reyes, “Microcontroladores PIC y programación en Basic”, tercera edición, Volumen 1, Microchip, 2008, 62-66.


9) ANEXOS




Práctica #3


1) TEMA:

Control de velocidad de un motor de CC con el PIC 16628A mediante una señal PMW Y visualización en una LCD

2) OBJETIVOS:

2.1.     OBJETIVO GENERAL

Realizar un programa en el software Microcode para medir las rpm de un motor dc mediante un PIC 16F628A y visualizar los datos en una LCD

2.2.     OBJETIVOS ESPECIFICOS:

 ü  Indagar sobre las características técnicas de una lcd de 2x16 
 ü  Realizar la programación para medir rpm en el software Microcode
 ü  Simular la programación  en  el software Proteus
 ü  Armar el circuito en protoboard

3) MATERIALES

Práctica de control de velocidad y rpm en un motor de CC

·         PIC 16F628A
·         Regulador de 5 voltios (7805)
·         DISPLAY LCD 2x16
·         1 Eje de giro independiente con un disco de plástico negro
·         1 Motor de CC
·         2 Pulsadores NA
·         3 Resistencias de 4.7 kΩ
·         1 Potenciómetro 10 kΩ
·         3 Resistencia de 330 Ω
·         1 Resistencia de 10 Ω
·         2 Diodos led
·         1 Resistencia 1 kΩ
·         1 Resistencia 10 kΩ

4) MARCO TEÓRICO

MANEJO DE UN MÓDULO LCD


Los módulos LCD (Display de Cristal Líquido), son utilizados para mostrar mensajes que indican al operario el estado de la maquina, o para dar instrucciones de manejo, mostrar valores, etc. El LCD permite la comunicación entre las máquinas y los humanos, este puede mostrar cualquier carácter ASCII, y consumen mucho menos que los displays de 7 segmentos, existen de varias presentaciones por ejemplo de 2 líneas por 8 caracteres, 2x16, 2x20, 4x20, 4x40, etc. Sin back light (14 pines) o con backlight (16 pines, iluminado de pantalla), el LCD más popular es el 2x16, 2 líneas de 16 caracteres cada una.



Figura 1. Función de cada pin del LCD

LA DECLARACIÓN LCDOUT. Sirve para mostrar items en una pantalla de cristal líquido, se utiliza escribiendo: LCDOUT, luego escribiendo $FE, y seguido por el comando a utilizar, el siguiente cuadro muestra los comandos más utilizados:


Figura 2. Tabla de los comandos más utilizados para manejar un LCD

OPTO ACOPLADOR GP3 S2

Son conocidos como optoaisladores o dispositivos de acoplamiento óptico, basan su funcionamiento en el empleo de un haz de radiación luminosa para pasar señales de un circuito a otro sin conexión eléctrica. Estos son muy útiles cuando se utilizan por ejemplo. Microcontroladores PICs y/o PICAXE si queremos proteger nuestro microcontrolador estedispositivo es una buena opción. En general pueden sustituir los relés ya que tienen una velocidad de conmutación mayor, así como, la ausencia de rebotes.(1)




Figura 3. Circuito de un circuito Opto acoplador GP3S2

TACÓMETRO

El giro de un motor que se une a un cono de caucho, el cual transmite movimiento a un disco de plástico negro, en el que posee una ranura de 1 a 2 mm, que al pasar por el medio del optoacoplador, polariza 2 transistores y este hace cambiar el estado de 0 a 1, esta señal podemos conectarlo al PIC y visualizarlo en un LCD, el mismo principio utilizan los marcadores de kilometraje de los autos y los tacómetros de los mismos.



Figura 4. Esquema para unir el motor con el eje independiente de un tacómetro portátil.


Control PWM

El control PWM es uno de los tres posibles modos de operación del módulo CCP de los microcontroladores PIC16F88, 16F628A y 16F877A, y se describe a continuación debido a su gran importancia en el campo de la automatización.
Una señal PWM es una forma de onda digital binaria de una determinada frecuencia y ciclo de trabajo (dutycycle) variable.

En este modo, el pin CCP1 produce una señal PWM de hasta 10 bits de resolución, lo que significa que se tienen hasta 1024 opciones de configuración del ciclo de trabajo. Este pin tiene que configurarse como salida por medio del registro TRISB. La figura 4 muestra un diagrama de bloques del módulo CCP operando como control PWM.(2).

Una señal PWM se caracteriza por una base de tiempo (período) y un tiempo durante el cual la salida tiene un nivel alto (ciclo de trabajo). La frecuencia es el inverso del período.


Figura 7. Señal  PWM.

5) DESARROLLO DE LA PRÁCTICA

Práctica de control de velocidad y rpm en un motor de CC

5.1. Realizar el programa en el software Microcode.

DEFINE CCP1_REG PORTB
DEFINE CCP1_BIT 3
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 1
cmcon=7
TRISA=%11
TRISB=%1

R VAR WORD
X VAR WORD
E VAR BYTE
P1 VAR PORTA.0
P2 VAR PORTA.1
Y VAR BYTE
Y=0
R=0
X=0
E=0
LCDOUT,$FE,1
LCDOUT,$FE,$83,"UFA ESPE-L"
LCDOUT,$FE,$C4,"RPM MOTOR"
PAUSE 1000 
LCDOUT $FE, 1
LCDOUT $FE, $80, "VELOCIDAD:"
LCDOUT $FE, $80+10,DEC Y,"%"
LCDOUT $FE, $C0, "RPM"
LCDOUT $FE, $C0+5, DEC R
INICIO
HPWM 1,X,10
IF P1=0 THEN GOSUB AUMENTAR
IF P2=0 THEN GOSUB DISMINUIR
LCDOUT $FE, 1
LCDOUT $FE, $80, "VELOCIDAD:"
LCDOUT $FE, $80+10,DEC Y,"%"
LCDOUT $FE, $C0, "RPM"
LCDOUT $FE, $C0+5, DEC R
R=0
COUNT PORTB.0,1000,R
R=R*15/2
GOTO INICIO
AUMENTAR:
IF P1=0 THEN AUMENTAR
IF Y<100 THEN
Y=Y+10
E=E+5
X=(255/100)*Y+E
ENDIF
RETURN
DISMINUIR:
IF P2=0 THEN DISMINUIR
IF Y>0 THEN
Y=Y-10
E=E-5
X=(255/100)*Y+E
ENDIF
RETURN

5.2. Configuración del bit de palabra para la práctica de control de velocidad y rpm en un motor de CC

Bit 4      Bit 3     Bit 2     Bit 1    Bit 0
1            0          0            0         1

5.3. Luego se procede a armar el circuito de la siguiente figura 8 en el protoboard como se muestra a continuación.


Figura 8.Control de velocidad y rpm en un motor de CC


Figura 9.  Simulación en Proteus del control de velocidad y rpm en un motor de CC

6) CONCLUSIONES

· Se logró realizar la lectura de las rpm de un motor dc mediante el PIC 16F628A con la ayuda de un sensor de herradura GP3 S2 que se encargaba de contar los pulsos por cada revolución.
· El incremento porcentual de la velocidad y el número de revolucione no es proporcional debido a que el sensor no es lineal.
· La visualización de datos se realizó mediante una LCD de 2x16 la cual se programó mediante el software Microcode.

7) RECOMENDACIONES

· Tomar en cuenta el tipo d sensor a utilizar para contar los pulsos por revolución del motor

· Colocar capacitores cerámicos entre Vcc y GND a fin del filtar el ruido que se produce debido al motor para que este no afecte el funcionamiento del PIC16F628A

 
8) BIBLIOGRAFÍA

Ø  (1)Carlos A. Reyes, “Microcontroladores PIC y programación en Basic”, tercera edición, Volumen 1, Microchip, 2008, 79-89.
Ø  (2) Proyectos Electrónicos (2008).”Opto Acopladores”. Disponible en:
                 http://es.scribd.com/doc/5516426/Optoacopladores
Ø  (3)TecMikro (2010).”Control PWM de un motor  DC  con microcontroladores”. Disponible en:
                 http://www.programarpicenc.com/libro/cap09-control-pwm-motor-dc-microcontroladores-                          pic.html.




Práctica #4

1) TEMA:
Modos de transmisión de datos por medio de la comunicación Serial

2) OBJETIVOS:

2.1.       OBJETIVO GENERAL
Realizar una comunicación serial con el PIC16f628A

2.2.       OBJETIVOS ESPECÍFICOS:

 ü  Realizar la comunicación  serial PC-PIC
 ü  Realizar la comunicación  serial PIC-PC
 ü  Realizar la comunicación  serial PIC-PIC
 ü  Realizar la programación en Microcode y su simulación en el  software Proteus
 ü  Armar los circuitos en protoboard

3) MATERIALES

Comunicación serial PIC-PC

·          1 PIC 16F628A
·          1 Regulador de 5 voltios (7805)
·         1 Oscilador de cristal 4 MHz
·         2 Capacitores de 22pf
·         1 Resistencia de 220
·         1 Resistencia de 330 Ω
·         1 Diodos led
·         Db9  macho del PC

Comunicación serial PC-PIC

·         1 conector DB9 hembra con su respectivo cajetín
·         2 resistencias uno de 10 Ω y otro de 22 KΩ.
·         2 mts de cable de 2 hilos para transmisión de datos.
·         1 cristal de 4 MHZ.
·         2 capacitores de 22 pF.
·         1 LCD 2 x 16
·         1 potenciómetro de 10 KΩ
·         Comunicación serial PIC-PIC

Comunicación serial PIC-PIC

·         2 mts de cable de 2 de hilos
·         4 diodos leds
·         4 resistencias de 4,7 K Ω
·         4 resistencia de 330Ω
·         4 pulsadores NA
·         2 PIC16F628A.

4) MARCO TEÓRICO

COMUNICACIÓN SERIAL

Existen dos formas de realizar una comunicación binaria, la paralela y serial. La comunicación paralela como por ejemplo la comunicación del PIC con el CI. 7447, en donde los datos viajan simultáneamente a través de los 4 hilos, tiene la ventaja de que la transferencia de datos es más rápida, pero el inconveniente es que necesitamos un cable por cada bit de dato, lo que encarece y dificulta el diseño de las placas, otro inconveniente es la capacitancia que genera los conductores por lo que la transmisión se vuelve defectuosa a partir de unos pocos metros.

La comunicación serial en cambio es mucho más lenta debido a que transmite bit por bit pero tiene la ventaja de necesitar menor cantidad de hilos, y además se puede extender la comunicación a mayor distancia, por ejemplo; en la norma RS232 a 15 mts., en la norma RS422/485 a 1200mts y utilizando un MODEM, pues a cualquier parte del mundo.

Existen dos formas de realizar la comunicación serial: la sincrónica y la asincrónica, la diferencia entre estas dos formas de comunicación es que la comunicación sincrónica además de la línea para la transmisión de datos, necesita otra línea que contenga los pulsos de reloj, estos a su vez indican cuando un dato es válido. Por otra parte la comunicación serial asincrónica no necesita pulsos de reloj.
  
MODOS DE TRANSMISIÓN DE DATOS

Los modos de transmisión de datos se dividen en cuatro tipos y estos son:
Simplex. Se dice a la transmisión que puede ocurrir en un sólo sentido, sea sólo para recibir o sólo para transmitir. Una ubicación puede ser un transmisor o un receptor, pero no ambos a la vez, un ejemplo claro es la radiodifusión, en donde la estación es el transmisor y los radios son los receptores.

Half-duplex. Se refiere a la transmisión que puede ocurrir en ambos sentidos pero no al mismo tiempo, en donde una ubicación puede ser un transmisor y un receptor, pero no los dos al mismo tiempo, un ejemplo son los llamados radios WALKING TALKING, en donde un operador presiona el botón y habla, luego suelta el botón y el otro usuario presiona el botón para contestar.

Full-duplex. Se dice a la transmisión que puede ocurrir en ambos sentidos y al mismo tiempo, también se los conoce con el nombre de líneas simultáneas de doble sentido, una ubicación puede transmitir y recibir simultáneamente, siempre y cuando la estación a la que está transmitiendo también sea la estación de la cual está recibiendo un ejemplo es la telefonía móvil.

Full/full-duplex. Con este modo de transmisión es posible transmitir y recibir simultáneamente, pero no necesariamente entre las dos ubicaciones, es decir una estación puede transmitir a una segunda estación y recibir de una tercera estación al mismo tiempo. Esta transmisión se utiliza casi exclusivamente con circuitos de comunicación de datos.

COMUNICACIÓN SERIAL PIC-PC.

Consiste en enviar datos, más específicamente los caracteres ASCII de la palabra “DOG”, a través de un cable y directamente desde el PIC al PC, a 2400 bits/seg., a 8 bits de datos, sin paridad, y 1 bit de parada. Como sabemos el computador tiene al menos un puerto serial, con la norma RS232, por lo tanto debemos simular esos voltajes desde el PIC, esto lo conseguimos enviando 0 para representar el 1lógico y 5V para representar el 0 lógico, para esto existe la declaración SEROUT. Sirve para mostrar items en una pantalla de cristal líquido, se utiliza escribiendo: LCDOUT, luego escribiendo $FE, y seguido por el comando a utilizar, el siguiente cuadro muestra los comandos más utilizados:

LA DECLARACIÓN SEROUT. Esta declaración sirve para enviar datos seriales en un formato estándar asincrónico usando 8 bits de dato, sin paridad y 1 stop bit, (8N1), y para poder utilizarlo SEROUT puerto B.1, N2400,[“D”] ;enviar el carácter ASCII “D” por el puerto B1 a 24008N1, en dato invertido (figura 1).


Figura 1. Esquema del dato enviado por el PIC simulando la norma RS232, noten que es
muy similar al esquema 5.9.3.2. pero con diferentes niveles de voltaje

Debemos incluir al comienzo del programa la siguiente línea:

INCLUDE “modedefs.bas”  ;incluir el programa modedefs.bas(modos de comunicación)

Esto significa incluir el programa modedefs.bas en esta línea, aquí se encuentran algunos de los parámetros para las comunicaciones, por ejemplo en nuestro caso las velocidades de transmisión que son: para dato invertido N300, N1200, N2400, N9600, y para dato verdadero: T300, T1200, T2400, T9600. Los datos invertidos por ejemplo el N2400, quiere decir que un 1 lógico vale 0V. y un 0 Lógico vale 5V, en cambio para dato verdadero por ejemplo el T2400 el 1 lógico vale 5V. y el 0 lógico vale 0V.


Figura 2. Diagrama de conexión del PIC para enviar datos al PC sin el CI. MAX232.

COMUNICACIÓN SERIAL PIC-PC.

Se trata de enviar datos desde el PC al PIC, por lo que es de suponer los voltajes serán desde -  10V. hasta +10V. y la distancia podemos extenderlo hasta 15 mts, sin ningún problema, como la  conexión es directamente al PIC debemos colocar una resistencia de 22K para no dañar el puerto  del PIC. En este caso el PIC es un receptor por lo que debe permanecer en espera del bit de inicio, para esto tenemos la declaración SERIN.

LA DECLARACIÓN SERIN. Esta declaración sirve para recibir datos seriales en un formato  estándar asincrónico usando 8 bits de dato, sin paridad y 1 stop bit, (8N1), y para poder utilizarlo  debemos incluirlo igualmente que para el SEROUT la línea INCLUDE “modedefs.bas” al inicio  del programa, su forma de utilizar es la siguiente:

SERIN portb.0, N2400, letra ; esperar un dato serial y lo guarda en la variable previamente creada llamada letra.

Es importante saber que esta declaración detiene el programa esperando el bit de inicio, y solamente cuando haya recibido un dato, continúa con la siguiente línea de programa, para hacer que sólo espere un determinado tiempo y luego continúe con la siguiente línea debe utilizar Timeout, para mayor información refiérase al manual de pbp, o utilice una interrupción externa para atender el dato a recibir, ver figura 3. Utilizando la interrupción en el puerto B.0.


Figura 3. Diagrama de conexión del PIC para recibir datos del PC sin CI. MAX232


COMUNICACIÓN SERIAL PIC A PIC.

Este proyecto consiste en hacer una transmisión simplex entre un PIC transmisor y un PIC receptor, el primero dispone de 3 botones, el botón A envía la letra “A” el cual el PIC receptor lo detecta y enciende un led rojo por 1 segundo, desde el transmisor presionamos el botón B y transmite la letra “B”, el receptor encenderá una led amarillo, igualmente después de un segundo lo apagará y por último desde el transmisor presionamos la tecla C y el receptor encenderá un led verde. Por tratarse de una práctica y no complicarnos con el MAX232, ya que necesitaríamos 2, sólo realizaremos a una distancia de 2 metros conectando directamente de PIC a PIC utilizando dato invertido (N2400).



Figura 4. Diagrama de conexión para hacer una comunicación serial desde un PIC hacia otro PIC.

Se debe utilizar una o dos fuentes de 5 voltios, pero sería recomendable 2 fuentes para que la comunicación se vea más real, como es de suponerse se necesitará de 2 programas diferentes uno para cada micro controlador.

Práctica de comunicación serial PIC-PC

Realizamos el programa en el software Microcode.

INCLUDE "modedefs.bas"
define OSC 4
led var portb.1
INICIO:
high led
pause 500
low led
pause 500
serout portb.0,T2400,[" MECATRONICA "]
GOTO INICIO

Configuración del bit de palabra para la práctica de comunicación serial PIC-PC

                                Bit 6     Bit 5     Bit 4      Bit 3     Bit 2     Bit 1    Bit 0
                                   0           0           0            0          0            0         1

Luego se procede a armar el circuito de la siguiente figura 1 en el protoboard como se muestra a continuación


Figura 5.  Comunicación serial del PIC -PC


Práctica de comunicación serial PC-PIC

Realizamos el programa en el software Microcode.

INCLUDE "modedefs.bas"
define OSC 4
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 1
 DATO VAR WORD
LCDOUT $fe,1
LCDOUT $fe,$80,"RECIBIENDO....."
PAUSE 1000
LCDOUT $fe,1
INICIO
SERIN portb.0, T2400,DATO
LCDOUT DATO
GOTO INICIO

Configuración del bit de palabra para la práctica de comunicación serial PC-PIC

                                Bit 6     Bit 5     Bit 4      Bit 3     Bit 2    Bit 1    Bit 0
                                   0           0           0            0         0       0         1

Luego se procede a armar el circuito de la siguiente figura 1 en el protoboard como se muestra  continuación.


Figura 6.  Comunicación serial del PC –PIC

Práctica de comunicación serial PIC-PIC

Realizamos el programa en el software Microcode.

TRANSMISOR

include"modedefs.bas"
P1 var porta.0
P2 var porta.1
P3 var porta.2
P4 var porta.3
trans:
if P1=0 then envio1
if P2=0 then envio2
if P3=0 then envio3
if P4=0 then envio4
goto trans
envio1:
if P1=0 then envio1
serout portb.0,T2400,["A"]
pause 500
return
envio2:
if P2=0 then envio2
serout portb.0,T2400,["B"]
pause 500
return
envio3:
if P3=0 then envio3
serout portb.0,T2400,["C"]
pause 500
return
envio4:
if P4=0 then envio4
serout portb.0,T2400,["D"]
pause 500
return
end


RECEPTOR

include "modedefs.bas"
led1 var portb.1
led2 var portb.2
led3 var portb.3
datos var byte

recibir:
serin portb.0,T2400,datos
if datos="A" then high led1
if datos="B" then high led2
if datos="C" then high led3
if datos="D" then apagado
goto recibir
end
apagado:
low led1
low led2
low led3
goto recibir

Configuración del bit de palabra para la práctica de comunicación serial PIC-PIC

                                Bit 6     Bit 5     Bit 4      Bit 3     Bit 2     Bit 1    Bit 0
                                   0           0           0            0          0            0         1

Luego se procede a armar el circuito de la siguiente figura 1 en el protoboard como se muestra a continuación.


Figura 7.  Comunicación serial del PIC –PIC

6) CONCLUSIONES

· La comunicación serial es importante ya que nos permite una comunicación entre componentes físicos, permitiéndonos una visualización de las variables de Ingenieria como temperatura, velocidad, luminosidad, presión, etc. Todos estos parámetros nos permiten verificar lo que sucede en la vida real. 
· Al momento de importar el programa al PIC se debe considerar los bits de configuración para la activación del oscilador externo.
· De la presente práctica se concluye que cuando se utiliza un conversor USB serial hembra, en la programación se coloca el valor negado.

7) RECOMENDACIONES

· Es importante utilizar un cristal de 4 MHZ para que este proyecto funcione correctamente, sólo así los tiempos de transmisión serán los correctos, si se utiliza el oscilador interno del PIC16F628A, pueda que visualice datos erróneos en la pantalla.
· Considerar el rango de voltaje de alimentación del PIC16F628A.
   
8) BIBLIOGRAFÍA

Ø  Carlos A. Reyes, “Microcontroladores PIC y programación en Basic”, tercera edición, Volumen 1, Microchip, 2008, 127-138.

9) ANEXOS        



Subiendo archivos............