Se desarrollo un contador binario ascendente de 8 bits y otro contador similar con la única diferencia de que cuenta con un control de velocidad de conteo, se utilizo la tarjeta Arduino UNO con ATmega328P para el proyecto.
Elaboración de la estructura del ADN y ARN en papel.pdf
CONTADOR BINARIO ASCENDENTE DE 8 BITS CON ARDUINO
1. Ing. Fernando Marcos Marcos
1
CONTADOR BINARIO ASCENDENTE CON ARDUINO
Marcos Marcos Fernando
e-mail: fmarcos@uabc.edu.mx
RESUMEN: Se desarrollo un contador binario
ascendente de 8 bits y otro contador similar con la única
diferencia de que cuenta con un control de velocidad de
conteo, se utilizo la tarjeta Arduino UNO con
ATmega328P para el proyecto.
1 INTRODUCCIÓN
En 2003,un grupo de estudiantes yprofesores del
Instituto de Diseño Interactivo Ivrea en Italia empezó a
desarrollar una plataforma de hardware en open source
porque las placas del mercado eran demasiado caras
para experimentar.Seis años después,Arduino supone
una revolución en la forma en que se crea y usa la
tecnología,permitiendo a los usuarios abrir ytransformar
sus entresijos
Arduino es una herramienta para hacer que los
ordenadores puedan sentir y controlar el mundo físico a
través de tu ordenador personal. Es una plataforma de
desarrollo de computación física (physical computing) de
código abierto, basada en una placa con un sencillo
microcontrolador y un entorno de desarrollo para crear
software (programas) para la placa.
Arduino puede ser utilizado para crear objetos
interactivos, leyendo datos de una gran variedad de
interruptores y sensores y controlar multitud de tipos de
luces,motores y otros actuadores físicos. Los proyectos
de Arduino pueden ser autónomos o comunicarse con
un programa (software) que se ejecute en tu ordenador
(ej. Flash, Processing, MaxMSP).La placa puedes
montarla tu mismo o comprarla ya lista para usar, y el
software de desarrollo es abierto y lo puedes descargar
gratis.
El lenguaje de programación de Arduino es una
implementación de Wiring, una plataforma de
computación física parecida, que a su vez se basa en
Processing, un entorno de programación multimedia.
2 TEORIA
Existen muchos microcontroladores y plataformas
con microcontroladores disponibles para la computación
física. Parallax Basic Stamp, BX-24 de Netmedia,
Phidgets, Handyboard del MIT, y muchos otros ofrecen
funcionalidades similares. Todas estas herramientas
organizan el complicado trabajo de programar un
microcontrolador en paquetes fáciles de usar. Arduino,
además de simplificar el proceso de trabajar con
microcontroladores, ofrece algunas ventajas respecto a
otros sistemas a profesores, estudiantes y amateurs:
Las placas Arduino son más accesibles
comparadas con otras plataformas de
microcontroladores.
Multi-Plataforma
El software de Arduino funciona en los sistemas
operativos Windows, Macintosh OSX y Linux. La
mayoría de los entornos para microcontroladores están
limitados a Windows.
Entorno de programación simple y directo
El entorno de programación de Arduino es fácil de
usar para principiantes ylo suficientemente flexible para
los usuarios avanzados. Pensando en los profesores,
Arduino está basado en el entorno de programación de
Procesing con lo que el estudiante que aprenda a
programar en este entorno se sentirá familiarizado con el
entorno de desarrollo Arduino.
Software ampliable y de código abierto
El software Arduino esta publicado bajo una
licencia libre y preparado para ser ampliado por
programadores experimentados. El lenguaje puede
ampliarse a través de librerías de C++, y si se está
interesado en profundizar en los detalles técnicos, se
puede dar el salto a la programación en el lenguaje AVR
C en el que está basado.De igual modo se puede añadir
directamente código en AVR C en tus programas si así
lo deseas.
Hardware ampliable y de Código abierto
Arduino está basado en los microcontroladores
ATMEGA168, ATMEGA328y ATMEGA1280.
Los planos de los módulos están publicados bajo
licencia Creative Commons, por lo que diseñadores de
circuitos con experiencia pueden hacer su propia versión
del módulo, ampliándolo u optimizándolo. Incluso
usuarios relativamente inexpertos pueden construir la
versión para placa de desarrollo para entender cómo
funciona y ahorrar algo de dinero.
3 DESARROLLO
La realización de la práctica requiere el uso del
siguiente material y/o equipo.
- 1 Potenciómetro de 10kΩ (No importa el valor
de este componente)
- 8 Leds
- 8 Potenciómetro de 220kΩ
- Computadora
- Plataforma de desarrollo
- Arduino μc
- Protoboard
- Cable y pinzas peladoras
- Cable USB Arduino
- Fuente de Voltaje
- 2 pares de cable banana – caimán
Se diseño un circuito sencillo el cual se muestra en
la Figura 1, se utilizaron las salidas digitales del 0 al 7 ya
las entradas y salidas pueden ser manipuladas de
manera sencilla mediante el uso de registros, en este
caso se utilizara el registro PortD.
2. Ing. Fernando Marcos Marcos
2
Figura 1. Circuito.
El contador diseñado es de 8 bits por lo tanto el
número máximo que nos permite el arreglo es el numero
decimal 255 obviamente convertido a binario. La lógica
manejada para el desarrollo del contador es el mostrado
el diagrama 1.
Diagrama 1. Lógica del contador representado en un
diagrama de flujo.
El código desarrollado es el siguiente:
int contador=0;
void setup(){
DDRD=B11111111; } /*Configurando como salida
los puertos D del arduino (pines 0 – 7)*/
void loop(){
for(contador=0;contador<256;contador++){
PORTD=byte (contador);
delay(500);
}
}
Se agrego al código un pequeño retardo de 500
milisegundos para poder notar el cambio de un número
binario a otro.
El resultado obtenido se muestra en la figura 2.
Figura 2. Circuito mostrando el número decimal 178 en
binario.
Para permitir el ajuste manual de velocidad del
contador se puede agregar un potenciómetro como
control, el nuevo circuito es el de la figura 3. Un
potenciómetro cuenta con tres terminales, el terminal de
un extremo va conectado a Vcc (5V) y el terminal del
extremo contrario a tierra (GND), no importa el orden, el
terminal de en medio es el terminal variable, el cual va
conectado en este caso a la entrada analógica A0 de la
tarjeta Arduino.
3. Ing. Fernando Marcos Marcos
3
Figura 3. Circuito con 8 Leds, 8 resistencias y un
potenciómetro.
El código con el regulador de velocidad quedaría
de la siguiente manera:
int contador=0;
void setup(){
DDRD=B11111111; } /*Configurando como salida
los puertos D del arduino (pines 0 – 7)*/
void loop(){
for(contador=0;contador<256;contador++){
PORTD=byte (contador);
delay(map(analogRead(A0),0,1023,0,1000));
}
}
La lecturas analógicas de la tarjeta arduino nos
arrojan por default valores que van desde 0 al 1023,en
nuestro caso queríamos que el rango de valores fueran
de 0 milisegundos a 1000 milisegundos (aunque estos
valores pueden ser modificados a las necesidades del
usuario),para ello se utilizo la función map,la cual nos
permite mapear los números de un rango a otro.
4 ANALISIS DE RESULTADOS
4.1 Discusión de la precisión y exactitud de
los resultados.
Los resultados obtenidos son tal cuales los que se
esperaban.
4.2 Análisis de los posibles errores en los
resultados.
Sin error alguno.
4.3 Descripción de cualquier resultado
anormal.
La velocidad del contero puede variar debido a que
no es totalmente preciso un potenciómetro, pero para
rangos grandes de valores resulta ser muy funcional,
como lo fue en este caso.
5 CONCLUSIÓN
El uso de funciones y de registros sin duda permite
un ahorro de memoria, tiempo de procesamiento y
recursos, además de agilizar la programación y su
asimilación, lo cual es importante en el desarrollo de
prototipos o cualquier proyecto.
6 BIBLIOGRAFIA
http://arduino.cc
Link del circuito y simulación
https://www.tinkercad.com/things/hJhimXfOQy9