Sie sind auf Seite 1von 70

SEMINARIO TALLER

GRABACION DE
MICROCONTROLADORES “PIC”
APLICADOS A LA ROBOTICA

EXPOSITOR: ING. MELVIN GUSTAVO


BALLADARES ROCHA
INTRODUCCION
• QUE ES UN MICROCONTROLADOR
• Un microcontrolador es un circuito integrado, en
cuyo interior posee toda la arquitectura de un
computador, esto comprende lo que es CPU,
memorias RAM, EEPROM, y circuitos de entrada
y salida.
• Existen muchas familias fabricantes de
microcontroladores, entre las más comunes
están:
• Atmel (AVR ), Hitachi (H8), Intel de 8 bits (8XC42, MCS51, 8xC251) o Intel de 16
bits (MCS96, MXS296), National Semiconductor (COP8), Microchip, Motorola
de 8 bits (68HC05, 68HC08, 68HC11) o de 16 bits (68HC12, 68HC16) o de 32
bits (683xx ), NEC (78K), Texas Instruments (TMS370) y Zilog (Z8, Z86E02).
APLICACIONES DE LOS
MICROCONTROLADORES
ESTRUCTURA INTERNA

Un microcontrolador de fábrica, no realiza tarea alguna, este debe ser


programado para que realice desde el simple parpadeo de un led hasta el
sofisticado control de un robot.
Un microcontrolador es capaz de realizar la tarea de
muchos circuitos lógicos como compuertas AND, OR,
NOT, NAND, conversores A/D, D/A, temporizadores,
decodificadores, etc., simplificando todo el diseño a
una placa de reducido tamaño y pocos elementos.
• Los PIC son una familia de microcontroladores
tipo RISC fabricados por Microchip Technology
Inc. y derivados del PIC1650, originalmente
desarrollado por la división de microelectrónica
de General Instrument.
• El nombre actual no es un acrónimo. En realidad,
el nombre completo es PICmicro, aunque
generalmente se utiliza como Peripheral
Interface Controller (controlador de interfaz
periférico).
TIPOS DE CRISTALES Y
OSCILADORES
EL MICROCONTROLADOR PIC
16F628A
Los microcontroladores PIC (Peripheral interface Controller). 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 reemplaza rápidamente al popular PIC16F84A, pues
presenta grandes ventajas como son:

• oscilador interno RC de 4MHZ,


• MCLR programable,
• mayor capacidad de corriente,
• programación en bajo voltaje
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.
CARACTERISTICAS GENERALES
Hasta aquí 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.
CARACTERISTICAS GENERALES

• 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 Timers, 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 led's directamente (25 mA I/O)
por cada pin.
RECONOCIMIENTO DE PINES Y
SUS 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.
RECONOCIMIENTO DE PINES Y
SUS FUNCIONES
HERRAMIENTAS PARA EL
MONTAJE DE PROYECTOS
• Protoboard.
• Resistencias de varios valores,
• Una PC con el siguiente software instalado: PROTEUS, SOFTWARE DIY K150,
MICROCODE STUDIO.( ademas de librerias de microcontroladores)
• leds
• Grabador pick150, microcontrolador PIC 16F628A, fuente de alimentación.
CALCULOS PARA EL MONTAJE
DE PROYECTOS
Es muy importante saber que en las salidas del microcontrolador al ser encendidas
mediante el programa, esta salida entrega el mismo valor de tensión con el que se energiza
el microcontrolador, es decir, si el microcontrolador es alimentado con 5V en sus salidas
tendremos 5V.

Por defecto del fabricante este recomienda que como máximo de carga para una salida del
microcontrolador solo se puede alimentar dos led’s. Si por algún motivo se desea mayor
corriente se utiliza un transistor.
Para realizar el cálculo de la resistencia para energizar el led debemos saber lo siguiente:

Tensión de trabajo del led 1.5V

Corriente nominal de un led 0.016A

Tensión de trabajo (salida microcontrolador) 5V


CALCULOS PARA EL MONTAJE
DELaPROYECTOS
caída de tensión de la resistencia es:

Ur = Ut - Uled
Ur = 5V – 1.5V
Ur = 3.5V
EMPEZANDO CON LA
PROGRAMACION
Para poder entender la diferencia entre los dos lenguajes de
programación, se debe tener en claro
qué es un lenguaje de alto nivel y qué es un lenguaje de bajo nivel, a
través del siguiente cuadro
podemos ver los niveles de programación.
DECLARACIONES DISPONIBLES
EN EL COMPILADOR
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, un
ejemplo:

HIGH portb.3
A continuación las 83 instrucciones disponibles con una breve explicación.
DECLARACIONES DISPONIBLES
EN EL COMPILADOR
DECLARACIONES DISPONIBLES
EN EL COMPILADOR
DECLARACIONES DISPONIBLES
EN EL COMPILADOR
DEFINE ADC_BITS 8 'Number of bits in ADCIN result
DEFINE ADC_CLOCK 3 'ADC clock source (rc = 3)
DEFINE ADC_SAMPLEUS 50 'ADC sampling time in microseconds
DEFINE BUTTON_PAUSE 10 'Button debounce delay in ms
DEFINE CCP1_REG PORTC 'Hpwm 1 pin port
DEFINE CCP1_BIT 2 'Hpwm 1 pin bit
DEFINE CCP2_REG PORTC 'Hpwm 2 pin port
DEFINE CCP2_BIT 1 'Hpwm 2 pin bit
DEFINE CHAR_PACING 1000 'Serout character pacing in us
DEFINE DEBUG_REG PORTB 'Debug pin port
DEFINE DEBUG_BIT 0 'Debug pin bit
DEFINE DEBUG_BAUD 2400 'Debug baud rate
DEFINE DEBUG_MODE 1 'Debug mode: 0 = True, 1 = Inverted
DEFINE DEBUG_PACING 1000 'Debug character pacing in us
DEFINE DEBUGIN_REG PORTB 'Debugin pin port
DEFINE DEBUGIN_BIT 0 'Debugin pin bit
DEFINE DEBUGIN_MODE 1 'Debugin mode: 0 = True, 1 = Inverted
DEFINE HPWM2_TMR 1 'Hpwm 2 timer select
DEFINE HPWM3_TMR 1 'Hpwm 3 timer select
DECLARACIONES DISPONIBLES
EN EL COMPILADOR
DEFINE HSER_BAUD 2400 'Hser baud rate
DEFINE HSER_CLROERR 1 'Hser clear overflow automatically
DEFINE HSER_SPBRG 25 'Hser spbrg init
DEFINE HSER_RCSTA 90h 'Hser receive status init
DEFINE HSER_TXSTA 20h 'Hser transmit status init
DEFINE HSER_EVEN 1 'Use only if even parity desired
DEFINE HSER_ODD 1 'Use only if odd parity desired
DEFINE HSER_BITS 9 'Use 9th bit for parity
DEFINE HSER2_BAUD 2400 'Hser(2) baud rate
DEFINE HSER2_CLROERR 1 'Hser(2) clear overflow automatically
DEFINE HSER2_SPBRG 25 'Hser(2) spbrg init
DEFINE HSER2_RCSTA 90h 'Hser(2) receive status init
DEFINE HSER2_TXSTA 20h 'Hser(2) transmit status init
DEFINE HSER2_EVEN 1 'Hser(2) Use only if even parity desired
DEFINE HSER2_ODD 1 'Hser(2) Use only if odd parity desired
DEFINE HSER2_BITS 9 'Hser(2) Use 9th bit for parity
DEFINE I2C_HOLD 1 'Pause I2C transmission while clock held low
DEFINE I2C_INTERNAL 1 'Use for internal EEPROM on 16CExxx and 12CExxx
DEFINE I2C_SCLOUT 1 'Set serial clock to bipolar instead of open-collector
DECLARACIONES DISPONIBLES
EN EL COMPILADOR
DEFINE I2C_SLOW 1 'Use for >8MHz OSC with standard speed devices
DEFINE I2C_SDA PORTA,0 'Data pin for I2C (12-bit core only)
DEFINE I2C_SCL PORTA,1 'Clock pin for I2C (12-bit core only)
DEFINE LCD_DREG PORTA 'LCD data port
DEFINE LCD_DBIT 0 'LCD data starting bit 0 or 4
DEFINE LCD_RSREG PORTA 'LCD register select port
DEFINE LCD_RSBIT 4 'LCD register select bit
DEFINE LCD_EREG PORTB 'LCD enable port
DEFINE LCD_EBIT 3 'LCD enable bit
DEFINE LCD_RWREG PORTE 'LCD read/write port
DEFINE LCD_RWBIT 2 'LCD read/write bit
DEFINE LCD_BITS 4 'LCD bus size 4 or 8
DEFINE LCD_LINES 2 'Number lines on LCD
DEFINE LCD_COMMANDUS 2000 'Command delay time in us
DEFINE LCD_DATAUS 50 'Data delay time in us
DEFINE LOADER_USED 1 'Bootloader Used
DEFINE NO_CLRWDT 1 'Forces manual use of CLRWDT
DEFINE ONINT_USED 1 'Serves as LOADER_USED for versions before 2.33
DEFINE PULSIN_MAX 1000 'Maximum counts allowed before pulsin times out
DEFINE OSC 4 'Oscillator speed in MHz: 3(3.58) 4 8 10 12 16 20 24 25 32 33 40
DECLARACIONES DISPONIBLES
EN EL COMPILADOR
DEFINE OSCCAL_1K 1 'Set OSCCAL for PIC12C671/CE673
DEFINE OSCCAL_2K 1 'Set OSCCAL for PIC12C672/CE674
DEFINE SER2_BITS 8 'Set number of data bits for Serin2 and Serout2
DEFINE SER2_ODD 1 'Use odd parity instead of even parity
DEFINE SHIFT_PAUSEUS 50 'Slow down the Shiftin and Shiftout clock
DEFINE USE_LFSR 1 'Use 18Cxxx LFSR instruction
DEFINE XINXLAT_OFF 1 'Don’t translate Xin commands to BS2 format
DEFINE XOUTXLAT_OFF 1 'Don’t translate Xout commands to BS2 format
MICROCODE ESTUDIO
Antes o después de realizar el programa seleccionamos el microcontrolador a ser
utilizado en el programa MICROCODE STUDIO que se encuentra que se encuentra en
la tercera barra de herramientas en la parte superior izquierda por defecto se
encuentra el pic16f628, nosotros lo cambiamos a pic16f628a.
MICROCODE ESTUDIO

