Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
et:arduino:sensorss:project2 [2017/04/17 14:31] raivo.sellet:arduino:sensorss:project2 [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
-~~PB~~+<pagebreak>
 ====== Projekt 4 Andurite lugemine ja väärtuse kuvamine   ====== ====== Projekt 4 Andurite lugemine ja väärtuse kuvamine   ======
  
-Arduino LCD laiendusplaadi peal on andurite ühendamiseks olemas 5 sisend/väljund viiku koos toite ja maa viikudega. See teeb andurite ühendamise väga lihtsaks, sest ei pea eraldi toite viike juurde tekitama, et mitu andurit ühendata.\\+Arduino LCD laiendusplaadi peal on andurite ühendamiseks olemas 5 sisend/väljund viiku koos toiteja maapotentsiaali viikudega. See teeb andurite ühendamise väga lihtsaks, sest ei pea eraldi toite viike juurde tekitama, et mitu andurit ühendata.\\
 Ühendada Arduino LCD laiendusplaadiga vajalikud andurid: Ühendada Arduino LCD laiendusplaadiga vajalikud andurid:
   * Temperatuuriandur: signaal - A1 (kasutada pingejaguriga kaablit)   * Temperatuuriandur: signaal - A1 (kasutada pingejaguriga kaablit)
   * Ultraheli kaugusandur: trigger - A2, echo - A3   * Ultraheli kaugusandur: trigger - A2, echo - A3
-  * Infrapuna lähedusandur: signaal - A4+  * Infrapunalähedusandur: signaal - A4
  
 {{:et:arduino:sensorss:projekt4.jpg?800|}} {{:et:arduino:sensorss:projekt4.jpg?800|}}
  
-===== Näide #4.1 Temperatuuri andur koos matemaatika teegiga ===== +===== Näide #4.1 Temperatuuriandur koos matemaatika teegiga ===== 
-Takistuslikud analoogandurid ühendatakse mikrokontrolleriga selliselt, et see moodustab pingejaguri. Sama käib ka NTC temperatuurianduri kohta, mis on tegelikkuses takisti, mille takistuse suurus sõltub temperatuurist. Antud juhul tuleb lisakas andurile ühendada väline takisti 10 kΩ sisendviigu ja maa vahele. Kui kasutusel on AK06 robotiehitamise komplekt, siis kasutada juba komplektis kaasa tulnud pingejaguri kaablit, millel on takisti juba küljes.\\ +Takistuslikud analoogandurid ühendatakse mikrokontrolleriga selliselt, et see moodustab pingejaguri. Sama käib ka NTC temperatuurianduri kohta. Antud juhul tuleb lisaks andurile ühendada väline takisti 10 kΩ sisendviigu ja maapotentsiaali vahele. AK06 robotiehitamise komplekt puhul kasutada juba komplektis kaasa tulnud pingejaguri kaablit, millel on takisti juba küljes. 
-Temperatuurianduri analoogväärtuse lugemine tehakse peatsüklis, aga töötlemine lisafunktsioonis //Termistor//, kus võetakse sisendiks termistori väärtus ning Seinhart-Hart valemi rakendamisel väljastatakse temperatuur celsiuse skaalas. Analoogsisendi väärtuse võtmine on programmi kompaktsuse mõttes kirjutatud funktsiooni //Termistor// väljakutsumisel parameetri kohale. Saadud temperatuur kirjutatakse ekraanile sama funktsiooni lõpus.+\\ 
 +Temperatuurianduri analoogväärtuse lugemine tehakse peatsüklis, aga töötlemine lisafunktsioonis //Termistor//, kus võetakse sisendiks termistori väärtus ning Seinhart-Hart valemi rakendamisel väljastatakse temperatuur Celsiuse skaalas. Analoogsisendi väärtuse võtmine on programmi kompaktsuse mõttes kirjutatud funktsiooni //Termistor// väljakutsumisel parameetri kohale. Saadud temperatuur kirjutatakse ekraanile sama funktsiooni lõpus.
  
 <code c> <code c>
 /* Nimetus: Näide #4.1  /* Nimetus: Näide #4.1 
-Kirjeldus: Temperatuuri andur koos matemaatika teegiga+Kirjeldus: Temperatuuriandur koos matemaatika teegiga
            Programm kasutab Steinhart-Hart termistori valemit:            Programm kasutab Steinhart-Hart termistori valemit:
            temperatuur kelvinites = 1 / {A + B[ln(R)] + C[ln(R)]^3}            temperatuur kelvinites = 1 / {A + B[ln(R)] + C[ln(R)]^3}
Line 26: Line 27:
 #include <LiquidCrystal.h> #include <LiquidCrystal.h>
  
-LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // LCD objekti tekitamine koos ühendusviikudega+// LCD objekti tekitamine ja ühendusviikude määramine.  
 +LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
 const int andur = A1; // Viik kuhu on ühendatud temperatuuriandur (termistor) const int andur = A1; // Viik kuhu on ühendatud temperatuuriandur (termistor)
  
Line 32: Line 34:
 { {
   lcd.begin(16, 2); // LCD ridade ja veergude määramine vastavalt riistvarale   lcd.begin(16, 2); // LCD ridade ja veergude määramine vastavalt riistvarale
-  lcd.print("Temperatuur"); // Ekraani teksti kuvamine+  lcd.print("Temperatuur"); // Ekraanile teksti kuvamine
   delay (1000); // 1 sekundiline viide enne põhitsüklit    delay (1000); // 1 sekundiline viide enne põhitsüklit 
  
Line 38: Line 40:
 void loop()  void loop() 
 { {
- /* Funktsiooni Termistor() välja kutsumine, mis kasutab + /* Funktsiooni Termistor väljakutsumine, mis kasutab 
     parameetrina temperatuurianduri hetkväärtust */     parameetrina temperatuurianduri hetkväärtust */
   Termistor(analogRead(andur));   Termistor(analogRead(andur));
Line 46: Line 48:
    
 /* Funktsioon konverteerib saadud anduri väärtuse  /* Funktsioon konverteerib saadud anduri väärtuse 
-   temperatuuri väärtuseks celsiuse skaalal */+   temperatuuri väärtuseks Celsiuse skaalas */
 void Termistor(int RawADC)  void Termistor(int RawADC) 
 { {
Line 71: Line 73:
   // Steinhart-Hart termistori valemi kaudu temperatuur kelvinites    // Steinhart-Hart termistori valemi kaudu temperatuur kelvinites 
   Temp = 1/(0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp))* Temp);    Temp = 1/(0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp))* Temp); 
