Sei sulla pagina 1di 28

Unidad 3

Paso 4 - Implementar el uso de placas de desarrollo Hardware.

Presentado a:
DANISH PADILLA
Tutor

Entregado por:
JONATAN PATIÑO ROMERO

Grupo: 309696_21

Universidad Nacional Abierta y Adistancia - UNAD


Escuela De Ciencias Básicas, Ingenierías Y Tecnologías
Microprocesadores y Microcontroladores
Junio 30 de 2019
Medellin-Antioquia
INTRODUCCIÓN

El siguiente documento tiene el desarrollo de la actividad Paso 4 -


Implementar el uso de placas de desarrollo Hardware que tiene como
enfoque identificar el funcionamiento de la placa de desarrollo Arduino,
las familias y tipos de Arduino, programación de un Arduino, periféricos
de una placa Arduino y el desarrollo de ejercicios prácticos mediante la
placa Arduino.

Arduino Uno es una placa basada en un microcontrolador Atmega328.


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. Tiene todo lo necesario para
manejar el controlador, se conecta al computador por medio del cable
USB o una fuente de poder externa, que puede ser un adaptador AC-DC
o una batería, cabe aclarar que si se alimenta a través del cable USB en
el ordenador no es necesario una fuente externa.

Arduino es una plataforma hardware libre basada en una sencilla placa


con entradas y salidas (E/S), analógicas y digitales, Su corazón es el
microcontrolador Atmega8, un chip sencillo y de bajo coste que permite
el desarrollo de múltiples diseños. Al ser open-hardware tanto su diseño
como su distribución es libre, puede utilizarse libremente para desarrollar
cualquier tipo de proyecto sin tener que adquirir ningún tipo de licencia.

Abarcaremos las tarjetas de desarrollo GNU, estudiaremos a su vez la


automatización de estos y el control de procesos para los problemas y
planteados en la guía de actividades.

Emplearemos el desarrollo de Arduinos, investigando a su vez, sus


familias, su programación y periféricos, para una buena realización del
proyecto planteado
RESUMEN

Buscaremos darle solución al proyecto planteado en la guía, El programa


desarrollado cumplirá con los parámetros del proyecto, en donde se
evidenciará con capturas de imágenes, su circuito y su simulación.
OBJETIVOS

- Leer y analizar el contenido de la unidad 3.

- Comprender y aplicar la estructura del Arduino, llevando a cabo la


programación del proyecto planteado.

- Desarrollar los puntos planteados en la guía de actividades.


IDENTIFICACIÓN DE REQUISITOS Y VARIABLES QUE
INTERVIENEN

Arduino, es una plataforma de electrónica abierta para la creación de


prototipos basada en software y hardware libre, flexibles y fáciles de usar.
Se creó para artistas, diseñadores, aficionados y cualquier interesado en
crear entornos u objetos interactivos. Arduino puede tomar información
del entorno a través de sus pines de entrada, para esto toda una gama
de sensores puede ser usada y puede afectar aquello que le rodea
controlando luces, motores y otros actuadores. El microcontrolador en la
placa Arduino se programa mediante el lenguaje de programación Arduino
(basado en Wiring) y el entorno de desarrollo Arduino (basado en
Processing). Los proyectos hechos con Arduino pueden ejecutarse sin
necesidad de conectarlo a un ordenador, si bien tienen la posibilidad de
hacerlo y comunicar con diferentes tipos de software (p.ej. Flash,
Processing, MaxMSP).
Familias y tipos de Arduino
Arduino Uno
Es la placa más vendida, la más conocida y documentada. Salió a la
luz en septiembre de 2010 sustituyendo su predecesor Duemilanove
con varias mejoras de hardware que consisten básicamente en el
uso de un USB HID propio en lugar de utilizar un conversor FTDI
para la conexión USB. Es 100% compatible con los modelos
Duemilanove y Diecimila. Viene con un Atmega328p con 32Kbytes
de ROM para el programa.
Arduino Mega 2560
Es con mucha diferencia el más potente de las placas con
microcontrolador de 8 bits y el que más pines i/o tiene, apto para
trabajos ya algo más complejos, aunque tengamos que sacrificar un
poco el espacio. Cuenta con el microcontrolador Atmega2560 con
más memoria para el programa, más RAM y más pines que el resto
de los modelos.

Arduino Mega ADK


Para conectar con Android.

Arduino Ethernet
Incorpora un puerto ethernet, está basado en el Arduino Uno y
nos permite conectarnos a una red o a Internet mediante su
puerto de red.
Arduino Due
Arduino con la mayor capacidad de procesamiento, basado en un
microcontrolador de 32 bit y arquitectura ARM: Atmel SAM3X8E
ARM Cortex-M3 CPU. Este arduino está alimentado a 3.3V y dado
que gran parte de los shields, sensores, actuadores para Arduino y
compatible son a 5V lo limita, pero cada vez se ven más elementos
donde se puede elegir el voltaje entre 3.3 y 5V.

Arduino Leonardo
La diferencia de este arduino con el resto es que trae un único
MCU ATmega32u4 que tiene integrado la comunicación USB, lo
que elimina la necesidad de un segundo procesador. Esto tiene
otras implicaciones en el compartimento del arduino al conectarlo
al ordenador, lo que no lo hace apto para iniciarse con él.

Arduino Mini
Versión miniaturizada de la placa Arduino UNO basado en el
ATMega328. Mide tan sólo 30x18mm y permite ahorrar espacio
en los proyectos que lo requieran. Las funcionalidades son las
mismas que Arduino UNO. Necesita un programador para
conectarlo al ordenador:
Arduino Micro
También basado en el ATmega32u4 pero mucho más compacto.

Arduino Yun
El Arduino Yun es un Arduino que es diferente a lo que son el resto
de Arduino porque además de llevar un microcontrolador, incorpora
un Microprocesador MIPS con un Sistema Operativo Linux
embebido. La ventaja que aporta Arduino Yun y sus derivados es
que el microcontrolador y el microprocesador están conectado
mediante un puerto serie y además Arduino nos ofrece una serie de
herramientas/librerías que facilita la interconexión entre ellos.
Arduino Pro
Ligero y práctico.

Arduino Nano
Un pequeño poderoso.

- Arduino Fio
Programación bajo Xbee
Cuerpo de un Arduino
Arduino se programa en el lenguaje de alto nivel C/C++ y generalmente
tiene los siguientes componentes para elaborar el algoritmo:
 Estructuras
 Variables
 Operadores matemáticos, lógicos y booleanos
 Estructuras de control (Condicionales y ciclos)
 Funciones

Estructuras
Son dos funciones principales que debe tener todo programa en
Arduino:
 Setup () { }: Código de configuración inicial, solo se ejecuta una
vez.
 Loop (){ }: Esta función se ejecuta luego del setup(), se mantiene
ejecutándose hasta que se des- energice o desconecte el Arduino.
Variables
Es un dato o conjunto de datos que cambia su valor con la ejecución del
programa.
 Booleano: true ó false Boolean encendido=true;
 Entero: Valor entero int conta=5;
 Carácter: Almacena un ASCII char letra=’a’;

Operadores matemáticos
Se aplican al manejo de variables, condicionales y ciclos
 = (asignar)
 % (módulo)
 + (suma)
 - (resta)
 * (multiplicación)
 / (división)
 int valor = valor +5
Estructuras de control
Son instrucciones que nos permiten tomar decisiones y hacer diversas
repeticiones de acuerdo a unos parámetros, dentro de las más
importantes podemos destacar:
 If
 Switch/case
 For
 While

Funciones
Una función es un conjunto de líneas de código que realizan una tarea
específica y puede retornar un valor. Las funciones pueden tomar
parámetros que modifiquen su funcionamiento. Las funciones son
utilizadas para descomponer grandes problemas en tareas simples y para
implementar operaciones que son comúnmente utilizadas durante un
programa y de esta manera reducir la cantidad de código. Cuando una
función es invocada se le pasa el control a la misma, una vez que ésta
finalizó con su tarea el control es devuelto al punto desde el cual la función
fue llamada.
Descripción de las actividades que se debe desarrollar
Se plantea como proyecto desarrollar el diseño de un sistema de control
de un laboratorio biológico: Se plantea continuar con la automatización
del laboratorio, para ello se utiliza una placa Arduino en cualquiera de sus
presentaciones: Arduino uno, Arduino nano, Arduino Mega, Arduino
Leonardo, etc., para el control de lámparas, control de la banda
transportadora y visualización de las variables.
EJERCICIO A DESARROLLAR

1. Para el laboratorio se debe diseñar el control de las lámparas de


laboratorio, para ello se tienen dos lámparas de dos salas y se deben
controlar de la siguiente forma: Utilizando el PWM del Arduino se debe
censar la luz con un elemento electrónico (el grupo de trabajo
colaborativo decide cual utilizar del mercado) y aumentar la cantidad de
luz, tengan en cuenta el horario desarrollado en el paso 3:

- Si inicia la hora en 0:00 hasta las 1:59 la cantidad de luz


emitida por las lámparas son del 20%
- Desde las 2:00 hasta las 3:59 la cantidad de luz emitida por
las lámparas son del 40%
- Desde las 4:00 hasta las 6:59 la cantidad de luz emitida por
las lámparas son del 60%
- Desde las 7:00 hasta las 7:59 la cantidad de luz emitida por
las lámparas son del 75%
- En cada cambio de la cantidad de luz se debe hacer
progresivamente dado que si el cambio es brusco puede
generar problemas en los cultivos que se tienen en laboratorio,

para ello el aumento debe ser gradual entre porcentajes, para cada cambio se
debe hacer en un tiempo de 12 segundos, (si por ejemplo se hace el cambio de
40% al 60% el cambio se hace gradual entre un tiempo de 12 segundos)
SCRIP DE CONFIGURACION Y CODIGO EN ARDUINO

Se desarrollaron dos códigos en arduino uno para cada controlador

RELOG

int s=0;
int m=0;
float L=20;
#include <LiquidCrystal.h>
LiquidCrystal lcd(7,8,9,10,11,12);
void setup() {

// Indicacion de la hora en display


lcd.begin(16,4);
lcd.setCursor(0,0);
lcd.print("00");
lcd.setCursor(2,0);
lcd.write(":");
lcd.setCursor(3,0);
lcd.print("0");
lcd.print(s);

//Indicacion de la intensidad de la luz


lcd.setCursor(0,1);
lcd.write("%Luz: ");
lcd.print(L);

//Salidas que comunican al otro arduino el inicio de los intervalos de tiempo


pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);

//Salidas que controlan el giro de los motores de la banda transportadora


pinMode(15, OUTPUT);
pinMode(16, OUTPUT);
pinMode(17, OUTPUT);
pinMode(18, OUTPUT);
//entrada para cambio del giro
pinMode(13, INPUT);

//entrads de los finales de carrera


pinMode(5, INPUT);
pinMode(6, INPUT);

//Inicializacion de los motores apagados


digitalWrite(15,LOW);
digitalWrite(16,LOW);
digitalWrite(17,LOW);
digitalWrite(18,LOW);
}

