domingo, 1 de julio de 2018

Laboratorio N° 16

LABORATORIO N° 16:
Proyecto: Detector 
Ultrasónico con Arduino



OBJETIVOS:

  • Identificar el sensor HC-SR04 (sensor ultrasónico).
  • Montar el sensor conectado al Arduino para una alarma que aumenta su frecuencia mientras más cerca está el objeto. 
  • Diseñar el código para poder transformar la señal recibida en la distancia del objeto.



SENSOR ULTRASÓNICO 

El sensor HC-SR04 es un sensor de ultrasonido, que permite detectar obstáculos frente a él desde una distancia mínima de 2cm hasta los 4m, trabaja a una frecuencia de 40Khz con un angulo de medición de aproximadamente 15 grados. Cuenta con una entrada llamada TRIG que es la entrada para un pulso TTL de 5V con un ciclo de 10uS, el cual le indicara que debe empezar a enviar una señal en ráfaga de 40Khz y a su vez activa la recepción de pulsos para detectar el choque de la ráfaga con su entorno.
El sensor de ultrasonido envía una ráfaga de la cual detectara su rebote y dependiendo el tiempo que se demore en volver la señal es posible determinar a que distancia se encuentra el obstáculo, lógicamente esta distancia no debera sobrepasar la distancia máxima de detección del sensor.
El módulo HC-SR04 no es específico para Arduino sino que puede conectarse a otras plataformas. Posee 4 pines de conexión etiquetados Vcc (voltaje +5v), Gnd (masa), Trig (Trigger o disparador), Echo (Eco o retorno).
Resultado de imagen para hc-sr04}
Características del HC-SR04:
Voltaje: +5v DC (corriente continua)
Consumo: < 2 mA
Frecuencia: 40khz (40.000 ciclos por segundo)
Disparador: +5v durante 10 μs mínimo
Distancia mínima de detección: 2,5 cm aprox.
Distancia máxima de detección: 5 m aprox.
Resolución: 0,3 cm

¿Cómo funciona?

El sensor de ultrasonido HC-SR04 es un dispositivo que emite un sonido de muy alta frecuencia, y luego espera a recibir el eco o rebote del mismo. Debido a que opera a muy alta frecuencia, no es audible para el oído humano.  Trabaja emitiendo 8 pulsos cortos a una frecuencia de 40 Khz (algunas personas pueden oír hasta 20khz). El trigger o disparador (pin Trig), esperará un pulso alto (HIGH) por al menos 10 μs (10 microsegundos) para comenzar su ciclo de detección a distancia. En ese momento disparará 8 pulsos altos (HIGH) seguidos a 40 Khz y luego se quedará esperando el retorno de los pulsos emitidos. Cuando detecte los pulsos emitidos, generará un pulso alto (HIGH) en la salida (pin Echo) de duración igual al tiempo que transcurrió entre la emisión y recepción del pulso.
Algo a tener en cuenta es que el sensor usa sonido (de alta frecuencia), por lo que es muy susceptible a materiales que tienden a absorber el sonido. Otras consideración es que el HC-SR04 rebotará teniendo en cuenta angulos y eventulmente recibirá un eco. Esto quiere decir que si ponemos una superficie inclinada faboreceremos un rebote errático, y la distancia medida será mayor a la real.



VIDEO DEMOSTRATIVO






OBSERVACIONES Y CONCLUSIONES 

-Se implementó un circuito que controla con un sensor ultrasónico  la frecuencia de pulsos de un buzzer de 5v. Siendo los datos sensados la cantidad de tiempo que demora en viajar la onda ultrasónica, rebotar y llegar al receptor del modulo, siendo la distancia  convertida con un factor de conversión de centímetros  a microsegundos la cual es la velocidad a la que viaja el sonido, la cual es optima para su manejo 


-El uso de este tipo de sensor puede tener bastantes aplicaciones muy robustas  como por ejemplo la medición de caudal por una tubería. La onda de sonido viajaría al modulo receptor a una cierta velocidad del flujo ocupando un tiempo, 

y si el flujo  esta a mayor velocidad ocupara un tiempo mayor al inicial, con unos cálculos y programación se podría llegar a tener lecturas de caudal precisas.

-Haciendo uso del comando map, se logró controlar la frecuencia del buzzer, convirtiendo los valores menores a 1 metro a una variable entre 1000 y 1 ms respectivamente, logrando asi mediante la escritura digital darle la frecuencia al buzzer.



