Kalandozásaim az elektronok világában 3

Még régebben a 8 éves unokaöcsémnek születésnapjára vettem egy Sparkfun Inventor's Kit-et. Végre volt rá idő, hogy játsszunk is vele. Nem tudom hány éves kortól ajánlott ilyesmivel játszani, kicsit talán korai neki, de ártani talán nem fog.

A füzet alapján kezdtük el összeszerelni,

rögzítettük a RedBoard-ot (ami egy Sparkfun által tervezett Arduino UNO klón) és a breadboardot ("A '70-es évek technológiája. Ezen próbálnak a modern amatőrök olyan kapcsolásokat elkészíteni, amihez néha csak SMD alkatrészek léteznek" - idézet bucko fórumtárstól). Az első "projekt" természetesen a villogó LED volt. Ez már nem volt teljesen új, egyszer már összeraktuk együtt, de most a saját cuccaival is megcsináltuk.

A villogó LED példát egészen jól kiveséztük, végigbeszéltük, hogy hogyan folyik az áram.

Érdekes módon a programozás része egyelőre nem nagyon érdekli a fiút. A letölthető példákat csak töltsük fel és működjön. Pedig egyszer már programoztunk együtt rajzolósat úgy, hogy a színeket koordinátákat és parancsokat ő mondta, de én írtam be. Itt található az eredménye: https://github.com/rizsi/peldak#pelda-01

A LED után mondta, hogy valami mozogjon is, mert az az igazi. A gyerekek türelmetlenek. Nem akarják teljesen érteni, csak összerakják és azután gondolkodnak, hogy miért nem működik? Adatlapot persze nem olvasnak... Honnan ismerős ez a mentalitás? :-)

A Circuit 3C-re ugrottunk tehát, amiben a távolságérzékelő jelére a szervó elkezd integetni, plusz sípol és villog is a rendszer. Ez a példa is elsőre tökéletesen működött és egész jól el lehetett játszani vele. A kisebbeket úgy kellett levakarni róla, hogy szét ne szedjék. Lett volna ingerenciám úgy átprogramozni, hogy szakaszok helyett a távolsággal inkább arányosan változtassa a LED színét, de a gyerekek türelmetlenek, és már ugrottunk is a kisautós példára mert csak az igazán érdekes aminek kereke van (legalábbis a repülőkön, rakétákon innen).

A project 5-re ugrottunk tehát, az 5C-t kezdtük el összerakni. Az alaplapra fel kellett ragasztani a motorokat és az elemtartót. A "Dual-Lock™ Fastener" egészen zseniális cucc! Úgy működik, mint egy tépőzár de minimális a holtjátéka rögzített állapotban, a rögzített cucc áll mint katiban a gyerek! Amit összeraktunk, az autonóm robot, ami előre megy, amíg akadályt nem észlel az ultrahangos szenzor segítségével. Akkor kanyarodik egyet és indul előre megint. Elvben nem bonyolult, de ennél a példánál már kiütköztek a készlet hiányosságai.

Első probléma amibe beleütköztünk az volt, hogy az 5A példa pin kiosztása hibás volt. A motorvezérlő az Arduino-nak nem PWM-es lábára került. Így a motor csak teljes gázon tudott menni. Ez orvosolható volt a megfelelő összeköttetés PWM-es kimenetre dugásával. Persze a programban is át kellett írni a pin hivatkozását és már működött is.

Ezt a hibát egyébként a Sparkfun is észrevette és errata-t adott ki. Ezzel végülis rendben lenne a dolog. Látszik, hogy nagyon kapkodtak, hogy karácsonyra piacon legyenek.

Rendben lenne a dolog, de lássuk az 5C példát! Ebben már be van kötve az ultrahangos szenzor is.

Az alap programmal ez is működött, de túl gyors volt! Alig lehet elkapni és nem lehet igazán eléállással irányítósat játszani vele, alig lehet követni. Meg a kisebb gyerekek miatt pláne jobb lett volna ha lassabb. Úgyhogy átírtam a programot, hogy fele teljesítménnyel menjen csak a kocsi. Erre teljesen meghülyült a vezérlése!

Elkezdtem kidebuggolni, és látható, hogy az ultrahangos szenzor kiolvasott értékei hibásak, 0-hoz közeli számokat ad vissza amint a motort bekapcsoljuk. Arra jutottam, hogy a legvalószínűbb az, hogy a motor PWM frekvenciája közel van a szenzor frekvenciájához, és a motor hangját azonnal visszhangként érzékeli. A szenzor adatlapja szerint 40 kHz-en 8! darab pulzust küld ki, ennek a visszaverődését méri. 8 pulzus nem elegendő arra, hogy az érzékeny frekvenciatartományt különösebben leszűkítsük, így a motor vezérlő PWM vagy valamelyik felharmonikusa simán "beleszólhat". (Teljes gázon gyakorlatilag nincs PWM, nyélgázon teljes kitöltöttséggel megy a cucc, ezért nincs frekvencia sem.) Mérni még nem mértem egyelőre abban sem vagyok biztos, hogy mi a PWM frekvenciája. Majd az unokaöcsémmel együtt tervezek mérni, valamit tanuljon is az esetből :-).

Megoldás lehet a PWM frekvencia eltolása - akár 40kHz fölé lehet vinni. Ha a timer1-et prescaler nélkül 256-os periódusra állítom, akkor 62,5 kHz lesz a PWM alapfrekvenciája. Persze ha túl nagyra vesszük, akkor meg a driver fog melegedni. Ki kell próbálni. (Mérnökebbeknek: ki kell számolni, meg kell tervezni :-)

Másik megoldás lehet, ha a programot átírjuk úgy, hogy a mérés idejére teljesen leállunk. De ez nem túl szimpatukus, ennyire nem akartam lelassítani a mozgást.

Harmadik próbálkozás az lehet, hogy valami rezgés elnyelő habot teszünk a motorok elejére, hátha úgy nem hallja a mikrofon őket. Ki kell ezt is próbálni, de ebben nem nagyon bízok, hogy sikerülni fog. Lehet, hogy maga a szerkezet vezeti az ultrahangot, akkor esélytelen leárnyékolni. Esetleg lehetne a szenzort kábellel kivezetni és előre kilógatni kicsit a járgányból.

A kitnek még egy gyengeségét találtam: a RedBoard elvileg 7-15V-os táp bemenetre van tervezve. Ennek ellenére a példák 4db 1,5V-os elemmel működnek, aminek a névleges feszültsége sehogy nem adja ki a 7V-ot. Persze ettől még működik az egész, de nekem fura, hogy a saját készletük sem a saját specifikációjuknak megfelelően van összerakva.

Összességében tehát a Sparkfun Inventor's Kit jó játék, de sajnos közel sem tökéletes.

Hozzászólások

"A LED után mondta, hogy valami mozogjon is, mert az az igazi. A gyerekek türelmetlenek. Nem akarják teljesen érteni, csak összerakják és azután gondolkodnak, hogy miért nem működik? Adatlapot persze nem olvasnak... Honnan ismerős ez a mentalitás? :-)"

Te sem érted teljesen, jelenleg tudtommal senki sem tudja a fizika összes törvényét, csak merítesz addig a tudásból, ameddig a tapasztalatod alapján szükséged lehet rá. Neki még nincs tapasztalata, legtöbbször amit elé raktak az úgy jó is volt, ahogy odarakták, ki volt szolgálva. Még nem látja, hogy kb. semmi nincs "legjobban rendben" abból, amit elé raknak, de nem is nagyon van igénye a leghatékonyabb megoldást megkeresni a problémára.

A kapkodás árát is majd most tanulja meg, meg azt, hogy ne feltételezze, hogy aki elé rakott valamit, az hülyebiztosan, vagy egyáltalán követhetően írta meg a kézikönyvet, de azt se feltételezze, hogy minden magától értetődő lesz, és majd csak 1 módon lehet összerakni, és az pont jó lesz.

Ezen a ponton neki még az a dolga, hogy a lehető legtöbb tevékenységet kipróbálja, ami számára érdekes/hasznos/élvezetes eredménnyel jár, azt mélyebben folytassa. Először mielőtt azzal foglalkozna, hogy hogy kell összerakni azt a valamit, látnia kell, hogy amit összerak az megéri az ő idejét/figyelmét, ezért siet. Majd utána miután összerakta, ha érdekli, hogy mitől megy, elkezdi szétszedni és újra összerakja, cseréli a részeit, stb., ez is biztos felismerhető lesz kívülről nézve is, ismerős.

Ha egyébként a sparkfun kit-ben alapból van egy-két ilyen hiba, az sajnálatos, mert nem mindenki mellett lesz ott egy asch :). Szerintem jelezd nekik.

Az idézett mondat egyébként arra vonatkozott, hogy a kettővel előbbi blogposztban lebuktam, hogy én is pontosan így csinálom :-) Teljesen rendben van, hogy türelmetlen, ebben a korban még ez a normális.

Először meg akarom fejteni biztosan, hogy mi a probléma oka, ha biztos leszek a dolgomban jelezni fogom nekik.

Colobotot ajanlom meg, bar az csak a kepernyon mozog. Mars(es egyeb bolygo)jaro robotokat kell benne programozni. Aztan utana lehet portolni a fizikai vasra. :)

(egy 7 eves gepen futo, 3d gyorsitas nelkuli virtualbox image kimaxolja az osszes grafikai igenyet)

--
If you get a good wife, you'll become happy; if you get a bad one, you'll become a philosopher. -Socrates