Avtor: mag. Vladimir Mitrović
E-pošta: vmitrovic12@gmail.com
2020_287_44
V kompletu 37-v-1 so ostali le še trije doslej neobravnavani moduli: KY-010, KY-032 in KY-033. Gre za module, ki bi jih lahko razvrstili v kategorijo modulov z digitalnimi izhodi, ker pa gre za nekoliko bolj kompleksne module, ki imajo določene funkcionalnosti, ki jih lahko izkoristijo robotiki, smo se odločili, da jih bomo obravnavali kot posebno skupino.
Na modulu KY-010 je nameščeno “optično stikalo”, element, v katerem sta v istem neprosojnem ohišju vgrajena oddajnik T (LEDica) in sprejemnik R (foto tranzistor). Ohišje ima na sredini med njima utor, prek katerega snop svetlobe iz LEDice pada na foto tranzistor in ga drži v stanju nasičenja. Posledično bo zato napetost na izhodnem priključku “S” blizu 0 V, oziroma v stanju logične ničle. Ko se v utoru med oddajnikom in sprejemnikom pojavi neprosojna ovira, bo foto tranzistor nehal prevajati in izhod “S” bo prešel v stanje logične enice.
Ta vsebina je samo za naročnike
Program 37in1_prog_16.bas
Program 37in1_prog_16.bas je napisan za preverjanje delovanja modula KY-010 v vezju, ki ga prikazuje slika 111b. Program meri frekvenco impulzov na izhodnem priključku “S”, ki jo preračunava v hitrost vrtenja. Recimo, da se v reži med oddajnikom in sprejemnikom nahaja okrogli neprosojni zaslon z eno samo odprtino, ki se vrti s hitrostjo med 15 in 480.000 obrati na minuto.
Najprej preberemo datoteko z definicijami Arduino priključkov
$include "Arduino_pins.sub"
in konfiguriramo vhodni priključek
Config Arduino_pin#2 = Input Arduino_port#2 = 1
Program bo s pomočjo časovnika Timer1 meril trajanje ene periode impulza na vhodnem priključku. Timer1 se konfigurira s faktorjem deljenja (prescale) 1, 8, 64 ali 1024, odvisno pač od tega, kakšno trajanje impulza pričakujemo. Faktor deljenja 1 ustreza frekvencam od 250 Hz do 8 kHz, oziroma hitrostim vrtenja od 2.000 do 480.000 vrtljajev na minuto. Največji faktor deljenja, 1024, ustreza frekvencam od 0,25 Hz do 7,6 Hz, oziroma hitrostim vrtenja od 15 do 456 vrtljajev na minuto. Program samodejno izbira najprimernejše merilno območje na osnovi dveh kriterijev:
- v primeru, da se je časovnik Timer1 med meritvijo trajanja periode iztekel, je treba faktor deljenja povečati,
- če je Timer1 preštel manj kot 2000, je treba faktor deljenja zmanjšati.
Točnost merjenja je odvisna od števila ciklov, ki jih je preštel Timer1 in je toliko boljša, kolikor večje je to število. Spodnja mejna vrednost 2000 je izbrana tako, da se ohrani točnost meritve, ki je boljša od ene promile.
Na splošno pa program deluje takole:
- program čaka padajoči rob vhodnega signala in potem s pomočjo časovnika Timer1 meri čas do naslednjega padajočega roba signala,
- če je vrednost števca časovnika Timer1 nekje med 2000 in 65535, bo program na osnovi te vrednosti izračunal hitrost vrtenja in rezultat poslal na emulator terminala:
If Time_count >= 2000 Then o_min_1 = o_min / Time_count Print "o/min = " ; Fusing(o_min_1 , "#.##")
če je vrednost števca časovnika Timer1 manjša od 2000 ali če je prišlo do prekoračitve (Tifr1.tov1 = 1), bo izbrano naslednje merilno območje (Decr Timer_mode oziroma Incr Timer_mode),
če je mejno območje že izbrano, bo program v emulator terminala poslal sporočilo, da je hitrost vrtenja prevelika (Print “o/min >>”), oziroma premajhna (Print “o/min <<“).
pred vsako novo meritvijo program preveri trenutno vrednost spremenljivke Timer_mode in izbere primernejši faktor deljenja, če je prišlo do spremembe,
da bi zmanjšali gostoto sporočil, ki jih program pošilja emulatorju terminala, program po vsakem uspešnem merjenju počaka približno eno sekundo (po potrebi se ta zakasnitev lahko odstrani),
če je hitrost vrtenja nizka, bo razmak med dvema meritvama oziroma med dvema sporočiloma še večji, saj že samo merjenje traja do 4 sekunde.
KY-033
Senzor za spremljanje (KY-033Tracking Sensor Module, slika 112a)
Na modulu se nahajajo oddajnik T (infrardeča LEDica), sprejemnik D (foto dioda), integrirano vezje LM393 in nekaj uporov. LM393 (uporabljena je le polovica integriranega vezja) je primerjalnik (komparator), ki primerja napetost na katodi foto diode z napetostjo na drsniku trimer potenciometra VR1.
Oddajnik in sprejemnik sta postavljena tako, da svetloba, ki jo oddaja IR LEDica ne pada neposredno na fotodiodo, ampak ta “lovi” odbito svetlobo, ki se je odbila od ovire. Če se pred diodo nahaja podlaga, ki odbija svetlobo, bo foto dioda dovolj močno osvetljena, da se bo napetost “+” vhoda komparatorja spustila na nižji nivo, kot ga ima napetost na “-” vhodu: izhod komparatorja in izhodnega priključka “S” se bosta spustila na 0 V in na modulu bo zasvetila LEDica L.
Če se pred diodami nahaja podlaga, ki svetlobo absorbira, bo foto dioda prejela zelo malo odbite svetlobe, zato bo napetost na “+” vhodu komparatorja višja od napetosti na “-” izhodu: izhod komparatorja in izhodnega priključka “S” se bo povzpela na vrednost napajalne napetosti (tipično 5 V), LEDica L pa bo ugasnila. S trimer potenciometrom VR1 nastavljamo občutljivost senzorja; najboljša začetna vrednost je takrat, ko je drsnik v srednjem položaju. Robotiki bodo KY-033 modul izkoristili kot senzor za sledenje črti (slika 112b). Na vozilo namestimo dva senzorja, program pa bo opazoval logična stanja njunih izhodov in vklapljal motorje, ki premikajo vozilo, tako, da bo črna črta ostala v območju med njima.
KY-032
Senzor za izogibanje oviram (KY-032, Obstacle Avoidance Sensor Module, slika 113)
Ne glede na razliko v imenih, sta modula KY-032 in KY-033 funkcionalno popolnoma enaka in se lahko oba uporabita v obeh primerih: za sledenje črti in za zaznavanje ovir. Modul KY-032 ima bolj zapleteno zasnovo, zato lahko pričakujemo, da bo manj občutljiv na motnje iz okolice. Na modulu se nahajajo IRD oddajnik (infrardeča LEDica), RX sprejemnik (HS38B), integrirano vezje NE555 in še nekaj ostalih komponent.
HS38B je infrardeči senzor s selektivnim ojačevalnikom, ki je zelo podoben senzorju VS1838B, ki smo ga obravnavali v enem od prejšnjih člankov. Selektivni ojačevalnik je nastavljen na frekvenco 38 kHz, zato bo integrirano vezje iz množice svetlobnih signalov iz okolice, v kateri deluje, izločilo infrardečo svetlobo, ki je modulirana s signalom frekvence 38 kHz. Kadar modul zazna takšen signal, pade napetost izhodnega OUT na 0 V (logična ničla) in zasvetila bo LEDica SLED. Sicer pa bo brez signala izhodna napetost 5 V (logična enka) in dioda SLED bo ostala ugasnjena.
IRD LEDica oddaja infrardeči svetlobni žarek, ki je moduliran s signalom frekvence 38 kHz, ki ga ustvarja oscilator z integriranim vezjem IC1 (NE555). Frekvenca se na točno vrednost uglasi s trimer potenciometrom VR2.
Glavna lastnost tega modula je zaznavanje ovir, zato sta oddajna dioda in infrardeči senzor postavljena eden poleg drugega tako, da infrardeči svetlobni žarek ne vzbuja senzorja neposredno. Ko se modul dovolj približa oviri, se svetlobni žarek od nje odbije in vzbudi senzor. Robotiki takšne module najpogosteje uporabljajo za detekcijo bližnjih ovir, zato je tok skozi IRD omejen z uporom VR1 na znatno nižjo vrednost, kot je običajno pri daljinskih upravljalnikih in znaša le blizu 1 mA.
Ko kupite nov modul, ga bo najverjetneje treba najprej uglasiti. Postavite oba trimerja v srednji položaj, približajte stran z LEDico in senzorjem svetli oviri na razdaljo okrog 1 cm in nato nastavljajte VR2 toliko časa, dokler SLED ne zasveti. Pustite drsnik VR2 v srednjem položaju med položajema, v katerih se SLED prižge in ugasne, oddaljite modul 2-3 cm od ovire in potem ponovite nastavljanje. Sedaj lahko občutljivost modula, oziroma oddaljenost od ovire, katero naj bi zaznal, nastavljate s trimer potenciometrom VR1: manjša upornost pomeni, da bo senzor zaznal oviro na večji razdalji in obratno.
Kratkostičnik EN omogoča delovanje oscilatorja in s tem tudi delovanje modula. Če kratkostičnik odstranimo, lahko delovanje modula upravljamo s krmilno napetostjo na priključku EN (logična enicaa omogoča delovanje modula).
Delovanje modula lahko preverimo z opazovanjem svetleče diode SLED, programsko pa s spremljanjem logičnega stanja izhodnega priključka OUT, kot je to izvedeno v programu 37in1_prog_1.bas.
Opombe: V tem članku je program37in1_prog_16.bas predstavljen zelo poenostavljeno; za popolno razumevanje delovanja je potrebno poznati celoten program. Datoteko Arduino_pins.sub z definicijami Arduino UNO priključkov in programe 37in1_prog_1.bas ter 37in1_prog_16.bas lahko brezplačno dobite v uredništvu revije Svet elektronike.
Barduino-26