Ir ao conteúdo

Posts recomendados

Postado

Boa noite pessoal, estou desenvolvendo um projeto para controle de temperatura em um estufa.

Usei um Arduino uno e um sensor ds18b20.

o código que eu estou usando para printar a temperatura é esse:

#include "cactus_io_DS18B20.h" 
int DS18B20_Pin = 2; //DS18B20 Signal pin on digital 2 
// Create DS18B20 object 
DS18B20 ds(DS18B20_Pin); // on digital pin 2 
void setup() { 
ds.readSensor(); 
Serial.begin(9600); 
Serial.println("cactus.io | Basic Webserver Tutorial"); 
Serial.println("Temp (C)\tTemp (F)"); 
} 
void loop() { 
// put your main code here, to run repeatedly: 
ds.readSensor(); 
Serial.print(ds.getTemperature_C()); Serial.print(" *C\t"); 
Serial.print(ds.getTemperature_F()); Serial.println(" *F\t"); 
// Add a 2 second delay. 
delay(2000); //just here to slow down the output. 
}

Contudo, eu preciso ligar um ventilador( ou cooler) ao sistema quando a temperatura ultrapassar os 27ºC.

Alguém sabe qual implementação eu devo fazer no código para funcionar esse ventilador?

PS: Primeiramente irei utilizar um LED no lugar do ventilador, para efeito de teste.

 

Obrigado pela atenção.

  • Membro VIP
Postado

Desconheço a linguagem do arduíno mas provavelmente você deve ter que capturar o valor numa variável, fazer uma comparação com 27 e acionar ou não seu sistema - led.

algo como este pseudo código:

c=ds.getTemperature_C();
if (c<27) led=on;
else led=off

Mas é bem simples. Aguarde algum programador arduíno de bom coração.

Postado

 Coloca em outra porta do arduino um módulo relé, ou se você não tiver compra um relé de 5V e colocar um transistor para ativar o mesmo com um diodo para evitar danificar, só procurar na net você acha "arduino relé" que você acha exemplos. Como  relé da para aguentar a a tensão 127/250 e vê se a corrente do mesmo é adequada (tem que ser superior ao pego pelo ventilador).

 

O sobre o código, acho que você resolveu seu problema na biblioteca de como você calcula a temperatura e depois você chama a temperatura de Cº por "ds.getTemperature_C()"  então para resolver coloca um.

 

Vamos dizer que você colocou o pino do relé no pino 10

 

no setup coloca

pinMode(10, OUTPUT); 

e no void

if (ds.getTemperature_C() > 27)  
                          {

digitalWrite(10, HIGH); //coloca os comando aqui para ligar o pino do relé 
                         } else {digitalWrite(10, LOW);} 

Se você pode colocar intervalos de funcionamento nesse if...
 

 

adicionado 11 minutos depois

ah... se você tiver dificuldade tipo a temperatura variando faz o relé ficar ligando e desligando toda hora(tipo entre 28~27~28~ se o sensor for sensível ou a temperatura do ambiente variar muito rápido) você pode modificar mais ainda o código para evitar esse tipo de problema... para colocar um contador  para evitar o desligamento a toda hora, pode ser meio complexo ou você pode colocar um baita de um delay ai no teu código para resolver de forma fácil.

Postado

É bom você trabalhar com uma janela para ligar e desligar o dispositivo de refrigeração.

 

O ideal mesmo seria você usar um controlador PID, ou apenas o PI (existem várias bibliotecas para o Arduíno), e é muito bacana ver a temperatura cravada no set-point :)... Mas daí você teria que ter um circuito para controle da senoide e as coisas começariam a complicar... 

 

Código com a janela é mais ou menos assim:

  // Com esse código o dispositivo de refrigeração (cooler ou outro) 
  // é ligado quando a temperatura ultrapassa 30° e desligado quando 
  // ela cai abaixo de 25°
  
  byte LimiteSuperior, LimiteInferior;              // Declaração das variáveis
  LimiteSuperior = 30;                              // Valor em que o dispositivo de refrigeração é LIGADO
  LimiteInferior = 25;                              // Valor em que o dispositivo de refrigeração é DESLIGADO

  if(ds.getTemperature_C() > LimiteSuperior)        // Se a temperatura for maior que o limite superior 
    digitalWrite(10, HIGH);                         // Liga o dispositivo de refrigeração
    
  else if(ds.getTemperature_C() < LimiteInferior))  // Se a temperatura for menor que o limite inferior 
    digitalWrite(10, LOW);                          // Desliga o dispositivo de refrigeração
}

 

Postado
  Em 21/07/2017 às 21:37, test man*~ disse:

O ideal mesmo seria você usar um controlador PID

Expandir  

Seria ótimo, mas no caso dele parece mais trabalho iniciais X) Mas seria bem legal ^^

Postado

Muito obrigado galera!

Fiz do jeito que você descreveu, funcionou perfeitamente pro led. Agora estou pensando em usar um relé para fazer o teste final com o ventilador. Muito Obrigado a todos!

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Mostrar mais  

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

Mostrar mais  
×
×
  • Criar novo...