Chocadeira automatizada para ovos de galinha, pata, codorna entre outros

Boa tarde galera!
Primeiramente gostaria de informar que eu sou leigo com Arduino, faço o básico. Ainda não consegui assimilar muito bem a lógica da programação. Por isso estou aqui para pedir ajuda, não sei se o que vou pedir é o propósito daqui, mas eu irei aprender e muito se vocês me ajudarem pode ter certeza.
Tenho uma pequena chácara em Maringá/PR e crio galinhas. Fiz algumas chocadeiras sem nenhuma tecnologia, portanto resolvi projetar uma toda automatizada. O projeto na verdade está pronto e todos os Shields, modulos, display, sensores, motores e outros elementos já foram comprados.
Descobri que eu não dou conta de fazer a programação.
Espero que vocês poderiam me ajudar.
Posso contar com vocês?
Fico ansioso no aguardo. Obrigado.

Exibições: 1358

Anexos

Responder esta

Respostas a este tópico

Oi GCOS, bom dia.

Você já procurou na net ou  mesmo aqui algum projeto de chocadeira com arduino?

Há algum tempo ajudei um amigo daqui com uma chocadeira.

http://labdegaragem.com/forum/topics/chocadeira?commentId=6223006%3...

Veja se ajuda.

Rui

Beleza Rui.
Achei interessante, creio que irá ajudar.
Qualquer dúvida eu chamo.
Abraço

Bom dia pessoal!

Fiz esse código pois agora preciso inserir um que liga um motor NEMA 23 com DRIVER A4988.

Esse motor tem que rodar 45º a cada 50 minutos. 

Alguém pode me ajudar?

// Programa : INCUBADORA dB001-01
// Autor : HACKERSPACE & GEORGES CLAYTON

#include <DHT.h>
#include <LiquidCrystal.h>

// Pino conectado ao pino de dados do sensor
#define DHTPIN 7

// Pinos do display
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#define DHTTYPE DHT22 // Sensor DHT 22 (AM2302)

// Definicoes do sensor : pino, tipo
DHT dht(DHTPIN, DHTTYPE);

// Array simbolo grau
byte grau[8] ={ B00001100,
B00010010,
B00010010,
B00001100,
B00000000,
B00000000,
B00000000,
B00000000,};


void setup()
{
// Inicializa o display
lcd.begin(16, 2);
lcd.clear();
// Cria o caracter customizado com o simbolo do grau
lcd.createChar(0, grau);
// Informacoes iniciais no display
lcd.setCursor(0,0);
lcd.print("Temp. : ");
lcd.setCursor(13,0);
// Mostra o simbolo do grau
lcd.write(byte(0));
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Umid. : ");
lcd.setCursor(14,1);
lcd.print("%");

Serial.begin(9600);
Serial.println("Aguardando dados...");
// Iniclaiza o sensor DHT
dht.begin();

pinMode(8, OUTPUT); // Define pino 13 como saída (led verde temperatura ideal)
pinMode(9, OUTPUT); // Define pino 12 como saída (led vermelho temperatura acima )
pinMode(6, OUTPUT); // Define pino 11 como saída (led amarelo temperatura abaixo)
pinMode(10, OUTPUT); // Define pino 10 como saida (resistencia 500W)
pinMode(13, OUTPUT); // Define pino 13 como saida (umidificador)
}

void loop()
{
// Aguarda 2 segundos entre as medicoes
delay(2000);

// Leitura da umidade
float h = dht.readHumidity();
// Leitura da temperatura (Celsius)
float t = dht.readTemperature();

// Verifica se o sensor esta respondendo
if (isnan(h) || isnan(t))
{
Serial.println("Falha ao ler dados do sensor DHT !!!");
return;
}

// Mostra a temperatura no serial monitor e no display
Serial.print("Temperatura: ");
Serial.print(t);
lcd.setCursor(8,0);
lcd.print(t);
Serial.print(" *C ");
// Mostra a umidade no serial monitor e no display
Serial.print("Umidade : ");
Serial.print(h);
Serial.println(" %");
lcd.setCursor(8,1);
lcd.print(h);

//Se a temperatura estiver abaixo de 37, acende o led amarelo e a resistencia será ligada
if(t < 37)
{
digitalWrite(6, HIGH);
digitalWrite(10, HIGH);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}

//Se a temperatura estiver acima de 38, acende o led vermelho e a resistencia permanece desligada
if(t > 38)
{
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(6, LOW);
digitalWrite(8, LOW);
}

//Se a temperatura estiver acima de 37 e abaixo de 38, acende o led verde e a resistencia permanece desligada
if((t > 37) && (t < 38))
{
digitalWrite(8, HIGH);
digitalWrite(6, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
}

//Se a umidade estiver abaixo de 50%, o umidificador será ligado
if(h < 50)
{
digitalWrite(13, HIGH);
}

//Se a umidade estiver acima de 60%, o umidificador será desligado
if(h > 60)
{
digitalWrite(13, LOW);
}
}

Georges

Esse é um problema da área de controle. O seu código não resolve a dinâmica física da temperatura /umidade e vai gerar um overshoot .

Veja esse artigo sobre PID e a respectiva bilbioteca para arduino

http://brettbeauregard.com/blog/2011/04/improving-the-beginners-pid... 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço