lunes, 23 de marzo de 2015

Práctica 3.3: una entrada analógica y tres salidas digitales (Sensor+RGB)

Esta práctica es una aplicación de entrada analógica y salida digital.
La entrada analógica debería estar más que clara, ya que es aplicar nuevamente la función analogRead trabajada durante la 2ª evaluación.

Sintaxis: analogRead(pin)

La salida digital es más sencilla todavía, ya que es una aplicación de las salidas digitales estudiadas en la 1ª evaluación con la única diferencia que la salidas estarán activas según el intervalo de valores de entrada.

Supongamos que queremos establecer tres zonas de trabajo, zona roja, verde y azul. Para ello necesitamos dos valores frontera, en este caso x e y. Condicionaremos las salidas a los valores de entrada con ayuda de esta pequeña chuleta.

 
   if (valor<= x)                           // primera zona de trabajo
{
    digitalWrite(Pinrojo, HIGH);    //En caso, pintamos el LED rojo
    digitalWrite(Pinverde, LOW);
    digitalWrite(Pinazul, LOW);
}
else if (valor>x && valor
){ digitalWrite(Pinrojo, LOW);   
    digitalWrite(Pinverde, HIGH);//En caso, pintamos el LED verde
    digitalWrite(Pinazul, LOW);
}
else if (valor>=y)
{
    digitalWrite(Pinrojo, LOW);  
    digitalWrite(Pinverde, LOW);
    digitalWrite(Pinazul, HIGH); //En caso, pintamos el LED azul

 
 
  delay(500);
}


*No debes olvidar el comienzo del programa.


int Pinrojo=1;
int Pinverde=2;
int Pinazul=3;

void setup(){
  Serial.begin(9600);
 
  pinMode(Pinverde,OUTPUT);   //Definimos los pines, notar que ya no definimos los pines del sensor
  pinMode(Pinrojo, OUTPUT); 
  pinMode(Pinazul,OUTPUT);
 
 
}

lunes, 16 de marzo de 2015

Práctica 3.3.1: Entrada analógica con LDR y salida analógica con un LED


Muy probablemente el resultado sea decepcionante: el LED brilla poco y cuando pasamos la mano por encima de la fotoresistencia el brillo del LED baja un poco más, pero dependiendo de las condiciones de luz ambiental es probable que no se note apenas nada.
La solución es el calibrado del sensor, esto es, hacer una lectura de los valores que devuelve el sensor en el ambiente en el que va a trabajar y ajustar los valores de salida a este rango. Para ello emplearemos el comando map().

map(valor, desdeBajo, desdeAlto, hastaBajo, hastaAlto)

valor: el número (valor) a mapear.
desdeBajo: el límite inferior del rango actual del valor.
desdeAlto: el límite superior del rango actual del valor.
hastaBajo: límite inferior del rango deseado.
hastaAlto: límite superior del rango deseado.

Primero debes realizar el programa sin la línea de programación en rojo. Cuando leas los valores en pantalla de la entrada analógica, ya podras calcular cuales son los valores máximos y mínimos que alcanza la variable valor y podras ajustar el valor max y min.



int lightPin = 0;  //define el pin de la foto-resistencia
int ledPin=11;    //define el pin para el  LED

int valor;            //define una variable en la que haremos los cálculos
int min = 0;        //valor mínimo que da la foto-resistencia
 int max = 0;      //valor máximo que da la foto-resistencia

void setup() {
    Serial.begin(9600);  //Inicializa la comunicación serie
    pinMode( ledPin, OUTPUT );
}
void loop() {
    valor = analogRead(lightPin);
    valor = map(valor, min, max, 0, 255);  
    analogWrite(ledPin, valor);
    Serial.println(valor);
    delay(100); //pequeño retardo para darle tiempo al LED a responder y la escritura del valor leído.

  }

El comando map() re-mapea un número desde un rango hacia otro. Esto significa que, un valor contenido en el al rango desdeBajo-desdeAlto será mapeado al rango hastaBajo-hastaAlto.
No se limitan los valores dentro del rango, ya que los valores fuera de rango son a veces objetivos y útiles, así que si le pasamos un valor fuera del rango inicial calculará una salida dentro del rango de salida. Se puede utilizar el comando constrain() tanto antes como después de ésta función si es importante respetar los límites de los rangos.

Ten en cuenta que los límites “inferiores” de algún rango pueden ser mayores o menores que el límite “superior” por lo que map() puede utilizarse para revertir una serie de números, por ejemplo:
y = map(x, 1, 50, 50, 1);

