Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
et:projects:3pi:linefollow [2015/11/12 10:59] kaupo.raidet:projects:3pi:linefollow [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== Joonejärgimine 3pi robotiga ====== ====== Joonejärgimine 3pi robotiga ======
  
-==Pololu QTR infrapunaandurid==+==Pololu QTR infrapunaandurite seadistamine ja lugemine==
  
 QTR andurite lugemisel on vaja eelnevalt andurid initsialiseerida. Vastav funktsioon on "pololu_3pi_init(2000)", mis seadistab andurite lugemise viite Timer2 klikkide arvu järgi ( soovituslik vahemik 1000-4000). ATmega328p mikrokontrolleri töötab taktsagedusel 20Mhz, kuid Timer2 taktsagedus on jagatud 8-ga, mis teeb 2,5Mhz. Arvutuslikult üks Timer2 klikk kestab T = 1/2500000 = 0,4us. Järelikult 2000 klikki annab 2000*0,4us = 800us = 0,8ms. Selle aja jooksul mõõdab mikrokontroller iga anduri madalasse (LOW ehk 0) olekusse jõudmise aega. Mida rohkem valgust peegeldub pinnalt seda kiiremini saabub anduri madal olek. Kui 0,8ms jooksul madalat olekut ei saabunud, siis tuvastab mikrokontroller selle siiski kõige tumedamaks pinnaks. Andurite lugemise funktsioon on "read_line(sensors,IR_EMITTERS_ON)", mis ootab parameetriteks andurite lugemite salvestamiseks viie elemendiga massiivi (nt. unsigned int sensors[5]) ja lugemise režiimi (nt. IR_EMITTERS_ON). Enne andurite lugemise implementeerimist on soovituslik teostada ka kalibreerimine funktsiooniga "calibrate_line_sensors(IR_EMITTERS_ON)". Funktsioon leiab iga anduri jaoks kõige heledama ja kõige tumedama pinna väärtuse. Funktsiooni tuleb kasutada mitu korda, et kõik andurid oleks olnud nii valgel taustal kui ka mustal joonel. Soovituslik on kalibreerimine automatiseerida, kuna parima tulemuse saamiseks tuleb seda teostada enne igat sõitu. QTR andurite lugemisel on vaja eelnevalt andurid initsialiseerida. Vastav funktsioon on "pololu_3pi_init(2000)", mis seadistab andurite lugemise viite Timer2 klikkide arvu järgi ( soovituslik vahemik 1000-4000). ATmega328p mikrokontrolleri töötab taktsagedusel 20Mhz, kuid Timer2 taktsagedus on jagatud 8-ga, mis teeb 2,5Mhz. Arvutuslikult üks Timer2 klikk kestab T = 1/2500000 = 0,4us. Järelikult 2000 klikki annab 2000*0,4us = 800us = 0,8ms. Selle aja jooksul mõõdab mikrokontroller iga anduri madalasse (LOW ehk 0) olekusse jõudmise aega. Mida rohkem valgust peegeldub pinnalt seda kiiremini saabub anduri madal olek. Kui 0,8ms jooksul madalat olekut ei saabunud, siis tuvastab mikrokontroller selle siiski kõige tumedamaks pinnaks. Andurite lugemise funktsioon on "read_line(sensors,IR_EMITTERS_ON)", mis ootab parameetriteks andurite lugemite salvestamiseks viie elemendiga massiivi (nt. unsigned int sensors[5]) ja lugemise režiimi (nt. IR_EMITTERS_ON). Enne andurite lugemise implementeerimist on soovituslik teostada ka kalibreerimine funktsiooniga "calibrate_line_sensors(IR_EMITTERS_ON)". Funktsioon leiab iga anduri jaoks kõige heledama ja kõige tumedama pinna väärtuse. Funktsiooni tuleb kasutada mitu korda, et kõik andurid oleks olnud nii valgel taustal kui ka mustal joonel. Soovituslik on kalibreerimine automatiseerida, kuna parima tulemuse saamiseks tuleb seda teostada enne igat sõitu.
Line 18: Line 18:
 {{:et:projects:3pi:joonejargija_algoritm.png?600|Joonejärgija algoritmi olekud}} {{:et:projects:3pi:joonejargija_algoritm.png?600|Joonejärgija algoritmi olekud}}
  
-Programmi initsialisseerimise funktsioon on hästi pikk ja lohisev, kuid ei tasu selle osas ära ehmatada kui kõike kohe ei mõista. Targem on initsialiseerimise funktsiooni mittemuuta kui ei tea mida täpselt teed. Põhiline joonejärgimise algoritm jookseb aga main funktsiooni while tsüklis.+Programmi initsialisseerimise funktsioon on hästi pikk ja lohisev, kuid ei tasu selle osas ära ehmatada kui kõike kohe ei mõista. Targem on initsialiseerimise funktsiooni mitte muutakui ei tea täpselt mida teed. Põhiline joonejärgimise algoritm jookseb aga main() funktsiooni while tsüklis, mis asub programmi alumises osas. \\ 
 + 
 +<private> 
 +__Joonejärgimise algoritmi kohta saab rohkem lugeda Pololu näidisprojektist: [[https://www.pololu.com/docs/0J21/7|3Pi line following]].__
  
 <code c> <code c>
Line 216: Line 219:
 } }
 </code> </code>
 +
 +
 +</private>
et/projects/3pi/linefollow.1447325984.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0