El sensor HC-SR04 posee dos transductores: un emisor y un receptor piezoeléctricos, el emisor piezoeléctrico emite 8 pulsos de ultrasonido(40KHz) luego de recibir la orden en el pin TRIG, las ondas de sonido viajan en el aire y rebotan al encontrar un objeto, el sonido de rebote es detectado por el receptor piezoeléctrico, luego el pin ECHO cambia a Alto (5V) por un tiempo igual al que demoró la onda desde que fue emitida hasta que fue detectada, el tiempo del pulso ECO es medido por el microcontrolador y así se puede calcular la distancia al objeto.

-

Se observo que el límite máximo de alcance del sensor  HC-SR04 es de  2 a 4.50 m.

Trabajo Extra: 

Medidor de pilas con Arduino

Este sencillo sistema nos permitirá comprobar las típicas pilas que usamos en los aparatos electrónicos de nuestra casa. Muchas veces no sabemos si una pila tiene el voltaje suficiente para que un aparato pueda funcionar correctamente. En este proyecto solo se podran comprobar pilas AA, AAA, debido a la limitacion de entrada de 5v en los pines analogicos.

Esquema: 



Código en Arduino:

Objetivos:

Poder detectar cuando una pila tiene suficiente energía o no a través de LED's y usando una placa Arduino.


¿Cómo se logra esta medición?


Cuando una pila esta completamente cargada suministran un voltaje de 1.5 v, y según estas se van desgastando el voltaje disminuye progresivamente .


conclusiones y observaciones 


-Se utilizó comandos condicionales para verificar el valor del voltaje limitando estos en un rango de voltaje, si la lectura del puerto PWM cae en un rango asignado en el comando if se hará una acción en este caso el encendido de led a ciertos voltajes de lectura proporcionales.



Integrantes:
- Luis Alonso Bayton Coaguila
- Fernando Sejje Yucra
- Alvaro Meza Capcha
- Renzo Torres Umiña






Laboratorio N° 15



LABORATORIO N° 15:
Convertidor ADC
en Arduino



OBJETIVOS:

  • Identificar señales analógicas y digitales que entran y salen de Arduino.
  • Utilizar comandos para escribir y leer señales digitales, y convertirlas en señales analógicas.


SEÑALES ANALÓGICAS EN ARDUINO
Una señal eléctrica analógica es aquella en la que los valores de la tensión o voltaje varían constantemente y pueden tomar cualquier valor. En el caso de la corriente alterna, la señal analógica incrementa su valor con signo eléctrico positivo (+) durante medio ciclo y disminuye a continuación con signo eléctrico negativo (–) en el medio ciclo siguiente.
Un sistema de control (como un microcontrolador) no tiene capacidad alguna para trabajar con señales analógicas, de modo que necesita convertir las señales analógicas en señales digitales para poder trabajar con ellas.
La señal digital obtenida de una analógica tiene dos propiedades fundamentales:
  • Valores. Que valor en voltios define 0 y 1. En nuestro caso es tecnología TTL (0 – 5V)
  • Resolución analógica: nº de bits que usamos para representar con una notación digital una señal analógica.
En el caso de un arduino Uno, el valor de 0 voltios analógico es expresado en digital como B0000000000 (0) y el valor de 5V analógico es expresado en digital como B1111111111 (1023). Por lo tanto todo valor analógico intermedio es expresado con un valor entre 0 y 1023, es decir, sumo 1 en binario cada 4,883 mV.
Arduino Uno tiene una resolución de 10 bits, es decir, unos valores entre 0 y 1023.

Entradas Analógicas en Arduino

Los microcontroladores de Arduino contienen en la placa un conversor analógico a digital de 6 canales. El conversor tiene una resolución de 10 bits, devolviendo enteros entre 0 y 1023. Los pines analógicos de Arduino también tienen todas las funcionalidades de los pines digitales. Por lo tanto, si necesitamos más pines digitales podemos usar los pines analógicos. La nomenclatura para los pines analógicos es A0, A1, etc…

Salidas Analógicas. PWM

Como hemos dicho Arduino Uno tiene entradas analógicas que gracias a los conversores analógico digital puede entender ese valor el microcontrolador, pero no tiene salidas analógicas puras y para solucionar esto, usa la técnica de PWM.
La modulación por ancho de pulsos (también conocida como PWM, siglas en inglés de pulse-width modulation) de una señal o fuente de energía es una técnica en la que se modifica el ciclo de trabajo de una señal periódica (una senoidal o una cuadrada, por ejemplo), ya sea para transmitir información a través de un canal de comunicaciones o para controlar la cantidad de energía que se envía a una carga.
El ciclo de trabajo de una señal periódica es el ancho relativo de su parte positiva en relación con el período.




