Duş alırken suya açtığınızda suyun sıcaklığının artıp artmadığını bu sensör projesi ile takip edebilirsiniz. Böylece soğuk su yada çok sıcak su olduğunu canınız yanmadan anlayabilirsiniz.Proje arduino ile yapılmış. Analog bir giriş kolay bir şekilde kullanılarak ledlerin yanmasını sağlıyor.

Bakır plaketi devreye breadboard haricinde kurmak isterseniz kullanabilirsiniz. PCB dosyaları yazının en alt kısmına eklendi. Sensörü direk suyla temas ettirmeniz daha iyi olacaktır. Suyun sıcaklığını kolaycan anlamanıza yardımcı olacaktır. Arduino boardunuzun suyla temas etmemesine dikkat edin.

su sıcaklığı1 Arduino UNO

7 kırmızı led

3 yeşil led

10 220ohms direnç

1 9 volts pil

1 bakır plaketi

1 sıcaklık sensörü tmp36 yada lm35

1 10kohms potansiyometre

F0I57KXHGH6JNJR.MEDIUM

Duş başlığına resimde ki gibi monte edebilirsiniz.

FW4B1VBHGH6JNJJ.MEDIUM (1)

PCB Dosyası http://www.bioespin.com/uploads/1/6/8/3/16838648/_medidor_de_temperatra_para_regadera_etch_copper_bottom.pdf
/***********************************************************************************/
//Declare the potencimeter and the temperature sensor pins
const int potenciometro= A1;
const int Temperatura= 0;

//declare each led pin
const int led1= 9;
const int led2= 8;
const int led3= 7;
const int led4= 6;
const int led5= 5;
const int led6= 4;
const int led7= 3;
const int led8= 2;
const int led9= 1;
const int led10= 0;

//Declare the variables for the temp regulation
int pot_regulador= 0;
int ajuste_de_temp= 0;

//declare leds as outputs
void setup() {

pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led8, OUTPUT);
pinMode(led9, OUTPUT);
pinMode(led10, OUTPUT);

}

//main program

void loop() {

//read voltage from the temp sensor and transform to celsius
int reading = analogRead(Temperatura);
float voltage = reading * 5.0;
voltage /= 1024.0;
float TemperaturaC = (voltage - 0.5) * 100 ;

//This part if for regulating the temperature
//in this program we divide the value of the potenciometer by 30 to have 30 degrees of regulation
//if you divide by 100 you have 10 degrees of regulation
// and divided by 50 you get 20 degrees of regulation
//the values are only aproximate they are not exact

pot_regulador=analogRead(potenciometro);
ajuste_de_temp=pot_regulador/30;
delay(50);

//the temperature is read and the leds light up for the temperature that is measuring

if(TemperaturaC<(10-ajuste_de_temp)){ digitalWrite(led1, HIGH); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); digitalWrite(led5, LOW); digitalWrite(led6, LOW); digitalWrite(led7, LOW); digitalWrite(led8, LOW); digitalWrite(led9, LOW); digitalWrite(led10, LOW); } else if(TemperaturaC<(20-ajuste_de_temp) && TemperaturaC>(10-ajuste_de_temp)){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
}
else if(TemperaturaC<(30-ajuste_de_temp) && TemperaturaC>(20-ajuste_de_temp)){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
}
else if(TemperaturaC<(40-ajuste_de_temp) && TemperaturaC>(30-ajuste_de_temp)){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
}
else if(TemperaturaC<(50-ajuste_de_temp) && TemperaturaC>(40-ajuste_de_temp)){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
}
else if(TemperaturaC<(60-ajuste_de_temp) && TemperaturaC>(50-ajuste_de_temp)){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
}
else if(TemperaturaC<(70-ajuste_de_temp) && TemperaturaC>(60-ajuste_de_temp)){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
}
else if(TemperaturaC<(80-ajuste_de_temp) && TemperaturaC>(70-ajuste_de_temp)){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led8, HIGH);
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
}
else if(TemperaturaC<(90-ajuste_de_temp) && TemperaturaC>(80-ajuste_de_temp)){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led8, HIGH);
digitalWrite(led9, HIGH);
digitalWrite(led10, LOW);
}
else if(TemperaturaC<(100-ajuste_de_temp) && TemperaturaC>(90-ajuste_de_temp)){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led8, HIGH);
digitalWrite(led9, HIGH);
digitalWrite(led10, HIGH);
}
}
/****************************************************************************************/

1 Yorum

osman için bir cevap yazın İptal

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz