Arduino

Librerias en Arduino – Como y por donde

2

Arduino Llegara un momento en que al usar Arduino tengamos que echar mano a las famosas librerias, esos pedazos de software que programaron unos super geeks y nos permiten a los mortales usar facilmente hardware especializado.

Digamos que queremos usar un control infrarrojo, ya sea que tenemos la súper idea de controlar nuestra tele con el Arduino o que queremos manejar la cámara, todo es valido para usar un aparato de 40 usd (el Arduino) hecho por nosotros en vez de usar un control infrarrojo de 5 usd para la cámara; no importa el que lo hayamos fabricado y programado es mas importante, o no?

Pues si usamos una Mac para correr el buen Arduino IDE 1 la cosa se complica un poco, no tenemos esa carpeta fea llena de carpetas como los de Windows, así que donde ponemos nuestra librería?

Hay 2 opciones, podemos abrir el Arduino.app y copiar la librería en el folder libraries, para eso vamos a Aplicaciones y con el botón derecho (o haciendo control + clic) y seleccionamos Mostrar contenido del paquete

Arduino Libraries

O bien un método menos laborioso, vamos al folder donde tengamos nuestros sketches (usualmente ~/Documents/Arduino/ ) y creamos un folder llamado libraries ahí copiamos la librería, nada difícil.

Ya que tenemos nuestra librería viene otro pequeño problema: Si usamos la versión 1 del Arduino IDE, al tratar de compilar el sketch nos sale error, que no puede encontrar el WProgram.h

Free Image Hosting at www.ImageShack.us

Y es que a los del Arduino team les dio por cambiar algunas cosas para el lanzamiento de la versión 1 del IDE, entre ellas renombrar la librería WProgram.h a Arduino.h

La solución es obvia, vamos a abrir el archivo .h de nuestra librería, buscamos WProgram.h y lo sustituimos por Arduino.h y listo.

Un post muy sin chiste, pero siempre es bueno tener este tip a mano

Proyecto de Ocio – LM35 otro sensor de temperatura

2

En un post anterior hablaba del Dallas DS18B20 un sensor de temperatura que podemos usar con Arduino, pues ahora me acaba de llegar mi nuevo National LM35 DZ, un sensor muy parecido pero mucho mas simple de usar, sin protocolos ni nada, simplemente conectamos un pin a la entrada análoga del Arduino y listo estamos leyendo temperatura en grados centígrados.

En mi gran elefante blanco aka LED Headlight necesitaba algo para controlar la temperatura de mi pila LiPo (viendo vídeos de como explotan estas pilas ni loco las uso sin triple precaución). Asi que el LM35 me viene genial, no usa una entrada digital (que empieza a ser un factor en mi proyecto).

Pero veamos como funciona.

Los 3 pins del LM35 son muy simples: tierra, voltaje de entrada y voltaje de salida, justo como esta gráfica.

Free Image Hosting at www.ImageShack.us

Para conectarlo al Arduino pues solo necesitamos una entrada análoga y alimentarlo con unos 5v.

Free Image Hosting at www.ImageShack.us

El código no podía ser mas simple, solo damos de alta los pines, leemos la entrada análoga y listo.


// 

float temp;
int tempPin = A0;

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

}

void loop()

{
temp = analogRead(tempPin);
temp = (5.0 * temp * 100.0)/1024.0;  // pasamos de 8 bits a Volts
Serial.println(temp);
delay(1000);                           

}

Bastante mas simple que el Dallas, en cuanto a precisión tendré que hacer un mano a mano

74HC595 shift register para controlar display de 7 elementos

0

74HC595 shift register + arduino

En un post anterior hablaba de como usar 8 puertos del Arduino para controlar un display de 7 elementos, es una manera rápida pero poco practica de controlar estos elementos.

Y es ocupar 8 salidas en el Arduino nos reduce la posibilidad de hacer otras cosas, nos deja 6 salidas libres.

Podemos usar un chip 74HC595 que nos sirve para controlar 8 salidas digitales mediante 3 salidas del Arduino, ademas se puede encadenar, por lo que podemos controlar bastantes salidas y tener libres 11 salidas del Arduino para agregarle cosas.

Antes de seguir, he de aclarar que este post y los demás relacionados son los menos técnicos, los menos formales y son solamente mis descubrimientos (no estudie nada relacionado a la electrónica o programación), pero hay que compartír lo que uno aprende, quizá haya personas como yo que no queremos ser ingenieros en algo para hacer algún aparato útil.

Hay una guía muy interesante aquí sobre como usar un 74HC595 con un Arduino para controlar LEDs, de hecho hay muchos otros tipos de shift register, pero usemos este (y aprovechando que me hice de 25 de estos a un súper precio).

El chip 74HC595 tiene 16 pins, 8 de ellos para controlar mismo numero de salidas, 3 para control 1 salida de datos (para conectar otros 74HC595)

Para conectarlo seguimos la recomendación de la pagina de Arduino

PinConectar a
15, 1-7salidas digitales, leds, display
8, 13GND
9al pin 14 del segundo 74HC595
10, 165V
11Arduino D12
12Arduino D8
14Arduino D11

Y aquí esta la imagen de dos 74HC595 conectados a 2 displays de 7 segmentos, el orden de los pins es sencillo, el pin-disp quedaria: 15-A, 1-B, 2-C, 3-D, 4-Dp, 5-E, 6-F, 7-G

Free Image Hosting at www.ImageShack.us

Hasta aquí todo bien, pero empezamos con los problemas

Mis display son de Anodo común, lo que significa que un segmento se enciende al apagarse un pin del 74HC595, cual es el problema? pues tenemos que cambiar el modo en que enviamos los datos

para desplegar un 0 usando un display de cátodo común enviaríamos un byte 01101111 desde arduino, este encendería esos segmentos y tenemos un lindo 0; pero en uno de ánodo común tendríamos que enviar un byte 10010000 para que deje apagados (y por ende enciendan en el AC)

Ademas, claro, el byte depende de como hayamos hecho la conexión entre display y el 74HC595; así que si elegimos otro orden en los pins pues habrá que cambiar el byte de control. Lo que hace esto en poco standard y no podemos robarnos usar código de otras personas que hayan publicado.

Ya estando en el IDE de Arduino controlar el shift register es de lo mas fácil, muy pocas lineas de programación, ya que hay una instrucción que hace todo el trabajo por nosotros: shiftOut


/* Ejemplo de uso de un display de 7 segmentos ánodo común
 usando un shift register 74HC595

Ivan Capdeville - ivan@darkapple.org

*/

const int latchPin = 8;
const int clockPin = 12;
const int dataPin = 11;

void setup() {

  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  pinMode(clockPin, OUTPUT);

}

void loop() {

  digitalWrite(latchPin,LOW);
  shiftOut(dataPin, clockPin, LSBFIRST, *);  // * caracter del segundo display
  shiftOut(dataPin, clockPin, LSBFIRST, *);  // * caracter del primer display
  digitalWrite(latchPin, HIGH);

el código es simple, declaramos las salidas del arduino que conectamos al 74HC595, las configuramos como salidas digitales y vamos a usar esta secuencia para activar los caracteres


digitalWrite(latchPin,LOW);

cuando el latchPin se apaga el shift register se prepara para recibir nuevos datos


shiftOut(dataPin, clockPin, LSBFIRST, *);

Esta parte es quizá la mas interesante y complicada de dominar al inicio, hay que elegir como va leer el byte de entrada, si de derecha a izquierda (LSBFIRST) o de izquierda a derecha (MSBFIRST) y en que nos afecta esto? pues determina como vamos a confeccionar los caracteres, si usamos MSBFIRST usaremos el byte 10010000 para mostrar un 0, si usamos LSBFIRST usaremos el byte 00001001

ya que elegimos que segmentos vamos a querer, ponemos una linea por cada display (en orden inverso) ponemos esta linea para prender el latchPin y que se genere la instrucción


digitalWrite(latchPin,HIGH);

Afortunadamente para los que no queremos meternos tanto en rollos técnicos, resulta que podemos usar caracteres decimales para mostrar segmentos (aquí viene la rechifla después de leer tanto sobre números binarios)

Podemos usar números del 0 al 255 para controlar los segmentos a desplegar, pero no es tan sencillo como poner un 5 para desplegar un 5, pues no, tienen su representación, así que usamos, por ejemplo, el 14 para desplegar el numero 3 y el 156 para el numero 4. Aquí es donde usar binarios se vuelve mas simple (8 caracteres fijos y un 1 o un 0 para elegir si se muestra o no el segmento, así que todos los segmentos prendidos en un display de ánodo común seria un byte 00000000 (0) todos apagados 11111111 (256))

Esto hace mucho mas fácil el elegir que segmentos se prenderán (o en una matriz de leds lo mismo) se vuelve mas gráfico el elegir, usando números decimales aun no veo una relación o secuencia (quizá la haya pero ya después buscare)

Al final de tanto rollo, mi recomendación es usar LSBFIRST si usamos un display de anodo comun y byte binario, si usamos numeros decimales y el anodo comun hay que usar MSBFIRST y la conversion a decimal del byte

Digito en displayByte binarioDecimal
0100100009
111111001159
20101010042
30111000014
400111001156
50011001076
60001001072
70111100031
8000100008
90011000012
.00010000247

Y sigue el vicio – Arduino con termómetro Dallas DS18B20

0

Este es un post rápido

Mis camaradas del foro Infojardin me preguntaron como diablos se podría usar el Arduino para controlar humedad, temperatura y demás cuestiones en los invernaderos

Asi que aprovechando que llego mi termómetro Dallas DS18B20 (parece un transistor normal pero esta interesante, hasta protocolo de comunicación propietario tiene, el OneWire de Dallas (ahora Maxim)), vamos armando algo para leer temperatura y de acuerdo a un rango emita alguna señal, puede ser activando un ventilador y con eso bajando temperatura en el invernadero, que se yo.

Pero empecemos por lo fácil y sencillo, ponerlo a trabajar y obtener mediciones.

Aquí esta el cableado, muy sencillo pero con un cambio respecto a otros sensores, la lectura no se realiza a través de un puerto análogo, mas bien un puerto digital y la resistencia de 4.7K ohms va del pin 3 al 2.

Free Image Hosting at www.ImageShack.us

El código para iniciarlo esta bastante complejo, trate de usar la librería OneWire para Arduino pero en mi Mac no funciona muy bien, me salen errores al compilar (ademas que según leí en la versión 1 del IDE de Arduino cambiaron nombres de librerías que hacen referencia otras, todo un relajo).

Me encontré este código que no usa la librería, así que ahí le echan un ojo.


#define TEMP_PIN  7 

void OneWireReset(int Pin);
void OneWireOutByte(int Pin, byte d);
byte OneWireInByte(int Pin);

void setup() {
    digitalWrite(TEMP_PIN, LOW);
    pinMode(TEMP_PIN, INPUT);
Serial.begin(9600);

    delay(100);
    Serial.print("temperatura:\n");
}

void loop(){
  int HighByte, LowByte, TReading, SignBit, Tc_100, Whole, Fract;

  OneWireReset(TEMP_PIN);
  OneWireOutByte(TEMP_PIN, 0xcc);
  OneWireOutByte(TEMP_PIN, 0x44);
  OneWireReset(TEMP_PIN);
  OneWireOutByte(TEMP_PIN, 0xcc);
  OneWireOutByte(TEMP_PIN, 0xbe);

  LowByte = OneWireInByte(TEMP_PIN);
  HighByte = OneWireInByte(TEMP_PIN);
  TReading = (HighByte << 8 ) + LowByte;
  SignBit = TReading & 0x8000;  // test most sig bit
  if (SignBit) // negative
  {
    TReading = (TReading ^ 0xffff) + 1; // 2's comp
  }
  Tc_100 = (6 * TReading) + TReading / 4;    // multiply by (100 * 0.0625) or 6.25

  Whole = Tc_100 / 100;  // separate off the whole and fractional portions
  Fract = Tc_100 % 100;

  if (SignBit) // If its negative
  {
     Serial.print("-");
  }
  Serial.print(Whole);
  Serial.print(".");
  if (Fract < 10)
  {
     Serial.print("0");
  }

  Serial.print(Fract);

      Serial.print("\n");
  delay(5000);      // 5 second delay.  Adjust as necessary
}

void OneWireReset(int Pin) // reset.  Should improve to act as a presence pulse
{
     digitalWrite(Pin, LOW);
     pinMode(Pin, OUTPUT); // bring low for 500 us
     delayMicroseconds(500);
     pinMode(Pin, INPUT);
     delayMicroseconds(500);
}

void OneWireOutByte(int Pin, byte d) // output byte d (least sig bit first).
{
   byte n;

   for(n=8; n!=0; n--)
   {
      if ((d & 0x01) == 1)  // test least sig bit
      {
         digitalWrite(Pin, LOW);
         pinMode(Pin, OUTPUT);
         delayMicroseconds(5);
         pinMode(Pin, INPUT);
         delayMicroseconds(60);
      }
      else
      {
         digitalWrite(Pin, LOW);
         pinMode(Pin, OUTPUT);
         delayMicroseconds(60);
         pinMode(Pin, INPUT);
      }

      d=d>>1; // now the next bit is in the least sig bit position.
   }

}

byte OneWireInByte(int Pin) // read byte, least sig byte first
{
    byte d, n, b;

    for (n=0; n<8; n++)
    {
        digitalWrite(Pin, LOW);
        pinMode(Pin, OUTPUT);
        delayMicroseconds(5);
        pinMode(Pin, INPUT);
        delayMicroseconds(5);
        b = digitalRead(Pin);
        delayMicroseconds(50);
        d = (d >> 1) | (b<<7); // shift d to right and insert b in most sig bit position
    }
    return(d);
}

El dia que termine mi headlight quiza inicie un proyecto para controlar cosas de estas, ya sea una pecera o algun invernadero o plantas con riego programado

Proyecto de ocio – LED Headlight – LDR o photodiode ?

0

photoresistor LDR

El otro día me encontré los restos de un flash YN-460 (son tan buenos hasta que truenan), al desarmarlo para quitarle los LEDs SMD para un experimento que tengo en mente para luces (ingenuo que pensé que podía desoldar componentes SMD sin problema) me tope con algo muy interesante, un photodiode, un foto diodo? bueno no conozco el nombre en español, así que espero los insultos comentarios de los entendidos.

Asi que se me ocurrió comparar el funcionamiento de mi LDR (foto resistencia) contra el photodiodo del yn460, el juez? obviamente mi tullido Arduino (tiene malas soldaduras y demás).

Cuales serian los puntos a comparar? rango de sensibilidad, velocidad de captura (refresco?) y algo muy importante, compatibilidad con el headlight que ando armando.

El funcionamiento es radicalmente diferente, como comparar una resistencia con un diodo si funcionan muy diferente; pues simplemente viendo como afectan la respuesta del Arduino con mis LEDs.

Un LDR es una resistencia sensible a la luz, entre menos luz mas resistencia presenta al paso de corriente, si hay mucha luz casi es un circuito abierto (casi).

Un foto diodo es una compuerta de corriente (esa imaginación mía) que dependiendo de sus características deja pasar corriente al otro lado (en este caso dependiendo de la luz recibida)

Claro esto muy a grosso modo, para información mas precisa vayan a san Google.

Nuestro buen Arduino tiene una sensibilidad de 10 bits, lo que es lo mismo a 1024 niveles de entrada análoga (del 0 al 1023) mas que suficientes para armar un bonito rango de aplicaciones (luz de día, luz de tarde, penumbra, amanecer, etc etc).

El LDR (fotoresistencia) no es consistente, cosa que no esta mal ya que la luz no es continua, nuestros ojos se adaptan increíble, pero hay muchas variaciones en la luz; al probar su respuesta con diferentes fuentes de luz, no hubo ningún rango estable, pasaba de 300 a 400 con el mismo tipo de luz, lo que nos obliga a programar con mas cuidado estos umbrales.

El fotodiodo en cambio, parece que toma como referencia la luz que incide sobre el sensor al recibir corriente y de ahí empieza a medir los cambios, así que el nivel 0 en el fotodiodo siempre será la luz ambiente que tengamos al iniciar la aplicación y de ahí pa arriba.

El ganador?

El fotodiodo, parece estar diseñado para fotografía, seleccionamos un umbral (midiendo la luz de un flash externo) y con eso tenemos asegurado su funcionamiento adecuado para activar lo que queramos en nuestro Arduino.

El LDR no es malo, podemos usarlo en otros proyectos y es mucho mas accesible (por mas que he buscado no he encontrado donde vendan foto diodos como el del YN 460)

Arduino – Conectando un display de 7 segmentos

6

7-segment display steren

Hace unos días me compré en Steren un display de 7 segmentos, el vendedor no tenia idea de si era ánodo común o cátodo común y menos el color del led y ya ni hablar de como conectarlo

Asi que hay que dar un poco de luz a los que como yo compran en Steren un display y no saben como conectarlo.

Lo primero, unos diagramas para saber como es el display, dimensiones y demás cosas que son útiles a la hora de hacer circuitos impresos, aquí viene algo muy importante: cada segmento se le asigna una letra y sigue un orden según las manecillas del reloj.

Free Image Hosting at www.ImageShack.us

A pesar de que el display en Steren lo manejan como DA03 (aunque hay DA04 y nunca me supieron decir la diferencia, capaz es el color, capaz me compro uno para averiguar) en internet el modelo lo llaman LD3011A o LD3011B dependiendo si es catado común o ánodo común. (el A es cátodo común y el B es para el ánodo común).

El orden de los pins es importantísimo, el 1 (el que esta junto al punto decimal en el display) es el ánodo común (en el LD3011B) y el pin 6 también, estos los mandamos a corriente a través de una resistencia de 110 ohm (para 5V)

Ya dependiendo si usamos un shift register o un arduino o transistores o lo que queramos va a ser el orden de los pins, siempre respetando las letras (segmentos) y el sentido de manecillas de reloj.

Free Image Hosting at www.ImageShack.us

Listo de cosas técnicas [sic], vamos a conectarlo al Arduino, tomando los puertos digitales del 2 al 9 (siempre que se pueda hay que reservar el 0 y el 1 para tx y rx)

Free Image Hosting at www.ImageShack.us

Y ponemos un poco de código en el IDE, para probar que todas las conexiones están bien, vamos a prender todos los segmentos al mismo tiempo, así que tenemos un código como este

// Prueba de display 7 segmentos DA03 de Steren
// Ivan Capdeville - ivan@darkapple.org

int F = 2;
int G = 3;
int E = 4;
int D = 5;
int Dp = 6;
int C = 7;
int B = 8;
int A = 9;

void setup()
{

  pinMode (F, OUTPUT);
  pinMode (G, OUTPUT);
  pinMode (E, OUTPUT);
  pinMode (D, OUTPUT);
  pinMode (Dp, OUTPUT);
  pinMode (C, OUTPUT);
  pinMode (B, OUTPUT);
  pinMode (A, OUTPUT);

}

void loop()
{
  digitalWrite(F, LOW);
  digitalWrite(G, LOW);
  digitalWrite(E, LOW);
  digitalWrite(D, LOW);
  digitalWrite(Dp, LOW);
  digitalWrite(C, LOW);
  digitalWrite(B, LOW);
  digitalWrite(A, LOW);

}

si todo sale bien, tenemos un 8 y un punto decimal, ya después podemos hacer cosas mas interesantes con los dígitos o incluso letras (siempre que podamos representarlas con 7 segmentos)

Actualizacion

Se me olvido mencionar un detalle importante:

Al ser ánodo común el display tenemos la ventaja de usar menos resistencias (solo 2 para los pin 1 y 6) y a nivel Arduino, vamos a activar el segmento al poner nuestra salida digital como LOW en vez de HIGH, o sea, activamos con LOW y apagamos con HIGH ya que las salidas digitales deben cerrar el circuito proporcionando tierra (ground).

Pase al mismo Steren y ahora si ya entendí la diferencia entre sus display de 7 segmentos

Tienen la descripcion en el codigo:

DA = Display Anodo comun
03 = tamaño del segmento

Asi que hay tamaños 03,04 y 05 (con variaciones en la distribución de los pin)

y hay DA y DC (DC es por catodo comun)

Me compre un DA05 y en ese los pin para el ánodo común son el 3 y el 8

Al final me parece mas como el usar el display con ánodo común (por aquello de simplificar las conexiones con menos resistencias).

Arduino UNO – Primeras impresiones

0

Free Image Hosting at www.ImageShack.us

Por fin llegó el famoso Arduino UNO SMD Edition, me eche 2 semanas esperando el envio vía USPS, las primeras palabras fueron unas que he oído por ahí: umm, pensé que estaría mas grande

Aquí una foto junto a una memoria SD para que se aprecie el tamaño de la caja (y el Arduino es mas pequeño aun)

Arduino UNO SMD

Tenia un sello de hecho en Italia (los Arduinos originales vienen de alla, pero cualquiera puede hacerse su propio arduino), con mucho gusto le pase cuchillo y a abrir la caja, nada espectacular dentro, un folleto dando las gracias por el apoyo y unas calcas (stickers pa los modernos)

Free Image Hosting at www.ImageShack.us

Y bueno ya la placa es bastante simple, la base USB esta mal soldada (chueca y no hacia contacto bien), las bases para los shields también chuecas, espero que los shields no tengan problema en entrar.

Arduino UNO SMD Edition

Según lo que había leído, el pin13 tenia una resistencia con lo que no era necesario ponerle una para probar LEDs (con el programa mas básico de parpadeo de un LED), pues nada, queme un LED a la primera.

Como buen experimentador, ya llevo quemados 2 optoacopladores PC817 (que bueno que compre 10).

Me he pasado unas buenas horas peleando con el IDE y agarrando el truco a Wiring, eso de programar por bloques se me esta atorando (mis clases en la Uni fueron súper sencillas)

Pero a final del día, esta súper sencillo el crear rutinas sencillas, ahora entiendo porque hacen tanto énfasis en que es una plataforma dirigida a artistas y gente sin perfil en electrónica.

Veremos que va saliendo, por lo pronto ya esta tomando forma el programa para controlar mi headlight respondiendo al disparo de mi cámara; ahora a irlo complicando cada vez mas.

Software del dia – Fritzing

0

Fritzing


Nuevo vicio, nuevas herramientas

FritzingEsto del mundo del Arduino esta súper bueno, tantas posibilidades y tan sencillas de hacer, basta con acomodar unos circuitos, darles corriente y a jugar se ha dicho.

Pero una cosa es armar las cosas y otras hacer los diagramas, esas lineas con símbolos que parecen tan imposibles de entender para los no iniciados. Para que queremos diagramas? bueno, primero la documentación de nuestros proyectos y después el compartirlos; no soy de la idea de aprender algo e inmediatamente ponerle signo de $ y esconder toda evidencia de como se realiza para así encarecerlo. El conocimiento se comparte, he dicho.

Pero como compartir algo si no eres un técnico electrónico, ingeniero en electrónica o yerbas similares? que tal que eres un carnicero que quiere montarse un letrerito de LEDs (súper de moda) y tienes la curiosidad de armarlo tu mismo (y no pagar miles de pesos por algo complicado y genérico), que tal que eres un taxista que quiere súper iluminar la unidad LEDs por acá, LEDs por alla, todo un juego increíble de luces pero te pasan cotización de miles de pesos; para unos 500 tristes LEDS y unos chips?. Bueno, te vas a foros y puedes encontrar diseños hechos en un programa llamado Fritzing de una comunidad del mismo nombre dedicada a compartir proyectos electrónicos (y de paso hacer un dinerito haciendo PCB vía el software, nada mal)

Fritzing es un programa multiplataforma (para los no entendidos, significa que sirve en Mac, Linux y esa cosa de las cavernas llamada Windows), la interfaz es realmente amigable, en exceso, tan fácil como arrastrar componentes a una pantalla donde tendremos un Protoboard también llamado Breadboard o varios nombres del estilo; una ventana con iconos de los componentes y sus descripciones, así como un Inspector para modificar las características de dichos componentes

Fritzing Mac

Controlando la intensidad de un LED RGB

Que mejor que poner el ejemplo, así que muy al estilo del genial Bob Ross, comenzamos colocando un Arduino feliz junto a un protoboard feliz, un LED RGB y sus resistencias felices, vamos a colocar los cables de corriente y un potenciometro normal (quiero investigar sobre los encoder pero eso ya será después)

Arduino + Fritzing

Aquí empieza lo interesante, 3 salidas PWM del Arduino vamos a conectarlas a los ánodos del LED RGB, al ser PWM vamos a poder variar la corriente que entregaremos a cada ánodo (con eso el LED varia la intensidad de color), el potenciometro será nuestro dispositivo de entrada, con él variamos la intensidad, así que la salida del potenciometro va a una de las entradas análogas del Arduino.

Free Image Hosting at www.ImageShack.us

Y así se ve al final, claro que mis cableados son un asco, pero era cosa de demostrar las posibilidades de Fritzing, aun faltaría la parte de la programación usando Wiring para Arduino, pero esa parte ya vendrá en un post dedicado al Arduino (y claro cuando llegue mi Arduino UNO SMD

Y que paso con los diagramas esquemáticos de nuestro proyecto? bueno, con fritzing solo oprimimos un botón y estamos en la vista de diagrama, acomodamos los símbolos, corregimos las conexiones y ya tenemos un bonito diagrama para sentirnos todos unos expertos en electrónica.

Free Image Hosting at www.ImageShack.us

Y aun hay mas, Fritzing puede crear el diseño de los circuitos impresos (PCB), darnos la posibilidad de imprimirlos para hacerlos nosotros mismos (mi próxima quemadura con químicos será cortesía de estos químicos para tabletas) con este diseño ya tenemos un Shield que podemos montar encima de nuestro Arduino UNO (y arduino con nombre de años anteriores en italiano, no lo escribo porque me arde y que?)

Free Image Hosting at www.ImageShack.us

Hay otras herramientas, no se si mejores o peores, como la famosa Eagle de CADSoft, que esta muy interesante, pero le falta ese toque informal que a esta le sobra.

Proyecto de Ocio – Optoacopladores para disparar flash

2

Samsung PC817

Una de las principales precauciones que hay que tener al disparar un flash, es la increíble cantidad de voltaje que maneja (vía un capacitor enorme para prender la lampara con buena intensidad), parte de ese voltaje se mueve en la zapata de disparo, he leído que en ciertos momentos se manejan hasta 270V en las terminales del Flash (en mi YN640 seguro maneja 27V es bien chafa)

Y como hace tiempo ya quemé un intento de disparador (incluido un flash que se quemó solidariamente), he buscado la forma de aíslar del voltaje del Flash al Arduino y la cámara.

Estudie Electronica en la secundaria (lastima que no seguí ese camino) así que mis conocimientos son de lo mas básico, seguro esto es lo mas básico del manual para muchos, pero para mi fue un gran descubrimiento, los optoacopladores.

Un optoacoplador es a groso modo un switch, pero sin contacto físico entre las partes; consta de 2 partes, un emisor de luz y un sensor, al percibir luz el sensor cierra el circuito, sin contacto con el emisor o la corriente del emisor.

Esto es sumamente útil para aislar voltajes, cargas, corrientes, como quieran llamarle en circuitos

Me hice de unos cuantos optoacopladores PC817, sumamente sencillos, con 4 patas es de lo mas fácil usarlos, armamos una corriente del lado del emisor y del otro lado el circuito que queremos cerrar

Aquí esta la imagen del optoacoplador sacada de su datasheet

Sharp PC817

Y bueno a probar el funcionamiento, usando un Breadboard y un LED (con sus respectivas resistencias) vamos a hacer que cuando oprimamos el botón, el LED se prenda

DIY

Bastante simple el diagrama, pero se puede apreciar perfecto el funcionamiento del optoacoplador PC817, aunque en este ejemplo al final comparten voltaje (porque solo tengo una fuente de alimentación para ambos lados del PC817), pero haciendo algo mas complejo, podemos hacer lo siguiente usando Arduino

Arduino + PC817

En este ejemplo usamos una fotoresistencia (varia su resistencia dependiendo de la intensidad de la luz que recibe) la cual medirá los cambios de luz (si prendemos un foco, si activamos el foco del AF de la cámara, si usamos un disparador IR, etc) y dependiendo de como hayamos programado el Arduino va a emitir una respuesta vía un puerto digital que estará conectado al PC817.

Al recibir la señal esperada, el Arduino va a activar el Pin5 con lo que el PC817 emitirá señal y del otro lado el flash va a dispararse.

Esto del Hardware libre es súper interesante, he encontrado muchos ejemplos e ideas muy interesantes para completar mi súper proyecto: la fuente de luz Todo en uno, Que sirva de luz de modelado, de Beauty Dish, de Flash, de sincronizador para fotos de alta velocidad (usando láser, IR y sonido), de ser un slave, vamos a ver como va evolucionando el proyecto.

Los diagramas están hechos usando un programa libre llamado Fritzing (multiplataforma) es genial, ya haré un post al respecto (después del dolor de cabeza que implica usar el Eagle)

Go to Top