Mostrando entradas con la etiqueta Microcontroladores. Mostrar todas las entradas
Mostrando entradas con la etiqueta Microcontroladores. Mostrar todas las entradas

miércoles, 24 de agosto de 2011

Inexado_02

*Diseñar un programa para controlar el nivel del deposito de líquido. El depósito tiene:

  • Tres sondas detectoras ( SV - Sonda de Vacío, SLL - Sonda de Llenado, SR - Sonda de Rebose.
  • Dos bombas de llenado: BOMBA1 y BOMBA2
  • 5 Indicadores: Vacío, Llenandose, Lleno, Rebose, ALARMA
Funcionamiento:
  • Cuando ninguna de las sondas está activada, se entiende que el depósito está vacío y se accionarán las 2 bombas. El indicador VACÍO se  iluminará.
  • Cuando el nivel de líquido toca "SV" se seguirá llenando con ambas bombas. El indicador "Llenandose" se ilumina.
  • Cuando el indicador "SLL" se activa, la BOMBA2 se apaga, sólo queda activa la BOMBA1. El indicador "Lleno" se encenderá.
  • Cuando el indicador "SR" se activa, la BOMBA1 se apaga, El indicador "Rebose" se encenderá.
  • Cuando se produce un fallo o un mal funcionamiento la alarma se encenderá.
EN ASM:
Primero armamos una tabla de verdad para  ayudarnos en el trabajo:


;TABLA DE VERDAD
;====================================================================
;SV SLL SR VACIO LLENANDOSE LLENO REBOSE ALARMA B1 B2
;0 0 0 1 0 0 0 0 1 1  (VACIO1)
;0 0 1 0 0 0 0 1 0 0  (ALARMA1)
;0 1 0 0 0 0 0 1 0 0  (ALARMA2)
;0 1 1         0 0 0 0 1 0 0  (ALARMA3)
;1 0 0              0 1 0 0 0 1 1 (LLENANDOSE1)
;1 0 1 0 0 0 0 1 0 0  (ALARMA4)
;1 1 0 0 0 1 0 0 1 0  (LLENO1)
;1 1 1 0 0 0 1 0 0 0  (REBOSE1)


Definimos el PORTA como entrada y el PORTB como salida:


Main
;====================================================================
        BANK1

movlw b'11111'
movwf TRISA       ;todo el PORTA como entrada
movlw b'00000000'
movwf TRISB       ;todo el PORTB como salida
BANK0


Ppal
movf PORTA,W
andlw b'00000111'
addlw PCL,F              ;Cargo los bits correspondientes a los sensores
goto VACIO1   ;para que siga la tabla de verdad descripta
goto ALARMA1   ;anteriormente
goto ALARMA2
goto ALARMA3
goto LLENANDOSE1  
goto ALARMA4
goto LLENO1
goto REBOSE1


VACIO1
movlw b'10000110'
movwf PORTB

ALARMA1
movlw b'00001000'
movwf PORTB

ALARMA2
movlw b'00001000'
movwf PORTB

ALARMA3
movlw b'00001000'
movwf PORTB

LLENANDOSE1
movlw b'01000110'
movwf PORTB

ALARMA4
movlw b'00001000'
movwf PORTB

LLENO1
movlw b'00100100'
movwf PORTB

REBOSE1
movlw b'00010000'
movwf PORTB
;====================================================================
END ;Directiva que indica la finalización del pgm



lunes, 20 de junio de 2011

Tutorial: Grabación Microcontroladores

El software utilizado es el MPLAB, de microchip para la grabación de microcontroladores PIC. Si se desea grabar un PIC que se encuentra grabado en C, habra que utilizar el mismo procedimiento.

Luego de haber finalizado nuestro proyecto, teniendo el archivo resultante .hex

Conectaremos nuestro microcontrolador en el grabador, cuidadosamente y lo ajustaremos con la pequeña palanca que tiene a un costado, conectaremos a 9V en el power del grabador y un cable serie desde el grabador hasta el puerto Serie (DB9 - COM1) de nuestra pc.
Al conectar la alimentación se encenderá el primer led que nos indicará que el grabador tiene energía
abrir el MPLAB y seleccionar en el menu File - Import

Luego abriremos nuestro archivo .hex, que queremos grabar.


Nos aparecera que el archivo fue cargado:


Seleccionaremos el programador PICSTARTPLUS:





Luego iremos a Program Enable programmer, para habilitar el programador, aqui verificará la correcta conexión con el grabador.





Y de nuevo programmer, pero ahora haremos clic en program, aqui grabá el micro.
En el grabador se encenderá el segundo led, si todo funciona correctamente, ese led se apagará y en la pantalla verémos que el programa se ha grabado correctamente.

jueves, 9 de junio de 2011

Microcontroladores: Programación II

Esta entrada es la continuacion de Microcontroladores: Programación I.
En esta entrada explicaremos las caracteristicas basicas y los procediietos y algunas instrucciones..
La primera parte debemos poner una descipcion de lo que sera el programa.Todas las descripciones empiezan y terminan con";".
La primera parte se llama Header, aqui pondremos el nombre de programa, la fecha,  la version de programa, la compañia, etc.:
Ej:
    Filename:        led.asm                                         
;    Date:             9\6\11                                        
;    File Version:  0.1                                    
;                                                                    
;    Author:           GDD                                       
   Company:         CUBA                                                           




Files Required: P16F684.INC        este archivo relaciona nombres fantasia con posciones de memoria ya est
ablecidas.
de

__CONFIG: Es un registrode configuracion especial, hace que el micro funcione de tal manerau

Luego de config
_CP_OFF &  _WDT_OFF  &   PWRTE_ON  &    RC_OSC

CP: Code Protection, proteje el codigo contra lecturas indeseables (cp = 0: se puede leer perfectamente, cp=1 el micro no se puede leer)

WDT: Watch Dog Timer: Si en un tiempo determinado no realiza una instruccion muy precisa se auto-resetea.

B
PWRTE: Poer up timer: tiempo que sorroe toma el micro para iniciar la apliacacion (72mS)

RC_PSC: Elegimos el cloc de micro

VARIABLE DEFINITIONS
En este sector se definen las variables, la forma mas ordenada es mediante la instruccion CBLOCK, aqui pondremos en que direccion empieza a guardar variables en la memoria GPR
Ej:
CBLOCK 0X0C
w_temp
status_tem
ENDC
PROGRAMA
Para empezar el programa usamos la instruccion ORG
ORG 0X000
CLRW ;  Borro el registro W


movf  status_temp,w ; (lleva esa variable al registro W)
movwf  Status           ; (deja el registro que estba en W en el STATUS)


END ; (Termina el programa)


Aclaracion: Este programa es solo una muestra para explicar, no realiza ninuguna accion siginificativa, mas adelante en blog publicaremos nuevos programas mas complejos.

Microcontroladores: Programación I

Para la programación de los pic se utiliza el software MPLAB de Microchip, se puede descargar desde su web: http://www.microchip.com , deberemos instalarlo en nuestra PC.
Vamos a comenzar nuestro proyecto, teniendo como base una plantilla (Template) que Microchip nos brinda. Para ello iremos a Project -Project Wizard
Ahora nos abrira un asisente, comenzado por la pantalla de bienvenida que deberemos seguir las instrucciones, haciendo clic en siguiente:
Ahora debemos seleccionar el microcontrolador a utilizar (ej: pic16F84A)




Ahora elegiremos con que programa interno vamos a utililizar para ensamblarm en este caso vamos autilizar el assambler dentro del MPASM ToolSuite



Luego elegirmeos la plantilla que vamos a usar,la plantilla es una base que nos da Microchip para empezar a programar, podemos eencontrar la misma dentro de la carpeta C:\Archivos de programa\Microchip\MPASM Suite\Template\Object y seleccionamos nuestro pic. Hacemos clic en Add y aparecera en la ventada de la derecha con una A (A de ADD, que significa agregar), pero  nosotros no quereremos agregar  sino copiar,entonces tendremos que hacer clic en la A, hasta llegar a la C (Copy)
Ahora debemos elegir donde guardara los archivos que genere. Ej: 
C:\LEDII\LEDII
Es conveniente nombrar la carpeta y el archivo con el mismo nombre y directo en la raiz del disco. 
    
Ahora cuando  hagamos clic en siguiente nos dara un breve resumen del proyecto hasta ahora.
Nos abrira una nueva ventana con carpetas, con una carpeta abierta,(Source) con un archivo con extension .ASM, le haremos doble clic y ya podemos empezar a programar.
Las caracteristicas basicas de programacion estaran en la entrada Microcontroladores: Programacion II

Microcontroladores: Memorias

 La arquitectura interna de Pic se divide en las siguientes partes, que seran explicadas en detalle en esta entrada
  • Memoria de Programa (ROM): Donde se guardan todas los comandos del microcontrolador.
  • Memoria de datos: Alli se hallan registros de variables que el microcontrolador necesite crear para funcionar. Se divide en 2 partes
        Area RAM:  Se compone por 22 registros de propostito general (SFR) y 68 de proposito general
        Area EEPROM : Que se compone de 68 registros x 8 bits
  • ALU y Registro de Trabajo W: En este sector se hacen las operaciones matematicas. Que puede ser entre cualquier registro, memoria, puerto, o el codigo de instrucion
  • 2 puertos para la comunicacion con el mundo exterior ó perifericos son: Port A de 5 bits (Pines Desde RA0 hasta RA4) Y el Port B de 8 bits (Puertos desde RB0 hasta RB7)
  • Contador de Programa (Counter Timer) contiene 13 bits, basicamente es el encargado de direccionar las instrucciones de la memoria de programa.

Memoria de DATOS
Como habiamos esxplicado anteriormente la memoria de Datos se divide en 2 partes, la memoria RAM y la memoria EEPROM;:
La memoria RAM es una memoria volatil, que guarda variables, datos, etc. como son variables van variando por lo que tiene que escribirse y rescribirse muchas veces por lo tanto los datos tienen no tienen que ser almacenados, por eso lo de volatil Al ser Volatil al sacarle la energia, los datos en ella se borraran. Los bytes de la RAM, se guardan en direcciones, como por ejemplo 03h (STATUS)
La RAM se divide en 2 partes:
    • GPR: General Purpose Register ó Registros de proposito general: Contiene 68 posisiones de memoria (Bytes) para guardar variables. Son registros de uso general para guardar datos temporales del programa.
    • SFR: Special Fuctions register): Son los primeros registros, cada uno tiene un propoito especial
