Go Down

Topic: efecto dia y noche en acuario  (Read 724 times) previous topic - next topic

taper

Dec 08, 2019, 10:51 am Last Edit: Dec 08, 2019, 10:53 pm by surbyte Reason: Agregado de etiqueta para códigos/errores
hola buenas, después de leer y ver un montón de vídeos voy a intentar hacer mi acuario automático (aunque solo sea el efecto día y noche) y  solo sea copiar y pegar trozos de sketch  ya hechos, ya que por desgracia no doy para mas.... y casi siempre acabo descuartizándolo y  ya no sabiendo por donde caminar ,lo que es el tema de montaje y cablear  no tengo problema , pero el tema de programación no me entra.......
mis preguntas son:

-este sketch  esta preparado para instalar en arduino UNO, podre instalarlo en un arduino NANO o MINI , o si hay mas pequeños?  ya que mi intencion es ponerlo en una caja  disimulada  (mas o menos) por algun lado del acuario con su fuente de alimentacion .

- este sketch veo que lleva pantalla  o monitor, que de momento no me interesa y si se puede la quitaria del sketch, hay algun problema si lo quito?

- tendria que utilizar una placa con 2 reles o de 1 rele? ya que voy a utilizar tiras de led unas blancas  (efecto dia ) y tras azules (efecto noche)

-si es con la targeta de 2 reles, tendre que modificar todo lo del sketch referente a 1 rele, incluido el cableado.

-el ultimo parrafo del esketch no acabo de entenderlo:  para que sirve?  segun el autor , para restablecer las variables de control

este es el sketch:


Code: [Select]
#include <Wire.h> // incluye libreria para interfaz I2C
#include <RTClib.h> // incluye libreria para el manejo del modulo RTC

RTC_DS3231 rtc; // crea objeto del tipo RTC_DS3231

bool evento_inicio = true; // variable de control para inicio de evento con valor true
bool evento_fin = true; // variable de control para finalizacion de evento con valor true

# define RELE 3 // constante RELE con valor 3 que corresponde a pin digital 3
// donde se encuentra conectado el modulo de rele
void setup () {
Serial.begin(9600); // inicializa comunicacion serie a 9600 bps
pinMode(RELE, OUTPUT); // pin 3 como salida

if (! rtc.begin()) { // si falla la inicializacion del modulo
Serial.println("Modulo RTC no encontrado !"); // muestra mensaje de error
while (1); // bucle infinito que detiene ejecucion del programa
}
}

void loop () {
DateTime fecha = rtc.now(); // funcion que devuelve fecha y horario en formato
// DateTime y asigna a variable fecha
if ( fecha.hour() == 14 && fecha.minute() == 30 ){ // si hora = 14 y minutos = 30
   if ( evento_inicio == true ){ // si evento_inicio es verdadero
     digitalWrite(RELE, HIGH); // activa modulo de rele con nivel alto
     Serial.println( "Rele encendido" ); // muestra texto en monitor serie
     evento_inicio = false; // carga valor falso en variable de control
   } // para evitar ingresar mas de una vez
 }

if ( fecha.hour() == 15 && fecha.minute() == 30 ){ // si hora = 15 y minutos = 30
   if ( evento_fin == true ){ // si evento_fin es verdadero
     digitalWrite(RELE, LOW); // desactiva modulo de rele con nivel bajo
     Serial.println( "Rele apagado" ); // muestra texto en monitor serie
     evento_fin = false; // carga valor falso en variable de control
   } // para evitar ingresar mas de una vez
 }

Serial.print(fecha.day()); // funcion que obtiene el dia de la fecha completa
Serial.print("/"); // caracter barra como separador
Serial.print(fecha.month()); // funcion que obtiene el mes de la fecha completa
Serial.print("/"); // caracter barra como separador
Serial.print(fecha.year()); // funcion que obtiene el año de la fecha completa
Serial.print(" "); // caracter espacio en blanco como separador
Serial.print(fecha.hour()); // funcion que obtiene la hora de la fecha completa
Serial.print(":"); // caracter dos puntos como separador
Serial.print(fecha.minute()); // funcion que obtiene los minutos de la fecha completa
Serial.print(":"); // caracter dos puntos como separador
Serial.println(fecha.second()); // funcion que obtiene los segundos de la fecha completa

delay(1000); // demora de 1 segundo

 if ( fecha.hour() == 2 && fecha.minute() == 0 ){ // si hora = 2 y minutos = 0 restablece valores de
   evento_inicio = true; // variables de control en verdadero
   evento_fin = true;
 }
}





