Tags:
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
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...
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por