Está en la página 1de 14

Laboratorio #2.

Microcontroladores
Maury Sebastián Macías Sánchez.
Ray Stevenson Amaya Maldonado.
Resumen.
En esta práctica de laboratorio se habla a cerca de Arduino, que según fundamentos teóricos
se trata de una placa electrónica de hardware libre que incorpora un microcontrolador
reprogramable y una serie de pines de conexión. A partir de allí se puede programar y simular
para pedirle que realice ciertas tareas con sus debidos criterios de diseño, en este laboratorio
se abordarán cinco retos cuya dificultad aumenta secuencialmente.
Introducción.
Para poder identificar la importancia de Arduino, la práctica empieza con una exhaustiva
investigación a cerca de características, funciones básicas y especificaciones de los
microcontroladores utilizados en Arduino, para desembocar en una serie de retos asignados
en la guía que deberán ser desarrollados y posteriormente simulados usando una serie de
Leds e interruptores, y a partir de allí realizar la debida sustentación de uno de los retos.
Objetivos.
• Analizar las características y especificaciones de los microcontroladores que se usan en
Arduino.
• Realizar e implementar la programación en el IDE de Arduino usando ordenes de
programación básicas y de control.
Marco teórico.
Arduino: Es una plataforma de desarrollo basada en una placa electrónica de hardware libre
que incorpora un microcontrolador re-programable y una serie de pines de conexión. Estos
permiten establecer conexiones entre el microcontrolador y los diferentes sensores y
actuadores de una manera muy sencilla (principalmente con cables dupont). Funciones
Básicas Pines Arduino:
• Pin mode: Esta instrucción se usa para configurar los pines de nuestro Arduino como
entrada o como salida. Se declara dentro de la función setup por lo tanto, la
configuración de pines solo se hará una vez antes de empezar a ejecutar el programa
principal.
• Entradas/Salidas digitales: Solo se ejecutan en dos estados (Alto o bajo), en relación al
nivel de voltaje 5 volts o 0 volts respectivamente.
• Entradas/Salidas analógicas: Estos pines pueden tomar cualquier valor entre el intervalo
de 0 a 5 voltios. Cuando se tomen lecturas, tendremos una resolución de 10 bits, desde
0 hasta 1023. Para poder escribir un valor analógico, utilizamos PWM (modulación de
ancho de pulso) la resolución será de 8 bits, desde 0 hasta 255.
• Instrucciones de tiempo: permite hacer temporizaciones, conteos durante la ejecución
del programa.
Investigación:
Cómo ya sabemos, Arduino es una board que está basada en el microcontrolador
Atmega328 y tiene 14 pines de entrada/salida digital (de los cuales 4 pueden ser utilizados
para salidas PWM), 6 entradas análogas, un resonador cerámico de 16 MHz, un conector
para USB tipo hembra, un Jack para fuente de Poder, un conector ICSP y un botón reset).
Para llevar a cabo la debida conexión de Arduino se requiere estar conectado a un
computador y a una fuente de alimentación, en algunos casos, si se conecta por cable USB
al computador no requerirá una conexión de alimentación.
El hardware de Arduino usa microcontroladores generalmente Atmel AVR. Los
microcontroladores más usados en las plataformas Arduino son
el Atmega168, Atmega328, Atmega1280, ATmega8 por su sencillez, pero se está
ampliando a microcontroladores Atmel con arquitectura ARM como el Atmel SAMD21 o
los ST STM32, y también Intel.

TABLA DE ENCAPSULADOS Y DIAGRAMAS DE PINES Y BLOQUES INTERNOS


Atmega168
Atmega328

Atmega1280

Atmega8
Propiedades y características de los microcontroladores mencionados.
REFERENCIA Temperatura Comparadores Memoria FLASH Memoria Memoria Líneas E/S.
de trabajo EPROM SRAM
Atmega168 -40...85°C 1 16kB 512B 1kB 23
Atmega328 -40...85°C 1 32kB 1kB 2kB 23
Atmega1280 1 120kB 8kB
Atmega8 -40...85°C 8kB 512B 1kB 23

Propiedades y características de los microcontroladores mencionados.


REFERENCIA Frecuencia de Cantidad de Cantidad de Tensión de Número de Cantidad
tacteado canales PWM transductores A/D alimentación canales de de timers
10bit capacidad
Atmega168 20MHz 6 8 1,8-5,5v 16 7
Atmega328 20MHz 6 1,8-5,5v 3
Atmega1280 20MHz 6 1,8-5,5v 1
Atmega8 16MHz 1