Terminado nuestro programa y seleccionado el


microcontrolador guardamos el archivo con el nombre
deseado.
MICROCODE ESTUDIO

Seleccionamos el directorio donde empezaremos a compilar y guardar


nuestros proyectos.
MICROCODE ESTUDIO
Terminado nuestro programa y seleccionado el microcontrolador
guardamos el archivo con el nombre deseado.

Guardado el programa realizamos la compilación del mismo con la primera


herramienta de la tercera
barra de herramientas con la tecla rápida F9.
MICROCODE ESTUDIO
Para finalizar debemos simular nuestro programa y verificar si no tiene fallas.

Si el programa no contiene errores la compilación será correcta y en la parte inferior izquierda aparecerá un mensaje
indicando las palabras utilizada de la memoria del pic16f628a.
PROTEUS

La simulación se la realiza en el programa


PROTEUS con la herramienta ISIS:
PROTEUS

Los materiales para la simulación son los siguientes:


• pic16f628a
• led
• resistencia 220Ω
Para extraer los materiales abrimos la ventana de librerías, escribimos el código de la pieza a ser
utilizada y aceptamos con doble clic o pulsamos el icono de OK.
PROTEUS
De la misma manera para el led pero con el
nombre de “led animated” para poder simular
nuestro programa y visualizar la luminosidad
del led, escogemos el color de nuestro agrado.
PROTEUS

Para la resistencia buscamos “resistor” en la


lista de “category”, en la lista de “sub category”
buscamos la potencia de la resistencia en este
caso 0.6W.
PROTEUS
En la parte izquierda aparecen los dispositivos extraídos de las
librerías en una lista para poderlos simular hacemos un clic
sobre el dispositivo y clic en la hoja de trabajo armando el
circuito, acomodamos el dispositivo donde nos sea más
ordenado.
PROTEUS