VIDEO DEMOSTRATIVO

OBSERVACIONES


-Debemos tener en cuenta que en Arduino los pines analógicos también tienen todas las funcionalidades de los pines digitales. En el caso que necesitamos más salidas digitales podríamos utilizar los pines analógicos A0, A1, A2, hasta el pin A5. 

-Los puertos analógicos y PWM  tienen  tienen la capacidad de hacer lecturas analógicas basadas en la variación de voltaje que entra o sale a estos puertos

-En el experimento se usó un puerto analógico para la lectura del potenciómetro, este con un divisor de voltaje y con una resistencia auxiliar podemos hacer variar el voltaje que cae en la resistencia variable, este voltaje es leído por el puerto A0 de arduino el cual según el código establecido hará una determinada acción en este caso hacer un efecto de dimerizacion pero con un cambio en las salidas digitales asignadas.

CONCLUSIONES

-El microcontrolador atmega328-p que contiene Arduino posee 6 entradas analógicas por las cuales hacer lecturas analógicas resulta ser eficiente por su chip conversor analógico-digital, el uso apropiado de este solo dependerá de un buen código de programación para realizar dicha tarea.

-Se implementó un circuito en el que se varia la resistencia siendo este leído por el micro, tomando el dato para su procesado, en este caso la variación de la resistencia controlará la intensidad luminosa del led y su cambio en una lectura de 520.

-Se observo que Arduino posee un conversor analógico a digital incorporado, el cual devuelve valores enteros en rango de 0 a 1024.


Trabajo Extra:


 Control de velocidad de un motor DC y un Buzzer con la variación de un potenciometro.


En este trabajo vamos a modular la cantidad de energía hacia un motor DC mediante la técnica de modulación por ancho de pulsos (PWM)


Esquema:

Código en Arduino:

Explicación:
Tanto el Buzzer como el motor DC son controlados por un PWM que tiene como dato de entrada la variación de una señal análoga-digital que toma la variación del potenciometro. De esta manera el potenciometro regula el sonido y las revoluciones del motor.

Integrantes:
- Luis Alonso Bayton Coaguila
- Fernando Sejje Yucra
- Alvaro Meza Capcha
- Renzo Torres Umiña





Laboratorio N° 14


LABORATORIO N° 14:
Matriz de LEDs 
en Arduino


OBJETIVOS:

  • Identificar señales analógicas y digitales que entran y salen de Arduino.
  • Utilizar comandos para escribir y leer señales digitales, y convertirlas en señales analógicas.

MATRIZ DE LEDs

Las matrices de LEDs (o LED arrays) son, como su nombre indica, una matriz de diodos LED normales y corrientes que se comercializa en multitud de formatos y colores. Desde las de un solo color, a las que tienen varios colores posibles, e incluso las hay de una matriz RGB








Este componente se presenta con dos filas de 8 pines cada una, que se conectan a las filas y las columnas. 

Si ponemos HIGH en una columna, digamos la 2, no se iluminara nada aun. Pero cuando hagamos LOW en, digamos la fila 4, se cerrara el circuito a GND (con una resistencia de limitación, por supuesto) y el pin col 2 x fila 4, se encenderá.




VIDEO DEMOSTRATIVO





OBSERVACIONES

-Para definir las letras en la matriz de led se debe especificar primero el código hexadecimal de cada palabra en Arduino.

-Para la formación de letras o mensajes en una matriz led con arduino hay diferentes posibilidades y estructuras al momento de realizar el codigo uno de ellos es el manejo de matrices como variables pudiendo controlar varios pines digitales con pocas sentencias de codigo, otra de ellas es el manejo de bytes .

CONCLUSIONES 

-El uso de microcontrolodores es mucho mas eficaz a la hora de realizar este tipo de proyectos ya que gracias a su versatilidad a la hora de manejar columnas y filas de la matriz led para la formación de figuras y mensajes es mucho mas simple con solo la conexión de pines y una programación adecuada 

-La implementación del circuito resulta ser mucho mas fácil pero tiene ciertas limitantes  a la hora de conectar varias matrices por lo que se debe de implementar módulos para cada matriz, así se podrá controlar toda una serie de matrices con una conexión en cascada y los datos de forma digital esto dependerá también de la programación 

-Se implemento el código para que Arduino genere letra en una matriz de 7x5, además se comprobó que tanta las salidas analógicas de Arduino pueden ser usadas también como salidas digitales.




Trabajo Extra: Vúmetro con Arduino.

¿Qué es un vúmetro?

Un vúmetro es un dispositivo que indica el voltaje de forma visual comúnmente usados en equipos de audio. Detecta los puntos altos y bajos del sonido.