taper

#1
Dec 08, 2019, 12:24 pm Last Edit: Dec 09, 2019, 06:23 pm by taper
ya e conseguido quitar lo de la programación para el  monitor , sin problemas y las pruebas que e realizado con un rele y dos leds uno puesto en el contacto de NC y el otro en el contacto de NA si que realiza el encendido de un led al entrar en la programación  y cuando termina lo programado , apaga el led y  enciende el otro.
puede haber algún problema con este tipo de conexión? o seria mejor utilizar 2?
voy a utilizar tiras de leds, unas azules y otras blancas  que tengo







victorjam

Después de 58 posts aún no posteas correctamente el código y las imagenes. Por favor, lee las NORMAS y edita el código/imagenes para que se vean correctamente.

surbyte

#3
Dec 08, 2019, 11:07 pm Last Edit: Dec 09, 2019, 03:27 pm by surbyte
Como dice victorjam, 59 mensajes y no sabes postear una imagen, o un código, que he tenido que editarlo yo, porque no se trata de postear en un nuevo post sino editar el que esta mal posteado.

Pasa por
Como visualizar las Imagenes Adjuntas en Arduino.cc para aprender a postear las imagenes.
Tu hilo será movido a Software porque por ahora no es mas que eso, una consulta de Software. Si veo que pasa el tiempo y sigues con tu acuario agregándole cosas, se transformará en un proyecto que merece ser posteado en esa sección.


Quote
este sketch  esta preparado para instalar en arduino UNO, podre instalarlo en un arduino NANO o MINI , o si hay mas pequeños?  ya que mi intencion es ponerlo en una caja  disimulada  (mas o menos) por algun lado del acuario con su fuente de alimentacion .
Los sketchs en general son portables (los puedes usar en otros arduinos similares) solo cambia la placa y el mismo código funcionara en un NANO o MINI y en primera instancia en un MEGA también.

Code: [Select]
- este sketch veo que lleva pantalla  o monitor, que de momento no me interesa y si se puede la quitaria del sketch, hay algun problema si lo quito?
Por supuesto que no hay problema, espero sepas eliminar cuidadosamente las referencias al LCD o pantalla que use.

Quote
- tendria que utilizar una placa con 2 reles o de 1 rele? ya que voy a utilizar tiras de led unas blancas  (efecto dia ) y otras azules (efecto noche)
Si las tiras son fijas entonces requires dos Reles, de lo contrario si tienes una tira RGB puedes poner el color que gustes, pero requiere mas trabajo pero no demasiado. No se que has comprado porque no lo mencionas.

Quote
-si es con la targeta de 2 reles, tendre que modificar todo lo del sketch referente a 1 rele, incluido el cableado.
Si tienes uan tarjeta de 2 reles y solo usas 1 no te preocupes, siempre habra aplicación o uso para el relé restante.

Quote
-el ultimo parrafo del esketch no acabo de entenderlo:  para que sirve?  segun el autor , para restablecer las variables de control
Estas lineas, activan
Code: [Select]
if ( fecha.hour() == 14 && fecha.minute() == 30 ){ // si hora = 14 y minutos = 30
desactivan
Code: [Select]
if ( fecha.hour() == 15 && fecha.minute() == 30 ){ // si hora = 15 y minutos = 30
las luces.

Para mi esta mal por varias razones.
1) un relé habitualmente se activa con LOW y desactiva con HIGH, sin embargo quien hizo el programa lo ha puesto al revés.
2) si hablamos de luces las activa a las 14:30 y desactiva 15:30 vaya, eso no simula el sol o lo que pretendas simular

