Čia matote skirtumus tarp pasirinktos versijos ir esamo dokumento.
Next revision | Previous revision | ||
projektas_nr.7 [2015/10/25 17:50] 193.219.47.27 sukurtas |
projektas_nr.7 [2015/12/02 14:49] (esamas) simonas |
||
---|---|---|---|
Linija 1: | Linija 1: | ||
- | **Projektas Nr. 7. Matuojame temperatūrą – Daviklis TMP36** | + | ====== Projektas Nr. 7. Matuojame temperatūrą – Daviklis TMP36 ====== |
+ | |||
+ | **Ką mes darysime** | ||
+ | Koks sekantis fenomenas, kurį mes matuosime su „Arduino“? Temperatūra. Kad tai įgyvendintume, pasinaudosime sudėtinga IC (integruota grandine) paslėpta pakete identiškai P2N2222AG tranzistoriams. Ji turi tris pinus, įžeminimą, signalą ir +5 voltus, taip pat ja lengva naudotis. Ji išskiria 10 milivoltų kiekvienam šimtalaipsniui signaliniame pine (kad galėtume matuoti temperatūras žemiau nulio, tam yra 500 mV atsvara, pavyzdžiui 25 laipsniai C = 750 mV, 0 laipsnių C = 500mV). Kad galėtume konvertuoti tai iš skaitmeninės vertės į laipsnius, naudosime keletą Arduino matematinių sugebėjimų. Kad galėtume tai parodyti, naudosime vieną iš IDE gana galingų ypatybių, derinimo langą. Išvesime vertę per serijinę jungtį, kad ją rodytų ekrane. Pradėkime. | ||
+ | |||
+ | Viena papildoma pastaba, ši grandinė naudoja „Arduino“ IDE serijinį monitorių. Kad jį atvertume, pirma įkeliame programą, tada spaudžiame mygtuką panašų į kvadratą su antena. | ||
+ | |||
+ | TMP36 lapas: [[http://ardx.org/TMP36]] | ||
+ | |||
+ | **Grandinės dalys** | ||
+ | *CIRC-10Maketinė plokštė x1 | ||
+ | *2 Pin Header x4 | ||
+ | *TMP36 Temperatūros Sensorius x1 | ||
+ | *Laidas x3 | ||
+ | |||
+ | **Grandinės schema** | ||
+ | |||
+ | {{:ardu_pro64.jpg?300|}} | ||
+ | |||
+ | **Grandinės šablonas** | ||
+ | |||
+ | {{:ardu_pro65.jpg?300|}} | ||
+ | |||
+ | **Surinkta grandinė** | ||
+ | |||
+ | {{:ardu_pro66.jpg?600|}} | ||
+ | |||
+ | **Šaltiniai** | ||
+ | [[http://ardx.org/BBLS10|Maketo plokštės šablonas]] | ||
+ | |||
+ | [[http://ardx.org/VIDE10|Surinkimo vaizdo medžiaga]] | ||
+ | |||
+ | |||
+ | **Programos kodas** (nereikia visko rašyti) | ||
+ | Atsisiųsti programos kodą: [[http://ardx.org/CODE10|]] | ||
+ | (nukopijuokite tekstą ir įdėkite jį į tuščią Arduino programavimo langą) | ||
+ | <code> | ||
+ | /*------------------------------------------------------------ | ||
+ | * | „Arduino“ eksperimentavimo pavyzdinis kodas | | ||
+ | * | CIRC-10 .:Temperature :.(TMP36 Temperature Sensor) | | ||
+ | * ------------------------------------------------------- | ||
+ | * | ||
+ | * Paprasta programa išvedanti dabartinę temperatūrą į IDE derinimo langą | ||
+ | * | ||
+ | * Detaliau: http://tinyurl.com/c89tvd | ||
+ | */ | ||
+ | |||
+ | //TMP36 Pin‘ų Kintamieji | ||
+ | int temperaturePin = 0; //analoginis pin‘as TMP36's Vout(sense) | ||
+ | //santykis yra 10 mV / šimtalaipsniui | ||
+ | //(500 mV atsvara) kad galėtų būti rodoma neigiama temperatūra | ||
+ | /* | ||
+ | * setup() – ši funkcija įvykdoma, kai įjungiamas „Arduino“ | ||
+ | * Pajungiama serijinė jungtis su kompiuteriu | ||
+ | */ | ||
+ | void setup() | ||
+ | { | ||
+ | Serial.begin(9600); //Pradedama serijinė jungtis su kompiuteriu | ||
+ | //kad matytume rezultatą, įjungiame serijinį langą | ||
+ | //(mygtukas su pavaizduotu kvadratu su antena) | ||
+ | } | ||
+ | |||
+ | void loop() // vykdyti visą laiką | ||
+ | { | ||
+ | float temperature = getVoltage(temperaturePin); //gauname voltų vertę iš temperatūros sensoriaus | ||
+ | temperature = (temperature - .5) * 100; //keičiame 10 mV per laipsnį su 500 | ||
+ | //mV atsvara | ||
+ | |||
+ | Serial.println(temperature); //įlaipsnius((įtampa - 500mV) kart 100); | ||
+ | //išvedamas rezultatas | ||
+ | delay(1000); //laukia sekundę | ||
+ | } | ||
+ | |||
+ | /* | ||
+ | * getVoltage() – sugrąžina įtampą analoginiame įvedime nustatomame pin‘o | ||
+ | */ | ||
+ | float getVoltage(int pin) { | ||
+ | return (analogRead(pin) * .004882814); //convertuoja nuo 0 iki 1023 skaitmeninės vertės | ||
+ | //nuo 0 iki 5 voltų (kiekvienas 1 lygus ~ 5 milivoltų | ||
+ | } </code> | ||
+ | |||
+ | **Neveikia?** (3 dalykai, kuriuos galite pamėginti) | ||
+ | |||
+ | **Niekas nevyksta** | ||
+ | Ši programa gali parodyti, kad veikia. Kad pamatytumėte rezultatus, privalote įjungti „Arduino“ IDE serijinį langą. (instrukcijos praeitame lange) | ||
+ | |||
+ | **Rodomos nesąmonės** | ||
+ | Tai vyksta, nes serijinis monitorius gauna duomenis greičiu, kurio jis nesitikėjo. Kad tai pataisytumėte, spauskite nuleidžiamą langą rašantį "baud" ir pakeiskite jį į "9600 baud". | ||
+ | |||
+ | **Temperatūra nesikeičia** | ||
+ | Bandykite pirštais sušildyti sensorių arba atšaldyti šaltu oru. | ||
+ | |||
+ | **Padaryti geriau:** | ||
+ | *Rodyti Įtampą | ||
+ | Reikia pakeisti tik vieną eilutę. Sensorius išveda 10 mV per šimtalaipsnį, kad gautume įtampą, keičiame išvedamą rezultatą į getVoltage (). | ||
+ | |||
+ | Ištriname eilutę | ||
+ | |||
+ | <code> temperature= (temperature - .5) * 100 ; </code> | ||
+ | |||
+ | **Kad rodytų farenheitus:** | ||
+ | Tai paprastas pakeitimas, pasitelkiant matematiką, kad pakeistume Celsijus į Farenheitus, naudojime formulę: | ||
+ | |||
+ | <code> ( F = C * 1.8) + 32 ) </code> | ||
+ | |||
+ | Pridėkite eilutę | ||
+ | |||
+ | <code> temperature = (((temperature - .5) * 100)*1.8) + 32; </code> | ||
+ | <code> before Serial.println(temperature); </code> | ||
+ | |||
+ | **Daugiau informacijos:** | ||
+ | Padarykime, kad būtų rodoma daugiau duomenų. Pirma grąžinkime prie originalaus kodo tada pakeiskime: | ||
+ | |||
+ | <code> Serial.println(temperature); ----> Serial.print(temperature); </code> | ||
+ | <code> Serial.println(" degrees centigrade"); </code> | ||
+ | |||
+ | Pakeitimas pirmoje eilutėje reiškia, kad sekantis iš vedimas pasirodys toje pačioje eilutėje, tada pridedame informacinį tekstą ir naują eilutę. | ||
+ | |||
+ | **Keičiame serijinį greitį:** | ||
+ | Jei norite išvesti daug duomenų greitai. Dabar išvedame greičiu 9600 "baud", bet įmanoma greičiau. Kad tai pakeistume, keičiame šią eilutę: | ||
+ | |||
+ | <code> Serial.begin(9600); ----> Serial.begin(115200); </code> | ||
+ | Keiskite 9600 "baud" į 115200 "baud" programavimo lange. Dabar duomenis gaunate 12 kartų greičiau. | ||
[[projektas_nr.8|Kitas projektas. Servo mechanizmas.]] | [[projektas_nr.8|Kitas projektas. Servo mechanizmas.]] | ||
+ | |||
+ | [[arduivadas_projektai|Atgal į projektus]] |