# Roboti >  pirmais līnijsekotājs

## downloader

Sveiki, visiem!
Esmu nolēmis, ka gribu sākt nodarboties ar robotiem līnijsekotājiem! ir neliela pieredze shēmu lodēšanā, pascal programmēšanā(nezinu vai tas ko dos). Internetā ir tik daudz informācijas, ka pat nezinu ar ko sākt, atradu vienu ļoti foršu kitu par ļoti sakarīgu cenu http://www.pololu.com/catalog/product/975 tur ir visādas programmēšanas pamācības, paraugi, upgreidi. kādi būtu jūsu ieteikumi, vai sākt ar kitu, vai arī pašam kaut ko mēģināt uzlodēt? būtu ļoti jauki, ja varētu ar kādu Rīgā satikties, kas apstāstītu visu to štelli un parādītu kas un kā...

----------


## Epis

Nu tam līnijsekotājam ir Atmega168 līdz ar to tas arī ir sākums ar ko sākt, proti nolādē MCU softu no Atmel.com saita novelc čipa dokumentāciju, palasi un ta skaties līnijsekotāja pamācības un demo kodus.
par to vai pirkt gatavu devaisu vai tomēr taisīt pašam, ta jāskatās kāds ir mērķis, ja mērķis ir iemēgināt MCU kodēšanu, uzdrukāt, ietestēt kādus viltīgus līnijsekošanas algoritmus ta protams ka vis labāk nopirkt gatavu aparātu un ta viņu kodēt, jo kamēr pats uztaisīsi paies mēneši, un finālā nekas baigi diš var arī nesanākt, bet tā nopērkot gatavu var uzreiz ķerties pie intresantākās sadaļas un domāt par algoritmu cepšanu.
Savkārt ja galvenā ideja bīj iemācītes būvēt kautkādus mehānismus + elektroniskās shēmas, PCB plates, un otrā plānā tā kodēšana ta būvē pats, jo savādāk jau neko neiemācīsies ja pirksi gatavu, tākā skaties pats ko gribi.

----------


## Slowmo

Es šobrīd arī cepju aukšā līnijsekotāju. Visu var pa soļiem taisīt. No sākuma var, piemēram, plikus sensorus pieslēgt pie mikrokontroliera un mēģināt nolasīt vērtības. Tad var sataisīt motora(u) kontroles algoritmu un elektronikas daļu. Nu un tad jau vairs daudz nekas nav palicis. Viss jāsajūdz kopā, jāuzraksta korekts algoritms stūrēšanai atkarībā no sensoru rādījumiem un lieta darīta.

----------


## Andrejs

3pi ir pavisam labs, bet ar to nevarēsi piedalīties Robotikas sacensībās ( protams ja tāds ir viens no mērķiem). Sacensību nolikumā bija punkts, ka dalībniekam jābūt robota autoram.

----------


## downloader

Bija doma arī startēt robotikā, laikam taisīšu pats. Variet ieteikt kādu vienkāršāku līnijsekotāju, ar ko sākt?

----------


## Slowmo

Pievienošu tepat savu jautājumu, lai nav jātaisa jauns topiks. Gan jau autoram ar būs noderīgi.
Tātad, ir mikromotoriņš, kuru gribu ar N-Mosfetu PWM režīmā darbināt. Paraleli motoram jāieslēdz diode, caur kuru plūdīs strāvas impulss pie mosfeta izslēgšanas. Vai derēs RL203 diode, kura man šobrīd pie rokas (izlodēta no barošanas bloka tiltiņa). Pēc Google izskatās, ka tā ir 2A 200V diode. Motoriņš tukšgaitā ap 300mA tērē pie 6V. Kad noklemmē - max 1,6A.

----------


## Epis

Diodes motoriem vaidzēja likt tās Fast switching, kas ātri slēdzās, šito RL203 likt jau var bet cik labi darbosies nav ne jausmas.




> Sacensību nolikumā bija punkts, ka dalībniekam jābūt robota autoram.


 uz kuru robota daļu ta ir jābūt tām autortiesībām? vai ta nevaidzēj būt koda autoram, un pārējam vienalga, jo esam reāli tur tač piedalās arī tie putekļsūcēji ROmba kur izmainīts ir tikai softs, un ja jau visam jābūt paštaisītam gribētu redzēt kā kāds uztaisīs motoru no 0, vai arī pats kādu tranzistoru uzķīlētu , tākā pēc būtības tas ir nereāli pašam visu uztaisīt, līdz ar to kāda ta ir tā vārda pašam jābūt autoram īstā nozīme ?
piem vai ta nevarētu nopirkt pašu mehānisko līnijsekotāja daļu (motori, riteņi, korpuss un tad nopirkt kādu MCU low cost Kitu 20-40$ kautvai Arduino, un ta vēl pāris tos foto sensorus+diodes, vai ta tas neskaitītos paštaisīts ?

----------


## GuntisK

Dolbanutais tu Epi tomēr esi!   ::  Kur tev teikts, ka motoram vai vēl trakāk-tranzistoriem jābūt paša rokām izgatavotiem? 
Kas tad būs, ja sacensībās visi piedalīsies ar kaut kādiem gataviem, pirktiem robotiem? ROBOTIKA vispār ir domāta lai jaunieši un citi interesenti vairāk pievērstos tehniskajām zinātnēm! Ok-ROOMBA ir pavisam cita robotu klase- tur primārais tomēr nav kods, bet tehniskais risinājums (ja tu būtu bijis kaut uz vienām sacensībām tad saprastu par ko es runāju). 
Vienkāršu līnijsekotāju no nulles var salikt pa pāris dienām. Piemērs: http://www.latmatic.lv/viewtopic.php?f=55&t=36 (neuztvert kā reklāmu!). 
P.S. Pašam bijušas kādas 3 līnijsekotāju konstrukcijas un 2 minisumo. Sacensībās piedalījos gan tikai ar minisumistiem.

----------


## Hondists

Kādā valodā labāk programmēt līnijsekotāju, un kuru labāk mācīties assambler vai VHDL. Tagad māku tikai pascal.

----------


## Slowmo

Domāju, ka jāsāk labāk ir ar asembleru, jo tikai tā varēs kārtīgi izprast, kā viss darbojas. Vēl jo vairāk tāpēc, ka nav to instrukciju nemaz tik daudz. Nu un tad, lai ātrāk ietu programmēšana, var arī augsta līmeņa valodu izmantot. VHDL man liekas neizmanto programmas koda rakstīšanai.
Ja kaut kādas iemaņas programmēšanā ir, nevajadzētu būt īpašām problēmām programmēt asemblerā. Jā, ir tur sava specifika, taču nepaies ilgs laiks, kamēr iemācīsies sazarot programmu, izmantot ciklus, masīvus, pielietot matemātiskās operācijas u.t.t. Līnijsekotājs no programmēšanas viedokļa nav nekas pārlieku sarežģīts.

----------


## Epis

> Kādā valodā labāk programmēt līnijsekotāju, un kuru labāk mācīties assambler vai VHDL. Tagad māku tikai pascal.


 ja māki pascal ta labāk sāc mācītes C valodu un rakstīt C softu priekš AVR un garām ejot palasi arī par Asambler instrukcijām, lai vienkārši uzinātu ko tad tas procis vispār var (lai nerastos doma ar C rakstīt kodu ar Double Floating point cipariem  ::  un veikt visādas Dalīšanas kvadrātsakn,vilkšanas un citas sarežģitas matemātiskas operācijas ar lieliem 32-64bit cipariem (procis priekš tā nav īsti domāts).
vispār runājot par kodēšanu tad noteikti ka pienāks tāda diena ka gribēsi lai tavs līnijsekotājs matemātiski pareizi paātrinās, bremzē ar konstantu paātrinājumu un tad vaidzēs 32bit līdz 64bit single Integer ciparus, kam jāvelk kvadrātsakne, arī jādala, un ta es iesaku pārej no 8b AVR čipa uz 32b Cortex-M3.

teikšu kā ir, ja es taisītu līnijsekotāju ta ņemtu kā minimums Cortex-M3 proci lumināro 50Mhz vai STm32 72Mhz proci, un nopietnam robotam (CNC tipa), kam vaidzētu visas interpolācijas, FPU atbalsta proci, kautko krietni jaudīgu > 200Mhz.

VHDL programmējamo valodu tev nav jāmācās jo es tur neredzu nevienu čipu(fpga,CPLD) ko varētu kodēt ar VHDL tākā par šito vari aizmirst.

----------


## Slowmo

Nevajag uzreiz pārspīlēt. Pat megahercus nevajag, lai reālā laikā veiktu visus nepieciešamos aprēķinus.

----------


## Andrejs

Epis kā vienmēr  ::  



> ja es taisītu līnijsekotāju ta ņemtu kā minimums Cortex-M3 proci lumināro 50Mhz vai STm32 72Mhz proci


 sapinies meistarībā...
Ja nopietni - protams 1. robotelim nevajag nekādus uberkrutos pročus un "konstanta paātrinājuma mērīšanu"! Ņem jebkuru lētā gala PIC vai atmel un raksti valodā kuru proti. Līnijsekotājam  pilnīgi pietiks ar pascal  vai basic. Man tīri labi patīka šie http://www.mikroe.com/en/compilers/.
Galvenā uzmanība jāvelta mehānikas izveidei, motoru un sensoru izvēlei un novietojumam. Vispirms sasniedz stabilu robota darbību REĀLOS ( t.i. nezināms gaismas daudzums, daudz elektriskie trokšni, statika u.c.) apstākļos un tad vari mēģināt uzlabot algoritmu un palielināt ātrumu.
 Ja gribēsi būt konkurētspējīgs sacensībās, tad servo motori gan nederēs  :: 
Un izlasi noteikumus http://www.robotika.lv/read_write/file/ ... 0_2009.pdf, citādi katrās sacenēs gadās "censoņi" kuriem mājās nav lineāla un iespējams arī lasīšana padodās grūti, jo noteiktie izmēra, svara u.c ierobežojumi netiek ievēroti.

----------


## downloader

Lūdzu apstāstiet kāds, ar ko man sākt! Kas jānopērk, man mētājās mājās dažas servas un sīkumi (nodarbojos ar lidmodelismu)

----------


## Hondists

22.novembrī Liepājā būs tehniskās jaunrades diena. Būs arī robotu (līnijsekotāju) būves darbnīca. Varbūt kāds zin vai es uz turieni varu aizbraukt nepiesakoties, jo vēl nezinu vai varēšu tikt?
Tur visi instrumenti un detaļas jau būs uz vietas?

----------


## Slowmo

> Lūdzu apstāstiet kāds, ar ko man sākt! Kas jānopērk, man mētājās mājās dažas servas un sīkumi (nodarbojos ar lidmodelismu)


 No sākuma izdomā, kā visam jāizksatās, tad arī varēs sastādīt iepirkuma sarakstu. Tā pāris vārdos pat īstenībā grūti nosaukt visu. Ja izmanto robotu ar diferenciālo riteņu stūrēšanu (viens ritenis griežas ātrāk par otru), tad būs nepieciešami divi motoriņi, riteņi, motoru kontrolieris, sensori, kuri "redz" līniju, barošanas avots. Nu un mikrokontrolieris, kas visu vada. Ir iespējams arī bez mikrokontroliera visu saslēgt un vadīt, taču ar mikrokontrolieri būs plašākas iespējas un to izmanto vairumā gadījumu.

----------


## Andrejs

Ja esi lidmodelists - tas jau ir labi, tātad iespējams ka rokas ir "taisnas"  :: 

 Jautājumi uz kuriem jāatbild:

1. Uzstādi mērķi - vai būvēt līnijsekotāju lai būtu ātrums vai lai vispār kustētos un brauktu pa līniju.

 2. Kāda būs kustošās daļas shēma:
 a) vieglāk realizējama būs diferenciāla stūrēšana: 2 motori - 2 riteņi, 2 motori 4 riteņi, 3 riteņi, kāpurķēdes.
 b) grūtak Akermaņa vadība ar stūrējošiem riteņiem vai "pārlocošu" vidu.
 c) eksotikie - soļojoši, uz gaisa spilvena, holonomiskie utt. _Te neviens Tev nepalīdzēs!_ Bet ja izdosies gūsi publikas un pārējo dalībnieku atzinību. uzziņai http://www.beam-wiki.org/wiki/Steering_Techniques
 3. Kādi ir pieejamie motori. Ja ir servo un nav vēlēšanās/varēšanas izmantot ko citu tad ir varianti:
 a) izmantot servo ar nelielu mehanisku partaisīšanu lai tas grieztos bez atdures ( http://www.seattlerobotics.org/guide/servohack.html) un izmantot iebūvēto elektroniku. Labumi - ļoti viegla vadība, nav jādomā par motoravadības elektroniku (google RC servo control). Trūkumi lēns ātrums.
 b) no servo izmantot tikai motorus un reduktoru. Jātaisa vadība motoriem.Motorus varēsi barot ar palielinātu spriegumu iegūstot ātrumu.  Iesācējam vieglāk izmantot gatavas mikroshēmas piemēram SN754410 vai veco un draņķīgo L293. Ir daudz labāku motoru vadības mikroshēmu, bet pārsvarā iesācējam nepiemērotos korpusos. Domu par H-tilta veidošanu no tranzistoriem sākumā atmet!
 Kā variants iespējams sava reduktora būve no esošajiem servo zobratiem. Tikai tad ja ar mehāniku esi uz tu.
3.1 Kādi būs riteņi un kā tie tiks pievienoti motoriem?
3.2 No kāda materiāla un kā tiks izgatavota robota šasija.

4. barošana.
izdomā kādu spriegumu un strāvu vajadzēs, cik ilgi robots braukās.
Akumulātori labāki par baterijām, Polimēra aķi labāki par Nimh/Nicad. Labāk atsevišķa barošana motoriem un procesoram. Akumulātoru gadījumā uzreiz jādomā par atbilstošiem lādētājiem. Sprāgstoši polimera aķi izskatās neglīti.

5. Sensori
Cik un kādi?  Var izmantot gatavos reflektīvos sensorus ar modulētu gaismu un apstrādes shēmu piem. S7136, var būvēt no IR diodes un fototranzistora. Par šiem arī pilns internets.
Lai brauktu pa līniju "zāģī" pietiek ar vienu, bet lai realizētu PID algoritmu vajadzēs stipri vairāk.  Vienkāršai vadībai saprātīgs minimums ir 2 vai 3.
Rezultāts no sensora ciparisks vai analogs? 
Vai sensors ir jākalibrē?
Uzbūvē sensora maketu un paeksperimentē dažādā apgaismojumā, būsi pārsteigts.
Idejas par kamerām, peļu sensoriem, skaneriem utt vari aizmirst un šādu padomu devējus sūtīt patālāk...

6. kāds procesors?
Nav gatavas receptes. Vari lietot jebko kas patīk. Pārsvarā iesācēji lieto PIC vai Atmel. Nekādu milzīgu ražību nevajadzēs.

7. Kā tiks veikta elektronikas montāža?
 Maketplate vai speciāli taisīta PCB.

8. kopējā robota montāža un izskats
a)Samests kaudzē ar karsto līmi un izolācijas lentu. Ātri un lēti, bet tikai dažos, retos gadijumos labi.
b) pārdomāts un labi izpildīts korpus priecēs pašu un citus.

9. Robota regulēšana
Pirmā veida ekstremāļi uzbūvē mājās trases kopiju un pilnveido algoritmus un mehāniku līdz konkrētai iekārtai ir sasniegts maksimums.
Otra veida ekstremāļi beidz rakstīt pirmo nepārbaudīto softa versiju 3 minūtes pirms starta.

10. Robota nosaukums
Ja gribēsi savu robotu demonstrēt citiem un piedalīties sacensībās izvēlies labskanīgu, atbilstošu nosaukumu.
"Briesmīgais Plēsējs" mazai kastītei kura knapi kustās uz priekšu izsauks smaidu.

Un galvenais - neatkarīgi no iecerētā projekta vienkāršuma vai grandiozuma, NOVED TO LĪDZ GALAM!

----------


## Slowmo

Kāda ir tā melnā līnija sacensībās? Es te eksperimentēju ar Sharp sensoriem un, ja to novieto precīzi 90 grādos pret virsmu, bieži ir atstarojums no melnas papīra strēmeles tāds, ka signāla līmenis neatšķiras no tā sensora, kas pret baltu papīra lapu. Varbūt ar rezistoru vai PWM vajag izstarojošās diodes spilgtumu samazināt? Kad sensors zem leņķa, tādu problēmu nav.

----------


## Andrejs

> Es te eksperimentēju ar Sharp sensoriem


 pasaki sensora nosaukumu! Cik tālu no virsmas ir sensors?

----------


## Slowmo

Bižķi nokļūdījos ar sensoru. Ir nevis Sharp, bet Fairchild ražojums: http://www.fairchildsemi.com/ds/QR%2FQRE1113.GR.pdf. Pēc datu lapas sanāk, ka maksimālā kolektora strāva ir aptuveni 0,7mm attālumā no virsmas (balta papīra lapa). Pats mēģināju dažādos attālumos novietot. Principā jau pie nedaudz lielāka attāluma atstarojuma problēma nedaudz samazinās. Būs jāpamēģina ar kādu citu melnu papīrīti paeksperimentēt vai arī ar melnu izolācijas lentu. Varbūt tad no virsmas tā neatstarosies.

----------


## AndrisZ

> Būs jāpamēģina ar kādu citu melnu papīrīti paeksperimentēt vai arī ar melnu izolācijas lentu. Varbūt tad no virsmas tā neatstarosies.


 Kā lai zin ar kādu krāsu līnija būs sacensībās? Ja es būtu organizators, pieemeklētu krāsu, kas redzamajā gaismā ir melna, bet infrasarkanajā gaismā balta.  ::

----------


## Slowmo

Tieši tāpēc jau jautāju, kāda tā līnija sacensībās ir bijusi. Krāsai nav tik izšķiroša nozīme. Mēģināju ar dažādas krāsas līnijām un atšķirība starp baltu un krāsainu ir tāpat diezgan ievērojama. Tik tā problēma ar atspīdumu no virsmas.

----------


## Andrejs

> kāda tā līnija sacensībās ir bijusi


 Sacensību  trases bija  nodrukātas uz balta plastikāta ar melnu krāsu.
Organizātori nevienu apzināti nevēlas čakarēt. Pārsvarā dalībnieki paši netiek galā ar uzstādīto uzdevumu  ::  
Lai piemērotos dažādam apgaismojumam, baltā baltumam vai melnā melnumam daži  programmās ievieš līnijas sensoru kalibrēšanu. Palīdz!
Otrs variants ir lietot cipariskus sensorus ar iebūvētām apstrādes shēmām no kuriem ir pārliecinoši tikai 1 vai 0 neatkarīgi no krāsas variācijām. piem. iepriekš minētais S7136.
Sensorus novieto tā lai apkārtējā gaisma tos neiespaidotu.
Galu galā google palīdzēs, par linefolloweriem ir sarakstīts pa pilno.

----------


## Slowmo

Kā ir ar PWM frekvencēm uz mikromotoriņiem? Vai labāk izvēlēties augstas vai zemākas frekvences? Par sadzirdamajām frekvences laikam galīgi nav vērts uztraukties, jo reduktora zobratiņi ir samērā skaļi. Pameģināju uz motoriņu laist 1Khz PWM signālu. Darbojas ideāli. Kaut kāda neliela sīkoņa bija sadzirdama tikai pie ļoti zemiem impulsu platumiem (10% un zemāk).
Pie zemākām frekvencēm vajadzētu būt mazākiem zudumiem tranzistoros, kas akumulatora barošanas gadījumā nāk tikai par labu. Bet kā dažādas frekvences iespaido pašu motorīti? Vai nemainās griezes moments pie zemākām vai augstākām frekvencēm?
Starp citu, praksē pārliecinājos, ka 7805 regulatoram ir nepieciešami datu lapā norādītie filtrējošie kondensatori. Nebija pa rokai to kondensatoru un pielsēdzu tāpat. Viss jau darbojās līdz brīdim, kad ieslēdzu motorīti, kas no tiem pašiem 5V barojas. Mikrokontrolieris ik pa laikam resetojas. Oscilī redzams, ka barošanas spriegumā ir īslaicīgi sprieguma kritumi, kas arī izraisa resetošanos. Pēc 0,1uF konensatora pielikšanas regulatora izejā, problēma momentā pazūd.

----------


## Slowmo

Zinu, ka te cilvēki ir taisī'juši braucošos robotus. Kādas PWM frekvences jūs izmantojāt un kāpēc?

----------


## Andrejs

Viss atkarīgs no motora, tā jaudas un apgriezieniem
Lietots no dažiem simtiem Hz lidz padsmit Khz
Izvēlās tā lai sīkoņa nekaitinātu. Frekvenci palielināt nav nekādas jēgas

----------


## Slowmo

Labi, palikšu tad pie 1kHz. Vēlāk, ja vajadzēs, paeksperimentēšu ar dažādām frekvencēm.

----------


## Andrejs

Nu vienkāršam līnijsekotājam nekādu  PWM vispār nevajag. Slēdz motoriņus on/off un dragā pilnā gaitā. Ātrums par daudz gan jau ka nebūs  ::

----------


## Slowmo

Tur jau tā problēma, ka būs. Man motorītis ar šī brīža riteņiem pie 5V var sasniegt 4m/s ātrumu.

----------


## Slowmo

Ja es visu padarīšanu baroju ar 9V akumulatoru caur 7805 regulatoru, kā pareizāk novērot akumulatora spriegumu? Vai der tik vienkāršs risinājums kā sprieguma dalītājs, kur viduspunkts pieslēgts pie mikrokontroliera ADC ieejas vai komparatora, bet pats spriegums tiek ņemts pa tiešo no akumulatora?

----------


## Andrejs

> pie 5V var sasniegt 4m/s ātrumu


 Kāds motors, kāds reduktors. Cik lieli riteņi? tie 4m/s ir teorētiski aprēķinātais, vai ari tam ir reāls pamats? Tas ka motors spēj iegriezt riteni gaisā vēl nenozīmē ka tas spēs kustināt robotiņu. Vairāk interesē paātrinājums.
Protams, pie šāda ātruma praktiski nav izredžu noturēt robotiņu trasē. Paskaties kā izskatās nepilni 2m/s http://www.youtube.com/watch?v=ZtH0lsTv ... r_embedded




> padarīšanu baroju ar 9V akumulatoru caur 7805 regulatoru


 Nav laba doma. 
Laba doma barot motorus ar stabilizētu spriegumu,  apskati kā tas realizēts 3pi http://www.pololu.com/docs/0J21/5.b , bet 7805 tam gan nav labākais - lieto ko modernāku ar mazu sprieguma kritumu (_low dropout_) uz regulatora, LM1084 vai tam līdzīgu.

----------


## Slowmo

Motoram ir 10:1 reduktors, tāpēc sanāk diezgan liels ātrums. Pie 6V barošanas tukšgaitā, ja pieliek tāda izmēra riteni, kāds man tagad ir, sanāk 5m/s.  Tos 4m/s es rupji piemetu, ja tiek izmantota 5V barošana. Protams, ka zem slodzes motors negriezīsies tik ātri. Tas laikam jānosaka eksperimentālā ceļā būs.
Bet, kas attiecas uz barošanu, tad papētīju to 3pi risinājumu un manā gadījumā sanāk līdzīgi, tik VBoost spriegums būs 9v bloka spriegums bez nekādiem boost regulatoriem. Man jau sākumā bija doma loģiku barot caur 7805, bet motorus pa tiešo no akumulatora. NiMh akumulatoriem ir gandrīz konstants spriegums izlādes ciklā. Tikai pašās beigās tas strauji nokrīt, kas arī būtu pazīme, ka aķis tukšs un robots jāaptur, lai pārlieku neizlādētu aķi. Un gandrīz nemainīgais spriegums nozīmē to, ka robots nebrauks arvien lēnāk, kamēr aķis izlādējas. Vienīgi pie 8,4V NiMH bloka sprieguma, PWM nāksies ar maziem pulsa platumiem ģenerēt, lai samazinātu motora ātrumu.
Tālāk 3pi aprakstā ir arī sprieguma dalītājs, par kuru es jautāju iepriekš, tāpēc droši vien būs pareizi tā, kā biju izdomājis.

----------


## downloader

tātad, biju uz izstādi, kurā notika robotikas paraugsacensības. Iepazinos ar zinošiem cilvēkiem, pieteicos uz pulciņu, kur jau esmu bijis pāris reizes. Man izskaidroja teoriju, kas un kā, sazīmēja shēmas. Paldies par palīdzību, top jau pirmais robots, par cik esmu modelists un kā jau teica "rokas taisnas"   ::   tad pirmais robots jau top ar mikrokontrolieri ATmega 8, 6 sensoriem - ready to race.

----------

