Archívum: 2014 június


2014. Június 11.

Horgász etetőhajó tesztprojekt

írta: Xaint

A bátyám kedvenc hobbija a horgászat, és egy ideje komolyan gondolkodik egy etetőhajó beszerzésén. Mikor megláttam, hogy milyen áron vesztegetik manapság az ilyesmit, azt hittem rosszul látok. cool Azonnal felajánlottam, hogy én egy ilyen hajó árának a töredékéért összerakok neki egyet. Egy sokkal jobbat.

Persze ezt egy nagyobb és komolyabb projektnek gondoltam, amibe bárminemű előzetes tudás és tapasztalat nélkül belevágni elég veszélyes lett volna.

Épp ekkortájt kapott a kisöcsém egy kis távirányítós motorcsónakot a régiség piacról, természetesen működésképtelen állapotban. Hajócsavarok nélkül, leégett motorokkal, törött hajótesttel…

Akkor kössük össze a kellemest a hasznossal, gondoltam, és nekiláttam a kis hajó felújításának, mi több, teljes átalakításának. Ez lett az etetőhajó tesztprojektje. Olyan dolgokat igyekeztem belepakolni, amikre az etetőhajó készítésénél is szükség lehet a későbbiekben:

  • kétoldalú kommunikáció (adó/vevő a hajóban és a távirányítóban is)
  • vízhőmérséklet
  • léghőmérséklet
  • páratartalom
  • akkumulátor feszültség adatok a hajóról
  • nedvesség-érzékelők a hajótestben (beázás esetén riasztás küldése)
  • bekapcsolható irányfény a hajón
  • szervo kezelés

Ehhez az eredeti távirányító, azaz a teljes adó és a vevő elektronika is mentek a levesbe. 27 Mhz-es, a klasszikus TX-2B/RX-2B IC párosra épülő áramkörök ezek, kb. 15-20 méteres hatótávolsággal.

A rendőrautó átalakítása után volt pár elképzelésem, hogyan is kellene megvalósítani ezt a tervet. Motorvezérlés szempontjából most is az L293D IC használatára gondoltam, de ezúttal a fent felsorolt sokkal összetettebb megoldások miatt mikrovezérlő használatára is szükség volt.

Kis mérete miatt esett a választásom az Arduino Pro Mini lapkára. Transceiver-nek pedig a Hope Microelectronics RFM12B 868Mhz-es modulokat választottam. Ez az adó-vevő SPI buszon keresztül kommunikál a mikrovezérlővel, a használatához pedig többféle, az Arduino fejlesztői környezethez íródott könyvtár közül választhatunk. Értelemszerűen ezek kétirányú kommunikációt tudnak, hatótávolságuk 120-150 méter. Mivel DIP tokozással készülnek, vagyis inkább 2x6 tűs csatlakozóval, így közvetlenül sajnos nem lehet őket próbapanelbe dugni. Ezért készítettem nekik egy ideiglenes, próbapanel-barát segédnyákot, amivel elkezdhettem a programozást:
 


 

A hajóba szánt vezérlő nyákját mindenképpen kétoldalasnak akartam, egyrészt már az előző projektnél is (játékautó) így valósítottam meg az autó vezérlőjét, másrészt tudtam, hogy az etetőhajónál muszáj lesz kétoldalas nyákot készíteni. Ez persze bonyolítja a gyártást, több a hibalehetőség, több vele a munka, így nem árt gyakorolni! :)

A nyáktervezéshez, kicsit ugyan szégyellem leírni, de én a Circuit Wizard 2-t használom (tudom, hogy gagyi, az etetőhajó miatt már elkezdtem az ismerkedést az EAGLE-el), annak is egy 2010-es "Student edition" verzióját amiben a nyomtatás funkció le van tiltva, és a maximális nagyítás is 200 %-ra  van korlátozva. Utóbbihoz korábban már készítettem egy kis hacket C#-ben, ami a Windows API WriteProcessMemory függvényének segítségével megkerüli ezt a limitet. A nagyításra természetesen a toner transzfer eljárás használata miatt van szükség, hogy a nyomtatáshoz minél nagyobb felbontású képet használhassak.