-  Temp = Temp - 273.15; // Konverteerime Kelvinid Celciustesse+  Temp = Temp - 273.15; // Konverteerime Kelvini skaalast Celsiuse skaalasse
   lcd.setCursor(8, 1);   lcd.setCursor(8, 1);
   lcd.print("T=");   lcd.print("T=");
Line 78: Line 80:
  
 </code> </code>
 +<pagebreak>
 ===== Näide #4.2 Kaugus- ja lähedusandurid ===== ===== Näide #4.2 Kaugus- ja lähedusandurid =====
 Kaugust hindavaid andureid on mõõtmismeetodi järgi üldjuhul kahte tüüpi:  Kaugust hindavaid andureid on mõõtmismeetodi järgi üldjuhul kahte tüüpi: 
   * Lähedust tuvastavad andurid - objekt on või ei ole näha.   * Lähedust tuvastavad andurid - objekt on või ei ole näha.
   * Kaugust mõõtvad andurid - tagastab objekt kauguse.   * Kaugust mõõtvad andurid - tagastab objekt kauguse.
-Antud projektis kasutame mõlemast tüübist ühte andurit. Esimesse kategooriasse kuulub infrapuna lähedusandur, mis mõõdab tagasi peegelduva valguse hulka. Konkreetsel anduril on võimalik seadistada tuvastatavat kaugust anduri tundlikkuse reguleerimise abil. Teisest kategooriast on kasutusel ultraheliandur, mis mõõdab heli tagasi peegeldumise aega ja väljastab selle mikrokontrollerile pulsilaiuse kujul. Kuna heli kiirus on enamvähem konstantne, siis saab selle järgi arvutada hinnangulise kauguse. Näiteprogrammis teeb kasutaja eest selle töö ära tarkvarateek. \\ +Antud projektis kasutame mõlemast tüübist ühte andurit. Esimesse kategooriasse kuulub infrapunalähedusandur, mis mõõdab tagasi peegelduva valguse hulka. Teisest kategooriast on kasutusel ultraheli kaugusandur, mis töötab heli peegeldusel.\\ 
-Näiteprogrammi eesmärk on teha anduritega mõõtmisi ja mõõtetulemused kuvada ekraanile. Anduritelt info saamiseks on vaja need kõigepealt seadistada. Infrapuna anduri puhul on vaja ainult ühte digitaalset sisendviiku, milleks pole vaja eraldi seadistustoiminguid teha. Infrapuna anduri oleku lugemine käib tavapärase käsuga //digitalRead()//. Ultraheliandur on natukene keerukam ja lihtsuse mõttes võtame kasutusele teegi //NewPing//, mis nõuab seadistamiseks vaid objekti tekitamist. Objekti olemasolul saab anda andurile käsu kauguse mõõtmiseks sentimeetrites funktsiooniga //ping_cm()//.\\+Näiteprogrammi eesmärk on teha anduritega mõõtmisi ja mõõtetulemused kuvada ekraanile. Anduritelt info saamiseks on vaja need kõigepealt seadistada. Infrapunaanduri puhul on vaja ainult ühte digitaalset sisendviiku, milleks pole vaja eraldi seadistustoiminguid teha. Infrapunaanduri oleku lugemine käib tavapärase käsuga //digitalRead//. Ultraheliandur on keerukam ja lihtsuse mõttes võtame kasutusele teegi //NewPing//, mis nõuab seadistamiseks vaid objekti tekitamist. Objekti olemasolul saab anda andurile käsu kauguse mõõtmiseks käsuga //ping_cm//.\\
 //NewPing// teegi saab alla laadida siit: [[http://playground.arduino.cc/Code/NewPing|]]\\ //NewPing// teegi saab alla laadida siit: [[http://playground.arduino.cc/Code/NewPing|]]\\
