Inicio

martes, 29 de enero de 2013

LCD Gráfico


LCD Gráfico - Soy Pou


El Pic que vamos a utilizar en esta práctica es el 18F4550 y el LCD gráfico es el modelo HDM64GS12, el cual tiene una resolución de 128 x 64.
Para realizar el código para esta practica utilizamos el entorno de trabajo MPlab.



El Lcd gráfico deberá mostrar los siguientes puntos:

  • Una animación.
  • Valores tipo char.
  • Valor tipo float.


Para realizar esta practica sera necesaria la utilización de tres librerías:
  • Librería HDM64GS12.c la cual nos permite configurar los pines y pixeles de nuestro LCD.
  • Librería GRAPHICS.C esta contienes las funciones para realizar las distintas formas como círculos ,lineas y caracteres.
  • Librería empleada es MATH.h esta nos permite realizar operaciones matemáticas.
Una vez realizado nuestro código obtendremos el código y simulado en proteus este es nuestro resultado.


Cuando comprobamos su funcionamiento en Isis-Proteus pasamos a ala placa Picdem con el Pic 18F4550, el programa lo descargamos atravez del ICD 3 mediante MPlab.



Aquí dejo para descargar ISIS y el .C :

Señal analógico-digital RS232


Convertir una señal analógica en digital y enviarla por un RS232


Vamos a realizar este ejercicio en Isis-Proteus debido a que este ejercicio solo lo vamos a simular.
Para crear el código necesario para realizar la practica utilizaremos el compilador Pcw de CCS. una vez generado el código como ya realizamos en practicas anteriores procederemos a simular.
Este es el esquemático diseñado en Proteus.



Como podemos observar la lectura la hacemos en RA0 y metemos una tensión de 2 voltios.
Mediante RC6 transferimos los datos a Virtual terminal.



Una vez creado nuestro código lo compilamos y utilizamos para la simulación los archivos .Cof o .Hex
Realizamos la simulación y obtendremos la el valor mediante el virtual terminal.


Aquí dejo para descargar ISIS y el .C :

lunes, 28 de enero de 2013

Maquina envasado


Maquina envasado de 10 piezas 


Dos relés "M1" (RB0) y "M2" (RB1) gobiernan dos motores que arrastran dos cintas transportadoras. "M1" (RB0) transporta piezas y "M2" (RB1) embalajes. Un sensor "DP" (RA1) detecta el paso de piezas y, otro "DE" (RA2), detecta el correcto posicionamiento de un envase. Al detectarse el paso de 10 piezas, el envase se considera lleno, se activa una señal acústica "A" (RB2) y, la cinta que transporta embalajes, se desplaza hasta situar un nuevo envase vacío. En este momento se desactiva la señal acústica "A"(RB2) y nuevamente avanza la cinta de piezas repitiéndose así el ciclo. Un interruptor "I" (RA0) activa o no a todo el sistema.


Para realizar la siguiente practica utilizare ISIS-Proteus para simular el funcionamiento de nuestro programa y utilizaremos un Pic 16F877 y contara con un reset externo.



Para crear el código necesario para realizar la practica utilizaremos el compilador Pcw de CCS. Una vez creado el código compilaremos y obtendremos distintos archivo.
Para realizar nuestra simulación utilizaremos el Archivo .Cof o .Hex.



Simulación en ISIS-Proteus:

  • Activamos la cinta y se enciende el motor que transporta las piezas.
  • Una vez activada la cinta se empieza a transportar las piezas para saber que hay piezas tenemos un detector Dp y su colocación el detector De.
  • Cuando los detector Dp detecta el paso de 10 piezas se activa una señal acústica y se activa el motor M1.


Aquí dejo para descargar ISIS y el .C :


Sistema combinacional



Programa combinacional







Según el estado de los interruptores RA0 y RA1, activar los Leds RB0-RB7 conectados a la puerta B, conforme a la siguiente tabla de la verdad:




Para realizar la siguiente practica utilizare ISIS-Proteus para simular el funcionamiento de nuestro programa y utilizaremos un Pic 16F877.






Para crear el código necesario para realizar la practica utilizaremos el compilador Pcw de CCS. Una vez creado el código compilaremos y obtendremos distintos archivo.
Para realizar nuestra simulación utilizaremos el Archivo .Cof o .Hex.







Simulación en ISIS-Proteus:


  • RA1=0 y RA0 =0




  • RA1 =0 y RA0=1




  • RA1=1 y RA0=0





  • RA1=1 y RA0=1




Aquí dejo para descargar ISIS y el .C :


domingo, 27 de enero de 2013

Sistema Microcontrolador

Antes de empezar os voy a explicar los puntos que vamos  a seguir para el diseño y fabricación del sistema microcontrolador:

Isis-Proteus

  • El Pic18f4550 y conexión USB.
  • Reset manual.
  • El oscilador externo.
  • Bus de expansión.
  • Lcd Gráfico 128x64.
  • Leds. 
  • Conector MAX232 y conector DB9.
  • La fuente de alimentación con desacoplos bypass.
  • Conector ICD3 (rj12).
Ares-Proteus
  • Colocación de componentes. 
  • Proceso de rutado automático.
  • Plano de masa.
  • Serigrafía de la placa

Diseño de placa MicrocontroladorIsis-Proteus:

El sistema microcontrolador que vamos a diseñar nos permitirá realizar pruebas con nuestro PICC 18F4550 y consta de distintos periféricos mediante los cuales podremos realizar distintas tareas.


  • El Pic18F4550 y conexión USB:


Como podemos observar en la imagen anterior estas son las características de nuestro Pic 18F4550.
Nosotros tendremos que buscar un Pic similar y cambiar el patillaje y añadir los pines necesarios ( os recuerdo que esto lo explicamos en el punto como crear un componente en ISIS/ARES-Proteus).




Como podemos observar he utilizado un USB tipo B para poder comunicarnos con nuestro Pic 18F4550.

Aquí dejo el Datasheet Picc 18F4550 :


  • Reset manual:

Como podemos observar Nuestro reset externo va conectado al Pin MCLR de nuestro Pic. 
Este consta de un pulsador doble para evitar los rebotes que se puedan producir.



  • El oscilador externo:
Como ya sabemos nuestro Pic tiene un oscilador interno de 8Mhz pero para poder trabajar con una mayor frecuencia he implementado un oscilador externo que consta con un crystal de 20Mhz y el cual va conectado alas patillas Osc1 y Osc2 de nuestro Pic, para utilizarlo cuando sea necesario implemente un jumper para tener su control.



  • Bus de expansión:
Este nos permitirá tener la comunicación con el PIC 18F4550 y  comunicarnos con componentes externos a  nuestra placa.




  • Lcd Gráfico 128x64:
El Lcd que vamos utilizar tendrá la función de mostrar la información necesaria y la cual queramos esta podrá ser de cualquier tipo según nuestra configuración para ello tenemos un librería personalizada HDM64GS12, el Lcd consta de una resistencia variable la cual nos permitirá ajustar el constaste, un jumper para utilizarlo cuando sea necesario.


  • Leds:
Estos led nos indicaran el trafico de datos así como la comunicación aunque pueden tener otras funciones si los configuramos.



  • Conector MAX232 y conector DB9:
El MAX232, es un conversor de niveles de RS232 a TTL y viceversa, para este es necesario una fuente de 5 voltios. El MAX232 es necesario ya que el PIC utiliza niveles TTL, y si lo conectáramos directamente achicharraríamos nuestro Pic.
El conector DB9 es el que establece la comunicación con nuestro ordenador y la placa a través de un cable de moden nulo.


Aquí dejo el Datasheet MAX232 :


  • La fuente de alimentación con desacoplos bypass:
La fuente de alimentación tienes dos conectores dos conectores para la entrada de alimentación:

  • Una regleta 
  • Un Jack dc
LM7805 nos permitirá regular y estabilizar la tensión de 5 voltios necesaria para nuestra placa, Para saber si nuestra fuente de alimentación funciona correctamente colocamos un led el cual nos servirá como indicación de funcionamiento.
Por ultimo utilizaremos condensadores de desacoplo o Bypass para la proteccion de nuestra placa.


  • Conector ICD3 (rj12):

Nuestros ICD3 nos permitirá programar nuestro Pic, es uno de los componentes fundamentales de nuestra diseño y placa, se ha empleado un conector rj12 como podemos observar en la siguiente imagen tienes sus distintos pines conectad, este componente es un creación propia por lo cual a tenido que ser creado.




Ares-Proteus:

Una vez terminado el proceso de diseño en Isis-proteus procedemos a Ares-proteus donde diseñaremos nuestra placa como resultado final.
Como ya sabéis tendremos que exportar nuestro diseño de Isis a Ares en la barra de menús buscamos el logotipo de Ares ( como en la imagen ).



