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 30229 vezes)

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

Offline Bony

  • Mini Robot
  • *
  • Mensagens: 397
Re: Sensor de temperatura
« Responder #60 em: 19 de Agosto de 2012, 23:51 »
Está quase. agora ja passa para o vermelho a piscar o problema é que o led amarelo continua em simultaneo acesso :|

Offline Bony

  • Mini Robot
  • *
  • Mensagens: 397
Re: Sensor de temperatura
« Responder #61 em: 19 de Agosto de 2012, 23:55 »
Já descobri :D


Offline Pedrock

  • Mini Robot
  • *
  • Mensagens: 279
Re: Sensor de temperatura
« Responder #62 em: 20 de Agosto de 2012, 00:46 »
Pois, tinha um erro simples...
Deixo aqui a versão corrigida para referência futura:
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(ledamarelo, 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 " );
}

Offline Bony

  • Mini Robot
  • *
  • Mensagens: 397
Re: Sensor de temperatura
« Responder #63 em: 20 de Agosto de 2012, 02:16 »
Este projecto comecou meramente por fazer um sensor de temperatura para o aquario com display´s de 7 segmentos, fui pesquisando a coisa mesmo a fundo até que acabou nisto! Nao era para ficar assim como mostro nas fotos abaixo, mas na altura a CNC onde ia mandar fazer isto pifou e acabou por ficar assim, primeiramente até era para ficar numa caixinha e só se via os led´s e o display mais nada, ficou mais feio é verdade mas o objectivo está lá :)

Material:

1 x Arduino
1 x LCD Display 16x4 (salvo erro)
2 x Sensor DS18b20
1 x Led Verde
1 x Led Amarelo
1 x Led Vermelho
1 x Potenciometro
2 x Resistências de 4K7
2 x Butoes ( se quiseres)

No display ira dizer a temperatura da agua do aquario e a temperatura ambiente da divisao, neste caso da sala, aproveitei ja que ia fazer um para aquario adicionei mais outro sensor e para me dizer a temperatura da sala.
O sensor como podem ver no video foi isolado para poder ser aprova de agua, apesar de já os haver feitos isolados nao me foi possivel na altura comprar um, entao decidi eu mesmo fazer um e isolado, para isso eu fiz o seguinte:
- 1º - do sensor saem 3 fios e como é obvio nao se podem tocar para tal meti fita isoladora em cada um.
- 2º - Seguidamente meti Plástico Termo-Retractil como ele custou a entrar, isto é entrou forcado iria juntar os fios do sensor dai ter feito o passo 1.
- 3º - Mesmo assim achei por bem revestir o sensor com cola quente, e fim do processo.

Seguidamente foi ligar o respectivo arduino potenciometro ao LCD, e para isto segui este esquema:



De seguinte foi ligar os sensores ao arduino e segui este esquema:



Sao 2 sensores mas ambos vao ligar á mesma entrada do arduino, cada sensor tem um "numero proprio associado" (e foi aqui a que as coisas se comecaram a complicar a nivel de programação),  o arduino consegue destingui-los aos dois por esse numero mesmo ligados há mesma entrada.

Código: [Seleccione]


#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>

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

#define ledverde 6 // Led verde ligado ao pin 6
#define ledamarelo 7 // Led Amarelo ligado ao pin 7
#define ledvermelho 9 // Led Vermelho ligado ao pin 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) 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(ledamarelo, LOW);
    if (millis()-ultimoBlink>= 500)
    {
      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 " );
}


Situação para este aquario:
Quando a temperatura esta boa ira acender o led verde ( entre 26ºC a 28ºC)
Quando a temperatura comeca a ficar perigosa para os peixes e nao só, acende o led amarelo ( entre 25ºC a 26ºC)
Todos os outros valores ira ficar o led vermelho a piscar ( temperaturas <=24 e temperaturas >28ºC)

acho que nao me esqueci de nada.

Deixo aqui tambem um link muito util do user engenhocas4you:

http://engenhocas4you.wordpress.com/2011/12/04/arduino-aula-5-sensor-temperatura-ds18b20-lcd/

Entretanto segue um video e fotos do bixo:

Frente



traz



O video:



E pronto é isto !!


« Última modificação: 20 de Agosto de 2012, 22:34 por Bony »

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 #64 em: 20 de Agosto de 2012, 20:07 »
Ficou fixe! parabéns!  8)

Offline Bony

  • Mini Robot
  • *
  • Mensagens: 397
Re: Sensor de temperatura
« Responder #65 em: 20 de Agosto de 2012, 22:32 »
Obrigadissimo Hugo :)

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 #66 em: 20 de Agosto de 2012, 22:34 »
Obrigadissimo Hugo :)
ja agora, mostra la o teu aquario! k "tubaroes" tens em casa?!  8)

Offline Sérgio_Sena

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.649
    • Electronic Gear for Musicians