La memoria de Datos cuenta con dos bancos de memoria: El banco "0" y el banco "1".
  • Los registros del SFR estan entre las direcciones 00h y 0Bh del banco 0 y entre las direcciones 80h y 8Bh. Algunos registros SFR se ecuentran duplicados en ambos bancos, para acelerar los tiempos de busqueda. como por ejemplo el registro PCL.
Si queremos seleccionar algun banco en especial debermos configurar el bit 5 del registro STATUS, Si es un "0" selleccionara el banco "0" y si es un "1" seleccionarmenos el banco 1.

Memoria de Programa
En la memoria de programa se almacenan las instrucciones del programa, estos datos tienen que estar guardados SIEMPRE, por eso, cuando se desconecta la energia los datos se mantienen. Para grabar un microcontrolador se debe tener una computadora con conexion DB9 (SERIE), un equipo llamado programador y un software llamado MPLAB (Microchip - PIC), la programacion del micro esta explicada detalladamente dentro de la etiqueta "Microcontroladores" la entrada Microcontroladores: Programación.
 La utilizacion de la memoria de programa o memoria ROM FLASH, es comoda y facil de usar.

jueves, 19 de mayo de 2011

Microcontroladores (Parte 1)

Los microcontroladores surgieron hace aproximadamente 20 años, lo hicieron basicamente para resolver problemas que traian otros dispositivos mas antiguos.

Las empresas mas conocidas que los fabriquen son:
Microchip - AVR - Atmel y freescale
Microchip es la que mas informacion tiene online. Ademas se encuentra en stock la mayoria de las casas electronica. Y es econimico.
Atmel comenzo con su micro 8051, en la actualidad es el ATMega8
FreeScale (Motorola) comenzo con el 6M28HC705 pero ahora ya fue remplazado por el 628MC908

Microcontroladores PIC
Los microcontroladores pic tienen un buen rendimiento y ahorro de energia. Aqui hay algunos de los mas utilizados.
  • PIC12F683: gama media, sofisticado 8 pines.
  • PIC16F84: Ya es obsoleto pero ha servido mas de 15 años, ha ayudado mucho a entender la metodologia de trabajo de Microchip. Este tiene mucha y muy buena bibliografia para consultar.
  • PIC16F877: Ya esta en vias de extincion porque fue reemplazado por el PIC16F887.
  • PIC18F452: ya es antiguo y obsoleto. Pero ya ha sideo reemplazado por otro mas nuevo y tambien de gama alta: PIC18F4620.
  • PIC18F4550: Superpotente
  • PIC16F88: Complejo, es la versión mejorada del 16F84


2 Estructuras


VON NEUMAN (FREESCALE)









Funciona y funcionó por mucho tiempo
Mas que nada por su sencillez para el
usuario (pero es mas compleja para
el fabricante)
BUS = 8 bits

