2009. augusztus 30., vasárnap

Marslakók Wiki

Arra gondoltunk, hogy ezentúl érdemes lehetne szétválasztani az eseményeket és a konkrét tudásbázist, ami a csapat mögött áll. Ezért létrehoztunk egy Wikit, ahol talán az eddigi fejlesztésekről tudunk talán részletesebben és struktúráltabban írni. Egyelőre kizárólagos nyelvként az angolt választottuk, későbbiekben előfordulhat, hogy magyarul is elérhetővé tesszük a leírásokat.

Tehát Wikire fel!

Marslakók wiki

Attila

2009. május 6., szerda

MSP430 debug Eclipse alatt

Dacára annak, hogy szeretjük a TinyOS-t, érdemes lehet sima gcc-ben is programozni az msp430 mikrovezérlőket. Ez a leírás arról szól, hogy hogyan állítsuk össze magunknak a szükséges környezetet. Bár Windows XP alatt állítottam össze a hozzávalókat, alapvetően tetszőleges natív Linux disztribúció és Cygwin alatt is alkalmazhatóak az itt leírtak, néhány értelemszerű módosítással. Ez a leírás ezen az angol nyelvű tutorialon alapszik.
A célhardver egy eZ430-F2013 eszköz, ami tartalmaz egy JTAG/TI spy-bi-wire programozót, valamint a célprocesszort egy zöld LEDdel. Az ehhez és hasonló eszközöhöz való driver online nem elérhető, azt az eszközzel együtt kapott CD-n találjuk meg (egy TIUSBFET.zip nevű file-t kell keresni...). Erre a driverre mindenképpen szükség van a programozáshoz/debughoz! Lássuk tehát, hogy mit kell ezen felül tennünk:
Step 1.: Töltsük le és installáljuk a legújabb mspgcc fordítót és függvénykönyvtárat az
mspgcc.sourceforge.net oldalról. Ez a bejegyzés írásának idején a 2008. 12. 30-i snapshot. Az installer alapértelmezés szerint felteszi a DirectIO nevű drivert is, amely közvetlen hardver elérést tesz lehetővé és a programletöltéshez lesz szükséges később. Windows Vista alatt a driver nem működik! A PATH környezeti változóba be kell rakni a $INSTALL_PATH\msp430\bin könyvtárat installálás után kézzel. A telepítéshez nem szükséges Cygwin; bár enélkül az installer feltelepít néhány további függvénykönyvtárat is.
Step 2.: Eclipse: Céljainkhoz elegendő az Eclipse for C/C++ Developers csomag letöltése és kitömörítése. Ez lényegesen kisebb mint a teljes Eclipse. Tartalmaz továbbá egy Mylyn nevű csomagot, ami egyszerűbb projectekhez nem létfontosságú, később hasznos lehet. Az Eclipse-t nem kell külön telepíteni, hanem elegendő kicsomagolni a célkönyvtárban. A cikk írásakor a 3.4-es (Ganymede) verziónál tartott.
Step 3.: Az integrációhoz szükségünk van a
Zylin CDT csomagra: Ezt a szokásos módon telepíthetjük Eclipse alá:


Step 4.: Ezután nincs más dolgunk, mint készíteni egy új projectet:


A Project->Properties menüben néhány helyen át kell írni a default gcc fordítót msp430-gcc-re, valamint a célprocesszort is definiálni kell a parancssorban, például:
msp430-gcc -mmcu=msp430x2013
Ezen kívül még a library eléréseket kell megadni a fordító számára:

"C:\Program Files\mspgcc\lib";
"C:\Program Files\mspgcc\msp430\lib".

Ehhez álljon itt segítségül néhány screenshoot:







Ezután készítsük el a projectet. Én a szokásos, neten is terjengő blink alkalmazással kezdtem:

Debug üzemmódba a képernyő jobb felső sarkában található bogárra kattintva válthatunk:

A debughoz használt msp430-gdbproxy alkalmazást az alábbiak szerint állítsuk be:

A main fülön a parancssori paraméterek a következőek:
--port=3333 msp430 --spy-bi-wire TIUSB
Ezután létre kell hoznunk egy debug konfigurációt:



A Commands fülön a következő parancsokat másoljuk be az Initialize commands dobozba:
set remoteaddresssize 16
set remotetimeout 999999
set download-write-size 512
target remote localhost:3333
set remote memory-write-packet-size 512
set remote memory-write-packet-size fixed
set remote memory-read-packet-size 512
set remote memory-read-packet-size fixed
monitor erase all
load Debug/test_blink
ahol az utolsó sorba értelemszerűen a megfelelő binárist írjuk! Ezután nincs más hátra, mint elindítani az msp430-gdbproxy konfigurációt, ami után a következő kép fogad, amely szerint türelmesen várakozik a 3333-as porton:

Ekkor elindíthatjuk a debugot is, ami lefordítja és fel is tölti a programunkat. amit ezután elindítani/leállítani pedig a szokásos magnógombokkal tudunk:

A megszokott debug eszközök pedig a jobb oldalon és felül találhatóak.

Attila

2009. március 13., péntek

Szervo végtelenítése

A rover meghajtásához kerekenként egy-egy szervo motort használtunk. Tettük ezt azért, mert megkönnyítette a dolgunkat: adott egy jól összetervezett kompakt villanymotor-kihajtás rendszer. Bár pont a nagy leosztás miatt nem tudunk nagy fordulatszámot (és ezzel nagy sebességet) elérni a kerekeken (a maximális fordulatszám általában 100 rpm körüli érték), de a motor méretéhez képest nagy nyomatékot kapunk cserébe. A szervo motorok eredetileg nincsenek is felkészítve folyamatos forgásra, hanem általában mintegy 270° szögtartományban mozognak, lehetővé téve például kormányművek mozgatását R/C modelleken.

Az átalakításhoz ismernünk kell a szervo motorok lelkivilágát: a külvilág felé egy háromlábú csatlakozójuk van, amelynek lábkiosztása: GND, Vcc, pulse. Az első kettő adja a belső elektronikának szükséges 4.8V tápfeszültséget, míg az utolsó határozza meg a megkívánt pozíciót: általában 1.5ms szélességű impulzusok szükségesek a középálláshoz, és nagyjából 0.5ms eltérés határozza meg a két végállást. Ez utóbbiak mechanikailag is fixek, az utolsó tengelyen egy bütyök beleütközik a szervo házán kialakított ellenpárjába. A meghajtó elektronika számára a pozíció visszacsatolását egy potméter adja. Világos tehát, hogy az átalakításhoz egyrészt meg kell szabadulnunk a mechanikai limitálástól, másrészt a pozíció visszacsatolását kell megszüntetnünk. A továbbiakban az általunk használt ECO-6 miniatűr 6 grammos szervohoz nyújtunk tippeket, de szerintem minden ilyen motort hasonlóan kell átszerelni. Azt persze érdemes előre ellenőrizni, hogy fröccsöntött házban van-e a szervo!
  1. Bontsuk le a szervo házának hátát! Ehhez két eléggé hosszú csavartól kell megszabadulni.
  2. Az elektronika kihajtható és előtűnik a potméter, aminek vezetékeit leforrasztjuk a fő panelról.
  3. Forrasszunk be két egyforma ellenállást a potméter csatlakozási pontjaira! Innentől kezdve a visszacsatolás számára a szervo folyamatosan középállásban van. Érdemes nagyjából tartani az eredeti potméter ellenállását, de a pontos érték nem kritikus.
  4. A szervo házának elülső része kipattintható. Itt férünk hozzá a fogaskerék áttéthez.
  5. A kimenő tengely körül felfedezhetjük a körbefordulás határolására szolgáló bütyköt. Ezt tűreszelővel tudjuk eltávolítani.
  6. A fogaskerekek leszedése után távolítsuk el a potmétert, amit még egy csavar tart az elektronika oldala felől.
  7. Csipesszel hajtsuk vissza a potméter csúszóérintkezőit. Ezzel egyrészt csökkentjük a súrlódást, másrészt megszabadulunk egy kellemetlen periodikus zajforrástól, amit a csúszóérintkező felütközése ad a csatlakozókon.
  8. Szereljük vissza a potmétert, rakjuk vissza a fogaskereket és a ház elemeit. Érdemes az elektronikát még egy darab szigetelőszalaggal elszigetelni a potmétertől.
Ezzel a szervot képessé tettük folyamatos körbeforgásra, és az eredeti vezérlésével kompatibilis maradt: 1.5ms hosszú impulzusokkal tudjuk helyben tartani, ennél kisebb, vagy nagyobb impulzusszélesség hatására a szervo forogni kezd, mivel megszabadítottuk a visszacsatolástól. Ez a megoldás azonban nem volt tökéletes: a legnagyobb probléma az volt, hogy nagyon nehéz eltalálni a középálláshoz tartozó impulzusszélességet, ráadásul az példányról példányra változik. Emellett ez a beállítás nem stabil: a nullára beállított motor néhány perc alatt lassan megindul valamelyik irányba. Nem tetszett az sem, hogy a fordulatszám szabályozhatósága egy eléggé szűk impulzushossz tartományra esik. Erről egy gyors mérés eredménye látható itt a jobb oldalon. A megoldást az jelentette, hogy megszabadultunk a gyári elektronikától és saját H-hidas meghajtást építettünk be. Ezzel legalább megállt a szervo, ha akartuk :) A kis méret és teljesítményigény miatt a Microchip TC4427A FET-meghajtóját használtam H-hídként. Ez az SO-8 tokban kapható IC egy tokja pont egy H-hidat tartalmaz, így megfelel céljainknak. Az átalakítás ára a maximális nyomaték kisfokú csökkenése volt, amire megoldás az áramkör valamelyik nagyobb áramú testvérének alkalmazása (de hát az nem volt a Chipcadnél tegnapra...). Mindenesetre ezzel stabilan működött a meghajtás a továbbiakban.
Attila

Tegyük a fát vízhatlanná!

Ennek a bejegyzésnek a célja, hogy röviden összefoglalja egyes faanyagok lakkozásának mikéntjét a teljesség igénye nélkül: az alapanyagok sokfélesége miatt nem törekedtünk arra, hogy kitérjünk minden lehetséges kombinációra, hanem az általunk felhasznált anyagokat vizsgáltuk csak meg. Hasonlóan nem fektettünk nagy hangsúlyt az esztétikára, a célunk csak a vízhatlanítás volt.


Fontos, hogy a lakkozás fokozottan tűzveszélyes művelet! Ezt vegyük figyelembe a munkahely megválasztásánál! Érdemes továbbá minél jobb szellőzést biztosítani a hígitó erős szaga miatt.


Lássuk tehát a hozzávalókat: adott egy vékony, 4mm vastag balsafa lemez, egy üveg vászonfeszítő lakk, és egy flakon nitrohígitó. A vegyszerek anyagköltsége literes kiszerelésben összesen nagyjából 1000 jó magyar forintok körül van, lakkot modellezőboltokban, nitrohígitót barkácsboltban találhatunk legegyszerűbben. Ez a mennyiség saccra 10m2 nagyságrendnyi felületre elegendő (életfogytiglan...). Szükségünk van még egy ecsetre, amivel a lakkot felvisszük a felületre, és egy fém vagy üveg tálkára, amiben a lakkot hígitjuk. Kell még egy merőkanál/keverőlapát (tipikusan kiszolgált csavahúzó :) ). Érdemes a kotyvasztás megkezdése előtt simára csiszolni a fa felületét.

A procedúra a következő:
  1. A lakkot felhígitjuk a nitrohígitóval nagyjából hígabb méz állagúra. A tapasztalat szerint a hígitási arány nem különösebben kritikus.
  2. Az ecsettel felvisszük a falapra. Az ecsettel érdemes lehúzni a felesleget, hogy csak egy vékony réteg maradjon.
  3. 15-20 perc várakozás után felvihetjük a következő réteget, amennyiben szükséges. Én azt tapasztaltam, hogy egy réteg után nagyon egyenetlen a lakk a felületen, három réteg elegendőnek bizonyult vízhatlanság szempontjából.
  4. Főleg vékony balsafára jellemző, hogy elcsavarodik, miután a lakk teljesen megszáradt. Ez ellen préselés alatti szárítással, vagy keresztmerevítők felragasztásával védekezhetünk.
Teljes száradás (néhány óra) után tesztelve azt tapasztaltam, hogy valóban sikerült vízhatlanítani mind balsafa, mind fenyőléc darabokat a fenti módszerrel. A lakkozott felületek a megszokott módokon ragaszthatóak maradtak, illetve lehet őket festeni is.

Attila

2009. március 8., vasárnap

Marsúszó 2009, felépítés

Idén elhatároztuk, hogy semmi esetre sem járunk úgy, mint a korábbi években, azaz nem fogunk utolsó éjszaka is marsjárót szerelni. Erre persze ne vegyünk mérget, de bíztató az a tény, hogy már most van egy működőképes konstrukciónk.
Lássuk a hozzávalókat:

