jueves, 7 de enero de 2016

HALL A3144

¿QUÉ ES UN SENSOR HALL?

Un sensor Hall es un dispositivo que nos permite realizar mediciones de campo magnético.
Los sensores Hall son ampliamente utilizados. Por ejemplo, en la industria del automóvil se usan para funciones tan dispares como para el accionamiento de los cinturones de seguridad, o la medición de la posición del árbol de levas. También se usan para medir velocidades de fluidos, detección de metales, factores de inducción, entre otras muchas aplicaciones.
Una ventaja importante de los sensores Hall es que realizan la medición a distancia, sin necesidad de contacto físico. Aunque su alcance es limitado (típicamente pocos centímetros) esto supone que apenas presentan desgaste mecánico. Además son inmunes a ruidos y polvo. Esto los convierte en sensores fiables y duraderos.
En general, encontramos dos tipos de sensores Hall:
  • Analógicos. Generan una salida proporcional a la intensidad del campo magnético. Empleados para medir la intensidad de un campo magnético
  • Digitales. Proporcionan un valor Alto en presencia de campo magnético, y bajo en ausencia del mismo. Por tanto, son empleados para detectar la existencia de campos magnéticos. A su vez se dividen en,
    • Switch, se activan al acercar el polo, y se desactivan al retirar el polo
    • Latch, se activan al acercar un polo, y mantienen su valor hasta que se acerca un polo contrario
En esta entrada emplearemos un sensor Hall A3144, de tipo digital Switch. Podemos emplear este sensor para detectar la presencia de un objeto, al que previamente habremos colocado un pequeño imán, o para fabricar tacómetros (contadores de revoluciones) simplemente acoplando un pequeño imán de neodimio al eje.

PRECIO

Los sensores Hall A3144 son realmente baratos. Podemos encontrar 10 dispositivos A3144 por 1€ en vendedores internacionales en Ebay o Aliexpress.

int HALLPin = 5;
int LEDPin = 13;
 
void setup() {
  pinMode(LEDPin, OUTPUT);
  pinMode(HALLPin, INPUT);
}
 
void loop() {
  if(digitalRead(HALLPin)==HIGH)
  {
    digitalWrite(LEDPin, HIGH);  
  }
  else
  {
    digitalWrite(LEDPin, LOW);
  }
}

DIODO LASER

Características Importantes


  • Potencia de salida: 2-5mW
  • Longitud de onda: 650nm
  • voltaje de funcionamiento: 3v-5v
  • Corriente de funcionamiento: menos de 40 ma
  • forma de láser: dot
  • temperatura de trabajo: -10 ℃ ~ +40 ℃
  • vivienda: cobre
  • dimensiones: 6,5 x 18 mm
  • Especificaciones

    TipoAccesorios
    Usado ParaUniversal
    Función de los AccesoriosComponente
    Dimensiones (cm)1.5 x 0.5 x 0.5
    Peso neto (kg)0.002




Joystick PS2

Especificaciones

TipoMódulo
Usado ParaUniversal
Función del MóduloJoytick
ModeloKY-023
Dimensiones (cm)3 x 3.5 x 2.5
Peso neto (kg)0.016

PROGRAMA
int ledPin = 12;
 int joyPin1 = 0;               
 int joyPin2 = 1;               
 int value1 = 0;                  
 int value2 = 0;                 

 void setup() {
  pinMode(ledPin, OUTPUT);   
  Serial.begin(9600);
 }

 int treatValue(int data) {
  return (data * 9 / 1024) + 48;
 }

 void loop() {
  value1 = analogRead(joyPin1);   
  delay(100);             
  value2 = analogRead(joyPin2);   

  digitalWrite(ledPin, HIGH);           
  delay(value1);
  digitalWrite(ledPin, LOW);
  delay(value2);
  Serial.print('J');
  Serial.print(treatValue(value1));
  Serial.println(treatValue(value2));
 }
Módulo Joystick Playstation2

SENSOR ULTRASONIDOS HC-SR04 ARDUINO

Fabricante: Elecfreaks
Vendedor: Cetronics y Leantec
Información del sensor: AQUÍ
Especificaciones:
Sensor de distancia por ultrasonidos ideal para uso con Arduino y otros microcontroladores.Este sensor nos permite saber la distancia a la que se encuentra un objeto midiendo el tiempo que tarda la onda de ultrasonidos en ir y volver al sensor.

Especificaciones
- Tensión de operación: 5V cc
- Intensidad de corriente: < 2mA.
- Angulo de Detección: < 15º
- Distancia de Detección: 2cm~450cm.
- Precisión: Hasta 3mm


Fórmula para medir la distancia