Realizamos las conexiones con el puntero del ratón sobre el extremo


del pin que queremos conectar damos un clic y desplazamos al primer
extremo de la resistencia terminado la conexión con otro clic y luego
del segundo extremo de la resistencia al ánodo del led.
PROTEUS
Para que el led trabaje el cátodo debe ir conectado a negativo o a tierra. Para realizar la
conexión a tierra hacemos clic en el icono de “terminals mode”, clic en”ground” y clic en el la
hoja de trabajo para realizar la conexión.

En la cuarta línea que indica “programa file” hacemos clic en el icono de la carpeta abierta,
para cargar el programa buscamos el archivo. HEX donde guardamos el programa compilado
del MICROCODE STUDIO
PROTEUS
Con esto termina la conexión ahora solo queda cargar el programa al
pic, para esto damos doble clic en el microcontrolador y nos aparecerá
una venta:
PROTEUS
PROTEUS
Clic sobre el archivo y abrir, después el
programa vuelve a la anterior ventana donde
ajustamos el valor del cristal a utilizar en la
quinta línea en este caso de 4Mhz.
PROTEUS
Y por último OK para cerrar la ventana y play
para empezar la simulación.

Realizado todo esto verificamos que nuestro programa funcione


correctamente para llevarlo a la forma física.
GRABANDO EL PROGRAMA AL
PIC
Antes de gravar el programa debemos aumentar 3 líneas principales:
Define CLOCK_FREQUENCY = 4 ' (4 Mhz) para el compilador => Pic Simulator Ide
DEFINE OSC 4
(Indicamos que el valor del cristal es de 4Mhz).
Define mclr_off
(Desactivamos el reseteo externo del pic para poder utilizar el pin RA.5).
CMCON = 7
(Desactivamos los comparadores de voltaje para que la compuerta A trabaje como digital).
Entonces el código queda de la siguiente forma:
GRABANDO EL PROGRAMA AL
PIC
Todo completo sera:

trisb.0=0 ;Convertimos Puerto b en Salidas

inicio: ; nombre de subrutina inicio

HIGH portb.1 ; enciende el led que esta


conectado en el pin 7
PAUSE 1000 ; espera un segundo
LOW portb.1 ; apaga el led
PAUSE 1000 ; espera un segundo

GOTO inicio ; continúa el programa para siempre


Volver diapositiva 45
GRABANDO EL PROGRAMA AL
PIC
Guardamos el código y lo compilamos
nuevamente. Si no colocamos estas cuatro
líneas tendremos problemas al montar el
circuito ya que por defecto el programa
utiliza cristal externo, reseteo del pic y los
comparadores de tensión, este último trae
problemas al utilizar la compuerta A como
entrada.
El programa que utilizaremos es el
MICROBURN, el primer paso a realizar es
abrir el soft observar el modelo y colocar
el pic en el grabador luego conectar este a
la PC.

Una vez conectado abrimos el programa y este


reconocerá el pic inmediatamente.
GRABANDO EL PROGRAMA AL
PIC

Si el pic es reconocido debemos


cargar el programa en la
herramienta “Load” e “Import
HEX”.
GRABANDO EL PROGRAMA AL
PIC

Una vez cargado se podrá apreciar que los números hexadecimales encontrados
en “Program Memory” cambian.
GRABANDO EL PROGRAMA AL
PIC

Presionamos el icono de “Program” y


el programa será grabado al pic,
podremos notar que los led’s del
grabador parpadean y si la grabación
es correcta aparecerá un mensaje con
el fondo de color verde.
GRABANDO EL PROGRAMA AL
PIC
MONTAJE DEL CIRCUITO

Por último armamos el circuito.


NOMBRES DE LOS PUERTOS
PARA LOS DIFERENTES MC
Nombre de los puertos para los diferentes
Microcontroladores (12fxx,16fxx,18fxx)

Nombre de los puertos para


los diferentes
Microcontroladores
(12fxx,16fxx,18fxx)
EJEMPLOS
Existen diferentes formas para realizar el parpadeo de un led a continuación
veremos las más utilizadas que nos servirán para los proyectos más avanzados y
para obtener comodidad al momento de programar.

Nombre
Etiquetar o nombrarde los puertos para
una puerta.
Las formas de etiquetar una puerta son varias, algunas ya vimos
los
antesdiferentes
pero las mostramos a continuación.

Microcontroladores
Led
Rojo
VAR
VAR
Portb.0
Porta.0

(12fxx,16fxx,18fxx)
EJEMPLOS

Diseñar una señal de tipo cuadrada con ciclo útil de 50% on y 50% off frecuencia
de 1 Hz (Prender y apagar un led con lapso de un 1s)

Nombre de los puertos para


En el siguiente programa daremos un nombre a un puerto para facilitar la programación.

los diferentes
Microcontroladores
(12fxx,16fxx,18fxx)

Las diferencias son LED VAR PORTB.3 con esta línea etiquetamos a portb.3 con el nombre de
led, HIGH LED con esta línea encendemos el led y LOW LED apagamos el led. En este
ejemplo no se colocó la instrucción END ya que tenemos GOTO INICIO y el programa se
convertirá un ciclo sin fin.
El programa es el siguiente:

EJEMPLOS
Programación con números binarios.

Nombre de los puertos para


los diferenteEl programa es el
siguiente:

s Microcontroladores
(12fxx,16fxx,18fxx)
EJEMPLOS
Juegos de luces.
Diseñar una secuencia la intercalaremos las puertas del puerto B (0,2,4,6) encendidos y
(1,3,5,7) apagados por medio segundo, después de este (0,2,4,6) se apagaran y (1,3,5,7) se
Nombre de los puertos para
encenderán por otro medio segundo después este proceso se repetirá.

los diferentes
Microcontroladores
(12fxx,16fxx,18fxx)
EJEMPLOS
Diseñar un sistema de control de trafico (semáforo) en el cual tenga la calle 1
tenga 12s para conducir, 3 s para preparar el arranque y 12s para no circular.
La calle 2 12 s para no circular, 3 para preparar motor y 12 para circular.
Nombre de los puertos para
Utilizar la asignación de variables de tipo “VAR”

los diferentes
Microcontroladores
(12fxx,16fxx,18fxx)
EJEMPLOS
Diseñar un sistema de arranque de 8 motores no simultaneo, el arranque de
motor deberá ser cada 2 segundo y cuando el ultimo motor se apague
después de 11 segundos prender todos durante 10s (no tomar en cuentas la
Nombre de los puertos para
corriente de arranque por motor, ni la caída de tensión en el enganche)

los diferentes
Microcontroladores
(12fxx,16fxx,18fxx)
SUBRUTINAS ESPECIALES
SUBRUTINAS ESPECIALES.-
Una subrutina especial como asi la podriamos
llamar seria la “GOSUB y el RETURN”

Ejemplo.-
Inicio:
Portb.0=%00000001
GUSUB tiempo
Portb.1=%11111111
GOSUB tiempo
Tiempo:
Pause 1000
RETURN
INSTRUCCIONES FOR- NEXT
La instrucción FOR-NEXT permite a un programa realizar n veces lo programado y su sintaxis es la siguiente:

Donde R es la variable asignada con el valor de 1 hasta 5, es decir se realizara 5 veces lo que este dentro del cuerpo del programa.
Ejemplo
Diseñar las luces de desplazamiento de izquierda a derecha, 7 veces a la izquierda y 7 a la derecha con intervalos de tiempo de 200ms.
ENTRADAS
Proyectos con pulsadores.

En este capítulo veremos cómo utilizar


entradas a un pic para esto tenemos dos
opciones de circuitos.
En la conexión de la parte izquierda es cuando el pic recibe 5V o 1 lógico constantemente y
cuando sea oprimido el pulsador este recibirá 0V o 0 lógico. En la conexión de la parte
derecha pasa lo contrario el pic recibe 0V o cero lógico constantemente y cuando sea
oprimido el pulsador este recibirá 5V o 1 lógico.

Instrucciones IF-THEN-ELSE-ENDIF

Las siguientes instrucciones son muy utilizadas en los lenguajes de alto nivel, en el caso de
la programación de microcontroladores se utilizaran para diversas aplicaciones una de ellas
seran lo pulsadores.

Das könnte Ihnen auch gefallen