Címke: durbaship


2017. Április 28.

Etetőhajó vezérlő összerakva

írta: Xaint

Gondoltam megosztok néhány gondolatot a már majdnem teljesen készre szerelt hajóvezérlőről. Volt néhány szabad délutánom, és már alig vártam, hogy végre összeállíthassam az egészet, a legnagyobb kérdés ilyenkor ugyanis mindig az, vajon a végén működni fog-e? laugh

Szóval, a vezérlőhöz egy KM 53 G típusú, füles műszerdobozt választottam. Ez 36 x 115 x 90 mm-es nagyságú, ebbe kellett beleférjen a GPS modul, az RF adó-vevő, a motorvezérlő IC stb.

A GPS modul egy Arduino UNO kompatibilis shield, ami megközelítőleg akkora, mint egy UNO. Mivel a hajóban bőven van hely mindenféle elektronikának, új és kisebb GPS egységet rendelni pedig nem akartam, így gondoltam itt felhasználom ezt. Mivel ez szépen beleül a vezérlőpanelen számára kialakított foglalatba, ezért némileg magasabb házra volt szükség, de annyi baj legyen, amúgy is az RF modult is cserélhetőre terveztem.. A GPS modulon egyébként integrált SD kártya foglalat van, a hozzá tartozó jelszint illesztővel együtt, illetve külső, aktív antennával rendelkezik.
 


A választott adó-vevőt már említettem egy korábbi cikkben, ami egy NRF-8PA-LNA (nrf24l01), 2.4GHz-en működő, kimeneti erősítővel ellátott és ezért >1Km hatótávolság elérésére képes modul, külső antennával. Ehhez be kellett szereznem még egy antenna hosszabbító kábelt, hogy az antennát a hajótesten kívülre tudjam vezetni. Az adó-vevő a GPS modul mellett foglal helyet a vezérlőn.
 


A motorvezérlő IC L298N Dual Full Bridge Motor Driver IC lett, melynek két független kimenetét párhuzamosan kötöttem, így megnövelve a maximális terhelhetőséget. Ez egy akkus fúró 12 voltos motorját hajtja majd meg, ez kerül ugyanis a hajóba (ami ha nem válik be, később még változhat).

A vezérlőn több szenzorcsatlakozási lehetőség is kialakításra került. Például egy GY-65 (BMP085) nyomás és hőfokmérő számára kialakított hely, amelyet vezetékkel csatlakoztathatunk, és amit egy jól kigondolt helyre kellene tennem, hogy a hajótesten kívüli levegő hőmérsékletét mérhesse. Ennek még ki kell alakítanom valamilyen vízhatlan burkolatot is.
 

 

Vízhőmérőnek egy LM335Z hőmérő IC-t  választottam, melyet epoxival egy rozsdamentes acélkupakba ragasztottam be. Ez kerül majd beépítésre a hajótest aljába fúrt lyukba.

Itt megjegyezném, hogy a vezérlőpanelen az ATmega644P minden szabad analóg és digitális lába kivezetésre került, így azokra további érzékelőket lehet kötni. Terveztem például a motorvezérlő IC hőmérsékletét figyelő hőmérő csatlakoztatását is, amely hőmérőt egyszerű 1N4148-as diódából elkészítve olcsó és kellő pontosságú eredményt ad.
 


 

A hajóban két szervóra is szükség van, az egyik a kormánylapátot vezérli, a másik az etetőanyag-tartó rekesz ajtaját nyitja. Erre a feladatra Futaba S3003 általános felhasználásra szánt szervókat választottam. A szervókat PWM-jellel a mikrovezérlő egy-egy lába vezérli. A tápellátásukról eredetileg két darab AMS1117 5 voltos feszültségszabályozó IC gondoskodott (volna). Ezek közül az egyik a kezdeti élesztés során megadta magát (a szervók terheletlenek voltak). Ez a szabályozó IC szolgáltatta a stabil 5V tápfeszt az ATmega644P mikrovezérlő számára is. A másik egyébként a GPS vevőről gondoskodott. Sajnos olyan módon lehelte ki a lelkét a kis drága, hogy a ki és bemenetét rövidre zárta, amivel a bemeneti 12V szépen megjelent a kimeneten is. Mondanom sem kell, ennek sem a mikrovezérlő, sem én nem örültem. Az előbbi az örök vadászmezőkre távozott, az utóbbi meg rendelhetett egy újabb mikrovezérlőt. angel

