Concurso de fotografía AM

Temática: «Una panorámica de tu acuario».
Ya esta abierto el plazo para presentar fotografías.

Más info
image01

¿Aún no conoces AMA?

Hazte socio de Acuariofilia Madrid Asociación.
CERRADO EL PLAZO DE INSCRIPCIÓN

Más info
image01

Atlas de peces de AM

¡Hemos alcanzado las 800 fichas! Visita nuestro atlas de peces actualizado.

Más info
image01

Cardúmenes y sociabilidad

Nueva actualización de la tabla con una extensa relación de peces, donde podrás conocer qué entorno necesita cada especie, su sociabilidad y si convive o no en cardumen. ¡Pasa a descubrirla!

Mas info
image01
Diseño de un programador básico de acuario con arduino
Respuestas: 434    Visitas: 102607
#391
mecaguentoloquesemenea y en los ratonescoloraos -nosweat.gif-nosweat.gif-nosweat.gif-nosweat.gif

bueno el rato que pase montandolo y maldiciendo no tiene precio Big Grin

me lo apunto que esta muy cuco
#392
También los hay de 4 canales.

Falta la resistencia entre el pin del arduino y el gate del mosfet
#393
No incluye resistencia y hay varias consideraciones a la hora de usarlas o no para polarizar el MOSFET. Es probable que un solo transistor MOSFET funcione perfectamente en la mayoría de los casos, pero si alguien desea optimizar su uso, recomiendo leer lo siguiente:
COMO CONECTAR UN MOSFET DE POTENCIA A UN MICROCONTROLADOR
#394
Yo tengo alguno y quería probarlo, aunque idealmente se deben usar IRL he leído experiencias con IRF que van bien, así que habrá que probar.

También imagino que dependerá de la corriente que le demandes, lo mismo si vas a corrientes muy grandes resulta que el MOSFET no estaba saturado, pero eso ya no puedo probarlo fácilmente de momento.
#395
(31-05-2016, 06:54 PM)Dudo escribió: Yo tengo alguno y quería probarlo, aunque idealmente se deben usar IRL he leído experiencias con IRF que van bien, así que habrá que probar.

También imagino que dependerá de la corriente que le demandes, lo mismo si vas a corrientes muy grandes resulta que el MOSFET no estaba saturado, pero eso ya no puedo probarlo fácilmente de momento.

Lo explica en la página que he puesto, incluso pone una gráfica con las dos curvas. Los mosfets IRL conocidos con el nombre de "logic level power mosfet" son capaces de trabajar con tensiones de Gate más baja que los IRF. Para un Arduino a 3.3v el IRF ni siquiera funcionaría.
#396 Smile 
Hola, no sé si es de interés que escriba en este post, por el tiempo que ha pasado inactivo, pero lo he estado leyendo y me ha resultado muy interesante de cara al proyecto que estoy elaborando.
Por eso en principio trataré de ser lo más breve posible, aunque es un proyecto bastante ambicioso, por lo menos para mí ahora mismo que soy poco más que un principiante en estos temas de electrónica Big GrinConfused

Tengo un acuario de 500 litros, es fundamentalmente un acuario plantado, el tema es que está casi totalmente automatizado en base a relojes programadores.
En resumen:
Circuito A:A las 10 de la mañana se encienden las luces, leds de alta potencia controlados por un cacharrito electrónico (TC420) que hace el efecto amanecer - anochecer. Son dos circuitos, uno de leds blancos y otro de colores.
Circuito B: A esa misma hora se enciende una fuente de alimentación que controla un termostato electrónico y cuatro ventiladores de PC. que mantienen la temperatura de los leds por debajo de 40 grados.
Circuito C: De 10 a 20 hs se enciende un solenoide que abre la válvula de la bombona de CO2.
Circuito D: Cada 6 horas se enciende una electro válvula (5 minutos) que permite la entrada de unos 25 a 30 litros de agua filtrada al acuario. El acuario lleva un rebosadero que mantiene siempre el mismo nivel. Ese mismo reloj programador enciende un agitador magnético casero que agita el fertilizante contenido en un "Tuper" de 2 litros.
Circuito E: Inmediatamente después de entrar el agua de recambio se enciende una pequeña bomba peristáltica (también un brico propio) que administra el fertilizante, también cuatro veces al día.
Circuito F: Dos veces al día se enciende una lámpara UV germicida.
Circuito G: A las 10 de la noche se enciende una tira de leds azules para hacer el efecto luz de luna.
Circuito H: Termostato que enciende un cable calentador instalado por debajo del suelo y que lo mantiene un par de grados por encima de la temperatura del agua.

