Proyecto: Diseña tu propio arduino Cap.1

De Wiki
Saltar a: navegación, buscar

Bueno como comentamos previamente vamos empezar con nuestro primer capítulo.

El objetivo final será tener una placa con un atmega328p con funciones añadidas... sin más empezamos.

Entendimiento de los elementos que componen el proyecto

Para poder comenzar tenemos que entender correctamente lo que queremos llevar a cabo, esto es... una placa entera desde cero. La cual tendrá un hardware y un software. Siempre hay una gran competencia entre el software y el hardware, pero la realidad es que no existe el uno sin el otro.

Hardware

Programas para diseño

Aquí disponemos de tres vertientes principales, Eagle, Kicad y CircuitMaker.

Programa Hojas de esquema Capas de señal Dimensión máxima pcb Breve descripción
Eagle 2 2 80cm² Programa gratuito con fuertes limitaciones pero con gran comunidad.
Kicad Ilimitado Ilimitado Ilimitado Interfaz algo rudimentaria pero un programa útil y eficaz.
CircuitMaker Ilimitado Ilimitado Ilimitado Programa con una gran comunidad y un entorno común para compartir proyectos, así como continuar otros expuestos por la comunidad.

De los tres se puede escoger el que se quiera, pero personalmente en este proyecto iremos hacia el CircuitMaker. Muchos sabéis que yo en mi trabajo utilizo el Altium y este programa se parece mucho al mismo. Lo que facilitará el realizar el proyecto entero. A mayores, tiene ciertas ventajas muy positivas como pueden ser:

  • Diseño más profesionalizado que el resto de herramientas de software libre.
  • Gran cantidad de librerías y comunidad.
  • Punto común donde poder compartir los proyectos con la comunidad.
  • Facilidad para la obtención de componentes en el menú de la propia aplicación.
  • Posibilidad de seguir Hubs (Son como salas con temáticas, tipo arduino, tipo fuentes alimentación... etc)

En la siguiente página se enseña como instalar el programa desde cero CircuitMaker.

Planteamiento del hardware

Nuestra idea es utilizar un microcontrolador con un ecosistema que cumpla ciertas funciones. Este microcontrolador en cuestión será el atmega328p. Para poder entender brevemente lo que es un microcontrolador vamos hacer una breve introducción:

Todos conocemos lo que lleva un ordenador de sobremesa, los componentes son generalmente un CPU, RAM, Disco duro y periféricos. Pues un microcontrolador lo que intenta conseguir es integrar todos estos elementos en una sola pieza, de forma qué, podamos conseguir un integrado que se encargue de ciertas gestiones/procesos que le programemos de forma independiente.

De los foros de Arduino se puede obtener la imagen siguiente, en la que podemos apreciar una arquitectura Hardvar (Inicialmente había dos arquitecturas, Von Neumann y Hardvar. Estas marcan el como se conectan los distintos componentes internamente del microcontrolador).

Como curiosidad...-"Recientemente" apareció RISC-V, la cual está ganando mucha fuerza como arquitectura de Open-Source con muy buenos resultados, aunque no voy profundizar en este apartado pues tiene una gran complejidad y no es la finalidad de este primer proyecto, quedaros simplemente con el detalle de que estamos utilizando un microcontroladorde arquitectura Hardvar.

Avrcpu328.png

En esta imagen se puede apreciar lo que compone el microcontrolador que vamos utilizar, vamos a remarcar las partes claves.

Nombre Descripción Comparación ordenador
Flash Memoria de una pequeña capacidad para el microcontrolador Disco duro
EEPROM Memoria no volátil de pequeña capacidad Almacenamiento para guardar datos dinámicos
SRAM Memoria volátil Memoria Ram

Para darle significado a lo que se pone en la tabla vamos añadir unas explicaciones un poco más detalladas.

Flash: Es la memoria del microcontrolador donde se guarda el programa que realizemos, ¿recordáis los programas que se escriben en arduino que acaban siendo un archivo llamado *.hex?, pues este archivo es el que se graba en la memoria Flash.

EEPROM: Esta memoria es utilizada para guardar datos dinámicos que no queremos perder. El ejemplo más claro es su uso en las impresoras 3D, hay por un lado las configuraciones que introducimos cuando programamos en el IDE arduino, estas son fijas e irían en la memoria Flash.

Por otro lado, los cambios que hacemos en tiempo de ejecución, es decir, cuando la impresora está en funcionamiento, van a la EEPROM. Esta memoria tiene la capacidad de almacenar datos y poder borrarlos a placer mediante señales eléctricas (antiguamente se hacía con luz ultravioleta). Dando así un juego extra al chip dando un espacio para guardar variables que queramos no perder cuando se apage/encienda el dispositivo.

SRAM: Esta es nuestra memoría "RAM" del microcontrolador , aquí es donde se van guardando las distintas instrucciones que ejecutará nuestro CPU.

Una vez terminada esta introdución tenemos que seguir con el siguiente apartado, que vamos a conectar a nuestro microcontrolador ?. Que necesita el mismo para poder funcionar correctamente?.

Ecosistema para nuestro arduino Uno

En este apartado tenemos un bloque de dispositivos que debemos poner para su correcto funcionamiento, les vamos a llamar componentes esenciales, y posteriormente un bloque de dispositivos arbitrarios, es decir, que define el diseñador.

Componentes esenciales: Sin estos componentes el microcontrolador no podría funcionar correctamente. Son componentes de obligada colocación en el diseño.

Componentes arbitrarios: Son componentes que añaden funcionalidades al diseño, estas funcionalidades deben ser escogidas por el diseñador.

Estos los mencionaremos en profundidad en los próximos capítulos.

Final Capítulo 1

Y esto es todo para el primer capítulo, en el siguiente abordaremos las primeras definiciones y diseños de nuestra placa. En donde debemos definir un objetivo claro e ir cubriendo los distintos componentes de forma genérica. A mayores, se irán describiendo ciertos conocimientos electrónicos que son necesarios para poder diseñar nuestra placa Arduino Uno.

Espero que os guste y nos vemos por el foro para discutir esta breve primera introducción https://foro.gameboyzero.es/viewtopic.php?f=37&t=28

Un saludo.