Izobraževanje‎ > ‎

Poletna šola robotike

Ime in Priimek
mail@kjer me lahko kontaktirate
zaposlen v tej ustanovi

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:
  • najprej prevedemo program s klikome na ukaz Program -> Compile
  • nato še sprogramiramo mikrokrmilnik tako, da kliknemo Program -> Send to chip
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.
  • Nato poskusite vrstico Portc = 1 zamenjati z naslednjimi možnostmi:
    Portc = 2
  • In nato zamenjajte številko 2 s številko 3, takole.
    Portc = 3
  • Kaj ugotovite? 

Desetiške vrednosti v dvojiški obliki

Vsi 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.

 Bit 7 Bit 6 Bit 5 Bit 4  Bit 3  Bit 2  Bit 1  Bit 0 
 2726 25 24 23 22 21 20 
 12864 32 16 

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

Semafor


Na vmesnik povežite svetlečo diodo, kot prikazuje sosednja slika.

Sedaj poizkusite vključiti in izključiti to svetlečp diodo.
Preoblikujmo program v tako obliko:

Do
   Portc = 1
   Waitms 500
   Portc = 0
   Waitms 500
Loop

Napišite program tako, da bo lučka trikrat utripnila:
Dim Utrip As Byte
For Utrip = 1 To 3
   Portc = 1
   Waitms 500
   Portc = 0
   Waitms 500
Next
 Utrip

V tem programu smo uporabili spremenljivko Utrip. Kaj so to spremenljivke si lahko pogledate na tej strani.
Zapornica

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.

    • Ugotovi kako se motor vrti, če žici zamenjate tako, kot prikazuje 2. slika.
    • Nariši smer toka za obe električni shemi.


Uporaba reduktorja


Č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.

  • Priključi motor na baterijo in preizkusi hitrost in silo vrtenja.
Preizkusiš lahko tudi to, da je polžasto gonilo samozaporno. Če motor miruje, kolesa ne moremo zavrteti ročno, saj polžasto gonilo preprečuje vrtenje.

Prestavno razmerje

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 zapornice

Poskusite sestaviti zapornico tako, kot prikazuje sosednji video posnetek.

Dviganje / spuščanje na čas

Motor priključite na C2 in C3 in preverite kako se s tem programom premika zapornica.

Portc.= 1
Portc.= 0
Wait 1
Portc = 0

Program preoblikujte in dopolnite tako, da bo zapornica naredila naslednje korake :
  1. dvignila se bo v navpični položaj,
  2. tam ostala odprta 1 s,
  3. in se nato spustila v vodoravni položaj.
Program dopolnite tako, da se bodo zgornji koraki začeli izvajati šele, ko bo uporabnik pritisnil tipko B0 .

Ugotovite kaj se zgodi, če bi te korake ponavljali v nedogled. Kako bi lahko rešili to težavo?

Dviganje spuščanje do stikala

Sedaj je potrebno priključiti tipko. Tipka ima tri priključke (označeni so z 1 , 2 in 3), ki jih na vmesnik priključimo takole:
  1. priključek  moramo priključiti na A0,
  2. priključek pričvrstimo na +5V
  3. priključek povežemo na GND.
Naložiti je potrebno program, s katerim preverimo delovanje stikala. Zapornico nekoliko dvignite in preskusite, če se zapornica ustavi ob stiku s stikalom.

Config Porta = Input
Do
   Portc.= 1
   Portc.= 0
Loop Until Pina.= 1
Portc = 0
End

Program preoblikujte in dopolnite tako, da bo zapornica naredila naslednje korake :
  1. dvignila se bo v navpični položaj,
  2. tam ostala odprta 1 s,
  3. in se nato spustila v vodoravni položaj do stikala.
  4. In te korake ponovila vsakič, ko bo uporabnik pritisnil tipko B0 .

Dvig zapornice z zaznavanjem svetlobnega senzorja

V želji, da bi zapornico bolje avtomatizirali, ji bomo dodali svetlobni senzor. Ko bo avtomobil pokril svetlobni senzor ali prekinil svetlobni snop pred zapornico, se bo ta odprla.
    Kako deluje svetlobni senzor?
    TESTIRANJE SVETLOBNEGA SENZORJA?
Nato lahko zamenjamo del programa, ki spremlja pritisk na tipko s programom, ki spremlja izhodni signal svetlobnega senzorja...

Dviganje spuščanje s potenciometrom


Dviganje spuščanje s servo motorjem.

Priključite servo motor na izhodni priključek D4 in preskusite naslednji program.




Sestavljanje mobilnega robota

Za začetek si sestavimo osnovno konstrukcijo, s katero se bomo igrali.


Krmiljenje motorja

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

Najprej povežite LEVI MOTOR z dvema žičkama na digitalna izhoda C0 in C1, kot je to prikazano na slikah desno.

'----=GLAVNI PROGRAM=-----------
Portc = 2
Wait 2
Portc = 0


Sedaj lahko preskusiš naslednji program. Robot pa se mora premakniti DESNO NAPREJ (slika 4). Če se to ne zgodi, popravi robota, ne da bi spremenil program... spomni se na prvo nalogo KAKO DELUJE MOTOR.


Ko ti je uspelo premakniti robota tako, kot prikazuje slika 4, preveri, kako se vrti motor ob naslednjih nastavitvah vrat C.

 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        

Priključitev desnega motorja

Nato priključimo še DESNI MOTOR  na C2 in C3kot 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

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.= 1.

Preizkusite vse tri možnosti krmiljenja digitalnega izhoda:

'----=GLAVNI PROGRAM=-----------
Portc = 8
'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

Počakaj na klik!

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.= 1
'----=GLAVNI PROGRAM=-----------
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

'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.

Priključitev tipke (glej prezentacijo spodaj desno)
Tipka ima tri priključke (označeni so z 1 , 2 in 3), ki jih na vmesnik priključimo takole:
  1. priključek  moramo priključiti na A0,
  2. priključek pričvrstimo na +5V
  3. 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.= 1

'----=GLAVNI PROGRAM=-----------
Robot = Naprej

If Pina.= 1 Then Robot = Ustavi

Naslednji izziv:

Dopolnite program tako, da bo robotek obšel oviro.


Povratno delovanje - IR senzor

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 programkjer 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

Naslednji izziv:

Dopolnite program tako, da bo robotek obšel oviro.


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...

Izdelava svetlobnega senzorja

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.

Priključimo lučko

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:
  1. Če je robot na črni površini, naj zavije LEVO NAPREJ
  2. Če je robot na beli površini, naj zavije DESNO NAPREJ
Tako bo naš robot "racal" po robu črte...  

'----=GLAVNI PROGRAM=-----------
Portc.= 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