Íme a hajó vezérlőjének nyákterve:
 

         


 

Forrasztás és élesztés közben sajnos nem készítettem képeket, de itt van néhány, az első tesztelés alkalmával készített kép (továbbiak a galériában):
 


 

A hajó eredeti távirányítója egy kb. 10x8cm-es kis apróság, ami a 8 éves kisöcsém kezének éppen megfelelő méretű, az én terveimhez viszont túlságosan pici. Egyébként is, a gázadás és a kormányzás is egyszerű nyomógombokkal lett megvalósítva, tehát a hajó vagy áll, vagy teljes gázzal megy, köztes állapot nincs. Nekem viszont fokozatos gázadás és finom kormányzás kell. Már csak az etetőhajó terve miatt is. Végül egy gyógyszeres dobozkát választottam a távirányító házának, egyszerűen felpattintható, és rengeteg hely van benne, ami nagyban megkönnyítette az áramkör tervezését. Ez egy áttetsző zöldes színű doboz volt, amin matt fekete festékkel igyekeztem javítani. A joystick-okat egy régi bontott távirányítóból kölcsönöztem.

Hogy ezek forgástengelyéhez hozzá tudjak kötni egy, az elfordulás szögét érzékelő potenciométert, szükség volt egy segédnyákra is, amit a távirányító nyákjába 90°-ban forrasztottam be (bár ez a képeken sajna nem nagyon látszik):
 

                          
 

Ebbe a nyákba forrasztottam be a potenciométert, melynek tengelyét közvetlenül a joystickhoz ragasztottam.

A távirányító az Arduino Pro Mini lapkán lévő feszültségszabályzót használja, így 6 és 17 volt között bármivel megtáplálhatjuk. A fenti képen 6 db. AAA elem szolgáltatja a szükséges áramot. Ez igen hosszú játékidőt biztosít. Főleg, ha a kijelző háttérvilágítását kikapcsoljuk (ezt egyébként a beállítások menüben bármikor megtehetjük, amit a mikrovezérlő az EEPROM memóriájában megjegyez). A távirányító nyákjára került még egy egyszerű feszültségosztó, ami a tápfeszültséget 5 volt alá korlátozza, így az AVR-be épített ADC-vel biztonságosan megmérhetjük azt. Ezen kívül nyomógombokra is szükségem volt, a különböző funkciók eléréséhez, a beállítások megváltoztatásához stb., amit egy másik kis nyákra tettem és a távirányító fedlapjába ragasztottam be.
 


 

A kijelző egy 16x2-soros zöld LCD, megtoldva egy i2C illesztővel, így a mikrovezérlőn mindössze két lábat foglal el (SDA, SCL).
 

      


 

A hajó, kormánylapát nélküli, kétmotoros masina lévén a motorok közötti sebességkülönbség változtatásával valósítja meg a kormányzást. Az egyenesen történő haladáshoz ezt a sebességkülönbséget egymáshoz kell igazítani, (szoftveres trimmelés) mivel két teljesen egyforma paraméterű motor nem létezik. A hajóba beépítésre került még két nedvesség érzékelő is, melynek a nyákterve alant látható:
 


Ezek a hajó orrában és farában lettek elhelyezve, és egy kiegészítő ellenállással feszültségosztót alkotnak, mely feszültség nedvesség hatására megváltozik. A mikrovezérlő két ADC csatornáján keresztül méri ezt és bizonyos érték felett riasztást küld a távirányító felé. (A valóságban a távirányító kijelzőjén százalékos értékként folyamatosan nyomon követhetjük ezen értékeket, víz az orrban- víz a farban néven.)

Ha a hajó több mint 2 másodperce nem kap jelet a távirányítótól, akkor automatikusan leállítja a motorokat a valószínű jelvesztés miatt.

Ezen cikk már így is meglehetősen hosszúra sikeredett, így befejezésül beteszek még pár képet, melyeket a tesztelés során készítettem.