viernes, 25 de junio de 2021

Control LED RGB en Microcontrolador Atmega16 [Proyecto #02]

       

Programando Embedded System Microcontroller con Metologia interactiva.

                                                                                                  

GILBERTO PASCUAL, 2021

gpascualt@gmail.com

 

Lenguaje C y el Microcontrolador AVR

 

Control de Led RGB con el Microcontrolador Atmega16 [Proyecto #02]

 

Passive Avr Programmer    

 

Figura1

 

Figura2

“Ahora usted puede aprender a Programar Microcontroladores de forma muy fácil”.


1.    Descripción del Proyecto #02: 

Dentro de este pequeño proyecto, podremos controlar un Led RGB  conectado al puerto D (Pin0, Pin1 y Pin2) del Microcontrolador Atmega16, usando lenguaje C para la programación de control. 

Dentro de este proyecto se aprenderá a configurar y habilitar solo los pines a usar como salida del Microcontrolador Atmega16, a diferencia del proyecto anterior donde se habilitaba todo el puerto D como salida. 

Adicionalmente se aprenderá a usar sintaxis de lenguaje C, uso de hojas de configuraciones, añadir librerías y realizar una programación avanzada y esquematizada para facilitar la programación, modificación y entender la programación avanzada de proyectos más complejos en lenguaje C, también se usara funciones de retardo de tiempo o delay y poder enviar un “0” o “1” lógico de manera independiente a cada pin del Microcontrolador Atmega16. 

Finalmente se realizara la simulación e implementación del circuito electrónico, para validar el funcionamiento de nuestro programa de control elaborado en Lenguaje C para programar el control del Led RGB mediante el microcontrolador Atmega16.

 

2.    Diagrama de Flujo del Proyecto #02: 

En la Figura4, se muestra el diagrama de flujo que seguirá nuestro programa de control en lenguaje C para el control del Led RGB en el Microcontrolador Atmega16, dentro del diagrama de flujo se intentó ser lo más descriptivo posible para entender el funcionamiento de programa desarrollado. 

Dentro del diagrama de flujo de la Figura N°4, adicionalmente se puede apreciar el uso de hojas “.h” que han sido creados en nuestro aplicativo de programación, los cuales son llamados dentro de nuestro programa principal (“main”). Aunque el programa es fácil de crear sin el uso de las hojas adicionales, para la programación más compleja y esquematizada, es necesario el uso de este tipo de programación.

 Adicionalmente en la Figura3, se muestra un diagrama interno del Led RGB, para poder entender el control y funcionamiento de este dispositivo.

 

Figura 3. Diagrama electrónico interno del Led RGB.

 


 Figura 4. Diagrama de flujo del control para 02 Leds RGB en el Microcontrolador Atmega16.

 

 3.    Circuito Electrónico del Proyecto #02: 

En la Figura5, se muestra el diagrama electrónico del nuestro proyecto de control de 02 Leds RGB mediante el Microcontrolador Atmega16, para este circuito se ha simulado un Led RGB de cátodo Común. El diseño de este circuito se ha realizado para ser implementado en un ambiente de pruebas, teniendo presente que el Microcontrolador alimentara a todos los pines de los 02 Leds RGB, pudiendo generar consumo excesivo de corriente por parte del Microcontrolador Atmega16. 

Para el diseño a escala o para un ambiente de producción, se debe hacer uso de otros elementos electrónicos que alimenten los pines del Led RGB, y que el Microcontrolador Atmega16 solo sea el dispositivo de control y no de alimentación de los pines del Led RGB.

 

Figura 5. Circuito Electrónico del control de Led RGB cátodo común con el Microcontrolador Atmega16.

  

4.    Código en Lenguaje C del Proyecto #02: 

A continuación, en la Figura6, se muestra el código escrito en Lenguaje C para controlar 02 Leds RGB conectados en el Puerto D y Puerto C del Microcontrolador Atmega16.

 

Figura 6. Programa principal en lenguaje C, para control de 02 Leds RGB con el Microcontrolador Atmega16. (main.c)

 Dentro de este proyecto hicimos uso de otras hojas “.h”, externas que han sido creados para declarar y definir variables que se usaran dentro de nuestro programa principal. 

La hoja “rgb.h”, dentro de esta hoja declaramos todas las hojas adicionales y librerías que se usaran dentro de nuestro programa principal.

 

Figura 7. Hoja rgb.h donde se declaran todas la librerías a usar en programa principal.

La hoja “config.h”; dentro de esta hoja nosotros declararemos todas configuraciones, variables y opciones que puede tener nuestro programa principal, en nuestro caso solo hemos configurado el tiempo, que estarán prendidos y apagados los colores de los Leds RGB y habilitado para usar la hoja de configuración del Atmega16

 

Figura 8. Hoja config.h donde se declaran variables y opciones de configuración.

La hoja “cpu_map.h”; dentro de esta hoja cargamos todas las hojas de configuración de todos los microcontroladores que podríamos usar, esa hoja de configuración para cada microcontrolador, nosotros los creamos y personalizamos para cada microcontrolador a usar.

 

Figura 9. Hoja cpu_map.h donde cargaremos todos los microcontroladores y su hoja de configuración.  

La hoja “cpu_map_atmega16.h”; en esta hoja hemos declarado el renombrado de los pines a usar del microcontrolador, así como algunas variables predefinidas que se usaran dentro de nuestro programa principal, mediante este método, el programar se realiza de manera fácil e intuitiva, así como fuera programar en lenguaje C.

 

Figura 10. Hoja cpu_map_atmega16.h donde definimos los pines, y nombramos los pines y creamos variables.

Aunque la programación de estas hojas adicionales es un poco complicada al inicio, después de realizarlo cualquier cambio, funciona a desarrollar o revisar algún error dentro de nuestro programa es más fácil que revisar solo un archivo que contenga cientos de líneas de código, que sería muy complicado encontrar algún error, adicionalmente es más fácil migrar un proyecto a otro microcontrolador, puesto que el nombre de los registros internos del microcontrolador cambia del Microcontrolador a usar y nos es una buena práctica declarar todo en el programa principal.

  

5.    Video de la simulación e implementación del Proyecto #02:

 El siguiente video muestra la simulación del código de control de Led RGB escrito en Lenguaje C y simulado en ISIS de Proteus. Adicionalmente el video muestra la implementación del circuito electrónico y el código grabado en un microcontrolador Atmega16 para el control de Led RGB desarrollado en nuestro proyecto.

   


 6.    Descargar el código, circuito electrónico y paper del Proyecto #02:

El código fuente, circuito electrónico y paper del proyecto de control de Led RGB mediante el Microcontrolador Atmega16, los puede descargar desde el siguiente Link de Google Drive. 

 

https://drive.google.com/drive/folders/1rQZ4zpbzZPj6hGm8SXQHjD8dwu5P8-0g?usp=sharing

 

 

“Si te gusto el artículo, compártelo, recuerda que hay otros que desean aprender y tú puedes ayudarlos también comentando  y  compartiéndolo en tus redes”.

 

¡Gracias!

Atte. Gilberto Pascual

jueves, 17 de junio de 2021

Parpadeo de LEDs en Microcontrolador Atmega16 [Proyecto #01]

 

Programando Embedded System Microcontroller con Metologia interactiva.

                                                                                                

GILBERTO PASCUAL, 2021

gpascualt@gmail.com

 

Lenguaje C y el Microcontrolador AVR

 

Parpadeo de Leds en el Microcontrolador Atmega16 [Proyecto #01]

 

Passive Avr Programmer

  

 

Figura1

 

Figura2

 “Ahora usted puede aprender a Programar Microcontroladores de forma muy fácil”.


1.    Descripción del Proyecto #01: 

Dentro de este pequeño proyecto, podremos controlar 08 Leds conectados al puerto D del Microcontrolador Atmega16, usando lenguaje C para la programación de control. Dentro de este proyecto se aprenderá a configurar los pines de salida del Microcontrolador Atmega16,  aprender a usar sintaxis de lenguaje C, uso de funciones de bucle como son la función while y for, también se usara funciones de retardo de tiempo o delay. 

Finalmente se realizara la simulación e implementación del circuito electrónico, para validar el funcionamiento de nuestro programa de control elaborado en Lenguaje C para programar el control de los Leds mediante el microcontrolador Atmega16.

 

2.    Diagrama de Flujo del Proyecto #01: 

En la Figura4, se muestra el diagrama de flujo que seguirá nuestro programa de control en lenguaje C para el parpadeo de Leds en el Microcontrolador Atmega16, dentro del diagrama de flujo se intentó ser lo más descriptivo posible para entender el funcionamiento de programa desarrollado. 

Dentro del diagrama de flujo de la Figura N°4, adicionalmente se puede apreciar el uso de una variable “i”, que será el encargado de incrementar y decrecer de tal forma que siempre será un múltiplo de 2, es decir seguirá el siguiente patrón en cada interacción para cada “for” dentro del programa principal (“main”):

 

Figura 3. Tabla de valores de i dentro de las funciones for.

 

 Figura 4. Diagrama de flujo del parpadeo de Leds en el Microcontrolador Atmega16.

 

3.    Circuito Electrónico del Proyecto #01: 

En la Figura5, se muestra el diagrama electrónico del nuestro proyecto de control de Leds mediante el Microcontrolador Atmega16, el diseño de este circuito se ha realizado para ser implementado en un ambiente de pruebas, teniendo presente que el Microcontrolador alimentara a todos los Leds, pudiendo generar consumo excesivo de corriente por parte del Microcontrolador Atmega16. 

Para el diseño a escala o para un ambiente de producción, se debe hacer uso de otros elementos electrónicos que alimenten los Leds, y que el Microcontrolador Atmega16 solo sea el dispositivo de control y no de alimentación de los Leds. 

 

Figura 5. Circuito Electrónico del parpadeo de Leds en el Microcontrolador Atmega16. 

 

4.    Código en Lenguaje C del Proyecto #1: 

A continuación, en la Figura6, se muestra el código escrito en Lenguaje C para controlar los Leds conectados en el Puerto D del Microcontrolador Atmega16.

 

Figura 6. Programa (firmware) en lenguaje C, para control del Leds con el Microcontrolador Atmega16. 

 

5.    Video de la simulación e implementación del Proyecto #01:

 El siguiente video muestra la simulación del código de control de Leds escrito en Lenguaje C y simulado en ISIS de Proteus. Adicionalmente el video muestra la implementación del circuito electrónico y el código grabado en un microcontrolador Atmega16 para el control de Leds desarrollado en nuestro proyecto. 

 


  6.    Descargar el código, circuito electrónico y paper del Proyecto #1: 

El código fuente, circuito electrónico y paper del proyecto de parpadeo de Leds mediante el Microcontrolador Atmega16, los puede descargar desde el siguiente Link de Google Drive. 


https://drive.google.com/drive/folders/18VYAKotyMIS_pIEF-JkveqMON1WdFk62?usp=sharing

  


“Si te gusto el artículo, compártelo, recuerda que hay otros que desean aprender y tú puedes ayudarlos también comentando  y  compartiéndolo en tus redes”.

 

¡Gracias!

Atte. Gilberto Pascual

jueves, 11 de febrero de 2021

Curso 02: Hardware el microcontrolador AVR

 

Programando Embedded System Microcontroller con Metologia interactiva.

                                                                                                   

GILBERTO PASCUAL, 2021

gpascualt@gmail.com  

Hardware el Microcontrolador AVR

Passive Avr

Programmer

 

 

Figura1

 

Figura2

 

“Ahora usted puede aprender a Programar Microcontroladores de forma muy fácil”.

 

1.    Hardware, el Microcontrolador AVR: 

Un Microcontrolador es un circuito electrónico de propósito general; es una computadora completa dentro de un circuito integrado (IC o chip). Normalmente conocido como IC o chip, por ejemplo el amplificador TDA2822M o el opam LM386 su función y sus pines son fijos, no tienes control sobre lo que hacen y, por lo tanto, el control es limitado al propósito que fueron creados.

 Con un Microcontrolador, cualquiera que sea su control, usted decide:

• Cuál será la función del CI

• Para qué se utilizan la mayoría de los pines (entradas o salidas).

• Y a qué dispositivos externos de entrada / salida están conectados estos pines. 

Si desea un temporizador de huevos, una alarma para el automóvil, un control remoto por infrarrojos o lo que sea, todo se puede hacer con un Microcontrolador. 

ATMEL (www.atmel.com) dispone de una gama comercial de Microcontroladores denominada "AVR". Comenzaremos usando el ATMEGA16, tiene 16kbytes de Flash para almacenamiento de programas, 1024 bytes de RAM y 512 bytes de EEPROM para almacenamiento de datos a largo plazo.

 

Figura 3. Pines del Microcontrolador Atmega16.

 De los 40 pines: 

• VCC (10) y GND (11,31) están dedicados a la alimentación, VCC es voltaje positivo, por ejemplo, 4,5 V

• AVCC (30) es un voltaje especial para medir voltajes analógicos (conectar a VCC / 5V).

• Hay cuatro puertos de E / S accesibles portA,  portB, portC y portD (los Microcontroladores AVR más grandes tienen más puertos) Un puerto es un grupo de 8 pines de E / S que se pueden controlar juntos.

• PB5 (6), PB6 (7), PB7 (8), RESET (9) son pines que se utilizan para cargar los programas (PB0, PB1, PB2 se pueden usar como E / S).  

 

2.    Fuentes de alimentación: 

La mayoría de los Microcontroladores funcionan con voltajes bajos de 4,5 V a 5,5 V, por lo que pueden funcionar con baterías o con CC fuente de alimentación, los voltajes superiores a estos destruirán el micro. Una L en un número de modelo de AVR significa puede funcionar a un voltaje aún menor. Algunos solo funcionan a 1,8 V, ¡así que consulte la hoja de datos! 

Por ejemplo el Microcontrolador Atmega16, pueda trabajar con el siguiente rango de voltajes  

Figura 4. Rango de voltajes de operatividad del Microcontrolador Atmega16.

  

3.    Programación de AVR 

Los Microcontroladores, como el AVR, están controlados por software y no hacen nada hasta que tienen un programa dentro de ellos. 

Los programas AVR se escriben en una PC utilizando el BASCOM-AVR.

Este software es un tipo de programa de computadora llamado compilador, proviene de www.mcselec.com.

 

Figura 5. Software BASCOM AVR para programación del Microcontrolador Atmega16.


El sistema operativo en el cual hemos instalado el programa y haremos uso durante el curso es Windows 10 Pro x 64bits.

 

Figura 6. Sistema Operativo Windows 10 Pro a usar dentro del curso.

 

4.    Tablero de circuitos

A menudo, en electrónica se requiere algo de experimentación para crear prototipos (probard) circuitos específicos. Un prototipo se necesita un circuito antes de diseñar una PCB para el circuito final. 

Se utiliza una placa protoboard para hacer un prototipo del circuito. Tiene agujeros en los que se pueden insertar componentes y tiene conexiones eléctricas entre los orificios según el diagrama siguiente. 

El uso de una placa de pruebas significa que no hay soldaduras y un circuito se puede construir rápidamente y modificar fácilmente antes de que se decida una solución final.

 

Figura 7. Protoboard, para la implementación de circuitos.

Nuestros diseños y simulaciones de los circuitos implementados serán realizados en ISIS de Proteus, en su versión compatible para Windows 10 Pro.

 

Figura 8. Software ISIS Proteus para diseñar y simular los circuitos electrónicos.

  

Figura 9. Esquema electrónico diseñado en ISIS Proteus.

 Diseño del circuito anterior en el Protoboard se vería como se muestra en la siguiente figura:

 

Figura 10. Esquema electrónico implementado en un Protoboard.

  

5.    Descripción del circuito

El conector de 5 pines es para programación.

• El condensador electrolítico de 100 uF sirve para reducir cualquier variación en el voltaje de la fuente de alimentación.

• El 10k es una resistencia pull-up para el pin de reinicio, un nivel bajo en este pin detendrá el Microcontrolador y cuando se mantiene alto, el programa se ejecutará desde el principio.

• El 1N4148 es un diodo de protección que detendrá altos voltajes que posiblemente dañen el Microcontrolador (solo se requiere en el pin de reinicio porque todos los demás pines del Microcontrolador tienen diodos incorporados).

• Hay un LED con una resistencia de "límite de corriente" de 1k. Un LED solo necesita 2 V para funcionar, así que si conectado sin una resistencia en serie fluiría demasiada corriente y destruiría el LED. Con 2 V a través del LED, habrá 3 V a través de la resistencia y la corriente se limitará a (V / R) 3/1000 = 3 mA.

• Los condensadores de 0.1uF son para detener el ruido eléctrico que posiblemente interfiera con los Microcontroladores. 

 

6.    Programación del Microcontrolador AVR 

Se usara el programador USBISP 2.0. El cual permite programar el microcontrolador desde el puerto USB del computador y grabar por medio del protocolo ISP del Microcontrolador. Además se usara un cable adaptador para hacer el grabado de manera directa en el Protoboard.

 

Figura 11. Grabador USB ISP V2.0 de fábrica.

 Figura 12. Grabador USB ISP V2.0 modificado para grabado dentro de un Protoboard.

  

7.    Programando con Bascom-AVR IDE 

BASCOM-AVR son cuatro programas en un paquete, se conoce como IDE (desarrollo integrado ambiente); incluye el editor de programas, el compilador, el programador y el simulador, todos juntos.

 

Figura 13. Software BASCOM-AVR para desarrollo de programas par microcontroladores AVR.

Después de instalar el programa, hay algunas opciones de configuración que deben cambiarse. 

En el menú, seleccione.

OPTIONS - PROGRAMMER y seleccione Sample Electronics programador. Elija la pestaña paralela y seleccione la dirección LPT de 378 para LPT1 (si solo tiene 1 puerto paralelo en la computadora, elija esto), también seleccione flash automático.

Lo siguiente no es absolutamente necesario, pero le ayudará a obtener mejores impresiones.

OPCIONES - IMPRESORA cambiar los márgenes a 15.00 10.00 10.00 10.00

OPCIONES - MEDIO AMBIENTE - EDITOR cambia la Posición del comentario a 040. 

El compilador

El comando para iniciar el compilador es F7 o la imagen IC negra en la barra de herramientas.

Esto cambiará su programa BÁSICO de alto nivel a código de máquina de bajo nivel.

Si su programa tiene un error, la compilación no se completará y aparecerá un cuadro de error. Doble haga clic en el error para llegar a la línea que tiene el problema. 

El programador

Cuando haya compilado exitosamente un programa presionando F4 o la imagen verde de IC en la barra de herramientas inicia el programador. Si no hay ningún Microcontrolador conectado, aparecerá un error. Si el CI está conectado luego el BASCOM completa el proceso de programación y reinicia automáticamente su Microcontrolador para iniciar la ejecución de su programa. 

El programador que usaremos será el aplicativo ProgISP, el cual es compatible con el grabador de PIC y el sistema operativo.

 

Figura 14. Software PROGISP para el grabado del código dentro del Microcontrolador.

 

8.    Leer y escribir usando diagramas de flujo 

Símbolos de diagrama de flujo

 

Figura 15. Cuadros de control de flujo de inicio y fin. 

 

Figura 16. Cuadros de flujo para acciones y condicionales.

 

Diagrama de flujo de rutina diaria:

 

Figura 17. Ejemplo de diagrama de Flujo de tareas diarias.

 

 

“Si te gusto el artículo, compártelo, recuerda que hay otros que desean aprender y tú puedes ayudarlos también comentando  y  compartiéndolo en tus redes”.

 

¡Gracias!

Atte. Gilberto Pascual