Sunday, May 31, 2015

OCTOPUS TA17-03 Sensor de corriente AC + Arduino


Control de modulo de sensor de corriente AC a traves de arduino.
Modulo OCTOPUS TA17-03 Link oficial
La conexion es:
Pin G del modulo sensor a Pin GND de arduino
Pin V del modulo sensor a Pin 5V de arduino
Pin S del modulo sensor a Pin A0 de arduino

Codigo para arduino de ejemplo:

int Pin = A0;    
int lecturas=250;
unsigned long  media=0;
int val=0;
int maximo;
int minimo;
float valor=0.0;

void setup()
{
 Serial.begin(9600);          //  Inicializaci√≥n del modulo Serial.
}

void loop()
{
minimo=100;
maximo=media=0;
 for (int x=1;x<lecturas;x++)
 {
   val=analogRead(Pin);
   if (val>maximo) {maximo=val;}
   if (val<minimo) {minimo=val;}
   media=media+val;
 
 }
 media=media/lecturas;
 valor=map(media,0,1023,0,2000)/100.0;
 Serial.print("Lectura analogica : ");
 Serial.print(media);
 Serial.print("   -->  ");
 Serial.print(valor);
 Serial.print(" A  ");

 valor=map(minimo,0,1023,0,2000)/100.0;
 Serial.print(" minima : ");
 Serial.print(minimo);
 Serial.print("   -->  ");
 Serial.print(valor);
 Serial.print(" A  ");

 valor=map(maximo,0,1023,0,2000)/100.0;
 Serial.print(" maxima : ");
 Serial.print(maximo);
 Serial.print("   -->  ");
 Serial.print(valor);
 Serial.println(" A  ");
 delay(10);
}

Conectamos una estufa con tres posiciones para probar y en la primera posicion obtenemos 4.45 Amperios.
En la segunda posicion obtenemos 6.30 Amperios de media
Y a maxima potencia obtenemos 10.49 Amperios de media.
Es necesario mejorar el programa y incluir una rutina de calibracion del sensor asi como verificar que la entrada analogica A0 esta dentro de los valores maximos permitidos por arduino.
Post en construccion.
Continuara...

Interfaz Display 7 segmentos Maxim MAX7219 + Arduino


Que pasa cuando queremos controlar 128 leds con nuestro pequenyo arduino?
Pues que se echan a llorar nuestros escasos pines de salida.
Por un dolar y medio tenemos el integrado MAX7219 Interfaz Serie, 8-Digitos, Driver Display LED.
Enlace al Datasheet
Tenemos un par de modulos que vienen con el chip y dos displays de 7 segmentos y 8 digitos cada modulo.
Cada integrado puede controlar 64 leds.
Podemos encadenar mas integrados y ampliar el numero de salidas a controlar utilizando solamente 3 pines de arduino.
Ejemplo de codigo de arduino para controlar 2 displays:

#include "LedControl.h"
LedControl lc=LedControl(12,11,10,2);
/*
 pin 5V is connected to the VCC
 pin GND is connected to the GND
 pin 12 is connected to the DataIn
 pin 11 is connected to the CLocK
 pin 10 is connected to ChipSelect (LOAD)
 We have two MAX72XX.
 */

char cadena[16];

void setup() {

  // Display 0 inicializacion
  lc.shutdown(0,false); // The MAX72XX is in power-saving mode on startup, we have to do a wakeup call
  lc.setIntensity(0,1); // Set the brightness to a medium values
  lc.clearDisplay(0);   // and clear the display
  // Display 1 inicializacion
  lc.shutdown(1,false); // The MAX72XX is in power-saving mode on startup, we have to do a wakeup call
  lc.setIntensity(1,1); // Set the brightness to a medium values
  lc.clearDisplay(1);   // and clear the display

  for(int i=0; i<16; i++){ // Llena la cadena con numeros del 0 al 7
    cadena[i]=i;
 }
}

void loop() {
 
 delay(1000);
 for(int i=0; i<8; i++){ // Muestra en el primer display
        cadena[i]=cadena[i]+1; // Va aumentando de valor
        lc.setChar(0,i,cadena[i],false);  // Muestra ese caracter
 }
 for(int i=8; i<16; i++){ //Muestra en el segundo display
        cadena[i]=cadena[i]+1; // Va aumentando de valor
        lc.setChar(1,i-8,cadena[i],false); // Muestra ese caracter
 }
}

Descargar Ejemplo
Descargar Libreria  (Necesaria para compilar el programa)

Para importar la libreria en arduino clickar en la pestanya "Sketch" --> "Import Library" --> "Add Library"
Una vez importada la libreria, se habran instalado los programas de ejemplo oficiales.

Teclado membrana 4x5 arduino


Teclado matriz de cuatro columnas y cinco filas,facil conexion con arduino:
Columnas:
  Pin 1 del keyboard a pin 9 de arduino
  Pin 2 del keyboard a pin 8 de arduino
  Pin 3 del keyboard a pin 7 de arduino
  Pin 4 del keyboard a pin 6 de arduino
Filas:
  Pin 5 del keyboard a pin 14 de arduino  (pin A0)
  Pin 6 del keyboard a pin 2 de arduino
  Pin 7 del keyboard a pin 3 de arduino
  Pin 8 del keyboard a pin 4 de arduino
  Pin 9 del keyboard a pin 5 de arduino
   *foto del pinout

Codigo de ejemplo que envia por el puerto serie de arduino la tecla pulsada en el teclado:

#include <Keypad.h>
const byte FILAS = 5; // Cinco filas
const byte COLS = 4; // Cuatro columnas
char keys[FILAS][COLS] = {
  {'A','B','#','*'},
  {'1','2','3','U'},
  {'4','5','6','D'},
  {'7','8','9','E'},
  {'L','0','R','E'}
};
byte filasPins[FILAS] = {5, 4, 3, 2, 14}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {9, 8, 7, 6}; //connect to the column pinouts of the keypad
/*Pin 1 del keyboard a pin 9 de arduino  Ver foto adjunta del pinout
  Pin 2 del keyboard a pin 8 de arduino
  Pin 3 del keyboard a pin 7 de arduino
  Pin 4 del keyboard a pin 6 de arduino
  Pin 5 del keyboard a pin 14 de arduino A0
  Pin 6 del keyboard a pin 2 de arduino
  Pin 7 del keyboard a pin 3 de arduino
  Pin 8 del keyboard a pin 4 de arduino
  Pin 9 del keyboard a pin 5 de arduino
*/
Keypad keypad = Keypad( makeKeymap(keys), filasPins, colPins, FILAS, COLS );

void setup() {
  Serial.begin(9600);
}

void loop() {
   char key = keypad.getKey(); // llamada a la funcion q lee un caracter del teclado
   if (key){   // Si a leido algo del teclado ejecuta el codigo
      Serial.print("Tecla:  ");
      Serial.println(key);
      delay(500);
  }
}

Download code for arduino
Libreria necesaria para utilizar el codigo en arduino

Para importar la libreria en arduino clickar en la pestanya "Sketch" --> "Import Library" --> "Add Library"
Una vez importada la libreria, se habran instalado los programas de ejemplo oficiales.