Materiales:
-Arduino UNO 
-LM324
-11 resistencias de 220 ohmios 
-Potenciometro de 5k o 10k
-11 LED's
- Cable auxiliar.
- Cables o jumpers.

Circuito LM324:
Es un circuito integrado que contiene 4 amplificadores operacionales
Vamos a conectar el pin 4 y 11 a 5v y a tierra respectivamente 
En el pin 2 conectaremos una resistencia de 220 Ohms y un extremo del potenciometro de 5k o 10k, el pin del medio ira al pin 1 del LM324. El otro extremo de la resistencia  de 220 ira a tierra.
Conectamos cada salida digital del Arduino (1 al 10) un LED con su respectiva resistencia 



El cable auxiliar que usaremos para conectar el audio es de 3.5 mm. y conectaremos con cables tipo caimán. La parte de la base va conectada a tierra, mientras que podemos usar cualquiera de las señales de audio y también usando un caimán vamos a conectarlo al pin 3 del LM324 
Nuestras conexiones quedan así 

Código en Arduino:
//Declaramos los leds
int LED1 = 3;
int LED2 = 4;
int LED3 = 5;
int LED4 = 6;
int LED5 = 7;
int LED6 = 8;
int LED7 = 9;
int LED8 = 10;
//Las variables que usaremos para el silencio
int Valor;
int Valor1;
int Valor2;
int Valor3;
int Valor4;
//Configuramos los pines y el serial para poder visualizar la entrada analogica
void setup (){
 Serial.begin(9600);
 pinMode(LED1,OUTPUT);
 pinMode(LED2,OUTPUT);
 pinMode(LED3,OUTPUT);
 pinMode(LED4,OUTPUT);
 pinMode(LED5,OUTPUT);
 pinMode(LED6,OUTPUT);
 pinMode(LED7,OUTPUT);
 pinMode(LED8,OUTPUT);
}
void loop (){
  //Leemos el valor
 Valor = analogRead(A0);
 //Transferimos los valores para saber cual era el estado anterior
 Valor4 = Valor3;
 Valor3 = Valor2;
 Valor2 = Valor1;
 Valor1 = Valor;
//Visualizamos los valores en Serial Monitor
 Serial.print("Valor: ");
 Serial.print(Valor);
 Serial.print("\t Valor1: ");
 Serial.print(Valor1);
 Serial.print("\t Valor2: ");
 Serial.print(Valor2);
 Serial.print("\t Valor3: ");
 Serial.print(Valor3);
 Serial.print("\t Valor4: ");
 Serial.println(Valor4);
 //Condicionamos que si el programa lee 4 veces seguidas 0 que se apagen los leds, si no ponemos esto los leds parpadearan mucho
if (Valor1+Valor2+Valor3+Valor4==0){
  digitalWrite(LED1,LOW);
  digitalWrite(LED2,LOW);
  digitalWrite(LED3,LOW);
  digitalWrite(LED4,LOW);
  digitalWrite(LED5,LOW);
  digitalWrite(LED6,LOW);
  digitalWrite(LED7,LOW);
  digitalWrite(LED8,LOW);
}
//Encendemos los leds segun el valor de entrada. En este caso la salida de mi pc como mucho me llega a 400 asi que lo dividimos entre ocho leds.
else{
 if (Valor>0){
   digitalWrite(LED1, HIGH);
 }
 else{
   digitalWrite(LED1, LOW);
 }
 if (Valor>50){
   digitalWrite(LED2, HIGH);
 }
 else{
   digitalWrite(LED2, LOW);
 }
 if (Valor>100){
   digitalWrite(LED3, HIGH);
 }
 else{
   digitalWrite(LED3, LOW);
 }
 if (Valor>150){
   digitalWrite(LED4, HIGH);
 }
 else{
   digitalWrite(LED4, LOW);
 }
 if (Valor>200){
   digitalWrite(LED5, HIGH);
 }
 else{
   digitalWrite(LED5, LOW);
 }
 if (Valor>250){
   digitalWrite(LED6, HIGH);
 }
 else{
   digitalWrite(LED6, LOW);
 }
 if (Valor>300){
   digitalWrite(LED7, HIGH);
 }
 else{
   digitalWrite(LED7, LOW);
 }
 if (Valor>350){
   digitalWrite(LED8, HIGH);
 }
 else{
   digitalWrite(LED8, LOW);
}
}
Integrantes:
- Luis Alonso Bayton Coaguila
- Fernando Sejje Yucra
- Alvaro Meza Capcha
- Renzo Torres Umiña