Bueno, les pongo el programita que he hecho en Arduino, lo he probado y funciona todo (ahora mismo son 7 circuitos). Todavía no he escrito tres circuitos para tomar la temperatura del suelo, la temperatura del agua y la de los leds de alta potencia, además de algunas otras cosas que se me irán ocurriendo pues esto del Arduino da para mucho Big Grin

El hardware es un Arduino Mega, un reloj DS3231 y 8 relés:

Código:
#include <DS3231.h>
#include <Wire.h>

DS3231 Clock;

byte year, month, date, DoW, hour, minute, second;

void setup() {
  // Se inicial la interfaz I2c
  Wire.begin();
  // Se inicia la Comunicación Serial
  pinMode(7,OUTPUT);
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(11,OUTPUT);
  pinMode(12,OUTPUT);
  pinMode(13,OUTPUT);
  Serial.begin(9600);
}

void loop() {
  delay(500);
  //Se rescata la información
  Clock.getTime(year, month, date, DoW, hour, minute, second);
  //Se muestra solo hora, minutos y segundos:
  Serial.print(hour, DEC);
  Serial.print(":");
if (minute<10)
  Serial.print(0);              // agrega un cero para el formato de minutos de 2 dígitos
  Serial.print(minute, DEC);
  Serial.print(":");
if (second<10)
  Serial.print(0);              // agrega un cero para el formato de segundos de 2 dígitos
  Serial.println(second, DEC);
  
  /* Relay que enciende el circuito de Leds de 3 watts de colores cuatro veces al día
  * durante media hora a las 12:00, 13:00, 14:00 y 15:00 Hs. Funciona con el pin 7*/
  {
if ((hour==12||hour==13||hour==14||hour==15) && (minute<30))
      {digitalWrite(7, HIGH);  
      Serial.println("PIN-7-ON----> Leds de 3 Watts de Colores (12/13/14/15 Hs durante 30 min)");}
      else
      {digitalWrite(7, LOW);  
      Serial.println("PIN-7-OFF---> Leds de 3 Watts de Colores (12/13/14/15 Hs durante 30 min)");}
  }
   /* Relay que enciende la Fuente de Alimentación de 12 voltios y 30 Amperios de
   * la iluminación de Leds del Acuario durante 12 horas desde las 10 de la mañana
   * hasta las 10 de la noche. Está conectado al pin 8*/
  {
if (hour>=10 && hour<22)
  {digitalWrite(8, HIGH);  
   Serial.println("PIN-8-ON----> Fuente de 12 voltios Leds con efecto Amanecer-Anochecer (de 10 a 22 Hs)");}
  else
  {digitalWrite(8, LOW);  
   Serial.println("PIN-8-OFF---> Fuente de 12 voltios Leds con efecto Amanecer-Anochecer (de 10 a 22 Hs)");}
  }
   /*Relay que enciende el Solenoide de CO2 durante 10 horas, desde las 10 de la mañana
    * hasta las 8 de la noche, funciona con el pin 9*/
if (hour>=10 && hour<20)
     {digitalWrite(9, HIGH);  
      Serial.println("PIN-9-ON----> Solenoide de CO2 (de 10 a 20 Hs)");}
      else
      {digitalWrite(9, LOW);  
      Serial.println("PIN-9-OFF---> Solenoide de CO2 (de 10 a 20 Hs)");}
    /*Relay que enciende la Electrobomba y un agitador de líquidos (depósito del
     *antialgas) durante 5 minutos cuatro veces al día:
     *A las 12 de la noche, las 6 de la mañana, las 12 del mediodía y las 6 de la
     *tarde. Está conectado al pin 10*/
  {
if ((hour==0|hour==6||hour==12||hour==18) && (minute<5))
     {digitalWrite(10, HIGH);  
     Serial.println("PIN-10-ON----> Electrobomba de Agua y Agitador (00/06/12/18 Hs durante 5 min)");}
     else
     {digitalWrite(10, LOW);  
     Serial.println("PIN-10-OFF---> Electrobomba de Agua y Agitador (00/06/12/18 Hs durante 5 min)");}
  }
   /*Relay que enciende las bombas de administración de fertilizante y antialgas  
      * durante 15 segundos cuatro veces al día, exactamente en el momento en que el
      * Relay de la Electrobomba se apaga, Se activa con el pin 11*/
    {
if ((hour==0||hour==6||hour==12||hour==18) && (minute==5) && (second<15))
    {digitalWrite(11, HIGH);  
    Serial.println("PIN-11-ON----> Bombas de Fertilizante y Antialgas (00/06/12/18 Hs y 5 min durante 15 seg)");}
    else
    {digitalWrite(11, LOW);  
    Serial.println("PIN-11-OFF---> Bombas de Fertilizante y Antialgas (00/06/12/18 Hs y 5 min durante 15 seg)");}
   }
    /* Relay que enciende la Lámpara Germicida de 9 wats durante 4 horas 2 veces al día
      * Se enciende a las 8 de la mañana y a las 8 de la noche y se activa con el pin 12*/
    {
if (hour>=8 && hour<12 || hour>=20 && hour<24)
    {digitalWrite(12, HIGH);  
    Serial.println("PIN-12-ON----> Lampara Germicida UV de 9 watt (8 a 12 y 20 a 24 Hs)");}
    else
    {digitalWrite(12, LOW);  
    Serial.println("PIN-12-OFF---> Lampara Germicida UV de 9 watt (8 a 12 y 20 a 24 Hs)");}
    }
    /*Relay que enciende los Leds azules (luz de luna) desde las 10 de la noche hasta las
     * 10 de la mañana. Funciona con el Pin 13 */
if (hour>=22 || hour<10)
    {digitalWrite(13, HIGH);  
    Serial.println("PIN-13-ON----> Luz de Luna (de 22 a 10 Hs)");}
    else
    {digitalWrite(13, LOW);  
    Serial.println("PIN-13-OFF---> Luz de Luna (de 22 a 10 Hs)");}
    }

Todavía no he diseñado todo el montaje físico, en principio se me ocuure montar todo (la electrónica, los cables, enchufes, etc) sobre una placa de metacrilato con orificios para sujetar los componentes, pero por ahora lo que me interesa es tener todo el tema del Arduino bien estudiado, para no cometer errores.
En el foro de Arduino en español me recomendaron que en lugar de los "if" utilice la librería TimeAlarm, que tiene funciones que controlan la hora de encendedido, la hora de apagado, el pin correspondiente, pero me lío y no logro que compile sin errores.

Pues lo mismo me he extendido demasiado, sorry. Blush

Bueno, espero vuestros comentarios, y más que nada sugerencias para mejorarlo.
#397
¿has valorado la posibilidad de usar como base para tu proyecto el compartido por Antonio Castro? (Antonio gracias otra vez)
#398
Pues he copiado en Libraries CAO_SETA_VI.0 y estoy mirando el ejemplo puesto en la página 18 de este post por ArturoS:
Código:
void SetPinsProgram(){
    // Activacion de los pines
    ProgPins.ConfigurarPin(4, HIGH); // luz 1
    ProgPins.ConfigurarPin(5, HIGH); // luz 2
    ProgPins.ConfigurarPin(6, HIGH); // reservado otro uso
    ProgPins.ConfigurarPin(7, HIGH); // luz noche

    // Crear pulsos programacion horaria
    ProgPins.CrearPulso(4, 14, 0, 0, 8, 0, 0); // Pin4 encender 2 pm durante 8 h - apaga 10 pm
    ProgPins.CrearPulso(5, 14, 30, 0, 8, 0, 0); // Pin5 encender 2:30 pm durante 8 h - apaga 10:30 pm
      //ProgPins.CrearPulso(6, 13, 30, 0, 8, 0, 0); // Pin6 encender 01:30 pm durante 8h  - apaga 09:30 pm
    ProgPins.CrearPulso(7, 12, 30, 0, 11, 30, 0); // Pin7 encender 12:30 pm durante 11:30 h - apaga 00:00 pm
    ProgPins.CrearPulso(7, 0, 0, 0, 1, 0, 0); // Pin7 encender 00:00 pm durante 1 h  - apaga 01:00 am
}

Pero en mi ignorancia no entiendo dónde vá colocado este "void SetPinsProgram()" ¿se coloca luego del void Loop()? ¿O dentro del void Loop()? ¿O en lugar del void Loop()?

Estoy más verde que el verde de las ventans de Arduino -laughbounce2.gif
#399
Hace mucho que leí el programa de Antonio y mis nociones de C son muy basicas, quiza diga alguna burrada.

"void SetPinsProgram()" es una funcion que se pone fuera de void Loop(), se ejecutará una sola vez cada vez que la llames desde cualquier otra funcion.

Por cierto, si no lo conoces ya, date una vuelta por www.prometec.net es el mejor sitio que conozco de arduino
#400
Otra pregunta:
Los leds del acuario consumen en total unos 12 amperios y creo que cada uno de los Relés es de 10 amperios máximo.
Los enciendo con una fuente de alimentación de 12 voltios y 30 amperios.
¿Podría activar dos Relés al mismo tiempo y conectarlos en paralelo para encender la fuente de alimentación?
Entiendo que un solo Relé se sobrecalentaría, ¿no?
#401
Creo que la fuente la deberías tener siempre encendida, el consumo de entrada será casi el mismo que las cargas que tengas a la salida y además alimentas desde ella el arduino.

Para la pantalla en vez de rele usa transistores, podrás dimear los led. El esquema lo tienes en el PDF de CAO
#402
Pues haré pruebas, también creo que los tomacorrientes normales también son de 10 amperes así que cuando monte todo lo primero será hacer unas pruebas.
Con respecto a los leds tengo un dimmer electrónico de 5 circuitos que se programa desde el ordenador y es muy práctico. Aunque utilice el Arduino ese dimmer (TC420) lo mantendré pues es muy útil. Comienza a trabajar en el momento en que recibe los 12 volts. La idea es solo conectarle los 12 volts a la hora que comienza a encender los leds.
Con respecto a la fuente de alimentación es que lleva un ventilador, y dejarlo conectado por la noche hace un poco de ruido.
#403
(16-01-2017, 02:01 PM)albertoG1 escribió: Pues haré pruebas, también creo que los tomacorrientes normales también son de 10 amperes así que cuando monte todo lo primero será hacer unas pruebas.
Con respecto a los leds tengo un dimmer electrónico de 5 circuitos que se programa desde el ordenador y es muy práctico. Aunque utilice el Arduino ese dimmer (TC420) lo mantendré pues es muy útil. Comienza a trabajar en el momento en que recibe los 12 volts. La idea es solo conectarle los 12 volts a la hora que comienza a encender los leds.
Con respecto a la fuente de alimentación es que lleva un ventilador, y dejarlo conectado por la noche hace un poco de ruido.

Acabo ver el hilo de preguntas y respuestas. La versión actual del programador CaoSeta se usa para programar salidas digitales, por ejemplo mediante relés así que tú idea de alimentar otro circuido que reinicia su propia programación al recibir parece correcta pero controla no sobre pasar la intensidades. Quizás en lugar de conmutar a 12v te resulte mejor usar una alimentación pequeña para Arduino y conmutar a 220v el circuito de potencia desde antes del transformador.
Todo depende de los relés que uses.

Hace tiempo programé un controlador bastante completo para acuario llamado CAO1 que entre otras muchas cosas permitía programar las variaciones de intensidad de varios canales de iluminación, actuadores y sensores y muchas cosas más, pero últimamente en lugar de continuar añadiendo funcionalidades a ese controlador, estoy desarrollando pequeños controladores cada uno para una cosa, porque son más fáciles de mantener y porque algunos sensores funcionan mejor con circuitos completamente independizados de los circuitos que controlan potencias altas.

Si puedes plasmar tus ideas con diagramas y aportas más datos sobre los componentes que usas, te podremos ayudar mejor, o quizás tu curiosa idea de encadenar un programador con otro sea aprovechada por otras personas.

A mí, en principio, me parece una idea muy buena. Las fuentes de alimentación potentes consumen corriente aunque no tengan carga tal y como tú apuntas, así que tener toda la etapa de potencia separada y poder pararla por la noche me parece un acierto.
#404
Ante todo gracias Antonio por contestarme, más arriba en esta misma página comenté los objetivos y puse el sketch (¿se llama así, no?) y tengo ahora mismo el Arduino Mega funcionando con el reloj DS3231 y un sensor de temperatura de los impermeables (DS18B20).
Lo tengo conectado al ordenador desde hace un par de días con salida de los datos por el monitor serie y funcionan aparentemente bien todos los elementos (por ahora he puesto leds en los pines de salida y se encienden y apagan correctamente).
Lo que sucede es que es probable que le falte "elegancia" a los comandos que he utilizado, jaja
Por ahora no me animo a probar con tus librerías o con la TimeAlarms, que entiendo que pueden simplificar el programita y tal vez hacer que ocupe menos memoria o funcione de manera más eficiente.
Como ahora mismo no tengo prisas (el acuario funciona todo con relojes programadores) quiero tener todo muy bien "amarrado" antes de comenzar con la parte del montaje, ya que una pega que le veo al Arduino es que es difícil organizar toda la "cacharrería" de una manera más o menos funcional.
En el momento de decidirme a dar el paso de comenzar el montaje físico de todo el proyecto trataré de documentarlo para comentarlo.
Un saludo.
Alberto.
#405
(17-01-2017, 05:53 AM)albertoG1 escribió: Ante todo gracias Antonio por contestarme, más arriba en esta misma página comenté los objetivos y puse el sketch (¿se llama así, no?) y tengo ahora mismo el Arduino Mega funcionando con el reloj DS3231 y un sensor de temperatura de los impermeables (DS18B20).
Lo tengo conectado al ordenador desde hace un par de días con salida de los datos por el monitor serie y funcionan aparentemente bien todos los elementos (por ahora he puesto leds en los pines de salida y se encienden y apagan correctamente).
Lo que sucede es que es probable que le falte "elegancia" a los comandos que he utilizado, jaja
Por ahora no me animo a probar con tus librerías o con la TimeAlarms, que entiendo que pueden simplificar el programita y tal vez hacer que ocupe menos memoria o funcione de manera más eficiente.
Como ahora mismo no tengo prisas (el acuario funciona todo con relojes programadores) quiero tener todo muy bien "amarrado" antes de comenzar con la parte del montaje, ya que una pega que le veo al Arduino es que es difícil organizar toda la "cacharrería" de una manera más o menos funcional.
En el momento de decidirme a dar el paso de comenzar el montaje físico de todo el proyecto trataré de documentarlo para comentarlo.
Un saludo.
Alberto.
Ok. Ya nos contarás.

Solo una cosa. Los sensores de temperatura DS18B20 impermeabilizados, no los considero fiables. A mí me fallaron dos de ellos al cabo de más de un mes funcionando bien y no soy el único al que le ha pasado. El sellado terminó fallando.

Si es para consultar la temperatura vale porque cuando falle lo hará de forma evidente, pero regular la temperatura con un sensor que puede fallar puede poner tu acuario a una temperatura extrema.

Los sensores suelen trabajar con impedancias muy altas y cuando se usan sumergidos el menor fallo de aislamiento les afecta.

Usuarios navegando en este tema: 1 invitado(s)


Salto de foro: