Avtor: mag. Vladimir Mitrović
E-pošta: vmitrovic12@gmail.com
2019_278_45
Igralna palica iz preteklega nadaljevanja (modul KY-023) ima dve vrsti izhodov: analogne (VRx in VRy) in digitalni, SW. V shemi s slike 92 smo izkoristili enega od analognih izhodov, VRy, in ga vezali z analognim vhodom Arduino UNO ploščice, “A0”. Na shemi je tudi prikazano kako je digitalni izhod modula možno vezati z digitalnim vhodom “2” Arduino UNO ploščice. Vendar bi takšno vezje bilo brez učinka, ker ne bi imelo programske podpore. V tem nadaljevanju bomo spoznali module, ki imajo tako analogni kot tudi digitalni izhod. Zato bomo oba morali povezati z Arduino ploščico in napisati ustrezen program za njuno preverjanje.
Pregled modulov z analognimi in digitalnimi izhodi
Vsi moduli iz te skupine se nahajajo na ploščici s štirimi priključki, katerih oznake so “DO”, “+”, “G” in “AO” (razpored priključkov se lahko razlikuje od prikazanega na slikah!). Priključek “G” se veže na maso, oziroma GND priključek Arduino ploščice, medtem ko se priključek “+” veže na 5 V. “AO” je analogni izhod ki, odvisno od vgrajenega senzorja in od njegove trenutne pobude, zavzame vrednosti med 0 in 5 V. Digitalni izhod “DO” zavzame napetostne nivoje od 0 V ali 5 V, oziroma logični stanji “0” ali “1”.
Ta vsebina je samo za naročnike
Za razliko od večine prej obdelanih modulov je modul iz te skupine nujno vezati na napetost napajanja, ker poleg senzorja vsebuje tudi elektronsko vezje z integriranim vezjem LM393. Vezja na vseh modulih so enaka in njihov princip dela bomo pojasnili na primeru modula KY-028.
KY-028, temperaturni senzor s termistorjem (Temperature Sensor module – Thermistor, slika 94a)
Modul je sestavljen iz temperaturnega senzorja S (NTC upor), elektronskega vezja z integriranim vezjem IC1 (dvojni komparator LM393) in dveh LEDic. Ker je upornost NTC upora temperaturno odvisna, bo tudi napetost izhodnega priključka “AO” odvisna od trenutne temperature. V tem delu je modul zelo podoben prej analiziranem modulu KY-013; edina važna razlika je trimer upor VR1, s katerim menjamo mirovni tok senzorja in s tem vplivamo na občutljivost vezja.
Napetostni delilnik z upori R2 in R6 postavlja referenčno napetost “+” vhoda obeh komparatorjev na 2,5 V. Dokler je napetost analognega izhoda višja od 2,5 V, bo izhod komparatorja IC1a in digitalnega izhoda “DO” postavljen na 0 V (logična “0”), izhod komparatorja IC1b pa bo 5 V in LEDica L2 ne bo svetila. Ko se napetost analognega izhoda spusti pod 2,5 V, bosta oba komparatorja spremenila stanje: napetost digitalnega izhoda bo skočila na 5 V (logična “1”), LEDica L2 bo zasvetila.
Iz opisa lahko zaključimo, da je KY-028 modul narejen kot samostojna naprava, ki bo funkcionirala tudi, če je ne povežemo z mikrokontrolerjem – dovolj je povezati napetost napajanja in nastaviti VR1, pa se bo LEDica L2 vklopila, ko temperatura okolice zraste nad nastavljeno vrednost. Npr., če je upornost trimer potenciometra nastavljena na 8 kΩ, bo vezje zamenjalo stanje, ko temperatura zraste nad 25 °C. Druga LEDica L1 signalizira, da je modul vezan na napajalno napetost in nima aktivne vloge pri delovanju vezja.
Čeprav modul deluje samostojno, se bo njegova funkcionalnost povečala, če ga povežemo z mikrokontrolerjem. Če merimo napetost analognega izhoda “AO”, ki je odvisna od temperature in se postopno znižuje z njeno rastjo, lahko določimo temperaturo okolice. Odvisnost napetosti od temperature ni linearna, je pa poznan algoritem za preračun, ki ga moramo samo “vgraditi” v naš program. Logično stanje digitalnega izhoda “DO” signalizira razmerje temperature proti nastavljeni vrednosti: “0” pomeni, da je temperatura pod, “1” pa to, da je nad nastavljenim nivojem.
KY-026, detektor plamena (Flame-sensor module, slika 94b)
Modul je sestavljen iz detektorja plamena S, elektronskega vezja z integriranim vezjem IC1 in dveh LEDic. Detektor reagira na svetlobo infrardečega spektra, ki ga seva odprt plamen. Vezje je identično tistemu, ki je vgrajeno v modul KY-028 in deluje na isti način. Napetost analognega izhoda “AO” se zmanjšuje z rastjo pobude detektorja in ko pobuda postane večja od nivoja, ki ga nastavimo s trimerjem VR1 (s trimerjem nastavljamo občutljivost vezja), se bo vklopila LEDica L2, digitalni izhod “DO” pa se bo postavil v stanje “1”.
Modul ne omogoča natančnega merjenja intenzivnosti infrardečega sevanja, vendar pa jasno prikazuje relativno razmerje v intenziteti. Delo detektorja lahko preverimo s približevanjem in oddaljevanjem prižgane sveče ali vžigalice. Ker večina daljinskih upravljalnikov uporablja infrardečo svetlobo za prenos informacije, delovanje vezja in tudi samega daljinskega upravljalnika lahko preverimo, če modul in daljinski upravljalnik postavimo na oddaljenost do 50 cm (maksimalna oddaljenost je odvisna od položaja trimerja VR1 in jakosti vgrajene infrardeče svetlobe, ki jo oddaja daljinski upravljalnik). S pritiskom na eno od tipk daljinskega upravljalnika bo LEDica L2 pričela utripati, napetost digitalnega izhoda “DO” pa bo menjala logični stanji.
KY-036, detektor dotika (Metal-touch sensor module, slika 94c)
Modul je sestavljen iz detektorja dotika S, elektronskega vezja z integriranim vezjem IC1 in dveh LEDic. Detektor je tranzistor KSP13, ki ima veliko tokovno ojačenje (Darlington) ali podoben. Njegov priključek baze je zvit okoli plastičnega ohišja tranzistorja in tvori neke vrste anteno. Če se dotaknemo s prstom ali kovinskim predmetom baze tranzistorja, bo pričel prevajati in bo aktiviral elektronsko vezje. Vezje je identično tistemu, ki je vgrajeno v modul KY-028 in funkcionira približno na isti način: takoj, ko tranzistor prične prevajati se bo vklopila LEDica L2.
Pobuda pa je drugačna in zato bo tudi rezultat drugačen, kot pri modulu KY-026 ali KY-028. Če opazujemo signale na izhodnih priključkih “AO” in “DO” z osciloskopom, bomo opazili naslednje:
medtem ko senzor ni aktiviran, na “AO” izmerimo napetost, ki je nekaj nižja od 5 V, medtem ko je na “DO” 0 V;
pri aktiviranem senzorju izhodi ne prevzamejo stabilnega stanja, pač pa se na njih pojavljajo impulzi frekvence 50 Hz.
Te impulzi so posledica signala, ki je aktiviral tranzistorski senzor. Naše telo pridobiva različne električne signale in motnje iz okolice, od katerih je najbolj izrazita omrežna frekvenca. Te signali so dovolj močni, da aktivirajo senzor, ko se ga dotaknemo s prstom, vendar njihova intenzivnost ni stalna, pač pa se menja v ritmu omrežne frekvence. Zato bo tranzistor izmenično prevajal tok in bo zaprt, kar bo povzročilo spreminjanje izhodnih stanj modula v istem ritmu.
Pri tem modulu priključka “AO” in “DO” nimata vloge analognega oziroma digitalnega izhoda, pač pa sta medsebojno komplementarna. Brez pobude, bo “AO” v stanju “1”, “DO” pa v stanju “0”. Ko želimo krmiliti senzor, se bodo na “AO” pojavili negativni, na “DO” pa pozitivni impulzi. LEDica L2 se tudi izmenično vklaplja in izklaplja, vendar je hitrost spremembe stanja dovolj visoka, da se nam zdi, kot da trajno sveti. Če povežemo izhodne priključke modula z mikrokontrolerjem, bo le-ta z lahkoto detektiral impulze, zato je to treba upoštevati pri pisanju programa.
Z malo modifikacijo vezja lahko pozitivne impulze na “DO” izhodu pretvorimo v stabilno stanje “1”. Namreč, če med priključka “AO” in “G” vežemo kondenzator ustrezne kapacitivnosti, se bo pri aktiviranem senzorju izmenično polnil preko trimerja VR1 in praznil preko upora R3 in tranzistorja S, zato se bo na njemu pojavila žagasta napetost. Amplituda te napetosti je odvisna od kapacitivnosti kondenzatorja in trenutno nastavljeni vrednosti upornosti na trimerju VR1: kapacitivnost kondenzatorja mora biti dovolj velika, da napetost na kondenzatorju in “-” vhodu komparatorja IC1a nikoli ne zraste nad 2,5 V, pa tudi dovolj majhna, da bi odziv vezja na spremembo bil dovolj hiter. Če je VR1 nastavljen na upornost večjo od 50 kΩ, bo optimalna kapacitivnost kondenzatorja okoli 1 µF, manjša upornost bo zahtevala kondenzator večje kapacitivnosti.
S to modifikacijo smo obnašanje modula izenačili z obnašanjem modula KY-026 in KY-028: medtem ko senzor ni aktiviran, “DO” = “0”, ko ga aktiviramo, “DO” = “1”. Signal na analognem izhodu “AO” ne vsebuje nobene informacije.
KY-024, detektor magnetnega polja (Hall sensor, slika 94d)
Modul je sestavljen iz detektorja jakosti magnetnega polja S (integrirano vezje SS49E), elektronskega vezja s integriranim vezjem IC1 in dvema LEDicama. SS49E smo že spoznali pri opisu modula KY-035: gre za aktivni merilnik jakosti magnetne indukcije, od katere je izhodna napetost linearno odvisna. V odsotnosti magnetnega polja izhodna napetost senzorja znaša 2,5 V in ta vrednost se lahko malo “raztegne” z nastavitvijo trimerja VR1. Če želimo spremembe v jakosti magnetnega polja odčitati s pomočjo LEDice L2, je VR1 potrebno nastaviti tako, da L2 slabo sveti: odvisno od smeri magnetnega polja, vsaka sprememba v jakosti se bo izrazila z ugasnjeno LEDico, ali pa bo zasvetila na polno.
Ko je LEDica L2 ugasnjena, bo digitalni izhod “DO” v stanju “0”. Ko L2 sveti na polno, bo “DO” v stanju “1”. Kadar bo intenziteta LEDice L2 slaba ali če se menja, bo “DO” nestabilen (logični stanji se bosta hitro menjali).
Analogni izhod “AO” je povezan na izhodni priključek senzorja in njegova napetost je proporcionalna jakosti in smeri magnetnega polja. Po specifikaciji proizvajalca občutljivost čipa znaša tipično 14 V/T, izhodna napetost pri 0 mT znaša 2,5 V. Dovoljen obseg izhodne napetosti je od 1 V do 4 V, kar pokriva merilno področje približno ±100 mT. Tolerance senzorja so dovolj široke, ±25%, zato brez kalibriranja ni ustrezen za natančnejše meritve. Na točnost negativno vpliva tudi VR1; če želimo uporabiti analogni izhod, je priporočljivo, da je nastavljen na čim višjo upornost.
KY-025, detektor magnetnega polja z reed relejem (Reed module, slika 94e)
Modul je sestavljen iz detektorja magnetnega polja S (reed rele), elektronskega vezja z integriranim vezjem IC1 in dveh LEDic. V tem modulu sta oba izhoda, “AO” in “DO”, digitalna. Ko kontakti releja niso sklenjeni, bo izhod “AO” v stanju “1”, izhod “DO” v stanju “0”, LEDica L2 pa bo biti ugasnjena. Ko senzor postavimo v magnetno polje dovoljšnje jakosti, se bosta njegova kontakta sklenili, izhod “AO” bo prešel v stanje “0”, DO” pa v stanje “1”, medtem ko se bo L2 vklopila. Trimer VR1 nima vpliva na delo vezja dokler ima upornost večjo od 150 Ω (priporoča se, da je VR1 nastavljen na upornost večjo od 5 kΩ).
KY-037, senzor jakosti zvoka (Microphone sensor module, high sensitivity), slika 94f zgoraj)
in
KY-038, senzor jakosti zvoka (Microphone sound sensor module), slika 94f spodaj)
Modula KY-037 in KY-038 sta identična, razlika je samo v vrsti mikrofona, ki ga uporabljata. Razen mikrofona modula vsebujeta elektronsko vezje z integriranim vezjem IC1 in dve LEDici.
Tok skozi mikrofone in s tem tudi delovna napetost mikrofona ter enosmerna napetost analognega izhoda “AO”, so določeni z upornostjo trimerja VR1: ko je vrednost upornosti 10 kΩ, bo delovna napetost mikrofona znašala okoli 2,5 V. Čeprav bi se iz imena modula dalo zaključiti drugače, sta oba modula enako občutljiva in dajeta izmenično izhodno napetost amplitude okoli 0,5 Vpp pri umirjenem govoru v neposredni bližini mikrofona. Ta izmenična napetost je superponirana na enosmerno delovno napetost mikrofona, ki je v izvorno prisotna na izhodu “AO”.
Stanje digitalnega izhoda “DO” je odvisno od trenutne vrednosti napetosti na izhodu mikrofona. Če se VR1 nastavi tako, da se je L2 ravno ugasnila (napetost na mikrofonu, oziroma napetost “-” vhoda IC1a je samo malo višja od 2,5 V), bodo glasni zvoki proizvedli izmenični signal, katerega negativni vrhovi bodo na trenutke menjali stanje komparatorja IC1a: na njegovem izhodu se bo pojavil niz pozitivnih impulzov različne širine, L2 bo se vklopila kot indikacija preglasnega zvoka. Nivo glasnosti pri kateri se to dogaja se lahko nastavi s spremembo upornosti trimerja VR1, vendar je področje nastavljanja precej ozko.
Pri mikrokontrolerski obdelavi signala z digitalnega izhoda “DO” je potrebno vedeti, da na njemu v aktiviranem stanju ni stabilna logična “1”, pač pa niz pozitivnih impulzov različnega trajanja in spremenljive frekvence. Impulze bi lahko “udomačili” z vezjem, kot ga kaže slika 95 (vrednosti navedene na sliki so približne in se lahko popravijo skladno z zahtevami). Vezje pretvarja sled kratkotrajnih pozitivnih impulzov, ki jih je povzročil plosk z rokama, krik ali izgovorjena beseda v enkraten pozitivni impulz. Slika je idealizirana in odziv vezja ni tako čist kakor je prikazano: naraščajoči rob je precej strm in “čist”, je pa spuščajoči počasnejši in “nazobčan”; priporočam, da se za detekcijo tako obdelanih impulzov uporablja ukaz Debounce.
Osnovni Bascom-AVR program za preverjanje modula z analognim in digitalnim izhodom (37in1_prog_3.bas)
Za preverjanje dela modula z analognimi in digitalnimi izhodi je napisan Bascom-AVR program 37in1_prog_3.bas. Program vsebuje rutine iz programov, ki smo jih predstavili v preteklem nadaljevanju in jih tukaj ne bomo ponovno analizirali. Sam modul se veže na Arduino UNO glede na shemo na sliki 96: digitalni izhod modula “DO” je povezan na digitalni vhod “2”, analogni izhod “AO” pa na analogni vhod “A0” Arduino UNO ploščice. Na sliki je na Arduino UNO vezan KY-028 modul (njegova shema je prikazana poenostavljeno), na isti način se lahko veže tudi kateri koli drugi modul iz te skupine.
Kot indikator stanja se uporabljajo LEDice vezane na izhode “~11”, “12” in “13”. Modra LEDica je vezana na “~13” in z intenzivnostjo svetilnosti vizualizira napetost na analognem vhodu “A0”: LEDica sveti bolj intenzivno čim višja je vhodna napetost. Če je vhodna napetost 0 V, je LEDica ugasnjena, če je vhodna napetost 5 V, LEDica sveti s polno svetilnostjo.
Rdeča in zelena LEDica vizualizirata logično stanje na vhodnem pinu “2”: program preslikuje stanje vhodnega pina na izhodni pin “12”, medtem ko je stanje izhodnega pina “13” vedno komplementarno stanju vhodnega pina “2”. Zaradi tega bo rdeča LEDica svetila medtem ko je pin “2” v stanju “0”. Zelena bo svetila, ko je pin “2” v stanju “1”.
Algoritem za krmiljenje vseh treh LEDic je identičen kot v programih 37in1_prog_1.bas in 37in1_prog_2.bas. Tukaj se kot problem pokaže to, da sočasno uporabljamo analogni in digitalni vhod, zato bo poleg modre vedno svetila rdeča ali zelena LEDica. Če uporabimo tribarvno LEDico, kot je tista iz modula KY-016 s slike 96, bosta rdeča in zelena popolnoma “zadušili” fine spremembe intenzivnosti modre LEDice, in z njeno pomočjo ne bomo mogli spremljati spremembe napetosti na analognem vhodu. Ena rešitev tega problema je ta, da namesto RGB diode za indikacijo stanja uporabimo tri ločene LEDice. Druga rešitev je, da se ne odločimo uporabiti rdečega in zelenega segmenta. Lahko ju izključimo fizično tako, da ju odspajkamo s priključkov “12” in “13”, ali pač programsko, če med prvo sekundo po zagonu programa ali reseta pritisnemo tipko S1. V obeh primerih bo svetil samo modri segment LEDice in tako bomo lahko spremljali spremembe njegove intenzivnosti svetenja. Indikacijo stanja digitalnega vhoda “2” nismo izgubili, kar je enostavno spremljati s pomočjo LEDice L2, vgrajene v vse module iz te skupine: LEDica sveti, ko sta “DO” in “2” v stanju “1”.
Poleg indikacije stanja s pomočjo LEDic program tudi pošilja sporočilo osebnem računalniku o vsaki spremembi logičnega stanja na pinu “2” in tudi o spremembi napetosti na pinu “A0” preko serijskega komunikacijskega porta, oziroma preko USB priključka. Ta sporočila so identična sporočilom prikazanim na slikah 90 in 93 iz predhodnega nadaljevanja.
Opomba: program 37in1_prog_3.bas in datoteko Arduino_pins.sub z definicijami Arduino UNO pinov lahko brezplačno dobite na spletni strani revije Svet elektronike.
Barduino-19