La función maneja correctamente también los números negativos, por ejemplo:
y = map(x, 1, 50, 50, -100);
también es válido y funciona correctamente.

El comando map() usa matemática de enteros por lo que no generará números en coma flotante, es decir, su uso se limita a valores o variables del tipo int.
Trata de aplicar la función map() al ejercicio por ti mismo, de modo que el LED brille al mínimo cuando tapas con la mano la LDR y al máximo cuando la LDR capta la luz de ambiente. Si te atascas aquí tienes la solución, aunque te sentirás más orgulloso si lo resuelves sin mirar.

Fuente:  http://www.ardumania.es/ejercicio-4-ldr/

domingo, 8 de marzo de 2015

Identificación de bloques típico de un regulador serie.

El elemento más importante de cualquier sistema de control automático es el lazo de control realimentado, que no es más que una trayectoria cerrada formada por un sensor (tipos de señales), un controlador y un elemento final de control. El concepto de control por realimentación no es nuevo, el primer lazo de control realimentación fue usado en 1774 por JamesWatt para el control de la velocidad de una máquina de vapor.
- Circuito de referencia:
    -.Proporciona una tensión de referencia estable.
    -.Se suele utilizar un circuito basado en diodo zener.
    -.Solución más simple: diodo zener+resistencia de polarización.
- Circuito de muestreo:
    -.Entrega una señal proporcional a la tensión de salida.
    -.Suele estar constituido por un divisor de tensión resistivo situado a la salida del regulador.
- Amplificador de error:
    -.Compara la muestra de la tensión de referencia y genera una señal de error proporcional a la diferencia entre ambos.
- Elemento de control:
    -.Su misión es interpretar la señal de error y corregir las variaciones de la tensión de salida.
    -.Suele estar constituido por un transistor bipolar (normalmente NPN) conectado en serie entre la entrada y la salida.
 Debido a la necesidad de utilizar reguladores en las fuentes de alimentación surgierón los reguladores integrados. Su estructura interna se corresponde con la del regulador lineal básico. Son dispositivos versatiles que simplifican el diseño de fuentes de alimentación lineales.

Principio del control realimentado

Técnicas de control y análisis de estabilidad.
  
El suceso que realmente marca un hito en el desarrollo de los métodos de respuesta en frecuencia es la aparición de trabajo clásico de Nyquist sobre la estabilidad de amplificadores realimentados, su celebre criterio de estabilidad.
En1942 Ziegler y Nichols, ingenieros de Taylor Instruments hicieron un estudio importante que condujo a fórmulas empíricas para sintonizar el regulador PID al proceso.


martes, 3 de marzo de 2015

Práctica 3.3: sensor ultrasonidos HC-SR04.


Tutorial: sensor ultrasonidos HC-SR04.

Introducción

Este sensor tiene el mismo funcionamiento que un radar ya que envia pulsos a alta frecuencia en este caso ultrasónicos. Está compuesto por dos piezoeléctricos: un transmisor y receptor ambos en forma de cilindro. El transmisor se encarga de emitir la señal ultrasónica para luego ser rebotada a través de un objeto llegando al cilindro receptor.

 Asumiendo que la velocidad de este sensor es apróximadamente unos 340 m/s, entonces se puede obtener más o menos la distancia a la cual está el objeto.
 
Al ser un sensor ultrasónico, éste trabaja en la banda de los 40 kHz casi el doble de la frecuencia de muestreo para una señal de audio. Esto quiere decir que para el ser humano es imposible percibir a través de los oídos esta señal ya que supera el ancho de banda del oído humano que es de hasta apróximadamente 20 kHz. Un sensor ultrasónico puede trabajar en áreas donde se tenga completa oscuridad ya que las luces no afectan o detienen su funcionamiento.

Aplicaciones y ventajas
 

Debido a sus características, podemos encontrar sensores de ultrasonidos en aplicaciones como:
  • Medición de nivel – en tanques que contienen diferentes productos en forma líquida-.
  • Control de colisiones en sistemas de aparcamiento.
  • Control de posición en campos como robótica, industria del plástico, etc.
  • Control de llenado de tanques.
Las principales ventajas de estos sensores son:
  • No necesitan contacto físico para poder detectar objetos.
  • Buena relación calidad-precio
  • En comparación con otras tecnologías, los dispositivos basados en ultrasonidos son compactos y livianos.

 Conexiones

 

 Programa



