10-09-2020, 10:18 PM
Buenas gente espero que estén bien
Bueno básicamente soy un super novato en Arduino, y me mande de lleno para crear mi primer proyecto con Arduino UNO
Proyecto: invernadero automático
¿Como funciona?
Tengo un sensor DHT11, que utilizo para medir temperatura y humedad dentro de un habitáculo cerrado
Cuando la temperatura supera X valor, se activa un Rele del modulo de doble Rele que viene en el kit
Cuando la temperatura disminuye de X valor, se activa el otro Rele del modulo de doble Rele
Esto alimentara un sistema que calienta o enfria correspondientemente
Luego se mide la humedad, y cuando la misma disminuye de X valor, se activa un generador de frecuencia
Dado que quiero generar vapor con un piezoelectrico, y el mismo funciona con 1.7 MHz, me pareció que seria buena idea generar la frecuencia desde el mismo Arduino, investigando encontré que lo más cercano es 1.778 MHz por una cuestión del reloj interno. Luego conecto la salida a un MOSFET (que también necesito saber cual es el mejor) y de ahi al Piezo,
La cuestión es que he básicamente hecho copy paste de distintos códigos y se me ha hecho un desastre. Ahora mismo no me compila y no se porque
Les dejo el codigo que hice pero pienso realmente tirarlo a la basura y empezar de cero
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN 7 //Pin 22 del Arduino
#define DHTTYPE DHT11 //Definir el sensor como un DHT11
#define RELAY1 5 // Relay heating
#define RELAY2 6 // Relay cooling
int red = 8; // red LED heating
int blue = 9; // blue LED cooling
DHT dht(DHTPIN, DHTTYPE);
float temperature;
float humedad;
const uint8_t OUTPUT_PIN = 3; // = OC2B
const uint8_t PERIOD = 9; // 9 CPU cycles ~ 1.778 MHz
void setup()
{
pinMode(red, OUTPUT);
pinMode(piezo, OUTPUT);
pinMode(blue, OUTPUT);
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
}
{
pinMode(OUTPUT_PIN, OUTPUT);
TCCR2B = 0; // stop timer
TCNT2 = 0; // reset timer
TCCR2A = _BV(COM2B1) // non-inverting PWM on OC2B
| _BV(WGM20) // fast PWM mode, TOP = OCR2A
| _BV(WGM21); // ...ditto
TCCR2B = _BV(WGM22); // ...ditto
OCR2A = PERIOD - 1;
OCR2B = PERIOD/2 - 1;
}
void soundBuzzer() {
TCCR2B |= _BV(CS20); // F_CPU / 1
}
void silenceBuzzer() {
TCCR2B &= ~_BV(CS20);
TCNT2 = 0;
}
void loop()
if (humedad <60){ //
digitalWrite(ledhum, HIGH); // si la humedad es menor de 70% genera oscilacion
}
else{
digitalWrite(piezo, LOW); // si humedad mayor de 70% apaga led
}
{
delay(1000); //Tiempo de espera entre una lectura y otra. Para el DHT11 es 1 segundo
temperature = dht.readTemperature(); //Lee la temperatura
humedad = dht.readHumidity(); //Lee la humedad
{
if(temperature < 25)
{
digitalWrite(red,HIGH);
digitalWrite(blue,LOW);
digitalWrite(RELAY1,0);
digitalWrite(RELAY2,1);
}
else if(temperature > 25)
{
digitalWrite(RELAY1,1);
digitalWrite(RELAY2,0);
digitalWrite(red,LOW);
digitalWrite(blue,HIGH);
}
}
}
Desde ya gracias
Bueno básicamente soy un super novato en Arduino, y me mande de lleno para crear mi primer proyecto con Arduino UNO
Proyecto: invernadero automático
¿Como funciona?
Tengo un sensor DHT11, que utilizo para medir temperatura y humedad dentro de un habitáculo cerrado
Cuando la temperatura supera X valor, se activa un Rele del modulo de doble Rele que viene en el kit
Cuando la temperatura disminuye de X valor, se activa el otro Rele del modulo de doble Rele
Esto alimentara un sistema que calienta o enfria correspondientemente
Luego se mide la humedad, y cuando la misma disminuye de X valor, se activa un generador de frecuencia
Dado que quiero generar vapor con un piezoelectrico, y el mismo funciona con 1.7 MHz, me pareció que seria buena idea generar la frecuencia desde el mismo Arduino, investigando encontré que lo más cercano es 1.778 MHz por una cuestión del reloj interno. Luego conecto la salida a un MOSFET (que también necesito saber cual es el mejor) y de ahi al Piezo,
La cuestión es que he básicamente hecho copy paste de distintos códigos y se me ha hecho un desastre. Ahora mismo no me compila y no se porque
Les dejo el codigo que hice pero pienso realmente tirarlo a la basura y empezar de cero
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN 7 //Pin 22 del Arduino
#define DHTTYPE DHT11 //Definir el sensor como un DHT11
#define RELAY1 5 // Relay heating
#define RELAY2 6 // Relay cooling
int red = 8; // red LED heating
int blue = 9; // blue LED cooling
DHT dht(DHTPIN, DHTTYPE);
float temperature;
float humedad;
const uint8_t OUTPUT_PIN = 3; // = OC2B
const uint8_t PERIOD = 9; // 9 CPU cycles ~ 1.778 MHz
void setup()
{
pinMode(red, OUTPUT);
pinMode(piezo, OUTPUT);
pinMode(blue, OUTPUT);
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
}
{
pinMode(OUTPUT_PIN, OUTPUT);
TCCR2B = 0; // stop timer
TCNT2 = 0; // reset timer
TCCR2A = _BV(COM2B1) // non-inverting PWM on OC2B
| _BV(WGM20) // fast PWM mode, TOP = OCR2A
| _BV(WGM21); // ...ditto
TCCR2B = _BV(WGM22); // ...ditto
OCR2A = PERIOD - 1;
OCR2B = PERIOD/2 - 1;
}
void soundBuzzer() {
TCCR2B |= _BV(CS20); // F_CPU / 1
}
void silenceBuzzer() {
TCCR2B &= ~_BV(CS20);
TCNT2 = 0;
}
void loop()
if (humedad <60){ //
digitalWrite(ledhum, HIGH); // si la humedad es menor de 70% genera oscilacion
}
else{
digitalWrite(piezo, LOW); // si humedad mayor de 70% apaga led
}
{
delay(1000); //Tiempo de espera entre una lectura y otra. Para el DHT11 es 1 segundo
temperature = dht.readTemperature(); //Lee la temperatura
humedad = dht.readHumidity(); //Lee la humedad
{
if(temperature < 25)
{
digitalWrite(red,HIGH);
digitalWrite(blue,LOW);
digitalWrite(RELAY1,0);
digitalWrite(RELAY2,1);
}
else if(temperature > 25)
{
digitalWrite(RELAY1,1);
digitalWrite(RELAY2,0);
digitalWrite(red,LOW);
digitalWrite(blue,HIGH);
}
}
}
Desde ya gracias