-Juhendi teegi lisamiseks leiab siit: [[https://www.arduino.cc/en/guide/libraries#toc4|]]+Abi teegi lisamisel leiab tarkvara peatükist ja veebilehelt siit: [[https://www.arduino.cc/en/guide/libraries#toc4|]]
  
 <code c> <code c>
Line 97: Line 99:
 // LCD ekraani funktsioone sisaldav teek // LCD ekraani funktsioone sisaldav teek
 #include <LiquidCrystal.h>  #include <LiquidCrystal.h> 
-// Ultraheli anduri funktsioone sisaldav teek+// Ultrahelianduri funktsioone sisaldav teek
 #include <NewPing.h>  #include <NewPing.h> 
    
Line 128: Line 130:
 void loop()  void loop() 
 { {
-  // Ultrahelianduri kaguse mõõtmine sentimeetrites ja muutujasse salvestamine+  // Ultrahelianduriga kaguse mõõtmine sentimeetrites ja muutujasse salvestamine
   ultraheliKaugus = sonar.ping_cm();   ultraheliKaugus = sonar.ping_cm();
    
-  // Digitaalse lähedusanduri väärtuse lugemine ja muutujasse salvestamine+  // Lähedusanduri väärtuse lugemine ja muutujasse salvestamine
   infrapunaNaebObjekti = digitalRead(infrapunaLahedusandur);    infrapunaNaebObjekti = digitalRead(infrapunaLahedusandur); 
    
-  // Kursori esimesele reale nihutamine, tähemärgile 9+  // Kursori esimesele reale ja tähemärgile 9 nihutamine
   lcd.setCursor(9, 0);   lcd.setCursor(9, 0);
    
Line 144: Line 146:
   lcd.print("   ");    lcd.print("   "); 
    
-  // Kursori teisele reale nihutamine, tähemärgile 9+  // Kursori teisele reale ja tähemärgile 9 nihutamine
   lcd.setCursor(9, 1);    lcd.setCursor(9, 1); 
    
-  // Kui infrapuna lähedusanduri väljund on kõrge siis kirjuta "ei"+  // Kui infrapunalähedusanduri väljund on kõrgesiis kirjuta ekraanile "ei"
   if(infrapunaNaebObjekti == 1) lcd.print("ei ");    if(infrapunaNaebObjekti == 1) lcd.print("ei "); 
    
-  // Kui infrapuna lähedusanduri väljund on madal siis kirjuta "jah"+  // Kui infrapunalähedusanduri väljund on madalsiis kirjuta ekraanile "jah"
   else lcd.print("jah");    else lcd.print("jah"); 
    
et/arduino/sensorss/project2.1492439474.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0