You are on page 1of 22

MICROCONTROLADOR PIC

PIC (Peripheral Interface Controller). Es un circuito integrado que posee toda la arquitectura de un computador. CPU RAM EEPROM Circuito de entrada. CPU RAM EEPROM Circuito de salida. Posee un oscilador interno de 4 MHz (no muy preciso).

Oscilador:

Figura X

Notas importantes: El voltaje de alimentacin al PIC es de 3 hasta 5.5 voltios. El PIC consume poca potencia. Es susceptible a daos por esttica (Se recomienda usar pinzas). Los pines de entrada y salida soportan mximo 25mA. Se recomienda utilizar un capacitor de 0.1 en paralelo al PIC. Cuando se necesite precisin, utilizar un cristal oscilador de 4MHz o ms. Utilizar un regulador de voltaje. Ej: 7805.

78xx es la denominacin de una familia de reguladores de tensin positiva, de tres terminales, Vi voltaje de entrada, Vo voltaje de salida y la pata central la masa o comn, con especificaciones similares y que slo difieren en la tensin de salida suministrada y en la corriente que es capaz de dar ante una demanda de ello depende las letras que intercala detrs de los dos primeros digitos:

El 7805 es el regulador de voltaje ms comn, y muy usado en diseos empotrados. El 7805 es un regulador lineal hecho por varios fabricantes como Fairchild, o ST Microelectronics. Puede venir en varios tipos de encapsulados. Para corrientes de salida hasta de 1A existen dos tipos de encapsulados: TO-220 (vertical) y D-PAK (horizontal).

Con un disipador apropiado esos tipos de reguladores LM78xx pueden proporcionar corrientes de ms de 1A. Adems incluyen proteccin por sobrecarga trmica, y contra cortocircuitos. Si su diseo no excede los 100 mA de consumo puede elegir un regulador del tipo LM78L05. El mismo viene en presentaciones pequeas y puede entregar corrientes de hasta 100 mA.

Las caractersticas estndar de los principales modelos son las encontradas en la siguiente tabla.
7803 7805 7806 7808 7809 7810 7812 7815 7818 7824

Vout

3,3V

5V

6V

8V

9V

10V

12V

15V

18V

24V

Vin - Vout

2,2V 30V

2,5V 23V

2,6V 20V

Temperatura de operacin

0125 C

0125 C

0125 C

0125 C

0125 C

Imax de salida

1A

1A

1A

1A

1A

1A

1A

1A

1A

1A

La tensin de alimentacin debe ser un poco ms de 2 volts superior a la tensin que entrega el regulador y menor a 35 volts

La electrnica ha evolucionado mucho. Casi todo lo que hasta hace unos aos se hacia mediante un grupo (a veces muy numeroso) de circuitos integrados conectados entre si, hoy se puede realizar utilizando un microcontrolador y unos pocos componentes adicionales.

El lenguaje nativo de estos microcontroladores es el ASM, y en el caso de la familia 16F solo posee 35 instrucciones. Pero el ASM es un lenguaje que esta mucho ms cerca del hardware que del programador, y gracias a la miniaturizacin que permite incorporar cada vez ms memoria dentro de un microcontrolador sin aumentar prcticamente su costo, han surgido compiladores de lenguajes de alto nivel. Entre ellos se encuentran varios dialectos BASIC y C. El BASIC resulta bastante ms simple de aprender.