long distancia;
long tiempo;
void setup(){
  Serial.begin(9600);
  pinMode(9, OUTPUT); /*activación del pin 9 como salida: para el pulso ultrasónico*/
  pinMode(8, INPUT); /*activación del pin 8 como entrada: tiempo del rebote del ultrasonido*/
}

void loop(){
  digitalWrite(9,LOW); /* Por cuestión de estabilización del sensor*/
  delayMicroseconds(5);
  digitalWrite(9, HIGH); /* envío del pulso ultrasónico*/
  delayMicroseconds(10);
  tiempo=pulseIn(8, HIGH); /* Función para medir la longitud del pulso entrante. Mide el tiempo que transcurrido entre el envío
  del pulso ultrasónico y cuando el sensor recibe el rebote, es decir: desde que el pin 12 empieza a recibir el rebote, HIGH, hasta que
  deja de hacerlo, LOW, la longitud del pulso entrante*/
  distancia= int(0.017*tiempo); /*fórmula para calcular la distancia obteniendo un valor entero*/
  /*Monitorización en centímetros por el monitor serial*/
  Serial.println("Distancia ");
  Serial.println(distancia);
  Serial.println(" cm");
  delay(1000);
}


Características

A comparación de otros dispositivos anteriomente mostrados en Clase911, este sensor tiene únicamente cuatro pines. Dependiendo del fabricante, puede tener desde tres hasta cinco pines. Para este caso se tiene:
VCC: Voltaje de alimentación
TRIG: Pin de disparo
ECHO: Pin de eco
GND: Ground
Medición mínima: 2 cm
Medición máxima: 5 m
Ángulo efectivo < 15 °
Señal de disparo: TTL de 10 us.
Unidades de operación

Parámetros
de operación
Min Típ. Máx Unidad
Voltaje
de operación
4.5 5 5.5 V
Corriente 10 15 20 mA
Indagaré entonces a profundidad cómo funciona este sensor, para que puedan observar que realmente es sencillo. Para ello, haré uso de la data del fabricante:
En la data se presenta un diagrama de tiempo que es muy importante conocerlo y dominarlo. Funciona de la siguiente manera:
Sensor Timing Chart
Se tienen tres canales: el canal del disparo, el canal donde se emite la señal desde el módulo y el canal del eco respectivamente.
Para que el módulo inicie su trabajo es necesario enviar un pulso TTL (típicamente 5 V) con una duración de 10 us. Una vez se haya enviado este pulso a través del pin TRIG entonces el módulo comenzará a trabajar internamente enviando varios pulsos ultrasónicos de 40 kHz apróximadamente. Una vez que el módulo haya enviado ocho pulsos, el pin de eco enviará la distancia a la cual está el objeto en forma de pulsos con nível TTL de amplitud más baja. Dependiendo del ancho del pulso que emita el receptor, se tendrá distintos valores de distancias. El ancho de pulso para el pin eco va desde apróximadamente 150 us a 25 ms. El caso especial ocurre a 38 ms que es cuando el sensor indica que no hay obstáculo. Y así es que funciona el sensor.

Ángulo efectivo

Este sensor presenta una gráfica similar a la de un patrón de radiación, con esta información se puede saber a qué ángulo desde una referencia inicial se pueden obtener mejores resultados en las lecturas. El patrón de radiación es una gráfica que presenta propiedades importantes en base a coordenadas espaciales, generalmente esféricas. La propiedad más relevante en este tipo de gráfica es la distribución de energía, es decir cuántos dB tenemos en función de un punto de referencia a lo largo de un radio que no cambia. Para este caso se comenta a qué distancia se puede detectar un objeto en función del ángulo.
El ángulo efectivo para este sensor es de 15 °, esto indica que el sensor podrá detectar objetos a un rango de 30 °, 15 ° hacia la derecha e izquierda del ángulo cero. A continuación presento la imagen:
Sensor Angle
Aquí se observa que en efecto para un angulo menor a 15 grados, las lecturas son bastante buenas.

Consideraciones

  • Antes de conectarlo a la red, primero asegúrate que esté conectado a la refencia o bien: ground.
  • Recuerda que todos los sensores de este tipo tienen una zona ciega, para evitar salidas inestables utilizada el sensor para medir distancias a más de 80 cm desde su frente.
  • La temperatura es un factor que puede afectar las lecturas del sensor, la velocidad de propagación de una onda mecánica decrece a medida que la temperatura aumenta.


Fuente:

elcajondeardu.blogspot.com.es
panamahitek.com
opiron.com