HARVARD(PIC)





En esta estructura no se congestiona el BUS,
ya que la memoria de datos y la de programa estan
separadas, esto trae una mayor rapidez pero
con una mayor complejidad
BUS(datos)=8bits BUS(prog)=14bits
Los microcontroladores trabajan entre los 150 y 200 Mhz




Funcionamiento Microcontrolador
Alimentación:
Todos los Microcontroladores funcionan con 5V, algunos pueden soportar hasta 7.5V. Pero como hacemos para tener una tension de 5 V, para evitar tener una tension alta y quemarlo?
Lo podremos hacer con un 7805, un componente electronico que regula la tension de salida en 5V.
Estos 5V iran en la pata VDD del microcontrolador.

Reset:
A los microcontroladores les podremos agregar un boton de RESET, esto hara que que al presionar un boton el microcontrolador se reinicie. Este circuito se conectara a la pata MCLR. Es un circuito muy sencillo compuesto desde el pin de reset un pulsador que va a masa y una resistencia que va a VDD.
Hay 2 tipos de reset
En frio: cuando llega por primera vez a 5V (Power Up)
En caliente: Cuando ya estaba funcionando


Clock:
El clock es en pocas palabras lo que posibilita al Micro a realizar el programa, la velocidad del programa depende del blog

Existen 4 modos distintos de clock: RC, LP, XT y HS
El clock es lo que define la velocidad del programa del microcontrolador, marca el ritmo del mismo.
Los circuitos para los modos LP, HT y HS son iguales y es el siguiente:
Donde C1 y C2 son 22pF y Xtal es un cristal de cuarzo cuyo costo es aprox. $3.
Los cristales su exactitud se mide en partes por millon (ppm)
ej: una estabilidad de 100 ppm
significa que por cada millon de Hertz existen 100 hz de error.
Pero tambien lo afecta la temperatura.

Frecuencias de Htal segun modo:
En modo LP: Frecuencias menores a 10KHz
En modo XT: Frecuencias entre 10KHz y 4Mhz
En modo HS: Frecuencias entre 4MHz y 20Mhz

Diferencias modos:
El modo RC no es muy usable, cuesta muy poco , no tiene precision porque sabemos su frecuencia.
Los modos XT, y HS son muy usados.
El modo HS tiene una alta velocidad.

Hay que tratar que la recuencia del micro sea lo mas alta posible.
¿Como sabemos cuanto es la frecuencia del mico? Ej: PIC-------A-20:: ese 20 equivale a 20MHz

Puertos de entrada y salida (Rax y Rbx)
Todos los pines de los puertos "A" como los del "B", pueden ser utilizados como entradas o como salidas (IN/OUT)
Pero hay que tener cietas precauciones con las corrientes:
  • La corriente entrante en modo SINK no puede superar los 25mA
  • Y las corrientes de salidas en modo source no puden excender los 20mA
  • En el port B la corriente en modo Sink no puede ser mayor a 150mA
  • En el port B la corriente en modo Source no puede ser mayor a 100mA
  • En el port A la corriente en modo Sink no puede ser mayor a 80mA
  • En el port A la corriente en modo Source no puede ser mayor a 50mA
Si alguna de las corrientes superan estos valores el micro se resetea.

Programación Microcontrolador
Para programar el microcontrolador se necesitan 5 pines:
  • RB6 (Clock)
  • RB7 (DATA)
  • MCLR (12V Vpp: tensión de programación)
  • VDD (5V)
  • VSS (TIERRA)
Para programar el microcontrolador vamos a necesitar un Software para la PC, El programa utilizado va a ser el MPLAB 8, donde se lo puede descargar desde la web de Microchip: http://www.microchip.com/
El MPLAB IDE (Integrated Depelovement Enviroment) tiene cuatro programas:
  • Ensamblador
  • Editor
  • Simlador
  • Programador: Es el que se encarga de hacer el vinculo entre el programa fuente y los "0" y "1" de la DATA.