void loop() {

// instrucciones para actualizar minutos y segundos en el reloj


delay(10);
s++;
if(s==60){m++;s=0;}
if(m==8){m=0;}
if(m>=10){lcd.setCursor(0,0);lcd.print(m);} else{lcd.setCursor(0,0);lcd.print("0");lcd.print(m);}
if(s>=10){lcd.setCursor(3,0);lcd.print(s);} else{lcd.setCursor(3,0);lcd.print("0");lcd.print(s);}

//disparos de los intervalos de tiempo


if(m==1 and s==59){digitalWrite(2, HIGH);}
if(m==3 and s==59){digitalWrite(2, LOW);digitalWrite(3, HIGH);}
if(m==6 and s==59){digitalWrite(3, LOW);digitalWrite(4, HIGH);}
if(m==7 and s==59){digitalWrite(4, LOW);}

//control de giro del motor


if(digitalRead(13)==
LOW){digitalWrite(15,HIGH);digitalWrite(16,LOW);digitalWrite(17,HIGH);digitalWrite(18,LOW);}

if(digitalRead(13)==
HIGH){digitalWrite(15,LOW);digitalWrite(16,HIGH);digitalWrite(17,LOW);digitalWrite(18,HIGH);}

//indicacion en el display del estado de la banda transportadora segun los finales de carrera
if(digitalRead(5)== HIGH and digitalRead(13)== HIGH){lcd.setCursor(0,2);lcd.write("Llevando
muestras");}
if(digitalRead(6)== HIGH and digitalRead(13)== HIGH){lcd.setCursor(0,2);lcd.write("Entregando
muestras");}
if(digitalRead(6)== HIGH and digitalRead(13)== LOW){lcd.setCursor(0,2);lcd.write("Regresando
muestras");}
if(digitalRead(5)== HIGH and digitalRead(13)== LOW){lcd.setCursor(0,2);lcd.write("Recibiendo
muestras");}

//Lectura analoga del sensor de luz e induicacion en display


L=analogRead(0);
L=(L-10)*100/965;
lcd.setCursor(0,1);
lcd.write("%Luz: ");
lcd.print(L);
}
CONTROL
#include <LiquidCrystal.h>
LiquidCrystal lcd(7,8,9,10,11,12);
int s=0;
int m=0;
int d=0;
float t = 5847;

void setup() {

//Entradas de señales del reloj


pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);

//activacion de interrupcion en puesto A0


attachInterrupt( 0, PWM, RISING);

//pin de salida del control de luz


pinMode(1, OUTPUT);
}
void loop() {
//Disparo del TRIAC
if(d==1){delayMicroseconds(t);;digitalWrite(1, HIGH);delay(1);d=0;digitalWrite(1, LOW);}
}

void PWM (){


//señalizacion que hubo cruce de cero
d-1;

//seleccion del tiempo de la caida del flanco de la salida hacia el triac segun las señales del relog
if (digitalRead(3)== HIGH and t>4700)(t=t-180;)
if (digitalRead(4)== HIGH and t>3625)(t=t-225;)
if (digitalRead(5)== HIGH and t>1800)(t=t-232;)

//reset de la salida para el valor inicial


if (digitalRead(3)== LOW and (digitalRead(4)== LOW and (digitalRead(5)== LOW and
t<5867)(t=t+232;)

}
CIRCUITO SIMULADO EN PROTEUS

Grafica 1. Esquema general

Esta salida del osciloscopio refleja la cantidad de luz que se genera por
ciclo
Grafica 2. Cantidad de luz emitida del 20%

La señal va cambiando al transcurrir el tiempo y a su vez se puede


visualizar la variación de la luz
Grafica 3. Cantidad de luz emitida 40%
Grafica 4. Cantidad de luz emitida 60%

Grafica 5. Cantidad de luz emitida 75%


En la gráfica 4 y 5 cuando el tiempo está oscilando entre 6:00 m y 7:59
como nos lo pide el enunciado del ejercicio, se observa como la señal
original de la luminosidad ha cambiado en el transcurso del tiempo y
cambia su forma

Al pasar a los 8 minutos la señal vuelve a su estado original


2. Se debe diseñar una banda transportadora que realice el
traslado de un laboratorio a otro las muestras para ello tengan
en cuenta dos motores que giran en ambos sentidos izquierda
y derecha y dos sensores que hacen inicio y fin de carrera,
buscar información para la construcción de la mejor banda
transportadora

Como nos lo pide el segundo punto se ve el desplazamiento de la banda


llevando la muestra y eso hace que los motores que están controlando
la banda giren a la derecha

Con este pulsador cambiamos el sentido de giro de la banda, en este caso


esta activado y los motores giran a la derecha.
Se acciona nuevamente el pulsador y los motores giran a la izquierda y
por ende cambia el sentido de la banda, en la pantalla se puede ver que
cambia el mensaje a recibiendo muestra
3. Utilizar una pantalla LCD de 16x2 o 16x4 para mostrar los siguientes
aspectos:
- Porcentaje de cantidad de luz en cada momento
- Posición de la banda transportadora para cada uno de los
laboratorios.

Se debe de aclarar que en esta simulación en proteus no es posible relacionar


los dos componentes de luz, de esta manera toca hacerlo de manera manual.

En las gráficas siguientes se visualiza el cambio de % de luz cuando se


mueve de manera manual el schematic LDR1
CONCLUSIÓNES

 Se logra dar solución a la totalidad del proyecto. Con la ayuda del


Arduinos, nos dimos cuenta que la esta lengua es complejo, ya que es de
alto nivel, pero fácil de estudiar y aplicar, su estructura es simple, pero
en ella se podría abarcar y construir cosas extensas y muy útiles.

 El día a día, nos encontramos con todo esto, sensores y actuadores, la


industria más que todo, es la implementa estas cosas, aunque podemos
ver que bancos, escuelas y laboratorios se ven implementado igualmente.

 Antes de programar en Arduino, se requiere conocer la arquitectura del


microcontrolador y luego las instrucciones que hacen parte de la
programación de éste.

 Por medio del uso de placas de desarrollo de hardware, podemos


determinar su funcionamiento para que lea valores del exterior usando
los puertos de entrada y con dichos valores obtener información que se
puede retornar usando los puertos de salida, con el objetivo de realizar
una tarea específica.

 Las instrucciones que constituyen un programa se cargan en


localizaciones de forma secuencial de la memoria y se ejecutan una a una
a la vez. El control de la dirección de localización de la instrucción
siguiente lo lleva el registro pc (contador del programa).

 En Arduino hay algunas salidas digitales que se pueden emplear para


modular el ancho de pulso de una señal.

 Las diversas placas de desarrollo de Arduino presentan puertos análogos


y digitales que se pueden utilizar como entrada o salida del sistema.

 El Arduino es una placa basada en un microcontrolador, específicamente


un ATMEL. Un microcontrolador es un circuito integrado, en el cual se
pueden grabar instrucciones. Estas instrucciones se escriben utilizando un
lenguaje de programación que permite al usuario crear programas que
interactúan con circuitos electrónicos.

 Un microcontrolador posee entradas y salidas digitales, entradas y salidas


analógicas y entradas y salidas para protocolos de comunicación. Un
Arduino es una placa que cuenta con todos los elementos necesarios para
conectar periféricos a las entradas y salidas del microcontrolador.
BIBLIOGRAFIA

Unidad 3 - Placas de Desarrollo de Hardware Libre


- Angulo, U. (2001). Microcontroladores PIC: diseño práctico de
aplicaciones. Primera parte: PIC12F508 y PIC16F84A. Lenguajes
Ensamblador, C y PBASIC (4ª. Ed.). McGrau-Hill. (Pp. 1-48, 81-
106)Recuperado de:
http://bibliotecavirtual.unad.edu.co:2460/lib/unadsp/detail.action?docID
=3194849

- Franco, C. A. (2012). Hardware Libre Arduino. Universidad Politécnica


de Valencia.[Video]. Recuperado de
https://riunet.upv.es/handle/10251/17289
- Robotica, T. (2012). Libro básico de Arduino. Equipo de cosas de
Mecatrónica. (Pp 33-60). Recuperado de:
https://openlibra.com/es/book/libro-basico-de-arduino-electronica-y-
programacion
- Herrero, J. (2015). Una Mirada al mundo Arduino. Tecnología y
Desarrollo (Pp. 13-28). Recuperado de:
https://dialnet.unirioja.es/servlet/articulo?codigo=5468086
- Corona, L. (2014). Sensores y Actuadores Aplicaciones con Arduino.
Instituto Politécnico Nacional (Pp. 39-108). Recuperado de:
http://bibliotecavirtual.unad.edu.co:2460/lib/unadsp/reader.action?ppg
=2&docID=4569609&tm=1527546697645

Recursos Educativos Adicionales.

- Schwartz, M. Programming Arduino with LabVIEW. Packt Publishing.


Recuperado de:
http://bibliotecavirtual.unad.edu.co/login?url=https://bibliotecavirtual.u
nad.edu.co:2969/login.aspx?direct=true&db=e000xww&AN=944047&la
ng=es&site=ehost-live
- Ceballos, E. (2017). Desarrollo de un Robot de Rehabilitación pasiva
para la articulación de la muñeca mediante la implementación de un
microcontrolador Arduino UNO. UIS ingenierías. Recuperado de:
http://bibliotecavirtual.unad.edu.co/login?url=https://bibliotecavirtual.u
nad.edu.co:2969/login.aspx?direct=true&db=zbh&AN=123535824&lang
=es&site=ehost-live

Potrebbero piacerti anche