PRACTICAS DE LABORATORIO
Microcontroladores y Microprocesadores
UNIVERCIDAD NACIONAL ABIERTA Y ADISTANCIA UNAD
8 DE MAYO DEL 2020
INTRODUCCIÓN
El siguiente trabajo se desarrolla con el objetivo de que el estudiante comprenda. El
contenido del Curso de Microcontroladores y Microprocesadores. Se realizara las
respectivas prácticas con las especificaciones indicadas en la guía práctica para este curso.
Se propone al estudiante una serie de simulaciones que ayuden a comprender el uso de
herramientas y sistemas que sirven de base para el conocimiento de los microprocesadores
y Microcontroladores.
Se estudiara en este documento la herramienta conocida como ARDUINO, sus
características y los beneficios que tiene trabajar con este sistema además de reforzar lo
aprendido en el curso.
OBJETIVOS
Mejorar, la asimilación del curso se ha propuesto que el estudiante realice a
su criterio el desarrollo inicial del proyecto de este curso.
Formar, en el estudiante nuevas formas de analizar y desarrollar su
aprendizaje usando y aplicando sus conocimientos
Analizar, y posteriormente diseñar, genera en el estudiante una manera más
fácil de practicar y entender lo aprendido
Desarrollo de la actividad
Practica 1
Se debe diseñar un contador utilizando 2 display de 7 segmentos (El grupo escoge si es de
ánodo o cátodo común), para presentar el valor desde 0.0 hasta 9.9 cada número del reloj es
un display de 7 segmentos, debe tener un botón de inicio y parada.
Como primer paso se desarrolló el algoritmo
Figura 1. Algoritmo del programa
Algoritmo del programa
int btn1 = A0
void setup() {
pinMode(Unidad, OUTPUT);
pinMode(Decena, OUTPUT);
pinMode(btn1, INPUT);
DDRD = 255; //Se declara todo el puerto como salida -DDRD - The Port D Data
Direction Register - read/write
//PORTD - The Port D Data Register - read/write
}
void loop() {
int val1 = digitalRead(btn1);
if (val1 == LOW) {
for (U = 0; U < 10; ++U) {//contador de unidades
for (D = 0; D < 10; ++D) {//contador de decenas
for (int i = 0; i <= 1; ++i) {//contador para el tiempo de conteo--200 mseg
if (val1 == LOW){
digitalWrite(Unidad, HIGH);
digitalWrite(Decena, LOW);
PORTD = Digitos[U];
delay(10);//tiempo de multiplexacion
digitalWrite(Unidad, LOW);
digitalWrite(Decena, HIGH);
PORTD = Digitos[D];
delay(10);//tiempo de multiplexacion
}
Se presenta a continuación el archivo de compilación .HEX que sere el que se introduce en
el ARDUINO
Figura 2. Archivo de compilación .HEX
Se presenta la simulación del proyecto
Figura 3. Representación del proyecto
Este proyecto cuenta con una tarjeta ARDUINO UNO dos display de 7 segmentos unos
transistores y un pulsador
Los transistores servirán como llaves para dar el paso a la alimentación del display, donde
su base está conectada a una de las salidas del ARDUINO
Cuando el pulsador se encuentra en alto el sistema no inicia el conteo, cuando el usador se
suelta o está en bajo el sistema inicia el conteo de 00 a 99
Figura 4. El sistema tiene el interruptor en ON (alto)
En este estado ON, el sistema no inicia el conteo
Figura 5. El sistema tiene el interruptor en OFF (bajo)
Cuando el interruptor está en estado bajo se inicia el conteo de 00 a 99
PRACTICA 2
Utilizando un sensor de Movimiento PIR con lente Fresnel detectar el movimiento de un
objeto que se encuentre en un espacio determinado (Pueden configurar dicho rango
utilizando el Datasheet del dispositivo), determinar con 3 leds a que distancia se encuentra
del circuito, para ello van a utilizar un sensor de ultrasonido que determina a que distancia
se encuentra el objeto, para el LED verde es porque el objeto se encuentra más lejos, para el
LED amarillo el objeto se encuentra a una distancia media y para el LED rojo es porque el
objeto se encuentra muy cerca al circuito, el sensor de proximidad solo se activa una vez el
sensor PIR notifique que existe una presencia de un objeto en el espacio
Como primer paso se desarrolló el algoritmo
Figura 6. Algoritmo del programa
Algoritmo del programa
#define salida3 3 //salida del PIR
#define pir 12 //salida defiida como entrada para el PIR
const int EchoPin = 5;
const int TriggerPin = 6;
int valor;
int pinLedR = 11; // pin Rojo del led RGB
int pinLedV = 10; // pin Verde del led RGB
int pinLedA = 9; // pin Azul del led RGB
void setup() {
Serial.begin(9600);
pinMode(TriggerPin, OUTPUT);
pinMode(EchoPin, INPUT);
pinMode(pir, INPUT);
pinMode(salida3, OUTPUT); //Establecer el pin 3 como salida
pinMode(pinLedR, OUTPUT); // pone el pinLedR como output
pinMode(pinLedV, OUTPUT); // pone el pinLedV como output
pinMode(pinLedA, OUTPUT); // pone el pinLedA como output
void loop() {
//////////////////SENSOR DE MOVIMIENTO//////////////////////////
valor = digitalRead(pir);
if (valor == HIGH) {//
digitalWrite(salida3, HIGH);
int cm = ping(TriggerPin, EchoPin);
if (cm = 3){
color(255, 0, 0); // rojo
if (cm = 8){
color(255, 30,0); // amarillo quemado
}
if (cm = 12){
color(0, 255, 0); // verde
color(0, 0, 0); // blanco
} else if (valor == LOW)
digitalWrite(salida3, LOW);
color(0, 0, 0); // blanco
int ping(int TriggerPin, int EchoPin) {
long duration, distanceCm;
digitalWrite(TriggerPin, LOW); //para generar un pulso limpio ponemos a LOW 4us
delayMicroseconds(4);
digitalWrite(TriggerPin, HIGH); //generamos Trigger (disparo) de 10us
delayMicroseconds(10);
digitalWrite(TriggerPin, LOW);
duration = pulseIn(EchoPin, HIGH); //medimos el tiempo entre pulsos, en
microsegundos
distanceCm = duration * 10 / 292/ 2; //convertimos a distancia, en cm
return distanceCm;
}
// funcion para generar colores
void color (int rojo, int verde, int azul) {
analogWrite(pinLedR, rojo);
analogWrite(pinLedV, verde);
analogWrite(pinLedA, azul);
Figura 7. Archivo de compilación .HEX
Se presenta la simulación del proyecto, se realizó físicamente porque se observó que era
una mejor opción
Figura 8. Representación del proyecto
Este proyecto cuenta con una tarjeta ARDUINO UNO un sensor PIR y un sensor de ultra
sonido SR-04
El circuito inicia cuando el sensor PIR percibe un movimiento, luego de acuerdo a la
distancia del objeto el sensor ultrasonido activara un RGB (LED multicolor) que dará el
color correspondiente a las especificaciones dadas
Figura 9. Simulación del proyecto
El PIR está activo y permite que el LED en VERDE se prenda porque el objeto que detecta
el ultrasonido se encuentra lejos, será amarillo si está a una distancia prudente y rojo si se
encuentra muy cerca
PRACTICA 3
Diseño de un robot controlado por bluetooth (pueden utilizar como bluetooth transmisor el
celular de uno de los compañeros) de 4 motores de 5v DC (obligatorio el uso de 4 motores)
para realizar cambios de giro y evasión de obstáculos, pueden separar la parte digital de la
potencia con el regulador de lm7805, utilizar un sistema de accionamiento de motores por
transistores, tiristores (libre a implementar, o pueden usar un driver para motores como el
L293D) y conector de batería de 9vdc
Par este proyecto se observó que la mejor opción era realizarlo físicamente, pero no se
cuenta con los motores, sin embargo se diseñó el proyecto con los elementos
BLUETOOTH y se usó un RGB (LED multicolor) para dar diferentes colores que simulan
la activación de los martes del robot.
Como primer paso se desarrolló el algoritmo
Figura 10. Algoritmo del programa
Algoritmo del programa
int i;
int pinLedR = 11; // pin Rojo del led RGB
int pinLedV = 10; // pin Verde del led RGB
int pinLedA = 9; // pin Azul del led RGB
int pausa = 1500;
void setup()
Serial.begin(9600); //Iniciar el serial
pinMode(pinLedR, OUTPUT); // pone el pinLedR como output
pinMode(pinLedV, OUTPUT); // pone el pinLedV como output
pinMode(pinLedA, OUTPUT); // pone el pinLedA como output
void loop()
if (Serial.available() >= 1)
char entrada = Serial.read(); //Leer un caracter
if (entrada == 'r' or entrada == 'R') //Si es 'R', encender el LED
{
color(255, 0, 0); // rojo
delay(pausa); // delay por pausa
else if (entrada == 'v' or entrada == 'V') //Si es 'L', apagar el LED
color(0, 255, 0); // verde
delay(pausa); // delay por pausa
else if (entrada == 'a' or entrada == 'A') //Si es 'I', mostrar un mensaje de ayuda
color(0, 0, 255); // azul
delay(pausa); // delay por pausa
// funcion para generar colores
void color (int rojo, int verde, int azul) {
analogWrite(pinLedR, rojo);
analogWrite(pinLedV, verde);
analogWrite(pinLedA, azul);
}
Continuación se presenta el código .HEX
Figura 11 Archivo de compilación .HEX
Se presenta la simulación del proyecto, se realizó físicamente por que se observó que era
una mejor opción
Figura 12. APK para la conexión bluetooth del celular al proyecto
El sistema BLUETOOTH conectara el celular con el proyecto y le proporcionara valores a
distancia que activara un RGB (LED multicolor) que dará el color correspondiente a las
especificaciones dadas
Figura 13. Simulación del proyecto
Se observa en la imagen un recuadro donde se encuentra el proyecto físico y en la pantalla
del celular las letras R (rojo), V (verde) y A (azul), que activaran el RGB que simula los
motores del robot se puede observar que de acuerdo al algoritmo que se indique, a través
del celular se puede escribir los caracteres que serán los que activaran de manera remoto el
proyecto.
CONCLUSIONES
El anterior trabajo tuvo como objetivo reforzar los conocimientos que se irán adquiriendo
en el estudio del curso de Microcontroladores y Microprocesadores, además de servir como
un soporte para el desarrollo de nuevas situaciones o problemas que vayan presentando más
adelante; se aprendió a manejar nuevas plataformas que permiten ampliar el conocimiento
de este curso.
REFERENCIAS BIBLIOGRÁFICAS
DOCUMENTOS IMPRESOS
Zúñiga. Camilo Arturo (2010). Algebra Lineal. (UNAD). Bogotá. D.C.
DOCUMENTOS WEB
Rodriguez, Manuel. (MAELEC 8.9). (2017) Canal de YouTube de Producciones
MAELEC 8.9. Recuperado de https://www.youtube.com/user/maelec89
Rodriguez, Manuel. (2013). Blog de Producciones MAELEC 8.9. Recuperado de
http://maelec89.blogspot.com