Olvastam, hogy ezeket a tápfeszültség szabályozó IC-ket is hamisítják... Mert gyakorlatilag lehetetlenség kinyírni őket, annyiféle védelemmel vannak ellátva (túlterhelés, túlmelegedés), melyek élesedésük esetén automatikusan lekapcsolják az IC-t. A hamisítványok viszont inkább rövidre zárják a ki és bemenetüket.

Mivel nem akartam tovább kísérletezni a kétes eredetű AMS1117 IC-kkel, így szépen kiforrasztottam őket, majd a NYÁK-on végzett kisebb módosítások után bedobtam egy LM2596 DC-DC step down szabályozót a buliba. Ez hatékonyabb is mint lineáris társaik, maximális hatásfoka ennek a modulnak 92% is lehet. Ez persze több tényezőtől is függ. A modul viszont már a vezérlő házán kívül kerül elhelyezésre, valahol az akkumulátorok felől érkező kábelre építve. Így az eddigi 12V helyett, onnan érkezik majd a stabil 5V-os tápfeszültség is.

A vezérlőn helyet kapott egy PIEZO buzzer is, ez a GPS shield alatt foglal helyet. Van még rajta továbbá egy az élesztés és hibakeresés során nagy segítséget nyúltó LED, ami egy tüskesor csatlakozóval bármire ráköthető a panelen. Illetve egy másik LED, mely fixen a mikrovezérlőre van csatlakoztatva, és ez is használható hibakeresésre, információ kijelzésre.
 

    
 

Természetesen a modellboltból rendelt alkatrészek is megérkeztek már.

A tönkcső felfogatására gyárilag kialakított furatok pontosan megegyeznek a motoron lévőkkel, így ezzel nem kell foglalkoznom. Ez valami szabvány lehet? smiley

Legközelebb igyekszem valamit a hajóról is megosztani.



2017. Április 16.

Az etetőhajó vezérlőjének gyártása 2.

írta: Xaint

Ma is sikerült némi előrehaladást elérnem  a hajóba szánt vezérlő pár nappal ezelőtt levilágított NYÁK-jával kapcsolatban. Kész a maratás, a fúrás, a kémiai ónozás, de még a forrasztásgátló lakk felvitelével is sikerült végeznem. Ez utóbbi nem sikerült 100%-osra, de a panel azon részein, ahol igazán fontos, ott nincs probléma vele. Valószínűleg valamilyen zsír vagy koszréteg maradhatott a NYÁK azon részén, ahol a forrasztásgátló maszk nem kötött oda. De ez szerencsére csak néhány tüskesor csatlakozó körüli részt érint, a felületszerelt alkatrészeknél jól sikerült (a tisztítással azért alaposabban kell foglalkozzam a továbbiakban). angel

 

      

 

A NYÁK immár forrasztásra készen áll, bár nem tudom mikor lesz lesz időm az összeszerelésre, élesztésre, hibajavításra.

Ui.: Közben rendeltem a hajóba néhány nélkülözhetetlen alkatrészt: kormánylapát, tönkcső, hajócsavar, 2db. szervo, stb., mert a hajótesttel is foglalkoznom kellene. smiley



2017. Április 11.

Az etetőhajó vezérlőjének gyártása

írta: Xaint

Az utóbbi időben szinte semmi időm nem jutott arra, hogy az etetőhajó projektjével érdemben foglalkozni tudjak, ám - többnyire a rossz időnek köszönhetően - most úgy tűnik, akad rá egy-két napom. Mivel a hajóba szánt elektronika NYÁK-terve egy ideje már gyártásra kész állapotban volt, így csak néhány nyugodt órácskára volt szükségem ahhoz, hogy a tervekből végre kézzel fogható dolog szülessen.

Első lépésként ún. illesztési lyukakat kellett fúrjak a már megfelelő méretre vágott NYÁK-lemezbe. Ehhez most dry-fóliát használtam, melyet a NYÁK egyik oldalára laminálva, egy csak a furatokat tartalmazó maszkon keresztül levilágítottam. Előhívás után a NYÁK különböző pontjain néhány lyukat kifúrtam, később ezeket használtam a végleges maszkok illesztéséhez. A feleslegessé vált dry-fóliát aceton segítségével távolítottam el.

Ezután a NYÁK-lemezt folyó víz alatt, extra finom csiszolószivaccsal tisztítottam meg. A szárazra törölt NYÁK-ot izopropil-alkohollal áttöröltem, majd  megfelelően méretre vágott dry-fóliát lamináltam annak mindkét oldalára. Ezután következett a megfelelő maszkok nyomtatása EAGLE-ből, írásvetítő fóliára. A maszkból mindig két-két darabot nyomtatok, melyeket illesztés után pillanatragasztóval ragasztok össze. Erre sajnos azért van szükség, mert az UV levilágítás során egyetlen réteg toner nem biztosít megfelelő takarást (nem elég sötét). Az egyik oldali maszkot a furatokra illesztve következett a levilágítás, melyet a másik oldallal is ugyanígy megismételtem, ügyelve a pontos illesztésre.
 

        

 

A levilágítás után bedobtam a NYÁK-ot egy kis előhívóba (nálam ez víz + szódabikarbóna), melyben addig tartottam, míg a megfelelő (nem levilágított) részekről leoldódott a dry-fólia. Ez kb 20 percet vett igénybe.

Mivel ez egy olyan pont, ahol a munkát biztonságosan abba lehet hagyni, és a NYÁK-ot félre lehet tenni, ezért a maratást, fúrást, stb. egy másik alkalommal fogom elvégezni.



2016. December 08.

Etetőhajó távirányító építés

írta: Xaint

Ugyan az etetőhajó távirányítójába szánt nyomtatott áramkör már régebb óta tervezés alatt állt, ám a gyártásához szükség volt még néhány alapanyag beszerzésére, illetve azok tesztelésére is. Ezek után azonban nem maradt más hátra, mint a távirányító összeszerelése / beüzemelése, amiről alant olvashatsz néhány gondolatot.

Nos a távirányítónak nem sikerült minden egyes funkciója azonnal működőképesre. Azonban, ahogy a hobbielektronikával foglakozók körében emlegetni szokás: szerencsére, ugyanis a hibákból rengeteget tanul az ember.

Sikerült elrontanom például az USB-TTL átalakításához használt PL2303 modul lábkiosztását a NYÁK-on. Illetve egyéb dolgokat is sikerült felcserélnem itt-ott, de semmi olyan amit egy kis átvezetékeléssel ne lehetne megoldani.

Ha az ilyen problémákra már csak az építést / élesztést követően derül fény, akkor általában megpróbálok élni velük és valamilyen megoldást találni rájuk, például az imént említett átvezetékeléssel. Természetesen, ha nagyüzemi gyártásról beszélnénk, akkor ez csak egy amolyan prototípuspanel lenne, amin a felfedezett hibák a végleges gyártósorra kerülés előtt még javíthatók. Itt azonban sorozatgyártásról nem beszélhetünk, ez egy one-off termék, így amennyire csak lehet, törekedni kell az elsőre történő hibátlan kivitelezésre (ami általában nem szokott sikerülni cheeky).

Az elkészült NYÁK tartalmaz tehát egy-két hekkelést, utólagos módosítást, de egyelőre nem gondolkodom az újragyártáson, mert az esztétikai összképet leszámítva minden tervezett funkció működik. (Viszont ez már lehetne egy olyan projekt, ami megérdemelne egy rendes nyomtatott áramkör-gyártó által készített panelt, persze csak a NYÁK-terv hibajavításai után. NYÁK-ot legyártatni még amúgysem próbáltam.)
 

 

A fenti képre tekintve nem sok változás látszik a távirányító eredeti kinézetéhez képest, a különbségeket természetesen a ház belsejében kell keresni. cheeky A kijelzőnek, illetve a tőle balra található két gombnak helyt adó területre még gyártanom kellene valamilyen dizájnos kis előlapot. Ez elfedné a kijelző feleslegesen kilátszó részeit, illetve a távirányítón eredetileg helyet foglaló potenciométer furatát is. Ez utóbbi ugyanis nem került visszaépítésre, nem láttam értelmét. A távirányítón így is 11 gomb, vagy billenő kapcsoló van, amelyek támogatása mind beépítésre került az általam tervezett NYÁK-ba. Ne feledjük, hogy ez eredetileg egy R/C helikopter távirányítója volt, ahol a billenő kapcsolók valószínűleg a különböző trimmelési funkciókat látták el. Nekünk az etetőhajó vezérléséhez ugyan biztosan nem lesz szükségünk mindre, de mivel olyan nagy gondot nem okozott a tervezésnél, így beépítettem őket.

11 gomb kezelése egyébként már önmagában is okozhat némi átláthatatlanságot a kódban, ennek elkerülése érdekében, a gombkezelés számára külön osztályokat hoztam létre:

// Button object responsible for all the button's events handling 
class SButton
{
public:
	bool isPressed() { return is_pressed; }
	bool isHeldDown() { return is_held_down; }

	// Values between lower and upper will set the button's state to pressed
	SButton(int lower, int upper) : lower_thres(lower), upper_thres(upper), 
	hold_down_min_ms(1000), is_released(true) {}

	// Values between lower and upper will set the button's state to pressed
	void setButtonThresholds(int lower, int upper)
	{
		lower_thres = lower;
		upper_thres = upper;
	}

	void setMinHoldDownTime(short min_ms) { hold_down_min_ms = min_ms; }
	short getMinHoldDownTime() { return hold_down_min_ms; }

	void Update(int raw_value)
	{
		// Detect button press
		if (raw_value > lower_thres && raw_value < upper_thres && is_released == true)
		{
			is_pressed = true;
			is_released = false;
		}
		// Detect button hold down (if it is being held down for more than hold_down_min_ms)
		else if (raw_value > lower_thres && raw_value < upper_thres)
		{
			is_pressed = false;
			if (millis() - last_time > hold_down_min_ms)
			{
				is_held_down = true;
			}
		}
		else
		{
			is_pressed = false;
			is_held_down = false;
			is_released = true;
			last_time = millis();
		}
	}
private:
	bool is_pressed;
	bool is_released;
	bool is_held_down;

	unsigned long last_time; // how long the button was held down

	int raw_pin_value;
	short lower_thres, upper_thres;
	short hold_down_min_ms; // The minimum time a button needs to be held down before it sets is_held_down to true
};

 

A 11 gombot tartalmazó, és azok inicializálásáról gondoskodó SButtons osztály:

class SButtons
{
public:
	SButton Button_Red;
	SButton Button_Left_Vertical_Up;
	SButton Button_Left_Vertical_Down;

	SButton Button_Left_Horizontal_Left;
	SButton Button_Left_Horizontal_Right;

	SButton Button_Left_Bottom_Up;
	SButton Button_Left_Bottom_Down;

	SButton Button_Right_Vertical_Up;
	SButton Button_Right_Vertical_Down;

	SButton Button_Right_Horizontal_Left;
	SButton Button_Right_Horizontal_Right;

	SButtons() :
		Button_Red(-1, 1),
		Button_Left_Vertical_Up(500, 520),
		Button_Left_Vertical_Down(680, 710),
		Button_Left_Horizontal_Right(805, 855),
		Button_Left_Horizontal_Left(910, 950),
		Button_Left_Bottom_Up(500, 520),
		Button_Left_Bottom_Down(680, 710),
		Button_Right_Vertical_Up(480, 520),
		Button_Right_Vertical_Down(680, 710),
		Button_Right_Horizontal_Left(900, 950),
		Button_Right_Horizontal_Right(800, 860)

	{}
};

 

Persze a gombok kezelése az egyszerűbb dolgok közé tartozik, hiszen a kódban ezen kívül olyan feladatokkal kell foglalkoznunk mint pl.: 

  • az adó/vevő modul kezelése (megszakítás vezérelten vagy pollozással)
  • különböző adatok küldése a hajó felé (pl.: joystick-ok állása)
  • hajó felől érkező adatok fogadása, kezelése, kijelzése, (GPS, hőmérséklet és légnyomás, stb.)
  • töltésvezérlő IC, akkumulátor figyelés
  • SD kártya kezelés (adatmentés, betöltés)
  • Rajzolás a kijelzőre
  • stb.

A fenti feladatok ellátására már össze is raktam egy kezdetleges kódot, amiben minden működik, már csak valami intuitív módon kellene komplett rendszert alkotni belőlük cool.
 

     


A fenti képen bal oldalt a főképernyő egy lehetséges megvalósítása látható. A radar alján a parttól való távolság, a radar tetején pedig a kiválasztott etetési pont (ha van) távolsága látható. A kis piros pötty jelzi a célt, ami a hajó aktuális haladási irányának megfelelően elfordulhat a kör szélén, illetve, ha a cél közelebb van mint mondjuk 10 méter, akkor a távolságnak megfelelően elindul a kör közepe felé. Látható még rajta a GPS által használt műholdak száma, a HDOP azaz kb. a GPS felbontása (minél kisebb ez a szám, annál jobb), az akkumulátor töltöttség ikon, és annak százalékos kijelzése, illetve az egyéb szenzoroktól érkező adatok (jelenleg csupán random számok). Arra is gondoltam, hogy a beállítások menüben például több előre létrehozott képernyő-elrendezés közül is lehetne választani. (Lehetne éjszakai mód képernyőtéma is...).

Az alapoktól megtervezni egy ilyen összetett rendszert nem könnyű feladat... Mindent magunknak kell kitalálni, például az információáramlás menetét. A kimenő adatcsomagok csoportosítását, küldésük gyakoriságát (mi fontos, és mi nem), vagy  a beérkező adatok kezelését, megjelenítését (mit, mikor, és hogyan jelenítsünk meg), stb. Szükség lesz egy letisztult felhasználói felületre is (bár a mostani sem annyira rossz). A lista hosszú, és még korántsem értem a végére...

Egyébként a hajó vezérlője is készülget már. Lesz benne léghőmérő, vízhőmérő, légnyomásmérő, GPS egység, SD kártya foglalat, meg egyéb nyalánkságok. A beépített GPS segítségével akár egy "return to home" funkciót is meg lehetne valósítani, vagy az etetőanyag / csali automatikus bejuttatását a kijelölt etetési pontra. Persze abban mi az élvezet...smiley

Ha egy halradar szonárját valahogyan be tudnám építeni a hajóba, akkor a távirányítóra érkező vízmélység adataiból egy egyszerűbb halradar funkciót is meg lehetne valósítani. Ha csak a medertörések látszódnak a kijelzőn már az is nagy előnyt jelentene (ezt a medertörést kirajzoló, mozgó grafikont egyébként már meg is valósítottam, a hajó felől egy ultrahangos távolságmérő szenzor adataival tesztelve egész jó lett). Az ilyen extra funkciók későbbi beépítésének lehetőségére is gondoltam, nem szeretem a mikrovezérlők kihasználatlan lábait kivezetés nélkül hagyni, ezért az összes használható láb kapott valamilyen rácsatlakozási lehetőséget. Így a NYÁK utólag is könnyen bővíthető marad.

Akkuként egy 3.7V 1730mAh kapacitású mobiltelefon akkumulátor teljesít szolgálatot, ez éppen befér az eredeti 3 AAA elem helyére. Persze elemek is bármikor használhatóak a tápellátáshoz, az USB-n keresztüli akku töltés ilyenkor nem aktív. A távirányító egy feltöltéssel történő üzemelésének idejéről sajnos csak éles tesztek után fogod többet tudni, az adó-vevő ugyanis az adóteljesítmény függvényében veszi fel az áramot, ami pedig dinamikusan változhat. (A kijelző fényereje is változtatható, ez most jutott eszembe smiley).
 

 

A stabil tápfeszültség előállításáról eredetileg egy TPS61090 DC-DC kapcsolóüzemű IC gondoskodott volna, ami beépítésre is került, ám a tesztek során valahogyan kiszökött belőle az a bizonyos "mágikus füst", ami után nem volt hajlandó tovább működni, ezért a teljes kapcsolóüzemű részt eltávolítottam, és egy készre szerelt kapcsolóüzemű tápegység modult építettem be a helyére. Hogy mi történhetett, abban sajnos nem vagyok teljesen biztos. Az tuti, hogy a VQFN tokozású IC (4mm x 4mm!!!) beforrasztása nem volt egyszerű feladat, illetve a NYÁK-ot a kezdeti élesztés és hibajavítások során többször is kivettem, majd visszaszereltem a házba, amiben az egy picikét szorult is, és az egyik ilyen beszerelés alkalmával picit meghajolhatott a NYÁK-lemez. Ekkor történhetett a baj...

Mindegy, íme a NYÁK-terv, illetve a kapcsolási rajz (ez utóbbi sajnos nem látható valami jól, később töltök majd fel PDF verziót is):
 

   


A hajóról is igyekszem írni nemsokára.cheeky



2016. November 12.

Forrasztásgátló maszk teszt

írta: Xaint

Pár napja megérkezett az ebay-en rendelt csomag. A dry fóliát még nem teszteltem, előbb egy UV levilágítót építek az ugyancsak a csomaggal érkezett 50db. UV LED-del. A forrasztásgátló maszkot azonban kipróbáltam, az egyik korábbi cikkben már bemutatott lyukgalvánozott nyákon. Ennek levilágítását még 10-15db, próbapanelbe dugdosott UV LED segítségével végeztem. A levilágítási időt próba-hiba módszerrel határoztam meg. smiley

Az eredmény biztató, abban már most biztos vagyok, hogy ez egy kihagyhatatlan lépés lesz a felületszerelt nyomtatott áramköreim készítésénél. Nemsokára kész az időzítős, programozható levilágítóm, igyekszem arról is posztolni pár sort, illetve a dry fóliát is igyekszem kipróbálni.
 

        

 

Ui.: A fenti csak egy teszt nyák, amin sem a furatpozíciók precizitására, sem a levilágításkor használt maszk pontos illesztésére nem fordítottam sok figyelmet. cheeky