collapse

* Posts Recentes

Emulador NES em ESP32 por dropes
[Ontem às 15:09]


Circuito Microfone que funcione por almamater
[27 de Abril de 2024, 17:14]


Arame de Estendal por almamater
[18 de Abril de 2024, 16:16]


O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]

Autor Tópico: Sensor de temperatura  (Lida 30232 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline Bony

  • Mini Robot
  • *
  • Mensagens: 397
Re: Sensor de temperatura
« Responder #45 em: 18 de Agosto de 2012, 01:37 »
Exacto dahh era trocar o int pelo float :| que pergunta a minha xD

Entretanto o Led vermelho agora quando ligo o circuito liga.se pk a temperatura esta abaixo dos 24 mas dps apaga-se nao se liga mais :|

Offline Pedrock

  • Mini Robot
  • *
  • Mensagens: 279
Re: Sensor de temperatura
« Responder #46 em: 18 de Agosto de 2012, 01:43 »
Não sei se reparaste, mas com as alterações que fiz, acende abaixo dos 25. Antes se tivesse a, por exemplo, 24.5, não acendia nenhum.
Já corrigi o problema do vermelho, era um erro estúpido, pus um bolean em vez de unsigned long LOL
E não tinha percebido que havia dois sensores, por isso a temperatura ambiente era a do aquário. Corrigi isso também:
Código: [Seleccione]
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(12,11,5,4,3,2);

#define ledverde 6
#define ledamarelo 7
#define ledvermelho 9
#define ONE_WIRE_BUS 10 // sensor de temperatura ligao ao pin 10

boolean vermelhoLigado = false;
unsigned long ultimoBlink = 0;

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
 

void setup()
{
 
 Serial.begin(9600); // start serial port

 lcd.begin(20,4);

 sensors.begin(); // IC Default 9 bit. If you have troubles consider upping it 12. Ups the delay giving the IC more time to process the temperature measurement
 pinMode(ledverde, OUTPUT);
 pinMode(ledamarelo, OUTPUT);
 pinMode(ledvermelho, OUTPUT);
}


void loop()
{
sensors.requestTemperatures(); // Send the command to get temperatures
float temperatura = sensors.getTempCByIndex(0);

lcd.setCursor(0,0);
lcd.print("Temperatura Aquario");
lcd.setCursor(6,1);
lcd.print(temperatura);// Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
lcd.print( " C " );

int perigo = 0;

if (temperatura >= 26 && temperatura <= 28.5) perigo=0;
else if (temperatura >= 25 && temperatura <= 26) perigo=1;
else perigo=2;

switch (perigo)
{
  case 0: //Led verde
  digitalWrite(ledverde, HIGH);
  digitalWrite(ledamarelo, LOW);
  digitalWrite(ledvermelho, LOW);
  break;
  case 1: //Led amarelo
  digitalWrite(ledamarelo, HIGH);
  digitalWrite(ledverde, LOW);
  digitalWrite(ledvermelho, LOW);
  break;
  case 2: //Led vermelho
    digitalWrite(ledverde, LOW);
    digitalWrite(ledvermelho, LOW);
    if (ultimoBlink+1000 >= millis())
    {
      ultimoBlink = millis();
      if (vermelhoLigado) {digitalWrite(ledvermelho, LOW); vermelhoLigado = false;}
      else {digitalWrite(ledvermelho, HIGH); vermelhoLigado = true;}
    }
  break;
}

lcd.setCursor(0,2);
lcd.print("Temperatura Ambiente");
lcd.setCursor(6,3);
lcd.print(sensors.getTempCByIndex(1));//
lcd.print( " C " );
}

Offline Bony

  • Mini Robot
  • *
  • Mensagens: 397
Re: Sensor de temperatura
« Responder #47 em: 18 de Agosto de 2012, 01:52 »
Agora sim :D Finalmente tudo funciona como eu quero, bem deu luta...

Considero este projecto terminado.

Obrigadissimo mais uma vez :D

Já meto aqui umas fotos e uns videos e uma pequena descrisao do projecto para depois ficar tb como consulta quando alguem tiver uma duvida.

Offline Pedrock

  • Mini Robot
  • *
  • Mensagens: 279
Re: Sensor de temperatura
« Responder #48 em: 18 de Agosto de 2012, 01:55 »
Agora sim :D Finalmente tudo funciona como eu quero, bem deu luta...

Considero este projecto terminado.

Obrigadissimo mais uma vez :D

Já meto aqui umas fotos e uns videos e uma pequena descrisao do projecto para depois ficar tb como consulta quando alguem tiver uma duvida.
;D
Um video era fixe. Como é que fizeste para tornar o sensor à prova de água?

Offline Bony

  • Mini Robot
  • *
  • Mensagens: 397
Re: Sensor de temperatura
« Responder #49 em: 18 de Agosto de 2012, 02:05 »
Primeiramente comecei por isolar com fita isolado cada pin do sensor isto dps de ja estar soldado ao fio depois com Manga Termo-Retráctil revesti o sensor e como mesmo assim nao estava mto convencido ainda meti cola quente :)

Offline Pedrock

  • Mini Robot
  • *
  • Mensagens: 279
Re: Sensor de temperatura
« Responder #50 em: 18 de Agosto de 2012, 02:08 »
Primeiramente comecei por isolar com fita isolado cada pin do sensor isto dps de ja estar soldado ao fio depois com Manga Termo-Retráctil revesti o sensor e como mesmo assim nao estava mto convencido ainda meti cola quente :)
Ah ok. Se tivesse um aquário fazia uma coisa assim...   8)

Offline Bony

  • Mini Robot
  • *
  • Mensagens: 397
Re: Sensor de temperatura
« Responder #51 em: 18 de Agosto de 2012, 02:16 »
Só tem um contra... assim sai prai umas 20 x mais caro do que comprares um já feito proprio para o aquario. Só o sensor custa quase tanto com um termometro para o aqua.

Neste caso comprei 2, mais o display mais as tretas todas para fazer o arduino. Mas prefiro assim sempre se aprende umas coisas :)

Offline Pedrock

  • Mini Robot
  • *
  • Mensagens: 279
Re: Sensor de temperatura
« Responder #52 em: 18 de Agosto de 2012, 02:23 »
Podes por o arduino a ligar um "aquecedor" caso a temperatura esteja baixa ou alguma espécie de "arrefecedor" caso esteja demasiado quente.

Offline Bony

  • Mini Robot
  • *
  • Mensagens: 397
Re: Sensor de temperatura
« Responder #53 em: 18 de Agosto de 2012, 02:32 »
fica a ideia para um futuro projecto :P mas neste caso ja tenho 2 termoestatos para aquecer a agua !

Offline r16

  • Mini Robot
  • *
  • Mensagens: 339
Re: Sensor de temperatura
« Responder #54 em: 18 de Agosto de 2012, 02:38 »
Fixe agora era fazeres um sensor de ph... coisa que eu tambem queria para a minha horta hidroponica.

Offline Hugu

  • Mini Robot
  • *
  • Mensagens: 5.602
  • Keyboard not found. Press any key to continue.
    • [url=www.g7electronica.net]G7 Electrónica.net[/url]
Re: Sensor de temperatura
« Responder #55 em: 18 de Agosto de 2012, 02:50 »
eu vendo cabos ja com os sensores de tempª isolados numa capsula de metal e com isolamento para mergulhar em agua.

Offline Bony

  • Mini Robot
  • *
  • Mensagens: 397
Re: Sensor de temperatura
« Responder #56 em: 18 de Agosto de 2012, 03:27 »
Fixe agora era fazeres um sensor de ph... coisa que eu tambem queria para a minha horta hidroponica.

loOl do que te fostes lembrar...

Por acaso esse projecto está em cima da mesa :)

até ja andei a investigar sobre isso :P

brevemente

Offline Bony

  • Mini Robot
  • *
  • Mensagens: 397
Re: Sensor de temperatura
« Responder #57 em: 18 de Agosto de 2012, 03:28 »
eu vendo cabos ja com os sensores de tempª isolados numa capsula de metal e com isolamento para mergulhar em agua.

Ola Hugo, sim eu na altura que iniciei o projecto ainda cheguei a falar cntg sobre isso, mas tu nao tinhas em stock na altura... salvo erro... foi assim uma coisa !

Offline Hugu

  • Mini Robot
  • *
  • Mensagens: 5.602
  • Keyboard not found. Press any key to continue.
    • [url=www.g7electronica.net]G7 Electrónica.net[/url]
Re: Sensor de temperatura
« Responder #58 em: 18 de Agosto de 2012, 15:59 »
eu vendo cabos ja com os sensores de tempª isolados numa capsula de metal e com isolamento para mergulhar em agua.

Ola Hugo, sim eu na altura que iniciei o projecto ainda cheguei a falar cntg sobre isso, mas tu nao tinhas em stock na altura... salvo erro... foi assim uma coisa !
ya lembra e até tava convencido que te tinha enviado um cabo a ti.. se n foi a ti k vendi um cabo foi a outro moço kk...

Offline Pedrock

  • Mini Robot
  • *
  • Mensagens: 279
Re: Sensor de temperatura
« Responder #59 em: 19 de Agosto de 2012, 02:52 »
Descubri porque é que não funcionava bem.
Testa assim:
Código: [Seleccione]
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(12,11,5,4,3,2);

#define ledverde 6
#define ledamarelo 7
#define ledvermelho 9
#define ONE_WIRE_BUS 10 // sensor de temperatura ligao ao pin 10

boolean vermelhoLigado = false;
unsigned long ultimoBlink = 0;

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
 

void setup()
{
 
 Serial.begin(9600); // start serial port

 lcd.begin(20,4);

 sensors.begin(); // IC Default 9 bit. If you have troubles consider upping it 12. Ups the delay giving the IC more time to process the temperature measurement
 pinMode(ledverde, OUTPUT);
 pinMode(ledamarelo, OUTPUT);
 pinMode(ledvermelho, OUTPUT);
}


void loop()
{
sensors.requestTemperatures(); // Send the command to get temperatures
float temperatura = sensors.getTempCByIndex(0);

lcd.setCursor(0,0);
lcd.print("Temperatura Aquario");
lcd.setCursor(6,1);
lcd.print(temperatura);// Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
lcd.print( " C " );

int perigo = 0;

if (temperatura >= 26 && temperatura <= 28.5) perigo=0;
else if (temperatura >= 25 && temperatura <= 26) perigo=1;
else perigo=2;

switch (perigo)
{
  case 0: //Led verde
  digitalWrite(ledverde, HIGH);
  digitalWrite(ledamarelo, LOW);
  digitalWrite(ledvermelho, LOW);
  break;
  case 1: //Led amarelo
  digitalWrite(ledamarelo, HIGH);
  digitalWrite(ledverde, LOW);
  digitalWrite(ledvermelho, LOW);
  break;
  case 2: //Led vermelho
    digitalWrite(ledverde, LOW);
    digitalWrite(ledvermelho, LOW);
    if (millis()-ultimoBlink>= 1000)
    {
      ultimoBlink = millis();
      if (vermelhoLigado) {digitalWrite(ledvermelho, LOW); vermelhoLigado = false;}
      else {digitalWrite(ledvermelho, HIGH); vermelhoLigado = true;}
    }
  break;
}

lcd.setCursor(0,2);
lcd.print("Temperatura Ambiente");
lcd.setCursor(6,3);
lcd.print(sensors.getTempCByIndex(1));//
lcd.print( " C " );
}

EDIT:
Agora é que está certo.
« Última modificação: 19 de Agosto de 2012, 03:42 por Pedrock »