lunes, 16 de enero de 2012

Usar la señal de reloj del DS1307

Hola querido lector,

esta entrada es pequeña, prometido.

Como sabrás, el integrado DS1307 es un reloj RTC (Real Time Clock) muy popular entre la comunidad arduino, dada la facilidad de manejo y el amplio soporte, y cuando digo amplio, es AMPLIO, porque hay librerías a carretadas, pero en todas echo algo en falta: poder usar la señal de reloj.
Si te has leído el datasheet del DS1307, sabrás que puede generar una onda cuadrada con un pulso de duración determinada (para más detalles mira la página 5).
En concreto, me voy a centrar en el pulso de 1hz: 1 segundo.
¿Por qué? Porque muchas veces hace falta un contador preciso.
El caso más común es implementar un reloj usando arduino, y cuando digo arduino, digo cualquier otro microcontrolador.
La gracia de usar este pulso de reloj es la estabilidad del mismo, asi como manejarlo en otra clase de circuitos digitales, sin necesidad de utilizar un microcontrolador.

Activar la señal de reloj es muy fácil desde arduino con este código:

Wire.beginTransmission(B1101000);
  Wire.write((byte)0x07);
  Wire.write((byte)B10010000);
Wire.endTransmission();


Sólo hace falta ejecutarlo una vez, salvo que se retire la pila de botón y se pierda toda la configuración, en cuyo caso, hay que volver a ejecutar el código.
¿Manejo? Fácil: el pin 7 del DS1307 tiene la salida de la señal.
En arduino, puedes conectarlo al pin 2 o 3 (interrupción 0 y 1 respectivamente), para manejarlo con una interrupción.
No voy a entrar en muchos detalles, porque está bien documentado, pero un código de ejemplo sería algo asi:


bool pulso_reloj;
void recibe_pulso() {
  // El código a ejecutar en una interrupción debe ser mínimo
  pulso_reloj = true;
}
void setup() {
  Serial.begin(9600);
  pulso_reloj = false;
  attachInterrupt(0, recibe_pulso, RISING);
}

void loop() {
  if (pulso_reloj) {

    Serial.println("Pulso de reloj");
    pulso_reloj = false;
  }
}

Espero que te resulte útil.
¡Hasta la próxima!

martes, 3 de enero de 2012

Intervalómetro DIY - Prototipo

Hola querido lector,

prometo ser breve en este post, lo justo para comentarte que el primer prototipo está montado, a falta de solucionar el enganche del sensor infrarrojo en la cámara.
Te pido que no seas muy duro con las críticas, porque esta es la primera placa que monto, y no está tan depurada como podría, pero funciona, y bien, ahí es nada.
He procurado cuidar tanto como ha sido posible el consumo, dado que es un dispositivo a usar durante varias horas a lo largo de la noche.
Recuerda que hablamos de componentes que trabajan a 5V, luego implica tener una fuente de alimentación acorde.
En mi caso, decidí usar un portapilas con elevador de tensión incorporado, con resultados francamente buenos.
Relativo al consumo, como decía, intenté cuidarlo al máximo, tanto como permiten los componentes usados:

49mA con retroiluminación
10.7 mA sin retroiluminación

Cuando hablo de retroiluminación, me refiero al display LCD, para lo cual puse un interruptor, de modo que se pueda encender y apagar, para reducir el consumo mientras discurra la cuenta atrás.
Insisto en lo comentado anteriormente: es la primera placa que armo, y por tanto, se pueden mejorar mil aspectos, como desconectar la retroiluminación automaticamente al comenzar la cuenta atrás, y un largo etc, pero de momento quiero centrarme en tener un aparato funcional.
Recuerda, querido lector, que el código fuente, y los esquemas, están disponibles en github:

https://github.com/cbolanos79/Nikon-Intervalometer

El fichero placa_topos.fz tiene el esquema y los componentes en formato Fritzing (te recomiendo descargar la última versión).

¡Hasta la próxima!