Distancia = {(Tiempo entre Trig y el Echo) * (V.Sonido 340 m/s)}/2
 --------------------------------------------------------------------------
Pines: (Mirando la cara con los "ojos")

- Pin 1: Vcc
- Pin 2: Trig (Disparo)
- Pin 3: Echo (Recepción)
- Pin 4: GND

Pasos a seguir:
  1. Instalar librería en IDE arduino (carpeta comprimida en formato zip): Menú Sketch > Importar libería > Add library (Seleccionarla en la carpeta arduino de mis documentos).
  2. Conectar
Pin 9 con pin TRIG
Pin 8 con pin ECHO
Pin Vcc con +5v
Pin Gnd con Gnd
Ejemplo 1: Medidor distancias a través del puerto serie: 
#include <Ultrasonic.h>

Ultrasonic ultrasonic(9,8); // (Trig PIN,Echo PIN)
int distancia = 0;
void setup()
{
Serial.begin(9600);
}

void loop()
{
distancia = ultrasonic.Ranging(CM);
Serial.print(distancia);
Serial.println(" cm" );
delay(100);
}

Sensor Acelerometro MMA7361

Este sensor (MMA7361) es un acelerómetro analógico de 3 ejes (x,y,z). El nivel de las medidas del acelerómetro, nos permite medir la aceleración, o la inclinación de una  plataforma con respecto al eje terrestre. Otras características que tiene  son el modo sleep, acondicionamiento de señal, filtro pasa bajas de 1 polo, compensación de temperatura, auto prueba, y detección de 0g para caída libre. Este sensor funciona con alimentaciones entre 2.2 y 3.6VDC (3.3V es el valor óptimo), y consume solamente 400µA de corriente.

Especificaciones del sensor MMA7361:
  • – Bajo consumo de corriente: 400 μA.
  • – Modo de espera: 3 μA.
  • – Bajo Voltaje de la operación: 2,2 V – 3,6 V.
  • – Alta sensibilidad (800 mV / g@1.5g).
  • – Sensibilidad seleccionable (± 1,5 g, ± 6 g).
  • – Encendido Rápido Tiempo de calentamiento (0.5 ms Tiempo de Respuesta Activa).
  • – 0g-Detect para la Protección de la caída libre.
  • – Acondicionamiento de señales con filtro de paso bajo.
  • – Diseño robusto, alto Shocks supervivencia
 Explicación del programa:
Este circuito es capaz de funcionar con 5V, sin embargo internamente funciona con 3.3V lo cual utilizaremos como referencia para el convertidor Análogo->Digital. Esto nos permitirá tener mayor precisión a la hora de leer.

#include <math.h>
void setup() {
  analogReference(EXTERNAL);
  Serial.begin(9600);
}
Definimos algunas variables para almacenar los valores de los componentes de las fuerzas en cada uno de los ejes del acelerómetro.


int xVal = 0;
int yVal = 0;
int zVal = 0;
Un par de variables de tipo flotante doble van a almacenar el ángulo en el que se encuentra el acelerómetro.


double angleYZ = 0;
double angleXZ = 0;
Vamos a utilizar el puerto serial para escribir los valores.
Luego, en el loop principal tenemos que leer los valores análogos y hacer un pequeño ajuste utilizando la función map(). El problema es que el convertidor análogo-digital tiene un rango que va desde 0 a 1023, si utilizáramos la función arco tangente utilizando estos valores nos mentiría ya que los componentes de la fuerza solo tendrían valores positivos y por lo tanto valores erróneos.
Para corregir este problema utilizamos la función “map()” que nos permitirá que nuestro rango varíe entre valores positivos y negativos como se muestra en la siguiente tabla:

Fuerza GVoltaje salidaArduino analogRead()Luego de map()
1.5~3.3V~1023~500
…………
0~1.6V~511~0
…………
1.5~0V~0~-500


void loop() {
Como pueden ver en el código lo primero que hacemos es leer los valores que se encuentran en las entradas análogas


xVal = analogRead(0);
yVal = analogRead(1);
zVal = analogRead(2);
Luego utilizamos la función map para generar un rango más adecuado para los valores de entrada.


xVal = map(xVal, 0, 1023, -500, 500);
yVal = map(yVal, 0, 1023, -500, 500);
zVal = map(zVal, 0, 1023, -500, 500);
Por último aplicamos las sencillas funciones trigonométricas para calcular el ángulo correspondiente.


angleYZ = atan((double)yVal / (double)zVal);
angleYZ = angleYZ*(57.2958);
angleXZ = atan((double)xVal / (double)zVal);
angleXZ = angleXZ*(57.2958);
Una vez calculados los ángulos simplemente los imprimimos en el puerto serial para poder leerlos desde la computadora.