Pred začetkom, prosim, rešite vprašalnik TEHNIŠKI DAN I.
FreeWhellySestavili bomo robota, ki bo vozil po črti, lahko bo zaznaval ovire pred seboj in se jim izogibal. Animacija prikazuje, kako lahko sestavite takega robota, tole [datoteko] pa lahko odprete v programu Google Sketchup, kjer boste 3D model tega mobilnega robota in navodila za sestavljanje. Smer toka skozi motor Kako deluje motor?![]() Priključite motor na baterijo tako kot prikazuje sosednja slika. En priključek motorja povežite z žico na baterijski priključek, ki je označen z znakom +. Drugega pa povežite z žico na priključek - na bateriji. ![]()
Če bi na tako gred motroja pritrdili kolo našega robota, bi se kolo prehitro vrtelo in zagotavljalo premalo sile vrtenja (premalo navora). Zato moramo uporabiti polžasti reduktor. Ta zmanjša hitrost vrtenja gredi in poveča silo vrtenja. ![]() Sestavi motor in polžasto gonilo (reduktor) kot prikazujejo naslednja zaporedja slikovnih navodil. ![]()
![]() Prestavno razmerjePolžasto gonilo in reduktor Prestavno razmerje reduktorjev nam pove, za kolikokrat smo povečali silo vrtenja (navor) pri čemer se je za isti faktor zmanjšala hitrost vrtenja gredi. Poglejmo kako je z našim reduktorjem. Reduktor je sestavljen iz štirih zobnikov, od katerega prvi zobnik tvori polžasto gonilo z gredjo motorja (slika 1) ... Sestavljanje mobilnega robotaZa začetek si sestavimo osnovno konstrukcijo, s katero se bomo igrali. Moj prvi program![]() Vključili bomo prvo svetlečo diodo na digitalnem izhodu. Zato v programskem okolju BASCOM odprite naslednji program. $regfile = "m16def.dat" $crystal = 8000000 Config Portc = Output Portc = 1 End Prenos progama v mikrokrmilnik Program moramo prenesti še v miokrokrmilnik to storimo tako, da:
Prikazati se vam mora pogovorno okno, v katerem se izpisuje kako poteka programiranje mikrokrmilnika. Če se to okno ne pojavi, poizkusite rešiti težave s to stranjo. ![]()
Desetiške vrednosti v dvojiški oblikiVsi podatki v mikrokrmilniku so zapisani v digitalni obliki (v dvojiškem sistemu). Zato na izhodu Porta C vidimo številko (prikazana z "lučkami" v digitalni obliki), ki smo jo pripisali tem vratom v desetiški obliki. Te vrednosti lahko preverite tudi z računalom.![]()
Zgornja tabela prikazuje vrednosti posameznih bitov, ki prispevajo vsoti desetiške številke, ki smo jo pripisali Portu C. Poglejmo si še en primer, če želimo, da bi na Portu C svetile le vsake druge diode [1 0 1 0 1 0 1 0] moramo naPortC postaviti številko 128+0+32+0+16+0+4+0+2+0 = 170. Kako izključiti digitalne izhode?![]() Sedaj poizkusite programu dodati pred konec (pred ukaz End) še naslednji dve vrstici: Wait 1 Portc = 0 Krmilniški vmesnik nam omogoča, da lahko določamo izhodna stanja digitlanim izhodom. Izhodno stanje na digitalnem izhodu je lahko "1" ali pa "0". Podobno kot ima baterija "+" in "-". Če je digitalni izhod nastavljen na "1", bo na njem višja napetost kot takrat, ko bo na njem "0". Tudi na bateriji je na priključku "+" višja napetost kot na priključku "-". Če motor priključimo med 2 DIGITALNA IZHODA bomo lahko z različnimi izhodnjimi stanji krmilili SMER VRTENJA MOTORJA. Priključitev levega motorja
|
programske vrstice | Portc = 0 Wait 1 Portc = 0 | Portc = 1 Wait 1 Portc = 0 | Portc = 2 Wait 1 Portc = 0 | Portc = 3 Wait 1 Portc = 0 |
stanje motorja | ||||
smer električnega toka |
Priklop DESNEGA motorja
Priključitev desnega motorja
Nato priključimo še DESNI MOTOR na C2 in C3, kot prikazujejo slike na desni.

Sedaj lahko preizkusiš naslednji program. Robot se mora premakniti LEVO NAPREJ (slika 4). Če se to ne zgodi, popravi robota, ne da bi spremenil program... Spomni se na prvo nalogo KAKO DELUJE MOTOR.
'----=GLAVNI PROGRAM=-----------
Portc = 8
Wait 2
Portc = 0
Wait 2
Portc = 0
Nastavljanje digitalnega izhoda
Digitalni izhod lahko nastavimo na več različnih načinov. V desetiški obliki smo ga že spoznali:
Portc = 8
Številko 8 lahko zapišemo tudi v dvojiški obliki:
Portc = &B_0000_1000
Bit C3 lahko vključimo tudi z uporabo bitne oblike :
Portc.3 = 1.
Preizkusite vse tri možnosti krmiljenja digitalnega izhoda:
'----=GLAVNI PROGRAM=-----------
Portc = 8
'Portc = &B_0000_1000
'Portc.3 = 1
Wait 2
Portc = 0
'Portc = &B_0000_1000
'Portc.3 = 1
Wait 2
Portc = 0
Vožnja naprej
Tako, sedaj smo nared, da naš robotek lahko pelje naravnost za nekaj sekund. Preizkusite naslednji program in preverite, ali robotek res pelje naravnost naprej.
'----=GLAVNI PROGRAM=-----------
Robot = Naprej
Wait 2
Robot = Ustavi
Kot ste lahko opazili, se je robotek odzval takoj, ko ste nanj presneli program ali pa ko ste vmesnik ponovno priključili na napajanje. Kaj ko bi se program začel izvajati šele takrat, ko bomo pritisnili na tipko B3?
Zapiši ta program in pošlji robota na potep.
Do
Loop Until Pinb.3 = 1
Loop Until Pinb.3 = 1
'----=GLAVNI PROGRAM=-----------
Robot = Naprej
Wait 2
Robot = Ustavi
Robot = Naprej
Wait 2
Robot = Ustavi
Gibanje robota (naj robot zapleše)
Z nadgradnjo programa sestavite tako zaporedje ukazov, da bo vaš robot zaplesal... Naj gre nekaj sekund naprej... pomiga levo, desno, se premakne nazaj ...
... uporabite domišljijo :) ...
'----=GLAVNI PROGRAM=-----------
Robot = Naprej
Wait 2
Robot = Naprej
Wait 2
'Tu napišite svoje plesne figure...
Wait 2
Robot = Ustavi
End
Povratno delovanje - tipka
V nadaljevanju bomo opremili robota tako, da bo lahko zaznaval ovire pred seboj.
Namestili mu bomo nek odbijač, ki bo ob stiku s predmetom, sklenil tipko. Tako bo lahko robot zaznal, da ima pred seboj nek predmet in se bo lahko ustavil.

Priklop tipke
- priključek moramo priključiti na A0,
- priključek pričvrstimo na +5V
- priključek povežemo na GND.

Sedaj lahko napišemo tak program, ki bo pognal robotka naravnost naprej. Ko se bo robotek dotaknil ovire, naj se malo odmakne nazaj in ustavi.
Do
Loop Until Pinb.3 = 1
'----=GLAVNI PROGRAM=-----------
Robot = Naprej
If Pina.0 = 1 Then Robot = Ustavi
Loop Until Pinb.3 = 1
'----=GLAVNI PROGRAM=-----------
Robot = Naprej
If Pina.0 = 1 Then Robot = Ustavi
Naslednji izziv:
Precej nerodno bi bilo, če bi morali avtomobili zaznavati predmete le z dotikom... Zato je bolje, če lahko predmete v okolici zaznavamo brez-kontaktno, na primer z infra-rdečim senzorjem razdalje.

Namestite IR senzor razdalje na sprednji del robota kot prikazuje shema na desni in ga priključite na 3-pinski priključek A4 (puščica na konektorju senzorja je priključena na GND).

Preskusite program, kjer se prižiga več lučk, čim manjša je oddaljenost od senzorja do predmeta. S tem preizkušamo delovanje senzorja.
Izogib oviram

Sedaj zapišite program, kjer bo robot zaznal oviro še preden se zaleti vanjo.
Program dopolnite tako, da bo robotek oviro obšel.
'----=GLAVNI PROGRAM=-----------
Robot = Naprej
Do
Razdalja = Getadc(4)
If Razdalja > 400 Then
Robot = Ustavi
Exit Do
End If
Loop
Robot = Naprej
Do
Razdalja = Getadc(4)
If Razdalja > 400 Then
Robot = Ustavi
Exit Do
End If
Loop
Naslednji izziv:

Dopolnite program tako, da bo robotek obšel oviro.
Senzorji
SENZORJI
S senzorji lahko pretvarjamo neko fizikalno količino (osvetljenost, temperaturo, vlagko ...) v neko električno količino (največkrat napetost). Dva senzorja smo že spoznali (senzor dotika in senzor razdalje), poglejmo si še nekaj senzorjev...
Sestavili bomo še svetlobni senzor, kjer bomo uporabili forotranzistor in upor, ki sta vezana zaporedno v delilnik napetosti.
Kako namestimo svetlobni senzor si oglej s pomočjo slik na desni.

Svetlobni senzor (rumena kocka s črnim pokrovčkom) eno žico vežemo na +5V (rdeče označen priključek, katerega se vidi, če snamete pokrovček) in drugo žico na A0.
Nato dodamo še upor velikosti cca. 470 kOhmov med A0 in GND.
Najprej testiramo, ali senzor deluje. To preverimo s programom.

Lučko bomo potrebovali zato, da bo naš robotek manj odvisen od okoliške svetlobe. Tako bo lahko sam osvetljeval tla pod sabo in zato bolje ločil temno in svetlo podlago.
LUČKO priključimo na C4 in GND ...
Vožnja po črti
Pravzaprav bo robot vozil po robu črte. Program bomo napisali tako, da bo v neskončni zanki stano preverjal izhodni signal senzorja in ustrezno odreagiral:
- Če je robot na črni površini, naj zavije LEVO NAPREJ
- Če je robot na beli površini, naj zavije DESNO NAPREJ
'----=GLAVNI PROGRAM=-----------
Portc.4 = 1
Wait 1
Do
Svetloba = Getadc(0)
If Svetloba < 800 Then
Robot = Levo_naprej
Else
Robot = Desno_naprej
End If
Waitms 50
Loop
Portc.4 = 1
Wait 1
Do
Svetloba = Getadc(0)
If Svetloba < 800 Then
Robot = Levo_naprej
Else
Robot = Desno_naprej
End If
Waitms 50
Loop
Hvala za poslušnost. Prosim, če ob koncu rešite vprašalnik TEHNIŠKI DAN II.
Oglej si tudi naslednje povezave: eProDas-Rob1 , Digitalni izhod