Paso 3: programación
Estuve probando algunas maneras diferentes cómo pueden trabajar y decide quedarse con uno que voy a publicar aquí.¿Cómo funciona?
Cuando la temperatura del agua va superior a 25 grados de Cent3igrado del ventilador comienza a correr hasta que el agua bajará a 24, después de que se apaga. Preste atención a su nivel de agua, el agua irá al aire de refrigeración y nivel del agua bajará bastante rápido. No voy a explicar cómo conectar arduino pro mini a través de adaptador de USBtoTTL para subir tu bosquejo, hay mucho información sobre esto en google.
Aquí está el código, puede modificar, dependiendo de la temperatura es necesario:
#include < OneWire.h >
int DS18S20_Pin = 9; Pin señal DS18S20 digital 2
relé de INT = 12; Relé del ventilador en el pin 12
Temp ajustes en centígrados que debe mantener con un punto y el valor después de punto
Float high_temp = 25.00;
Float norm_temp = 24.00;
Temperatura chip entrada-salida
OneWire ds(DS18S20_Pin); DS18B20 en pin digital 2 o cambiar a su número de pin DITI
void setup(void) {}
Serial.Begin(9600);
pinMode (salida de relé,);
digitalWrite (relé, HIGH); Hacer relé por defecto para evitar hacer clic en Inicio
}
void loop(void) {}
Float temperatura = getTemp();
Serial.println(Temperature); Imprimir en serie temp actual
Serial.println(high_temp); Imprimir en serie predefinida alta temperatura cuando el ventilador se encenderá
Serial.println(norm_temp); Imprimir en serie predefinida temperatura normal cuando se apaga el ventilador
retardo (800); Hacer algo de retraso para ver valores en el monitor serial
Si (getTemp() > = high_temp) / / el ventilador está encendido cuando agua a alta temperatura
{
digitalWrite (relé, LOW);
}
Si (getTemp() < = norm_temp) / / ventilador va apagado cuando temp normal
{
digitalWrite (relé, HIGH);
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////// Working with DS18B20
Float getTemp() {}
Devuelve la temperatura de un DS18S20 en grados Celsius
datos del octeto [12];
addr Byte [8];
Si (! {ds.search(addr))}
no hay más sensores en cadena, de la búsqueda reset
DS.reset_search();
volver -1000;
}
Si (OneWire::crc8 (addr, 7)! = {addr[7])}
Serial.println ("CRC no es válido!");
volver -1000;
}
Si (addr [0]! = 0 x 10 & & addr [0]! = 0x28) {}
Serial.Print ("dispositivo no se reconoce");
volver -1000;
}
DS.Reset();
DS.Select(ADDR);
DS.Write(0X44,1); iniciar la conversión, con la energía del parásito en el final
byte actual = ds.reset();
DS.Select(ADDR);
DS.Write(0xBE); Bloc de notas de lectura
para (int i = 0; i < 9; i ++) {/ / necesitamos 9 bytes
datos [i] = ds.read();
}
DS.reset_search();
el byte MSB = datos [1];
octeto LSB = datos [0];
Float tempRead = ((MSB << 8) | LSB); utilizando el complemento de dos
Float TemperatureSum = tempRead / 16;
volver TemperatureSum;
}
Por ejemplo, mi temperatura es de unos 26-28 grados centígrado, el tanque de pescados es pequeño bastante - 10liters, para hacer el agua bajar de 25 a 24 grados se toma unos 7-10 minutos. Usted puede hacer menos diferencia de temperatura, pero entonces el ventilador funcionará más a menudo pero con períodos de tiempo más cortos. Esperanza este dispositivo le ayudará a bajar la temperatura del tanque de peces si no hay aire acondicionado en su casa.
Lo siento por mi inglés, no es mi idioma nativo, pero espero que usted conseguirá la idea de cómo deben trabajar :)
Comentarios y críticas son bienvenidas.
P.d. probablemente hará encargo pcb para este proyecto en un futuro próximo. Estad atentos, instalación de acuaponia en Apartamento casi se hacen para demostrar aquí.
Saludos, Alex.