Kerék:
Lépésálló hungarocell (hivatalos nevén expandált polisztirolhab), 4 cm vastag. Beszerezhető tetszőleges barkácsboltban. A kivágáshoz sablonként egy 9 cm átmérőjű nagyító szolgált. Ha feltesszük, hogy egy kerék maximum a feléig érhet bele a vízbe, akkor kerekenként durván 127 cm3 vízkiszorításunk lehet. Ez 508 g össztömeget jelent, persze ezt igyekszünk nem kicentizni.
Ragasztásához ragasztópisztoly, illetve kétkomponensű epoxi vált be, oldószeres ragasztókat értelemszerűen kerüljük. Ha ragasztópisztolyt használunk, ügyeljünk arra, hogy ne legyen túl forró a ragasztó a hungarocell alacsony olvadáspontja miatt!

Járműtest:
A tesztjárművön ugyanaz, mint a kerék, de problémát okozott, hogy nehéz hozzá megbízhatóan rögzíteni a szervókat, ezért száműztük és 5 mm vastag balsafa került a helyére. Ez 10 cm széles csíkokban kapható modellboltokban, ezért a jármű szélességét is ez a méret határozza meg, a hosszúságot úgy választottuk meg, hogy az oldalankénti két kerék kényelmesen elférjen egymás mellett, így lett a járműtest 15 cm hosszú.
A balsafa akár élesebb tapétavágó késsel is jól darabolható. Ha szálirányra merőlegesen vágunk, akkor érdemes a lap mindkét oldalán behúzni a késsel, és ezután eltörni, vagy átvágni. Úgy látom, hogy ez a faanyag száliránnyal párhuzamosan nagyon könnyen hasad, ezért a jármű elején és végén szükség lesz egy vékony csíkra keresztmerevítésként.

Lapátok:
Lapátként adta magát a szintén modellezőboltban kapható 3x20 mm-es fenyőléc, amit 3.5 cm hosszú darabokban ragasztunk fel a kerék külső lapjára, kerekenként négy darabot. A jobb mechanikai stabilitás érdekében tapétavágó késsel besüllyesztettem a hungarocellt a lapátok helyén mintegy 2 mm mélyen és ezt a rést töltöttem fel kétkomponensű műgyantával mielőtt belenyomtam a lapátot.

A faanyagokat a vizes környezet miatt le kell lakkozni, ennek mikéntjéről egy külön bejegyzésben írok majd.

A gépet a következő héten teszteljük, azután el lehet kezdeni feltölteni értelemmel. Remélem Teddy és Laci jól haladnak a mintázatfelismeréssel...

Attila

2009. február 28., szombat

Magyarok a Marson 2009 - proof-of-concept prototípus

Újra nekiálltunk a fejlesztésnek, mert készülünk a 2009-es Magyarok a Marson versenyre.
A feladat izgalmas és kihívásokkal teli: Idén vízen és szárazföldön is el kell boldogulnia a rovernek.

Az elmúlt hetekben már voltak levél-váltások és ötletelés a rover felépítéséről, Attila már be is vásárolta és "végtelenítette" a motorként szolgáló szervókat, amik most nálam vannak. Ma találkoztunk egy kis megbeszélésre és rover-építésre Attilával.

Összeraktunk egy nagyon kezdeti prototípus szerkezetet azokkal a 6g-os szervókkal, amiket használni tervezünk, és néhány hungarocell kerékkel. A vezérlő elektronika idén teljesen új lesz, és még nem teljesen funkcionális, ezért most csak két kereket hajtottunk meg egy-egy szervóval, ezeknek az oldalára ragasztottunk lapátokat is, hogy a vízben jobban haladjon.
kép:

Először szárazföldön próbáltuk ki:




Aztán vízre bocsátottuk:



Kb. 10 másodperc alatt tesz meg a vízben 1 m-t, állóhelyzetből indulva. Ez a sebesség bizonyára elég lesz a versenyen is.

Attila elvitte az alkatrészeket, hogy rendesen összerakja. Balsafa alvázra fogja cserélni a jelenlegi hungarocellt, mert a vízen a kerekekre ható felhajtóerő miatt az alap elgörbült, tehát merevítésre vagy merevebb anyagra van szükség.


Laci