Proceso de diseño de la placa:


  • Dimensiones:

Para calcular el tamaño de nuestra placa procederemos a elegir  Board edge en la pestaña donde seleccionamos todas las capas, y después a partir del eje de ordenadas colocaremos nuestras dimensiones correspondientes.




  • Colocación de componentes:

Para insertar los componentes iremos a la opción Component mode en la barra de menú lateral izquierda.
En Components tenemos todos nuestros componentes.





El siguiente paso sera la colocación de los componentes podemos elegir en que cara se colocaran:

  • Component Side(Top Copper)
  • En la solder side(bottom copper).



Una vez terminado la colocación de los componentes procedemos al siguiente paso.

  • Configuración de rutado:
Para realizar la configuración vamos a la barra de menús tenemos la opción Design rule manager.





Una ves abierta la ventana realizaremos la configuración:
  1. Pulsamos Net classes.
  2. Elejimos la Net class ( Power o Signal ).
  3. Trace style a T40 
  4.  Via style a V60

  • Rutado automático:
Una vez terminada la configuración procedemos al rutado automático en la barra de  menú buscamos Auto-router.


Abierta la ventana dejamos los valores por defecto y pulsamos Beging routing.



Una vez terminado el Auto-router verificaremos nuestra placa y realizaremos algún cambio si es necesario.

  • Plano de masa:
En la barra de menú buscamos Tools-Power plane-generator..



Tras abrir la ventana configuraremos el plano de masa:
  1. Net (elegiremos la que sea necesaria).
  2. Layer/colour (Top o Bottom Cooper).
  3. Clearance como minimo 2mm.



  • Serigrafía de la placa:
La serigrafía nos permitirá identificar los componentes y marcarlos mediante tinta para realizar este proceso seguiremos los siguientes pasos :
  1. En ala pestaña inferior elegimos Top Silk
  2. Elegimos la forma en la cual vamos a marcar nuestra placa.
  3. El texto con el que vamos a llamar nuestra parte marcada.



Una vez terminada nuestra placa, éste será el resultado:


Para descargar Isis/Ares Proteus Sistema microcontrolador:


sábado, 26 de enero de 2013

I²C

Antes de nada procederé a explicar que es I²C y la placa que he fabricado para su utilización.

¿Que es I²C?


Es un bus de comunicaciones en serie. Su nombre viene de Inter-Integrated Circuit (Inter-Circuitos Integrados).
Es un bus muy usado en la industria, principalmente para comunicar micro-controladores y sus periféricos en sistemas integrados.


La principal característica de I²C es que utiliza dos líneas para transmitir la información: una para los datos y por otra la señal de reloj. También es necesaria una tercera línea, pero esta sólo es la referencia (masa). Como suelen comunicarse circuitos en una misma placa que comparten una misma masa esta tercera línea no suele ser necesaria.

Las líneas se llaman:
  • SDA (System Data) permiten comunicarse a los dispositivos mediante datos.
  • SCL (System Clock) sincroniza el sistema atravez de los pulsos de reloj.
  • GND tierra

Las dos primeras líneas son drenador abierto, por lo que necesitan resistencias de pull-up (resistencias de 10K ohmios.


Comunicación mediante I²C

Se definen los tipos básicos de mensajes, cada uno de los cuales comienza con una START y termina con un STOP:
Mensaje único donde un maestro escribe los datos en un esclavo.
Mensaje único donde un maestro lee datos de un esclavo.


En la siguiente imagen podemos encontrar el proceso de comunicación y recepción de datos mediante el bus I2C.







Siguiendo la estructura de comunicación de la imagen anterior podemos decir:

La estructura de la comunicación básica es la siguiente:

  1. START condición (Maestro)
  2. 7 Bits de direccion de esclavo (Maestro)
  3. 1 Bit de RW, 0 es Leer y 1 Escribir. (Maestro)
  4. 1 Bit de Acknowledge (Esclavo)
  5. Byte de dirección de memoria (Maestro)
  6. 1 Bit de Acknowledge (Esclavo)
  7. Byte de datos (Maestro/Esclavo (Escritura/Lectura))
  8. 1 Bit de Acknowledge (Esclavo/Maestro (Escritura/Lectura))
  9. STOP condición (Maestro) 
¿Qué es el bit de Acknowledge (ACK)?

Este bit es una respuesta del esclavo al maestro.


Diseño de placa I²C

Isis-Proteus:


Como podemos observar la placa a diseñar constara de:
  • Ribbon de 40 pines.
  • Modulo ADC/DAC.
  • Reloj-calendario.
  • Teclado matricial.


  • Ribbon de 40 pines
Este nos permitirá tener la comunicación con el PIC 18F4550 y mediante el cual podremos comunicar nuestra placa con distintos componentes.


  • Modulo ADC/DAC




El ADC/DAC de 8 bit nos permite convertir señales analógicas a señales digitales y a su contrario, el chip utilizado para realizar la tarea es el PCF8591.

Aquí os dejo una pequeña explicación del funcionamiento del PCF8591 junto a su PDF:

El PCF8591 es un chip único, de una sola fuente de alimentación de bajo 8-bit CMOS dispositivo de adquisición de datos con cuatro analógica entradas, una salida analógica y una interfaz serial I2C-bus.
Tres pines de dirección A0, A1 y ​​A2 se utilizan para la programación de la dirección de hardware, lo que permite el uso de hasta ocho dispositivos conectados al bus I2C sin hardware adicional. Dirección, control y datos hacia y desde el dispositivo se transfieren en serie a través de la línea de dos bidireccional I2C-bus.





  • Reloj-calendario

Para diseñar este dispositivo utilizamos un chip PCF8583 y como podemos ver en la imagen colocamos una pila para evitar la perdida de datos, también colocamos un jumper para utilizar este dispositivo cuando queramos.

Aquí os dejo una pequeña explicación del funcionamiento del PCF8583 junto a su PDF:

El PCF8583 es un reloj/ calendario basado en una RAM estática de 2048 bits organizado en 256 palabras de 8 bits, las direcciones y datos son transferidos de forma serial vía bus I2C. Los 8 primeros bytes de la RAM son usados para la función de conteo del reloj/ calendario, los siguientes 8 bytes pueden ser programados como registros de alarma o espacio libre de RAM, los 240 bytes restantes son espacio libre de la RAM.



  • Teclado matricial


El teclado que vamos a utilizar para nuestro diseño esta formado por 12 pulsadores dobles , 7 resistencias las cuales corresponde a una columna y fila , mediante ellas obtendremos una serie de voltajes que utilizaremos para saber que botón pulsamos.Como en anteriores dispositivos utilizamos un jumper para activar/desactivar el dispositivo.

Ares-Proteus:

Una vez terminado el proceso de diseño en Isis-proteus procedemos a Ares-proteus donde diseñaremos nuestra placa como resultado final. 
Como ya sabéis tendremos que exportar nuestro diseño de Isis a Ares en la barra de menús buscamos El logotipo de ares ( como en la imagen).


Una vez en Ares procederemos a la comprobación de todos los componentes. Si tenemos que crear alguno como en esta placa ( pila de 3,6 voltios ) procedemos a su creación antes de empezar con el diseño de esta.
La creación de un componente  y huella tanto en Isis como en Ares lo podemos encontrar en  mi blog.

Os enseño mi placa una vez terminada :

  
 Pero antes de ello os indicare como realizar el rutado manual de las pistas:


Como podemos observar en la imagen anterior tenemos puntos sin unir para esto realizaremos los siguientes pasos y mediante los cuales podremos aplicarlos a todo nuestros diseño.

Proceso de rutado manual:

  • Elijemos en la barra de herramientas de la parte izquierda crear una pista, decidimos su ancho ( como mínimo nuestro ancho de pista ser de T20 ) yo utilizare T40, y por ultimo elegimos la pista en que cara se va a implementar TOP o BOTTOM Copper.

  • El siguiente paso sera pulsar sobre el Pad a unir del componen y arrastra la pista emergente hasta el Pad con el cual queremos unir nuestra pista.


  • Si tenemos que realizar un cambio de vía pulsaremos doble-clic y lo realizara automáticamente el cambio de pista por ejemplo: tenemos una pista en Bottom Cooper y necesitamos cambiar de pista realizamos doble-clic y se efectuara el cambio de pista mediante un cambio de vía.

Una ves terminado nuestra placa podremos observar el diseño en 3D en la barra de menú buscamos Output/Diseño 3D.

Mi placa en 3D:

Estos son los diseños de Isis y Ares para descargar: