Ez a felmászóról készült:
Ez pedig a roverről teszt közben:
2010. április 27., kedd
Fejlesztési és munka dömping
Sikerült végre hosszabb időt közösen dolgoznunk 3-an a roboton. Ennek meg is lett az eredménye, kisebb megszakításokkal kb 12 órát dolgoztunk a cuccon, ami nagyjából össze is állt, még mindig vannak kisebb hibák, amiket javítani kell, de már tényleg kezdünk egész jól állni. Felszereltük Atesz felmászó cuccát, ehhez még kell találni valamit, ami kifeszíti, de ez már a legkevesebb. Megfordítottuk a menetirányt, mivel tolatni nem nagyon fogunk ha minden jól megy, viszont hátrafelé jobban stablilabban megy a robot mint előre, ezért az eredeti irányhoz képest fordítva fog működni a cucc. Viszont ahogy felkerültek az alkatrészek szép sorban elkezdett a robot súlypontja egyre előrébb tolódni, ezért kénytelenek leszünk valószínűleg az akkumulátort nem a robot aljára a tartóba betenni, hanem a robot hátulján fog feküdni, és a tetejére kerül majd a router. Nagyon sokat kellett vezetékeznünk, mindent bekötöttünk a már kész vezérlő panelre, az össze kapcsolót, az opto kapukat, a szervókat stb... Nagyrészt UTP kábelen megy minden, azt volt a legegyszerűbb felhasználni, mert volt belőle sok, színes jól megkülönböztethető, viszonylag megfelel a célnak. A tápokat 1,5mm-es fekete piros hangfal kábelen visszük. Minden ónozott. Felkerült a robot elejére a szervó torony, amit szintén Atesz követett el. 3 szervó alkotja, melyek a kamerát tudják mozgatni. Ezt is beállítottuk pontosan. Sajnos a sok cucc miatt, nem lehet akárhogy forgatni a kamerát, mert bele tud akadni például a motorvezérlőkbe, ezért ezzel óvatosan kell bánni, a teszt során ez meg is mutatkozott, úgyhogy nem lehet szabadon forgatni a szervókat, de ezt majd szoftvverből megoldom, hogy merre mennyit lehet. Beállítottuk alaphelyzetnek, hogy a kamera előre nézzen. Ezt beállítja induláskor a kotroller is, illetve a Pc-s progi is alaphelyzetbe rántja induláskor a cuccot. Megoldottuk a tápcsatlakozást a zigbee modulnak is, így már nem külső elemekről megy, illetve az IP kamerának is csináltunk 5V-ot a panelen. Sikerült úgy megoldani a tetéjt a rovernek, hogy távtartók segítségével a zigbee panel a vezérlő fölött helyzkedik el közvetlenül, így kevesebb helyet foglal el. Sajnos a teszt során megint előjött a szíj ugrásának problémája, a robot nagyon nehezen tud forogni, mivel nagyok a kerekei, és nem tud a szíj valami oknál fogva ekkora nyomatékot átadni. Ezt próbáljuk minnél hamarabb orvosolni. A robot aljára került rés optok és a lyukas tárcsák segítségével tudjuk most már egész jól mérni a megtett utat. 2m-en durván 1-2cm a pontatlanság. ez abból adódik, hogy nem elég nagy a lyukas kerék (enkóder) lyukszáma ( kicsi a felbontása ). Az IP kamerát is sikerült feléleszteni némi küzdelem árán. A router segítségével WIFI-n keresztül megkapjuk a kamera képét. Ezt egyelőre nem dolgozza még fel semmi, de elvileg van rá esély, hogy a karaktereket automatikusan fel fogjuk majd ismerni a versenyen. Mértünk áramfelvételt, kis sebességnél 3A-t eszik a robot minden részét beleértve, nagyobb sebesség estén pedig 5A-t. Erre a fogyasztásra még rá fog jönni pluszban a router, amihez gyárilag 1A-es táp van, őt majd közvetlenül a 12V-os akksira fogjuk kötni. Remélhetőleg nem fog 1A-t enni. A tegnapi nap során készültek fényképek és videók is, ezekből párat fel is teszek most.
Íme a komplett rover ahogy fogni fogja a csövet
Felülnézetből a vezetékezés meg az elektronikai részek
Mechanika fejlesztés II. és űrlift készítés
A hétvégi munkálatok után már azt is sikernek könyvelem el, hogy 1; nem kaptam agyvérzést 2; nem hajtottam végre maradandó deformitást okozó behatást a roboton. Ami lehet minden rosszul sikerül, minden keresztbe állt, minden eltört és minden kiszakadt a helyéről. Elsőként a legkomolyabb problémára igyekeztem megoldást találni: az ékszíj leugrálására. Ezt oldalanként két-két görgő cseréjével oldottam meg. Az új görgök vas cérnatartó spulnik voltak előző életükben de ide is tökéletesen megfelel, mivel a szíj képes belefutni így a leugráshoz egy kb 4 mm-es peremen kellene átküzdenie magát. Ezt a feladatot aránylag hamar néhány óra hézagolás és rögzítési nehézség után kipipálhattam. Van még egy olyan problémánk, hogy kanyarodáskor au új kerekek meglehetősen tapadnak a felszínhez és ez akkora terhelést ad a "futóműre", hogy a szíj olykor átugrik. ezt még orvosolni kellene de a megoldása kemény diónak tűnik. ezután következett a felmászó elkészítése. Már hetek óta agyalok elmélkedek hogyan is lehetne megoldani és végül a dörzshajtás mellet maradtam. Korábban szóba jött mágneses megoldás is de vagy nehézkes megoldani vagy rengeteg áramot igényelne. A korábban kiszemelt hajtásház valami oknál fogva megszorult. A végső konstrukcióban egy méhtelepről kibuherált előző életében fénymásolóban teljesítő hajtásház szerepel. A szerkezetben most egy csigatengelyes motor hajt egy 4-5 fogaskerékből álló lassító áttételt ami két gumihengert hajt, ezt a két hengert szorítom neki két csáp-szerű karral a vascsőnek. A csápokat fémhálóból alakítottam ki. Szükségesnek láttam segéd görgők használatát ami nem hajtott csak a finomabb "siklás" érdekében kerül alkalmazásra. Ezek a mindenki által jól ismert ragasztópisztolyba való betétek melyeket kifúrtam és esztergával 1 cm-es darabokra vágtam. Ezután már csak be kellett fűrészelni és felpattintani a megfelelő helyre. A mi roverünkön az airsoft golyó felszedésére is az űrliftet használjuk. A módszer pofon egyszerű mivel amúgy is rendelkezésünkre állnak forgó tengelyek így csak kiválasztottam a megfelelőt és egy cérnaspulnit rögzítettem rá. Így a leengedett majd újra feltekert madzag ragasztós végére ha minden jól megy felragadnak a golyók. Ezzel a megoldással az űrlift kb 3 cm/s-os sebességre képes.
2010. április 22., csütörtök
Pár kép a mostani állapotról
Kicsit sajnos elmosódtak, de nem akartam vakuzni, mert akkor visszacsillan és semmit se lehet látni.
2010. április 19., hétfő
Újabb szoftverezés
Na újabb jó hírek, végre megoldódott az infra probléma. Valahogy mindig ugyanazokba a hibákba esek ezekkel a megszakításokból, és mindig arra jutok, hogy nem tudok konzekvens lenni a megoldással kapcsolatban, mintha minden programnak lenne saját lelke és nem teljesen egyformán produkálnák a hibákat. Ami biztos, hogy az egyik hiba az volt, hogy nem állítottam be bemenetnek az interrupt lábat, ezt azért nem értem miért baj, mert ha a soros port megszakításnál eljátszom ugyanezt, akkor ott megszakítás engedélyezésnél felülírja a láb irányát, nem tudom ez miért nem történik meg egyéb interruptok esetén, pedig nyilván ez lenne a logikus. Na mind egy a lényeg, hogy ezt átírtam, illetve ki kellett cserélnem az optokapukat. A sharp-ok közül az egyik működött, a másik furcsa módon 5V-ot adott alaphelyzetben ami jó is, de amikor kitakartam a fény útját, akkor 2,7V-ot sikerült produkálnia 0V helyett. Próbálkoztam soros áramkorláttal, a kimenetet 10kohmmal felhúztam külön 5V-ra is de semmi sem változott sajnos. Így maradtak a jó öreg TCST2103-as optoim amiknek már a vezetékébe beleforrasztottam az ellenállásokat, így csak be kellett kötni a tápot földet meg a kimenetet és már ment is minden mint a karikacsapás. A kapcsolók közül hely hiányában most egyelőre 2-t kötöttem be, egyet elöl egyet hátul, és egy hurkapálcával összekötöttem az egy végen lévő kapcsolókat, mint egy lökhárító funkcionál. Ide majd nem összekötve a kapcsolókat fémlemezt fogunk hajlítani. Ezek működnek is rendben, megállítják a robotot ütközés esetén.
tegnap végeztem egy hosszabb tesztelést is. Méregettem, hogy mennyire pontosan tudok megtenni utakat a szoftver parancsaival, és egészen jó eredményeket produkált a kis szörny, 1-2cm-es pontossággal megtesz 205cm-es utat. Sajnos a felbontásunkat az opto előtt forgó kis karika (enkóder) lyukszáma határozza meg, és ez nem valami sok. Kb 2 cm-es pontosságot tudunk ilyen nagy kerékméret mellett. Számítások alapján a kerék kerülete kb 35cm és ezalatt kapunk 24 jelet. dupla ennyi az jobb lenne, de hát ebből kell dolgozni.
A kanyarodást még nem igazán sikerült tesztelni, mert ugrik a szíj meg leesik stb... de várhatóan 6 foknál kevesebbet nem fogunk tudni fordulni...
A kanyarodáskor fellépő sebességkülönbséget az oldalak között próbáltam minimálisra csökkenteni, csak teljesen másképp viselkedik a robot, amikor meg van emelve és csak nézem a forgási sebességet, illetve amikor le van téve a földre és tényleg forog. Ebbe még az is belejátszik persze, hogy elforog a gumiban a felni. Ezek a kis apróságok elég bosszantóak, de hétvégre elvileg orvosolva lesznek, és akkor jöhetnek a további tesztek is. Közben Kerék készíti a vezérlő panelt, úgyhogy hétvégére már valószínűleg az is felkerülhet a robotra a légycsapóval meg az űriklóval együtt. Most feltettem ideiglenesen tesztelés céljűból a 3 szervó alkotta kamera mozgató rendszert is, amit Atesz tervezett. Sajnos egy 7805-nek túl nagy terhelés 3 szervót mozgatni, úgyhogy csak 1-el tudtam igazából kipróbálni, de működni fog, pláne ha majd a végleges panelen 2db 7806 fogja hajtani.
Azt hiszem mára egyelőre ennyi, képeket csináltam még, amiket ha lesz még időm feltöltök hamarosan...
tegnap végeztem egy hosszabb tesztelést is. Méregettem, hogy mennyire pontosan tudok megtenni utakat a szoftver parancsaival, és egészen jó eredményeket produkált a kis szörny, 1-2cm-es pontossággal megtesz 205cm-es utat. Sajnos a felbontásunkat az opto előtt forgó kis karika (enkóder) lyukszáma határozza meg, és ez nem valami sok. Kb 2 cm-es pontosságot tudunk ilyen nagy kerékméret mellett. Számítások alapján a kerék kerülete kb 35cm és ezalatt kapunk 24 jelet. dupla ennyi az jobb lenne, de hát ebből kell dolgozni.
A kanyarodást még nem igazán sikerült tesztelni, mert ugrik a szíj meg leesik stb... de várhatóan 6 foknál kevesebbet nem fogunk tudni fordulni...
A kanyarodáskor fellépő sebességkülönbséget az oldalak között próbáltam minimálisra csökkenteni, csak teljesen másképp viselkedik a robot, amikor meg van emelve és csak nézem a forgási sebességet, illetve amikor le van téve a földre és tényleg forog. Ebbe még az is belejátszik persze, hogy elforog a gumiban a felni. Ezek a kis apróságok elég bosszantóak, de hétvégre elvileg orvosolva lesznek, és akkor jöhetnek a további tesztek is. Közben Kerék készíti a vezérlő panelt, úgyhogy hétvégére már valószínűleg az is felkerülhet a robotra a légycsapóval meg az űriklóval együtt. Most feltettem ideiglenesen tesztelés céljűból a 3 szervó alkotta kamera mozgató rendszert is, amit Atesz tervezett. Sajnos egy 7805-nek túl nagy terhelés 3 szervót mozgatni, úgyhogy csak 1-el tudtam igazából kipróbálni, de működni fog, pláne ha majd a végleges panelen 2db 7806 fogja hajtani.
Azt hiszem mára egyelőre ennyi, képeket csináltam még, amiket ha lesz még időm feltöltök hamarosan...
2010. április 15., csütörtök
További apróbb fejlesztések, hibajavítások
Mióta ismét hozzám került a rover csináltam pár apróbb dolgot rajta, a felszerelt kapcsolókat bekötöttem, mégpedig úgy, hogy a kapcsolók alaphelyzetben nyitottak, amikor pedig az akadálynak megy a robot, akkor zárnak. A mikrokontroller adott lábát egy ellenállás segítségével felhúztam plusz tápra, a másik oldalára pedig rákötöttem a kapcsoló egyik felét. A kapcsoló földet kapcsol a kontroller lábára, ezzel lehúzza azt, és ezt a változást figyeli a kontroller. Az optoréseket is megpróbáltam feléleszteni, próbapanelen működött is, nagynehezen dokumentáció hiányában sikerült kibogoznom, hogy melyik lába hova megy, k is próbáltam, működött is szépen, ellenben amikor a roveren lévő cuccot próbáltam belőni, akkor az nem működött. Egyelőre nem tudom még mi a hiba, de majd igyekszem kiméregetni meg rájönni.
Fény derült egy olyan hibára is i, hogy a robot nem vette mégsem jól a már kibővített 6 bájtos üzeneteket, mivel a zigbee modul nem jól küldte a cuccokat, és ezért nem indult a rover parancsszóra. A megoldás az volt, hogy késleltetve küldöm el a PC-ről a bájtokat, illetve valamiért a 0-kat nem küdte el, és mivel ezek igen gyakran előfordulnak az üzenetekben, ezért 6 bájtnál rövidebb parancsok mentek át a kontrollerbe, és ezeket nem tudta helyesen értelmezni, ezt egyelőre gyorsan úgy oldottam meg, hogy 253-as számot küldök 0 helyett. A 253 nem fordul elő máskor csak ebben az esetben ezért könnyen ki lehet szűrni, és a vételnél 0-ra visszaállítani. az általános utasításokat 250-ig használom. 255 a stop 254 a nyugtázás ( ACK ) a 251 pedig egy félpercenként kiküldött ADC kérés az akku feszültséget küldi rá válaszképp a kontroller. Ezt a PC-n százalékban illetve grafikusan egy csíkon is kijelzi.
Felmerült még egy olyan probléma is, hogy a rover előre illetve hátra azonos kitöltés mellett nem azonos sebességgel halad, ami nem lenne probléma, de kanyarodáskor az egyik oldal előre forog a másik pedig hátra, és ebben az esetben a sebesség különbség már problémát okoz. Ezt még valahogy ki kell majd küszöbölni, erre egyelőre még nincs ötletem, mert az egyel nagyobb sebesség a lassú oldalon valószínűleg már sok lenne. Amint megvan a megoldás felkerül a blogra.
Fény derült egy olyan hibára is i, hogy a robot nem vette mégsem jól a már kibővített 6 bájtos üzeneteket, mivel a zigbee modul nem jól küldte a cuccokat, és ezért nem indult a rover parancsszóra. A megoldás az volt, hogy késleltetve küldöm el a PC-ről a bájtokat, illetve valamiért a 0-kat nem küdte el, és mivel ezek igen gyakran előfordulnak az üzenetekben, ezért 6 bájtnál rövidebb parancsok mentek át a kontrollerbe, és ezeket nem tudta helyesen értelmezni, ezt egyelőre gyorsan úgy oldottam meg, hogy 253-as számot küldök 0 helyett. A 253 nem fordul elő máskor csak ebben az esetben ezért könnyen ki lehet szűrni, és a vételnél 0-ra visszaállítani. az általános utasításokat 250-ig használom. 255 a stop 254 a nyugtázás ( ACK ) a 251 pedig egy félpercenként kiküldött ADC kérés az akku feszültséget küldi rá válaszképp a kontroller. Ezt a PC-n százalékban illetve grafikusan egy csíkon is kijelzi.
Felmerült még egy olyan probléma is, hogy a rover előre illetve hátra azonos kitöltés mellett nem azonos sebességgel halad, ami nem lenne probléma, de kanyarodáskor az egyik oldal előre forog a másik pedig hátra, és ebben az esetben a sebesség különbség már problémát okoz. Ezt még valahogy ki kell majd küszöbölni, erre egyelőre még nincs ötletem, mert az egyel nagyobb sebesség a lassú oldalon valószínűleg már sok lenne. Amint megvan a megoldás felkerül a blogra.
2010. április 11., vasárnap
Mechanika III. a Monster Truck támadása...
A tegnapi és a tegnapelőtti napon ismét sikerül nagyot haladnom a mechanikai munkálatokkal. Elsőként felszereltem a motortengelyek kimenetére a lyuktárcsát illetve a hozzá tartozó opto adó-vevő egységet. A tengelyben lévő M4-es menet eredetileg az ablak beállítására szolgál ha épp nem megfelelő a véghelyzet (mert ugye a motorjaink eredetileg BMW ablakemelő motorok voltak) most azonban erre a feladatra is tökéletesek. Ebben a formában 12 lyuk áll rendelkezésünkre fordulatonként, ha azonban ez kevésnek bizonyul további lyukasztásra lesz szükség. A kerekeket csütörtökön kaptam meg postán. A postás elsőre cipőnek nézte de szerencsére a rendelt kerekek ékeztek meg. Sóval a kerekek 110 mm átmérőjűek és 50 mm szélesek a tengelyük 5 mm a futófelület pedig közepesen gumiszerű műanyag. Szóval király. A kerekek felszerelésére kb a szombati napom rá is ment ugyanis készítenem kellet egy műanyag hengert amibe a korábban használt meghajtó persely beleszorul és a kerékbe is rögzíteni tudom. Ez a gyakorlatban egy 20 mm átmérőjű 24,25 század milliméteres műanyagdarabot jelent. Mivel ilyesmi anyagom otthon nem volt kénytelen voltam egy műanyag vágódeszkából rögtönözni esztergával. ( A segítségért köszi apu.) A felfogatás elkészültével már csak le kellet esztergálnom a 8 as imbusz csavarok fejét mert nem fért el a műanyag rögzítőgyűrű és a felni között. Miután elkészültem a kerekeket biztonsági okokból még két csavarral is rögzítettem, hogy nehogy kiessen a kíméletlen marsi terepen.
2010. április 10., szombat
További szoftverfejlesztés a szünetben.
Így a szünet vége felé sikerült egy kicsit megint haladni a munkával. Sikerült megírni a FIFO-t (First In First Out) vagyis amit először beírok azt először kell majd kiolvasnom is. Erre azért volt szükség, hogy megoldható legyen egy komplett grafikus úton megtervezett útvonal elküldése a rovernek, és egy parancs csomagként küldöm el az egészet, hogy ne kelljen többször is kivárni a 15 mámsodperces késleltetést, amit a szabályok írnak elő. A FIFO-t úgy hoztam létre, hogy az üzenetek egy 2 dimenziós tömbben tárolódjanak el. A sorok 6 elemből állnak, és egy komplett üzenetet tartalmaznak. 20 sorosra definiáltam a tömböt, tehát 20 üzenet eltárolására alkalmas. Ha eléri a kiolvasott üzenetek száma a beadottakét, magyarul minden bent lévő üzenetet kiolvastunk, akkor a tömb a 0-s elemre ugrik. Nem volt egyszerű első körben megírni ezt a cuccot, jól át kellett gondolni, és voltak kisebb hibák, rossz sorrendben csináltam függvényhívásokat meg ilyenek, de folyamatos LCD segítségével történő debuuggolás során mindig láttam, hogy hol lehet a hiba, és korrigáltam a dolgokat. Így most már működik a cucc nagyon jól.
Ezenkívül megírtam az ADC (Analog Digital Conversion) részt, ami az akkumulátor tápfeszültségét méri, és küldi el a PC-nek. Először is az akksi 12V-os tehát közvetlenül nem lehet rákötni a mikrokontroller lábára, leosztottam 2 ellenállás segítségével, amiket igyekeztem kOhm nagyságrendűre választani, mert itt nincs szükség nagy áramra. Úgy számoltam, hogy az akksi teljesen feltöltve üresjárásban leadhat 13,7V-ot is, az én leosztásommal 14V fölé is mehetne a cucc, persze így nem vagyunk olyan pontosak, de ebben az esetben nekünk bőven elég a 0,1V os pontosság, vagy akár még rosszabb is. 10bites az ADC a mikrokontrollerben és én ennek a 10 bitnek a felső 8 bitjét használom, hogy egy USART üzenetben elférjen, ami ugyebár 8 bites. Lehetne bonyolítani a pontosság érdekében, hogy 2 üzenetben küldjem el és a PC-n összerakjam a 10 bitet, csak egy szorzás lenne ott lényegében, de mivel nem fontos ezért ettől ebben az esetben eltekintek. A PC küld egy üzenetet majd kb fél percenként a kontrollernek, ami ezt az üzenetet értelmezni fogja, és a FIFO megkerülésével azonnal végre is hajtja. Felesleges lenne várni, hogy a FIFO-ban sorra kerüljön, ez nem befolyásolja a szervókat vagy a mozgást úgysem. Ugyanígy a stop üzenet is megkerüli a FIFO-t kellemetlen lenne megvárni míg nekimegy mindennek a rover mire lefut minden utasítás és akkor utána jönne csak a stop... Szóval rögtön történik 8 AD átalakítás, az eredményeket kiátlagolom, majd ezt a 8 bites átlagot elküldöm a PC-nek. Ott ez átszámítódik majd a megfelelőképpen %-ba és egy színes PROGRESSBAR vagyis "bitkolbász" formájában jelenik meg grafikusan. 3 színe van, 50% felett zöld 20% felett sárga és az alatt piros.
Ha minden jól emgy hamarosan neki állok megtervezni a vezérlő panel NYÁK-ját is, most várom, hogy a rover hozzám kerüljön és elkezdjem tesztelni az új koncepcióval. Remélem ma is sikerült pár hasznos dolgot felvésnem ide :)
Ezenkívül megírtam az ADC (Analog Digital Conversion) részt, ami az akkumulátor tápfeszültségét méri, és küldi el a PC-nek. Először is az akksi 12V-os tehát közvetlenül nem lehet rákötni a mikrokontroller lábára, leosztottam 2 ellenállás segítségével, amiket igyekeztem kOhm nagyságrendűre választani, mert itt nincs szükség nagy áramra. Úgy számoltam, hogy az akksi teljesen feltöltve üresjárásban leadhat 13,7V-ot is, az én leosztásommal 14V fölé is mehetne a cucc, persze így nem vagyunk olyan pontosak, de ebben az esetben nekünk bőven elég a 0,1V os pontosság, vagy akár még rosszabb is. 10bites az ADC a mikrokontrollerben és én ennek a 10 bitnek a felső 8 bitjét használom, hogy egy USART üzenetben elférjen, ami ugyebár 8 bites. Lehetne bonyolítani a pontosság érdekében, hogy 2 üzenetben küldjem el és a PC-n összerakjam a 10 bitet, csak egy szorzás lenne ott lényegében, de mivel nem fontos ezért ettől ebben az esetben eltekintek. A PC küld egy üzenetet majd kb fél percenként a kontrollernek, ami ezt az üzenetet értelmezni fogja, és a FIFO megkerülésével azonnal végre is hajtja. Felesleges lenne várni, hogy a FIFO-ban sorra kerüljön, ez nem befolyásolja a szervókat vagy a mozgást úgysem. Ugyanígy a stop üzenet is megkerüli a FIFO-t kellemetlen lenne megvárni míg nekimegy mindennek a rover mire lefut minden utasítás és akkor utána jönne csak a stop... Szóval rögtön történik 8 AD átalakítás, az eredményeket kiátlagolom, majd ezt a 8 bites átlagot elküldöm a PC-nek. Ott ez átszámítódik majd a megfelelőképpen %-ba és egy színes PROGRESSBAR vagyis "bitkolbász" formájában jelenik meg grafikusan. 3 színe van, 50% felett zöld 20% felett sárga és az alatt piros.
Ha minden jól emgy hamarosan neki állok megtervezni a vezérlő panel NYÁK-ját is, most várom, hogy a rover hozzám kerüljön és elkezdjem tesztelni az új koncepcióval. Remélem ma is sikerült pár hasznos dolgot felvésnem ide :)
2010. április 9., péntek
Mechanika fejlesztés II.
Az utóbbi fejlesztés óta csak a mai napon tudtam a robotra időt fordítani. A mai napon sikeresen elhárítottam a fordulás közbeni szíj megugrás jelenségét valamint a bordásszíj leugrálását is megszüntetem. Ezt úgy értem el, hogy a rover aljára felcsavaroztam két erős alumínium merevítőt a hossztengellyel párhuzamosan. Ennek köszönhetően a forduláskor fellépő erőhatások nem tudják a vázat meghajlítani és a szíj nem lazul meg. Azért a masina hozta a szokásos formáját így a ahhoz, hogy a merevítők elférjenek ki kellet reszelni némi anyagot az akkumulátor tartóból valamint a vázból is. Ha már fejtetőre állítottam a masinát akkor az akkumulátor tartót is módosítottam, hogy a barátságtalan terepen se csússzon ki az akksi. A módosítás tulajdonképpen a fapados "fogd a kalapácsot és üss" megoldást takarja de végülis az eredmény pazar. További problémaként jelentkezett, hogy az egyenesfutással gondok vannak. Ennek orvoslására az első hidat kismértékben módosítottam így a köldökzsínorral egyenesen fut de még ellenőrizni kell az AVR-el is. Ezután megkezdtem az ütközéskapcsolók rögzítését. Elöl a megbeszélt két kapcsolót rögzítettem a két oldalára a gépnek. A kapcsolok három érintkezősek szóval szabadon megválaszthatjuk utólag hogy NO vagy NC ként használjuk. Hátulra szintén két kapcsolót tettem mert éppen találtam két szinte teljesen megegyezőt és a kettő mégiscsak jobb mint az egy. Aztán itt kezdődtek a gondok... ahhoz, hogy érjen valamit megfelelően ki kell tenni a sarokra de jóformán nem volt sarok amire rögzíthettem volna. Megoldásként vágtam és hajtogattam egy kiegészítő lemezt amire rögzíteni lehetett mindkét kapcsolót valamint a motorvezérlőket és még ami nem fér el máshol mind mind erre lehet fogatni. Most körülbelül itt tartok holnap(illetve ma) végre nálam lesznek az új kerek és lehet azzal ügyeskedni...
2010. április 5., hétfő
Egy kis szoftverfejlesztés a szünetre...
Mivel Atesz birtokolja a gépezetet a szünetben, ezért én most csak elméleti síkon dolgozom, illetve próbapanelon próbálgatom ki az új cuccokat. Megírtam a mikrokontrollerbe a kapcsolók figyelését, amik akkor adnak majd 5V-ot a mikrokontroller adott lábára, ha a kapcsolókat megnyomja mondjuk egy akadály. A rover szélére lesz téve a 4 kapcsoló, és fémlemezek lesznek rájuk erősítve. Ha a rover ütközik, akkor rögtön megáll, és kicsit visszafog hátrálni az akadálytól. Ezt a részt a main programrészben egy végtelen ciklusban vizsgáljuk. Erre 4 lábát el kell használni a miktrokontrollernek, mert azt is tudni akarjuk, hogy hol van az akadály, nem csak a tényt, hogy neki mentünk valaminek.
Megírtam a megszakításvizsgálatot az elfordulás érzékelésére. Egy inkrementális jeladót fogunk használni erre a célra ha minden igaz, illetve oldalanként egyet. Így tudjuk majd mérni a kanyarodást is, illetve az előre/hátra haladást is. Az INT0 és INT1 megszakítás vektorát használtam fel a 8bites ATmega32-nek.
A szervómotorok vezérlését a motorokvezérléséhez felhasznált órajelhez kellett igazítani. Mivel a szervónak 10ms periódus idejű jel kell aminek 1-2 ms között van 5V-on a jel a maradék időben pedig 0-n, ezért leosztottam a prescalerrel a főórajelet 8-al. 8MHz esetében ez 1MHz-et eredményez. Ezzel a sebességgel elszámoltatok egy számlálót 50-ig. Ekkor már csak 20kHz maradt. Ezt 10ig számoltatom a motorok esetében, és így lehet 4 előre és 4 hátra sebességet definiálni. A szervók esetében pedig 200-ig számoltatom őket, így kijön a 100Hz-es jel. és ezen belül a végállások úgy alakulnak, hogy 10 és 46 között állítom, hogy meddig van 5V-on a jel és a maradék időben 0V. Így 5 fokos felbontást lehet elérni, mivel 46-10=36 és a szervó 180fokot tud forogni, tehát 180/36=5 . Ezt innentől már könnyen lehet használni korlátlan számú szervó esetén is. A mi esetünkben 4 szervó lesz használatban, de a biztonság kedvéért most 8 szervóra méreteztem a dolgokat. Persze ezekhez a változtatásokhoz hozzá kellett igazítani a PC-s szoftvert is, hogy kompatibilisek legyenek egymással.
Ezenkívül átírtam a teljes kommunikációt, most úgy döntöttem, hogy egyelőre elegek lesznek a 6 byte-os üzenetek is. Az első bájt a címzett eszközé pl szervó vagy motorvezérlő, a második szervó esetén a szög, motorvezérlő esetén egy olyan érték, amely magában foglalja a sebességet, és a mozgás irányát. 3 sebességfokozat van minden irányban. A következő bájtban megadom az elfordulás szögét 0-180 fok közötti érték. A 4. bájtban a távolságot centiméterben. Mivel egy bájt az üzenet mérete és lehet hogy 255cm-nél többet szeretnénk menni, ezért az 5. bájtban lehetőség van még 255cm út elküldésére. Amennyiben kevesebb mint 255 cm-t szeretnénk megtenni akkor az 5. bájt üres marad. A 6. bájtban pedig egy 255 értékű lezáró bájtot küldünk.
A grafikus útvonaltervező cuccost is teljesen ehhez a sémához igazítottam, így az már pontosan legenerálja és elküldi a parancsokat a kontrollernek.
Következő feladat az lesz, hogy a kontrollerben létrehozzak egy FIFO-t aminek a segítségével lehetőségem nyílik rá, hogy több üzenetet leküldjek egymás utána kontrollerbe és azok ott tárolódjanak, és sorban amint az előző véget ért, végrehajtódjanak. Remélem hamarosan ez is meglesz.
Megírtam a megszakításvizsgálatot az elfordulás érzékelésére. Egy inkrementális jeladót fogunk használni erre a célra ha minden igaz, illetve oldalanként egyet. Így tudjuk majd mérni a kanyarodást is, illetve az előre/hátra haladást is. Az INT0 és INT1 megszakítás vektorát használtam fel a 8bites ATmega32-nek.
A szervómotorok vezérlését a motorokvezérléséhez felhasznált órajelhez kellett igazítani. Mivel a szervónak 10ms periódus idejű jel kell aminek 1-2 ms között van 5V-on a jel a maradék időben pedig 0-n, ezért leosztottam a prescalerrel a főórajelet 8-al. 8MHz esetében ez 1MHz-et eredményez. Ezzel a sebességgel elszámoltatok egy számlálót 50-ig. Ekkor már csak 20kHz maradt. Ezt 10ig számoltatom a motorok esetében, és így lehet 4 előre és 4 hátra sebességet definiálni. A szervók esetében pedig 200-ig számoltatom őket, így kijön a 100Hz-es jel. és ezen belül a végállások úgy alakulnak, hogy 10 és 46 között állítom, hogy meddig van 5V-on a jel és a maradék időben 0V. Így 5 fokos felbontást lehet elérni, mivel 46-10=36 és a szervó 180fokot tud forogni, tehát 180/36=5 . Ezt innentől már könnyen lehet használni korlátlan számú szervó esetén is. A mi esetünkben 4 szervó lesz használatban, de a biztonság kedvéért most 8 szervóra méreteztem a dolgokat. Persze ezekhez a változtatásokhoz hozzá kellett igazítani a PC-s szoftvert is, hogy kompatibilisek legyenek egymással.
Ezenkívül átírtam a teljes kommunikációt, most úgy döntöttem, hogy egyelőre elegek lesznek a 6 byte-os üzenetek is. Az első bájt a címzett eszközé pl szervó vagy motorvezérlő, a második szervó esetén a szög, motorvezérlő esetén egy olyan érték, amely magában foglalja a sebességet, és a mozgás irányát. 3 sebességfokozat van minden irányban. A következő bájtban megadom az elfordulás szögét 0-180 fok közötti érték. A 4. bájtban a távolságot centiméterben. Mivel egy bájt az üzenet mérete és lehet hogy 255cm-nél többet szeretnénk menni, ezért az 5. bájtban lehetőség van még 255cm út elküldésére. Amennyiben kevesebb mint 255 cm-t szeretnénk megtenni akkor az 5. bájt üres marad. A 6. bájtban pedig egy 255 értékű lezáró bájtot küldünk.
A grafikus útvonaltervező cuccost is teljesen ehhez a sémához igazítottam, így az már pontosan legenerálja és elküldi a parancsokat a kontrollernek.
Következő feladat az lesz, hogy a kontrollerben létrehozzak egy FIFO-t aminek a segítségével lehetőségem nyílik rá, hogy több üzenetet leküldjek egymás utána kontrollerbe és azok ott tárolódjanak, és sorban amint az előző véget ért, végrehajtódjanak. Remélem hamarosan ez is meglesz.
2010. április 4., vasárnap
Mechanika fejlesztés I.
A tegnapi napon sikeresen előrébb jutottam a robot mechanikai feladataival. Ami fontos az az, hogy a 11 cm átmérőjű kerék használata megoldható egész kicsi beavatkozással (bár az 5 mm átmérőjű tengely okoz majd némi fejtörést). A kameramozgató szinte készen van, még hátra van a kamerát tartó konzol legyártása ami a kamera nélkül nehezen lenne kivitelezhető, valamint az, hogy pontosan hol is legyen a roverre elhelyezve. Az elhelyezés valószínűleg akkor tisztázódik, amikor már minden részegység elkészül. A kameramozgató tulajdonképpen 3 db egymásra épített szervomotor, így vízszintes irányban kb. 400 fokos függőlegesen pedig kb. 200 fokos a mozgási tartomány. A dolog szépséghibája annyi, hogy mivel az egyik fémtengelyes szervo a kolégiumban maradt így azt kellett használnom ami van. Tehát most a függöleges mozgatásért felelős motorok műanyag tengelyűek. A tesztek során a jobban igénybevett szervot majd fémtengelyesre cseréljük.
Feliratkozás:
Bejegyzések (Atom)