Además este código es muy repetitivo, y presenta información cuando no debería llenando la consola del monitor serie de información no relevante.
Ya que no tendrás un LCD ahora es importante ver lo que hace falta ver.

taper

ok, lo que hagais , bien echo, ( si no haber estudiado  decia mi padre) ja.ja.ja

taper

mas preguntas...
 hay algun otro mecanismo que no sea un rele?  para hacer la misma función  que un rele? lo digo por que estará bastante tiempo encendido o apagado?
en el cambio de hora " de invierno a verano" o " verano a invierno" yo tengo que ajustar la hora  en el DS3231 ? o cambia automático?

Kike_GL

Existe un tipo de rele llamado de enclavamiento o Relés con retención de posición. Pregunta en cuarquier tienda de electronica.

El DS3231 solo te da la hora actual, tu tendrias que definir las fechas de cambio de horario.
Saludos, Kike_GL

taper

#7
Dec 24, 2019, 03:49 pm Last Edit: Dec 24, 2019, 03:51 pm by taper
Existe un tipo de rele llamado de enclavamiento o Relés con retención de posición. Pregunta en cuarquier tienda de electronica.

El DS3231 solo te da la hora actual, tu tendrias que definir las fechas de cambio de horario.
ok,  a que te refieres a definir las fechas de cambio? .
 esos reles pueden funcionar con arduino?

krnlpanic

Las fechas las comparas con condicionales para que haga el cambio de funcion.


No hay ningun problema por usar reles normales, yo tengo reles que se pasan dias enclavados, siempre que uses el diodo en antiparalelo en la bobina para que al desclavar descargue si no podrias quemar la salida.

taper

#9
Dec 29, 2019, 08:17 am Last Edit: Dec 29, 2019, 08:25 am by taper
hola cuando dices diodo de descarga , quieres decir que tengo que soldar un diodo en los terminales del rele?  pero si uso los reles que esta montados en placa para arduino, donde se sueldan y que tipo y modelo de diodo tengo que usar? por ejemplo estos:

los reles bi estables o de enclava miento son estos? tambien tengo que poner diodos para su descarga? por lo que veo tengo que utilizar varios modulos ya que no encuentro modulos de reles  enclavamiento y biestable de varios modulos juntos:


krnlpanic

Los que vienen en placa suelen estar ya protegidos, el primero es optoacoplado, se separa del equipo mediante un diodo y un receptor que están dentro del chip ese cuadrado, el biestable cambia de estado por pulso, en la placa solo veo una resistencia así que no se decirte si esta protegido, el ultimo tiene pinta de ser un relé normal con un botón de activación manual y también lleva el optoacoplado.

Este buen hombre te explica por que se usa y como se pone, es mas para reles sueltos sin placa.

taper

#11
Dec 31, 2019, 08:26 pm Last Edit: Dec 31, 2019, 08:28 pm by taper
gracias por responder , al mismo tiempo voy leyendo  viendo proyectos de la gente que utiliza leds neopixel, e visto por ebay y son unas pequeñas tiras que utiliza soldando unas con otras , veo que haría falta muchas, resultaría mas caro,pero veo que no haria falta reles ya que los neopixel son rgb, que seria mas facil o practico?
 que opinais?

krnlpanic

Si lo ibas a iluminar con tiras de led normales no va a variar mucho el precio aunque todo depende del tamaño del acuario. El principal atractivo de los neopixel es que cada led puede tener un color/intensidad distinto al resto y si esto no lo vas a utilizar puedes ir a tiras RGB normales que son mas baratas.

Si no te quieres complicar con arduino, venden en aliexpress unos controladores de led Magic Home en el que puedes programarle desde una APP la hora de encendido/apagado, cambio de color de la tira, incluso controlarla con Google Home, ademas lo tienes por 5€.

taper

el acuario es de unos 40 litros , es pequeño , pero mas que nada era por hacer algo con arduino facil,  pero lees las inmensas posibilidades que tiene y.........te hace cambiar de idea ja.ja.ja

krnlpanic

Te recomendé el controlador al leer que habías copiado el código, claro que puedes hacerlo con arduino pero hay que entender varias cosas antes y eso solo se consigue leyendo y probando.

Go Up