LENGUAJES Lenguaje Humano Alto Nivel HIGH . . 3F83.. Bajo nivel 10011 Lenguaje Mquina Trabajaremos con un lenguaje de alto nivel. Lo ms interesante de trabajar con microcontroladores es que se necesitan conocimientos tanto de electrnica (hardware) como de programacin (software) Un microcontrolador es como un ordenador en pequeo: dispone de una memoria donde se guardan los programas, una memoria para almacenar datos, dispone de puertos de entrada y salida, etc. A menudo se incluyen puertos seriales (RS-232), conversores analgico/digital, generadores de pulsos PWM para el control de motores, bus I2C, y muchas cosas ms. Por supuesto, no tienen ni teclado ni monitor, aunque podemos ver el estado de teclas individuales o utilizar pantallas LCD o LED para mostrar informacin. Son muy rapidos un PIC funcionando a 20MHz puede ejecutar 5 millones de instrucciones por segundo. Los pines del PIC se dedican casi en su totalidad a los puertos que mencionbamos anteriormente. El resto (2 o mas) son los encargados de proporcionar la alimentacin al chip, y a veces, un sistema de RESET. Desde BASIC es posible saber si un pin esta en estado alto (conectado a 5V o a un 1 lgico) o en estado bajo (puesto a 0V o a un 0 lgico). Tambin se puede poner un pin de un puerto a 1 o 0. De esta manera, y mediante un rele, por ejemplo, se puede encender o apagar una luz, motor, maquina, etc. Uno de los microcontroladores ms famosos de todos los tiempos ha sido, sin duda, el 16F84A, que ya es considerado obsoleto. Un buen reemplazo es el 16F628A, y es el que utilizaremos en la mayora de los ejemplos y proyectos que veamos. La disposicin de sus pines es la siguiente: Basic

Hexadecimal Cdigo Binario

Funcin de los pines del 16F628A

Como podemos ver, los pines 1, 2, 3, 4, 15, 16, 17 y 18 tienen el nombre de RAx. Esos pines conforman el puerto A, PORTA . Los pines 6 al 13 forman parte del puerto B (PORTB). El pin 5 es el que se conectara al negativo de la fuente de alimentacin. El 14 ir conectado a 5V.(toma de energa para el pic) Muchos de los pines tienen ms de una descripcin. Esto se debe a que pueden utilizarse de varias maneras diferentes, seleccionables por programa. Por ejemplo, el pin 4 sirve como parte del PORTA, como RESET (MCLR = Master Clear) y como tensin de programacin (Vpp) Ahora bien Cmo colocamos el programa dentro del PIC? Para ello necesitamos algunas herramientas. Por un lado, es necesario un quemador de PICs, Adems, necesitaremos un software que enve el programa al PIC. Y tambin vamos a necesitar un compilador, para traducir nuestro programa en BASIC al ASM /HEX que es capaz de entender el PIC. Existe una versin de prueba que se puede bajar gratuitamente desde aqu.

El GTP USB+, un excelente programador de micros y memorias.

Para comenzar, usaremos un PIC 16F628A.

El primer ejemplo que veremos, consiste en encender y apagar continuamente un LED conectado a uno de los pines del micro, pin 9, PORTB.3 . Utilizaremos el circuito siguiente:

Nuestro primer ejemplo.

A diferencia de un programa de ordenador, donde uno escribe el programa, lo compila, lo ejecuta y ya, en el mundo de los microcontroladores hay que, previamente, definir el tipo de microcontrolador que se va a utilizar, cual va a ser su frecuencia de clock, como va a ser el circuito en que se va a utilizar el mismo, etc.

En primer lugar, vamos a aprovechar el oscilador interno del 16F628A y nos evitaremos el cristal y condensadores asociados. El puerto B3 del micro tiene su pin 9 conectado a un LED mediante una resistencia de 220ohms, que tienen como funcin limitar la corriente que circula por el LED. Esta ser nuestra "salida". El circuito debe alimentarse con 5v bien filtrados y regulados. Volviendo a nuestro programa, vamos a encender un LED de forma intermitente.

Figura X Ejemplo: INICIO: HIGH port b.3 PAUSE 1000 LOW portb.3 PAUSE 1000 GOTO INICIO END

Diagrama Bsico

;nombre de la subrutina ;ON LED 1 LOGICO 5V PIN 9 ;Pausa de 1 segundo ;OFF LED 0 LOGICO OV PIN 9 ;Pausa de 1 segundo ;Va a inicio y sigue eternamente

1 unidad de tiempo = 1 milisegundo

Los puertos A son analgicos, si se desea utilizar como digitales, usar al inicio del programa la sentencia: cmcon = 7 , todo puerto A pasa a ser digital pero el A5 y A4 son diferentes.

A5 (MCLR) solo es de entrada (no para encender un LED). El A4 es de colector abierto y debe estar conectado a 5 voltios

Figura X Figura X

Conexin a pulsadores Es un negador

FOCO INTERMITENTE:

cmcon = 7 FOCO VAR PORTA.0 INTERMIT: HIGH FOCO PAUSE 1000 LOW FOCO PAUSE 1000 GOTO INTERMIT END

; Todo el puerto A es digital ; El pin A0 (17) se asigna como Foco ; nombre de la subrutina ; ON el foco ; Pausa de 1 segundo ; OFF el foco ; Pausa de 1 segundo ; Continua el programa eternamente

El mismo programa con otra sentencia: FOCO VAR PORTB.0 LED: LOW FOCO PAUSE 1000 TOGGLE FOCO PAUSE 1000 GOTO LED END ; El pin B0 (6) es foco ; nombre de la subrutina ; OFF pin 6 B0 ; Pausa de 1 segundo ; cambia de estado a B0 (OFF ; Pausa de 1 segundo ; Continua el programa eternamente ON)

TOGGLE

Cambia el estado de un puerto. Toggle es un negador

TRISB = trisb Esta sentencia permite trabajar todo el puerto B como salidas, se debe poner al inicio del programa: trisb = 0 Ejemplo: Portb = % 0 1 0 0 1 0 0 1 Muy bueno para trabajar en grupo. trisb = %0

B7 B6 B5 B4 B3 B2 B1 B0 Indica que los puertos B6 B3 B0 estn en ON, todos los dems OFF.

Para nmeros binarios (0 1) utilizar %, para hexadecimales (0, 1, , 9, A, B, ) utilizar $. DECIM 12 BINARIO 1100 HEXADECIMAL $C

Ejemplo de parpadeo: Trisb = 0 FOCO: portb=% 00000001 pause 1000 portb=% 00000000 pause 1000 GOTO FOCO END. ; Utilizar todos los puntos B como salidas ; nombre de la subrutina ; ON en B0 pin6 ; pausa de 1 segundo ; OFF en B0 pin6 ; pausa de 1 segundo ; in a FOCO

El PIC ejecuta cada lnea de programa en un microsegundo (1 seg). Tarea PGM para semforos de 2 intersecciones.

Semforo de dos intersecciones.

FIGURA X trisb=0 semforo: portb=%100001 pause 9000 portb=%100011 pause 3000 portb=%001100 pause 9000 portb=%011100 pause 3000 GOTO semforo Todo el bloque B es de salida R A V R A V

Tarea: Realizar el mismo ejercicio utilizando HIGH y LOW.

Si se desea realizar el proyecto con focos de 120V se utiliza salida a transistor y rel.

Tarea: Luces para discoteca Autofantstico

INSTRUCCIN FOR-NEXT Esta instruccin sirve para ejecutar o repetir un nmero n de veces lneas de programa. Se usa de la siguiente forma: X VAR BYTE FOR X=1 TO 5 ... NEXT Tamao de la variable (declarar antes del programa) ; Se crea y asigna un tamao a la variable X ; Ejecuta las siguientes instrucciones 5 veces hasta NEXT

X VAR BIT X VAR BYTE X VAR WORD

01 0 255 0 65535

X VAR BYTE Led1 VAR portb.0 programa: FOR X=1 TO 5

HIGH Led1 PAUSE 500 LOW Led1 PAUSE 500 NEXT PAUSE 2000

FOR X=1 TO 3 HIGH Led1 PAUSE 500 LOW Led1 PAUSE 500 NEXT PAUSE 3000 GOTO programa END

Desplazamientos Los desplazamientos no son ms que recorrer un lugar a la izquierda o derecha de los puertos. Los desplazamientos utilizan la multiplicacin y la divisin.

Si tenemos Y lo multiplicamos por 2 Otra vez multiplicamos por 2 Podemos llegar a

X=1 X=2 X=4

%00000001 %00000010 %00000100 %10000000

X=128

Para hacer que el 1 regrese a B0 (a la derecha), dividimos para 2.

LEDS=LEDS<<1 LEDS=LEDS<<2 LEDS=LEDS>>1 LEDS=LEDS>>2