Retos.
1. Se trata de cinco leds que se enciende cuando se activa un botón pulsador y se apagan
con otro botón pulsador.
Código Arduino
int estado;
void setup() {
pinMode(9, INPUT);
pinMode(8, INPUT);
pinMode (2,OUTPUT);
pinMode (3,OUTPUT);
pinMode (4,OUTPUT);
pinMode (5,OUTPUT);
pinMode (6,OUTPUT);
}
void secuencia(){
if(digitalRead(9)==HIGH){
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
}
if(digitalRead(8)==HIGH){
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
}

Tinkercad

Descripción: En la imagen se puede apreciar el encendido de los 5 leds al activar el botón


pulsador.

Descripción: En la imagen se puede apreciar el apagado de los 5 leds al activar otro botón
pulsador.
2. Se trata de encender y apagar 6 leds secuencialmente al activar un pulsador y se apagan
con otro botón.
Arduino.

int leds[] = {2,3,4,5,6,7};


int x;
int m;
void setup(){
pinMode(9, INPUT);
pinMode(8, INPUT);

for(x=0;x<7;x++){
pinMode(leds[x],OUTPUT);
}
}
void secuencia(){
if(digitalRead(9)==HIGH){
for(x = 0;x<7;x++){
digitalWrite(leds[x], HIGH);
delay(1000);
}
}
if(digitalRead(8)==HIGH){
digitalWrite(leds[0], LOW);
digitalWrite(leds[1], LOW);
digitalWrite(leds[2], LOW);
digitalWrite(leds[3], LOW);
digitalWrite(leds[4], LOW);
digitalWrite(leds[5], LOW);
}
}
void loop(){
secuencia();
}
Tinkercad

Descripción: En la imagen se puede apreciar el encendido secuencial de los 6 leds al


activar el botón pulsador.

Descripción: En la imagen se puede apreciar el apagado de los 6 leds al activar otro botón
pulsador.

3. Se trata de un cruce de semáforos, para ello se utilizará en el primer semáforo los pines.
La secuencia de funcionamiento debe ser: rojo 1 – verde 2 durante 5 segundos, rojo 1 –
amarillo 2 durante 500 ms, verde 1 – rojo 2 durante 5 segundos, amarillo 1 - rojo 2 durante
500 ms.
Arduino.
int leds[] = {2,3,4,5,6,7};
int x;
void setup()
{
pinMode(8, INPUT);
for(x=0;x<7;x++){
pinMode(leds[x],OUTPUT);
}
}

void actuacion(){
if(digitalRead(8)==HIGH){

digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
delay(5000);
digitalWrite(5,LOW);

digitalWrite(6,HIGH);
delay(500);
digitalWrite(4,LOW);
digitalWrite(6,LOW);

digitalWrite(2,HIGH);
digitalWrite(7,HIGH);
delay(5000);
digitalWrite(2,LOW);

digitalWrite(3,HIGH);
delay(500);
digitalWrite(3,LOW);
digitalWrite(7,LOW);
}

}
void loop(){
actuacion();
}
Tinkercad.

Descripción: En la imagen se puede apreciar el circuito de los semáforos apagado

Descripción: En la imagen se puede apreciar el circuito de los semáforos en


funcionamientos con las luces de su primera etapa Rojo-Verde.

4. Se trata de un zumbador que en código morse (pitidos largos/cortos) especifica una


palabra, en nuestro caso SOS. La S son tres señales acústicas de corta duración y la O
tres señales acústicas de larga duración. Los pitidos cortos tendrán una duración de 150
ms y los largos 400 ms. Entre letra y letra debe pasar un tiempo de 500 ms y entre SOS
debe haber un tiempo de 1200 ms. Usar variables para guardar los tiempos.
int corto = 150;
int largo = 400;
int letra = 500;
int palabra = 1200;
int pitido;
int estado,x;
void setup()
{
pinMode(8, OUTPUT);
pinMode(2, INPUT);
}
void loop(){
encendido();
sos();
}
void encendido(){
if(digitalRead(2)==HIGH){
estado = 1;
}
if(digitalRead(2)==LOW){
estado = 0;
}
}
void sos(){
if (estado==1){
for(x=0;x<3;x++){
tone(8,500,corto);
delay(corto + 100);
}
delay(letra);
for(x=0;x<3;x++){
tone(8,500,largo);
delay(largo + 100);
}
delay(letra);
for(x=0;x<3;x++){
tone(8,500,corto);
delay(corto + 100);
}
delay(palabra);
}
}
Tinkercad.

Descripción: En la imagen se puede apreciar el circuito zumbador apagado.

Descripción: En la imagen se puede apreciar el circuito zumbador encendido emitiendo las


señales acústicas SOS en código morse.
5. Se trata de cinco leds que se van encendiendo y apagando formando una secuencia, el
jugador debe dar al pulsador cuando el led intermedio se enciende, si acierta funciona
un zumbador y la velocidad de la secuencia aumenta. Los leds deben estar conectados
de los pines 5 a 9 (inclusive), el zumbador al pin 10, el pulsador al pin 11. El tiempo
inicial entre encendido y encendido de leds debe ser 200 ms, si se acierta se decrementa
el tiempo en 20 ms, si el tiempo entre encendidos llegase a 10 ms, se devuelve el
tiempo a 200 ms.
Arduino.
int leds[] = {5,6,7,8,9};
int x;
int m;
int tiempo = 200;
void setup(){
pinMode(11, INPUT);
pinMode(10, OUTPUT);
for(x=0;x<6;x++){
pinMode(leds[x],OUTPUT);
}
}
void secuencia(){
for(x = 0;x<5;x++){
if (tiempo == 20){
tiempo = 200;
}
digitalWrite(leds[x], HIGH);
delay(tiempo);
digitalWrite(leds[x], LOW);
if(x == 2){
if(digitalRead(11) == HIGH){
tone(10,500,50);
tiempo = tiempo - 20;
}
}
}
}
void loop(){
secuencia();
}
Tinkercad.
Descripción: Circuito de juego encendido, la foto es en el momento justo en que la luz pasa
por el led blanco.

Descripción: Circuito de juego encendido, la foto es en el momento justo en que el jugador


oprime el botón cuando estaba encendido el led blanco y se activa el zumbador.
Análisis de resultados.
A partir de lo visto anteriormente, se obtuvieron buenos resultados debido al desarrollo de
la programación Arduino y de su simulación en un ambiente virtual, esto habla de la
facilidad de desarrollo y ejecución que Arduino nos da a partir de un intuitivo manejo. Con
esto se observa un claro funcionamiento de los diferentes circuitos, obteniendo los
resultados esperados a partir de la guía del laboratorio. En el primer reto se evidencia
claramente el encendido de los 5 leds. En el segundo reto se obtuvo una adecuada
secuencialidad a la hora de prender los 6 leds. En el tercer reto de observaron los patrones
de luces correctos en los semáforos, así como el tiempo de cambio esperado. El cuarto reto
nos muestra las 3 señales acústicas claras con un delay óptimo para lograr su adecuado
entendimiento. Por último, en el quinto reto se logró un buen ambiente de juego,
cumpliendo con las necesidades especificadas en la guía de laboratorio y teniendo como
resultado el funcionamiento del zumbador a partir de los aciertos del jugador.
Conclusiones.
• En esta práctica de laboratorio quedó como evidencia la versatilidad de Arduino
para la elaboración de múltiples tareas con baja dificultad, esto se debe a su
estructura intuitiva y buena relación con las partes física de la placa que se
programa.
• La herramienta Tinkercad fue de gran utilidad en esta práctica de laboratorio,
teniendo entre sus funciones la simulación y entrada de código, así como una
detección de errores que sirvieron para modificar la programación a conveniencia a
partir de las fallas vista en funcionamiento.
• A medida que la asignatura avanza se logra evidenciar una mejora en la ejecución de
los códigos que solucionan los problemas planteados en el laboratorio, en el caso de
esta práctica, se pueden observar código mejor optimizados a partir del uso de
funciones como tone o de la creación de vectores para la declaración de pines.
• A pesar de estar en un ambiente virtual, a la hora de simular los diferentes programas
de Arduino es crucial llevar a cabo una buena conexión de los diferentes circuitos
eléctricos, así como la elección de las resistencias necesarias para los diferentes
elementos del sistema y un buen cableado teniendo en cuenta las conexiones de tierra.
Bibliografía.

Aqeel, A., 2020. Introduction to Atmega168 - The Engineering Projects. [online] The Engineering
Projects. Available at: <https://www.theengineeringprojects.com/2018/09/introduction-to-
atmega168.html> [Accessed 22 September 2020].
2020. [online] Available at:
<http://kunlida.en.seekic.com/product/integrated_circuits_ics/ATMEGA1280_16AU.html >
[Accessed 22 September 2020]
Tme.com. 2020. Atmega 168 - La Frase En Busca | Distribuidor De Componentes Electrónicos.
Tienda En Línea: Transfer Multisort Elektronik | Circuitos Integrados | Componentes Y Subgrupos,
Piezas Electrónicas / TME. [online] Available at: <https://www.tme.com/co/es/katalog/circuitos-
integrados_100283/?s_order=desc&search=Atmega%20168&s_field=1000011> [Accessed 26
September 2020].
Ww1.microchip.com. 2020. [online] Available at:
<http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-9365-Automotive-Microcontrollers-
ATmega88-ATmega168_Datasheet.pdf > [Accessed 26 September 2020].

También podría gustarte