This is an old revision of the document!
/* Nimetus: Näide #4.1 Temperatuuri andur koos matemaatika teegiga Kirjeldus: Kasutab Steinhart-Hart termistori valemit: temperatuur kelvinites = 1 / {A + B[ln(R)] + C[ln(R)]^3} kus A = 0.001129148, B = 0.000234125 ja C = 8.76741E-08 Autor: Milan Malesevic and Zoran Stupic Modifikatsioon: Raivo Sell Kuupäev: 15.01.2013/4.06.2014 Versioon: 1.1 */ // Kaasame vajalikud teegid #include <math.h> #include <LiquidCrystal.h> // Initsialiseerime LCD koos vastavate viikude ühendamisega LiquidCrystal lcd(8, 9, 4, 5, 6, 7); int andur = A1; // määrame temperatuurianduri (termistori) sisendviigu void setup() { lcd.begin(16, 2); //Määrame LCD read ja veerud lcd.print("Temperatuur"); // Trükime tervitusteksti delay (1000); } void loop() { Termistor(analogRead(andur)); // Käivitame funktsooni delay(1000); // Ootame 1 sek. lcd.clear(); // Puhastame ekraani vanadest andmetest } void Termistor(int RawADC) { double Temp; long Takistus; // Valem: Takistus = (1024 * JaguriTakisti/ADC) - JaguriTakisti Takistus=((10240000/RawADC) - 10000); //Esimene rida lcd.setCursor(0, 0); lcd.print("AD="); lcd.print(RawADC); //Trükime analoogsisendi väärtuse lcd.setCursor(8, 0); lcd.print("U="); lcd.print(((RawADC*5.0)/1024.0),3); //Trükime pinge väärtuse //Teine rida lcd.setCursor(0, 1); lcd.print("R="); lcd.print(Takistus); //Trükime takistuse väärtuse Temp = log(((10240000/RawADC) - 10000)); Temp = 1/(0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp))* Temp); Temp = Temp - 273.15; // Konverteeri Kelvinid Celciustesse lcd.setCursor(8, 8); lcd.print("T="); lcd.print(Temp); //Trükime temperatuuri väärtuse }
// Reading analog and digital sensors void setup() { // For visualization we can use serial monitor Serial.begin(9600); } void loop() { // Read the input on analog pin 2 and 3: int AnalogSensorValue = analogRead(A2); //Sharp analoog kaugusandur int DigitalSensorValue = digitalRead(A3); //Digtaalne lähedusandur Serial.println(AnalogSensorValue); // Print out the analog value Serial.println(DigitalSensorValue); // Print out the digital value delay(500); // Delay in between readings for readability }
Modifitseerida programmi nii, et potentsiomeetriga määratakse temperatuuri nivoo, mis salvestatakse nupuga programmi mällu ja selle nivoo ületamisel käivitatakse täiturmehhanism (milleks on LED).
Lisaülesanne:
Kombineerida LED-i heleduse programm ja eelnev temperatuuri juhtimise programm, kus LED-i heledus sõltub sellest, kui palju nivootemperatuuri ületati (1 kraad: heledus 25 %, 2 kraadi: heledus 50 %, 3 kraadi: heledus 75 % ja 5 kraadi: heledus 10
Modifitseerida kaugusandurite lugemise programmi nii, et andurite info kuvatakse LCD ekraanile ja ühikuteks on sentimeetrid (+-5cm täpsus). Kui pole võimalust mõõtevahendit kasutada, siis kasutada anduri andmelehe graafikut.