(Equivale a multiplicar por 2) se desplaza 1 a 1. (Equivale a multiplicar por 4) se desplaza de 2 en 2. (Equivale a dividir para 2) se desplaza 1 a la derecha. (Equivale a dividir para 4) se desplaza 2 a la derecha.

Ejemplo: X VAR BYTE LEDS VAR PORT B TRISB=0 LEDS=1 ; Se crea una variable X de tamao 1 255 ; Todo el puerto B se llama LEDS ; Todo el puerto B es de salida ; LEDS=1 (%00000001) cargamos la variable LEDS con 1, sino lo hacemos equivale a multiplicar por cero. PGRM: FOR X=1 TO 7 LEDS=LEDS<<1 PAUSE 200 NEXT

FOR X=1 TO 7 LEDS=LEDS>>1 PAUSE 200 NEXT GOTO PGRM END

PULSADORES Son elementos de entrada. Existen 2 tipos: 1 Lgico (5V) al pulsar cambia a 0L 0 Lgico (0V) al pulsar cambia a 1L

Figura X

Si se tiene una fuente de voltaje mayor a 5V (en el PiC solo 5 3V) se debe disear un divisor de voltaje de tal manera que al PIC ingrese mximo 5V.

Ejemplo: Figura X Divisor de voltaje

V VT PIC R1 R2 6 .8

VT V V 1 2 R1 R2 R1 R2

12 * 6.8 VPIC 16.8


i 12 0.71mA 16.8k

24 * 2.4 VPIC 12.4


i 24 1.93 mA 12.4k

VPIC 4.9V

VPIC 4.7V

PROGRAMA (Sumador binario sin antirrebote)

Figura X

cmcon=7 trisb=0 boton VAR porta.1 num VAR BYTE num=0

Pulsar: portb=num IF boton=0 THEN contar GOTO pulsar Contar: num=num+1 GOTO Pulsar END

Nota: Cuando pulsa P y hasta saltarlo el PIC ya sumo muchas veces, es decir, no suma por cada pulsada un nmero.

PROGRAMA (Sumador binario con antirrebote) cmcon=7 trisb=0 boton VAR porta.1 num VAR BYTE num=0

Pulsar: portb=num IF boton=0 THEN contar GOTO pulsar Contar: IF boton=0 THEN contar PAUSE 200 num=num+1 GOTO Pulsar END

DECLARACIN IF THEN Sirve de condicionante, si es verdad ejecuta la operacin que sigue al THEN, si es falsa sigue con la operacin de la lnea siguiente. Tiene algunas formas de aplicacin. IF Portb.0=0 THEN Paro (Ir a Paro si en B.0 existe un cero lgico 0V) IF Portb.2=1 THEN arranque (Ir a arranque si en B.2 existe un 1 lgico 5V) IF portb.0=0 THEN ; Si la operacin es verdadera ejecuta todo lo que se HIGH porta.2 encuentra entre THEN y END IF PAUSE 1000 LOW porta.2 END IF IF portb.3=0 THEN ______________ ______________ ; Si es verdad ejecuta todas estas operaciones

______________ ELSE ______________ ______________ ______________ END IF Con esta sentencia se pueden utilizar operadores como: tambin OR, XOR, NOT AND, NOT OR, NOT XOR. IF porta.1=0 AND porta.3=0 THEN prog.

; Si es falsa ejecuta todas estas operaciones

=, , =, >, <, <=, >= o

LED INTERMITENTE VELOCIDAD VARIABLE Pulbaja VAR portb.5 Pulsube VAR portb.4 Led VAR portb.3 xy VAR byte veces VAR byte veces=100 inicio: HIGH Led GOSUB TIMER Low Led GOSUB TIMER GOTO inicio timer: if pulsube=0 then GOSUB RESTAR if pulbaja=0 then GOSUB SUMAR FOR xy=1 TO VECES PAUSE 5 NEXT RETURN SUMAR: If veces > 150 then RETURN VECES=VECES+5

RETURN RESTAR: If veces < 10 then RETURN VECES=VECES-5 RETURN END

Figura X

MANEJO DE DISPLAY Los display son utilizados para visualizar datos sean estos numricos o alfanumricos. Ej: Utilizacin de un display de 7 segmentos con CI 7447 (decodificador de B a D).

Figura X trisb=% numero VAR BYTE encerar: numero=0 display: portb=numero PAUSE 500 IF numero=9 THEN encerar numero=numero+1 GOTO display END ; 9 = 1011

MODULOS LCD LCD (Display de Cristal Lquido).- Visualiza mensajes, etc. Puede presentar cualquier carcter (LCD) ASCII. Existen de 2x8 / 2x16 / 2x20 Son de 14 pines (sin backlight)

Son de 16 pines (con backlight) b..l (iluminado de pantalla) Figura X

PIN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

SIMBOLO Vss Vdd Vo RS R/W E D0 D1 D2 D3 D4 D5 D6 D7 A K

DESCRIPCION Tierra Alimentacin 5V Ajuste del contraste Registro Lectura (1) / Escritura (0) Habilitacin: Conectado (1) Desconectado (0) Bit menos significativo

Bit ms significativo Alimentacin del Backlight (3.5 5V) Tierra del Backlight

DECLARACION LCDOUT Muestra caracteres en pantalla. Ej: LCDOUT $FE,1, HOLA ; Limpia la pantalla y escribe HOLA.

COMANDO $FE, 1 $FE, 2 $FE, $0C $FE, $0E $FE, $0F $FE, $10 $FE, $14 $FE, $80 $FE, $C0 $FE, $94 $FE, $D4

OPERACIN Limpia la pantalla Vuelve al inicio Apaga el cursor Subrado del cursor Parpadeo del cursor Mueve una posicin a la izquierda Mueve una posicin a la derecha Cursor al inicio primero lnea Cursor al inicio segunda lnea Cursor al inicio tercera lnea Cursor al inicio cuarta lnea

Los LCD pueden trabajar con 4 bit o con 8 bits.

4 bits -

4 cables

Primero: Cuatro bit ms altos. Segundo: 4 bit bajos. Mayor tiempo

8 bits

8 cables

Toda la informacin al mismo tiempo. Menor tiempo

MCLR (Reset Externo) El MCLR se utiliza con el puerto A5 con 1 lgico. Al pulsar el MCLR se detiene la operacin y al soltarlo continua la aperacin. En el momento de grabar el PIC el MCLR debe estar habilitado.

Figura X

iniciar HIGH Portb.4 PAUSE 200 LOW Portb.4 PAUSE 200 GOTO iniciar END

X VAR BYTE P CON $FE PANTALLA: PAUSE 2000 LCDOUT P,1 PAUSE 2000 LCDOUT P,$OF PAUSE 2000 LCDOUT P,$14 PAUSE 2000 FOR X=1 TO 3 LCDOUT P,$10 PAUSE 1000 NEXT PAUSE 2000 LCDOUT P,1 LCDOUT POLITECNICA PAUSE 2000 ; Cursor una casilla a la izquierda ; Cursor una casilla a la derecha ; Muestra el cursor ; Limpia la pantalla ; Asigna P a la constante $FE

Figura X

DECLARACION LOOKUP Permite visualizar una palabra, carcter por carcter. PAUSE 200 X VAR BYTE Y VAR BYTE CARACTER: LCDOUT $FE,1 FOR X=0 TO 10 LOOKUP X, *POLITECNICA+, Y LCDOUT, Y PAUSE 400 NEXT PAUSE 2000 GOTO CARACTER END
16 24

LCD

VISIBLES 16

40

PGRM

Texto en movimiento

PAUSE 200 X VAR BYTE Y VAR BYTE LCDOUT $FE, $7 LCDOUT $FE, 1 INICIO: LCDOUT $FE, $90 FOR X=0 TO 23 LOOKUP X, *MICROCONTROLADORES PIC +, Y LCDOUT, Y PAUSE 400 ; Ubica el cursor en la casilla 17. ; Configura para desplazamiento hacia la izquierda

NEXT GOTO INICIO END

DECLARACION COUNT Cuenta el nmero de pulsos que ingresan por un PIN. COUNT PORTB.0,1000,Y Siendo; PORTB.0 = Ingreso de pulsos puerto B0 1000 = Por el tiempo de 1000 mseg Y = y lo almacena en Y

You might also like