Re: Sensor de temperatura
« Responder #67 em: 21 de Agosto de 2012, 09:10 »
Este projecto comecou meramente por fazer um sensor de temperatura para o aquario com display´s de 7 segmentos, fui pesquisando a coisa mesmo a fundo até que acabou nisto! Nao era para ficar assim como mostro nas fotos abaixo, mas na altura a CNC onde ia mandar fazer isto pifou e acabou por ficar assim, primeiramente até era para ficar numa caixinha e só se via os led´s e o display mais nada, ficou mais feio é verdade mas o objectivo está lá :)


Desafio-te a fazer o mesmo projecto, sem usar Arduino!

Uma verdadeira aventura de aprendizagem e extremamente útil para o teu desenvolvimento.

Offline Pedrock

  • Mini Robot
  • *
  • Mensagens: 279
Re: Sensor de temperatura
« Responder #68 em: 21 de Agosto de 2012, 11:38 »
Quando dizes sem Arduino queres dizer sem microcontrolador ou apenas sem Arduino?

Offline Sérgio_Sena

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.649
    • Electronic Gear for Musicians
Re: Sensor de temperatura
« Responder #69 em: 21 de Agosto de 2012, 12:28 »
Quando dizes sem Arduino queres dizer sem microcontrolador ou apenas sem Arduino?


Sem usar o Arduino.

Com microcontrolador puro e duro.

Offline Pedrock

  • Mini Robot
  • *
  • Mensagens: 279
Re: Sensor de temperatura
« Responder #70 em: 21 de Agosto de 2012, 13:40 »
Quando dizes sem Arduino queres dizer sem microcontrolador ou apenas sem Arduino?


Sem usar o Arduino.

Com microcontrolador puro e duro.
Pode-se usar um atmega ou até um attiny se ele não quiser usar o LCD, e programar com o mesmo código do arduino. O arduino até pode ser usado como ISP para programar o microcontrolador. Tem a vantagem de não ter que ter o arduino sempre lá metido e consome menos energia.
Por exemple o ATTiny85 pode ser alimentado entre 1.8 - 5.5V, por isso não precisa regulador.
Consome apenas 300 ?A a 1 MHz, 1.8V. Não diz no datasheet quanto a 8Mhz ou 16Mhz (com cristal externo), mas não deve ser muito. O arduino consome entre 40mA - 50mA sem sensores ou actuadores. Faz muita diferença
Existe um tutorial sobre isso aqui:
http://hlt.media.mit.edu/?p=1695

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.201
Re: Sensor de temperatura
« Responder #71 em: 21 de Agosto de 2012, 13:53 »
Gostei :)

Parabéns pelo projecto, bons "detalhes" e funcionalidade.

Offline Sérgio_Sena

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.649
    • Electronic Gear for Musicians
Re: Sensor de temperatura
« Responder #72 em: 21 de Agosto de 2012, 19:27 »
Quando dizes sem Arduino queres dizer sem microcontrolador ou apenas sem Arduino?


Sem usar o Arduino.

Com microcontrolador puro e duro.
Pode-se usar um atmega ou até um attiny se ele não quiser usar o LCD, e programar com o mesmo código do arduino. O arduino até pode ser usado como ISP para programar o microcontrolador. Tem a vantagem de não ter que ter o arduino sempre lá metido e consome menos energia.
Por exemple o ATTiny85 pode ser alimentado entre 1.8 - 5.5V, por isso não precisa regulador.
Consome apenas 300 ?A a 1 MHz, 1.8V. Não diz no datasheet quanto a 8Mhz ou 16Mhz (com cristal externo), mas não deve ser muito. O arduino consome entre 40mA - 50mA sem sensores ou actuadores. Faz muita diferença
Existe um tutorial sobre isso aqui:
http://hlt.media.mit.edu/?p=1695


Esquece o Arduino. Faz de conta que ele não existe. Não uses nada que seja ligado ao Arduino.

Agarra num micro limpo e no datasheet.
Vais descobrir um mundo novo.



Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.201
Re: Sensor de temperatura
« Responder #73 em: 21 de Agosto de 2012, 23:29 »
Esquece o Arduino. Faz de conta que ele não existe. Não uses nada que seja ligado ao Arduino.

Agarra num micro limpo e no datasheet.
Vais descobrir um mundo novo.

LOL existirá vida além do arduino ?  ::)

Offline Sérgio_Sena

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.649
    • Electronic Gear for Musicians
Re: Sensor de temperatura
« Responder #74 em: 21 de Agosto de 2012, 23:33 »
Esquece o Arduino. Faz de conta que ele não existe. Não uses nada que seja ligado ao Arduino.

Agarra num micro limpo e no datasheet.
Vais descobrir um mundo novo.

LOL existirá vida além do arduino ?  ::)



medo... muito medo....   ;D LOL