ක්ෂුද්ර පාලක පරිගණක වැඩසටහන්කරණය - Microcontroller Programming 7 කොටස
මීට කලින් ලිපියක දී මම කිව්වා උෂ්ණත්වය අනුව මෝටරයක් on / off කිරීම කරන්නේ කොහොමද කියලා. එම ලිපිය මෙතනින් බලන්න පුළුවන්. නමුත් සමහරවිට ප්රායෝගිකව අපි එම ක්රියාකාරකම කරන්න ගියාම අපිට මෝටරය ක්රියාත්මක නොවෙන්නත් පුළුවන්. හේතුව තරමක විශාල ධාරාවක් එයට අවශ්ය වන නිසා.
ඉතින් මම හිතුවා ඒක කරන්න ඔයාලට බැරිවුණොත් උෂ්ණත්වය අනුව ක්රියාත්මක වෙන තවත් සරල පරිපථයක් ඔයාලට කියලා දෙන්න. මෙතන දි උෂ්ණත්ව සංවේදකය සඳහා මම යොදාගත්තේ LM35 කියන සංවේදකය.
හැබැයි ඉතා වැදගත් දෙයක් කියන්න තියෙනවා. ඔයාලා ගෙන්වන Arduino Kits වල මෙම සංවේදකය නිෂ්පාදනය කරපු පරිසරයට අනුව වැඩකරනවා වෙන්නත් පුළුවන් නොවෙන්නත් පුළුවන්. ඒ නිසා නිවැරදිව පරිපථයෙන් උෂ්ණත්වය ලබාගන්න හොඳ සංවේදකයක් මිල දී ගන්න ඕන. හැබැයි අපි කලින් ලිපියේ සඳහන් කරපු TMP36 සංවේදකයට වඩා මේක ගොඩක් නිරවද්යතාව අතින් ඉහළයි.

මෙය බැලූ බැල්මට ට්රාන්සිස්ටරයක් හා සමාන වන අතර එහි එක් අග්රයකින් පරිපථයට ලබා දෙන (+) වෝල්ටීයතාව ලබා දෙයි. V in ලෙස හඳුන්වා දී ඇත්තේ එයයි.
මැදින් පිහිටි V out නම් අග්රයෙන් මෙම සංවේදකයෙන් පිටතට වෝල්ටීයතාව ලබා දෙන අතර බාහිර පරිසර උෂ්ණත්වය අනුව මෙම වෝල්ටීයතාව වෙනස් වේ.
GND ලෙස දක්වා ඇත්තේ, පරිපථයට ලබා දෙන (-) වෝල්ටීයතාවයි.
ඉහත පරිපථයෙන් කරන්නේ උෂ්ණත්වය සෙල්සියස් අංශක 25ට වැඩි වෙන විට රතු බල්බයත්, උෂ්ණත්වය සෙල්සියස් අංශක 25ට අඩුවන විට කොල බල්බයත් දැල්වීමයි.
මේ පරිපථය සකස්කර ගත්තාට පස්සේ අවශ්ය නම් අපේ උෂ්ණත්ව සංවේදකය හරියට වැඩකරනවා ද කියලා බලන්න ඕන නම්, මේ Arduino Sketch එක යොදාගන්න බලන්න.
මේ තියෙන්නේ අපේ පරිපථයට අදාල Arduino Sketch එක.
const int lm35_pin = A2; /* LM35 O/P pin */
void setup() {
Serial.begin(9600);
}
void loop() {
int temp_adc_val;
float temp_val;
temp_adc_val = analogRead(lm35_pin); /* Read Temperature */
temp_val = (temp_adc_val * 4.88); /* Convert adc value to equivalent voltage */
temp_val = (temp_val/10); /* LM35 gives output of 10mv/°C */
Serial.print("Temperature = ");
Serial.print(temp_val);
Serial.print(" Degree Celsius\n");
delay(1000);
}
#define RED 8 // Set RED LED to digital pin 8
#define GREEN 9 // Set
float sensorValue,temp,voltage; // Float data type variable declaration for temp
void setup()
{
pinMode(RED,OUTPUT); // Set the direction of RED Pin
Serial.begin(9600); // Baud Rate Set to Serial Monitor
}
void loop()
{
sensorValue=analogRead(A1); //Reading a sensor analog value and record it in temp variable
voltage=sensorValue*5.0/1023;
temp=(voltage-0.5)*100;
//temp=temp*0.06828125;
Serial.print(temp); //Temp value is print in serial Monitor
Serial.print("^C"); //Celsius symbol print
Serial.println(); //New Line
delay(100); //Delay 100 Milisecond
if(temp>=25) //If temperature more than 25^C
{
digitalWrite(RED,HIGH);
digitalWrite(GREEN,LOW);
delay(1000);
}
else if (temp<25)
{
digitalWrite(GREEN,HIGH);
digitalWrite(RED,LOW);
delay(1000);
}
}
Comments
Post a Comment