www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Nadgradnja Lego Power Functions sistema

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Zbirka projektov
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
bpavsic
Član
Član



Pridružen-a: Pet 03 Apr 2009 20:45
Prispevkov: 354
Aktiv.: 1.94
Kraj: Maribor

PrispevekObjavljeno: Ned Nov 11, 2012 1:59 am    Naslov sporočila:  Nadgradnja Lego Power Functions sistema Odgovori s citatom

Pozdravljeni!

V temah Hope RFM moduli in tiskana vezja in Li-Poly akumulatorji sem že načel temo, tukaj pa bom opisal celoten projekt.

Praktično vsak pozna Lego kocke še iz mladosti. Če odmislimo NXT, so kocke na elektro področju precej napredovale v resnično uporabno zadevo. TLG (The Lego Group) so se odločili združiti bolj ali manj vsa področja v enoten sistem, ki so ga poimenovali Power Functions (v nadaljevanju PF). Sestavljajo ga naslednje komponente:
Baterijske škatle
- Technic 6x AA baterijska škatla
- City 6x AAA baterijska škatla
- LiPo baterijska škatla (iste velikosti kot city baterijska škatla, ima tudi PWM nastavitev izhoda, 1100 mAh, polni se 4h <- verjetno zaradi varnosti...)

Motorji (dodatne karakteristike motorjev - tudi starejši)
- PF XL motor
- PF L motor
- PF M motor
- PF servo motor
- PF motor za vlak

IR sprejemnik
- 38kHz
- 4 kanali, 2 funkciji na vsakem kanalu

IR oddajnik - pilot
- FWD/REV oddajnik - ima dve "digitalni" ročici naprej/nazaj (ni zvezno / analogno), ki skočita nazaj v nevtralno lego. Z drsnim stikalom se nastavi kanal. Ima možnost spremembe smeri (torej ročica naprej poganja motor nazaj in obratno). Medtem ko držimo eno izmed ročic v skrajni legi, oddajnik konstanto oddaja signal. Ukazi imajo 1.2s timeout in izklopijo motor, če ni več povezave. Uporablja se ponavadi za krmiljenje technic modelov.
- Speedstep oddajnik - ima dva rotacijska enkoderja in dva gumba za stop. Z vrtenjem gumba lahko nastavimo +- 7 stopenj hitrosti motorja. Ni timeouta, nastaviš hitrost in odložiš oddajnik. Uporablja se ponavadi za vlake.

Dodatna oprema
- Preklopno stikalo za menjavo smeri
- LED diode
- Podaljški

To je na kratko vse o originalnem Lego sistemu. Vse lepo in prav za domačo uporabo. Sam sem aktivno vključen v slovenski Lego klub s katerim 2x na leto prirejamo razstavo, kjer je vse od mesta z vlakom, do technica. Tam pa se pokaže velika slabost tega sistema in sicer število kanalov. Ponavadi imamo v mestu vsaj 2 vlaka, ki zasedata modro in rdečo funkcijo (oddajniki in sprejemniki imajo tako označene izhode / ročice) npr. na kanalu 1. Zraven imamo technic modele (npr. buldožerja, ki ima 2 sprejemnika na kanalih 2 in 3, ki krmilita levo in desno gosenico ter dvig in spust sprednjega pluga in zadnjih "grabelj"). Prost ostane še samo 1 kanal. Seveda pa nimamo samo dveh vlakov in enega 2-kanalnega modela. Na zadnjem KockeFestu (tako se imenuje naša razstava), smo npr. imeli technic bager (kombinirko), ki je imela 4 sprejemnike in 8 motorjev. Tukaj se je pojavil problem, da so se signali iz oddajnikov na technic delov sprejemali tudi na sprejemnikih vlakov, ki so se ustavljali, spreminjali smer in nato spet odbrzeli po ravnini, kar je enkrat pripeljalo tudi do tega, da je vlak vrglo iz ovinka in je en vagon padel na tla in se raztreščil.

Te probleme deloma rešujemo z uporabo starejših Lego tehnologij (9V vlaki na kovinskih tračnicah z regulatorjem - podobno kot modelarske železnice), Control center. Žal pa so to stvari, ki so že 10+ let iz prodaje, vedno težje se dobi 9V motorje s kovinskimi kolesi, ki se napajajo iz tračnic, tračnice oksidirajo... Zato sem se odločil, da za potrebe razstav nadgradim ta sistem.

Drugi del, ki je bil testno izpeljan na zadnji razstavi, pa so gumbi na stebričkih varnostnih trakov okrog miz s kreacijami. Ti so bili implementirani na dva načina.
Prvi je bil z uporabo čipa NE555. Pritisk na gumb je sprožil prvi NE555, ki je deloval kot časovnik z možnostjo nastavitve časa preko trimerja. Izhod je aktiviral drug NE555, ki je bil uporabljen kot PWM generator, z možnostjo nastavitve duty cyclea. PWM signal je bil speljan na L298, na katerega je potem bil priklopljen Lego motor.
Drugi način je bil z uporabo PoKeys kartice, preko katere je prenosnik bral stanje tipk in vklapljal PWM izhode na kartici, ki so krmilili L298 in motorje. Program na prenosniku je imel tudi enostaven http strežnik, preko katerega je bilo mogoče simulirati klik na gumb, nastaviti čas, moč in smer posameznih motorjev, ki jih je krmilila USB I/O kartica kar iz telefona / tablice.

Slabosti PF sistema in rešitve

Ena izmed slabosti IR sistema je to, da se morata oddajnik in sprejemnik "videti". Sicer se IR signal odbija od sten, stropa in drugih površin, vseeno pa mora kapica sprejemnika biti na vidnem mestu na modelu. To sem želel rešiti z uporabo RF sistema in sem za ta namen nabavil RFM70 transcieverje, ki že imajo vgrajeno anteno na sami ploščici. Z uporabo lastnega protokola se tudi sam po sebi reši problem pomanjkanja kanalov.

Druga slabost sistema je velikost. Sprejemnik je relativno velik, nanj pa lahko priklopiš samo 2 napravi, zato sem se odločil izdelati sprejemnik z več funkcijami.

Tretja slabost je velikost baterijske škatle. Najmanjša škatla (city) je relativno velika in narekuje obliko končnega izdelka. To se najbolj pozna pri določenih modelih vlakov / lokomotiv z veliko detajli, kjer enostavno ni prostora za baterijsko škatlo - take probleme rešujemo s tem, da baterije položimo v tender pri starejših parnih lokomotivah ali pa prvi vagon pri novejših. To pa tudi pomeni, da je med lokomotivo in vlakom kabel, pa tudi odklapljanje in spreminjanje kompozicije je težavnejše...
Ta problem bi rad rešil z LiPo celicami manjših kapacitet in z vgradnjo polnjenja med "počivanjem" na odstavnem tiru pri vlakih, ter celicami z večjo kapaciteto v večjih technic kreacijah, kjer je več prostora za baterije.

Pregled celotnega sistema

Prvi korak je bil načrtovanje celotnega sistema. Zasnovan je moral biti s povdarkom na modularnosti, kar je že osnovna ideja in vodilo Lego kock, hkrati pa tudi zaradi enostavnosti uporabe. Prvi izmed modulov je kontrolni modul.

- Sprejemnik

Sprejemnik je v bistvu all-in-one končna močnostna stopnja, master in slave sprejemnik. Jedro je ATxmega16a4u (44-pinski), ki najbolje zadosti potrebam. PCB je zasnovan v velikosti 32 x 24 mm (standarna dimenzija v Lego svetu je čepek - stud, ki ustreza 8 mm), torej 3 x 4 lego čepkov. Vsi konektorji so letvice pinov z rastrom 2.54mm, razen ene ženske letvice (1.27mm) za priklop kartice RFM70 (board-to-board). H-bridge driverji za motorje so DRV 8833 (1.5A / kanal), transistorji za navadne izhode so BC817.

Konektorji:

Kartica ima dva 5-polna Power konektorja (+3.3v, GND, +9V, sda, scl), ki združuje napajanje in i2c vodilo. Dva sta zaradi povezovanja več kartic (daisy chain).
Naslednji tip so izhodi za motorje, ki so štirje (kar je 2x več kot originalni Lego sprejemnik), vsak je 4-polni (+9V, C1, C2, GND) in je pin-to-pin kompatibilen z lego PF konektorjem. Motorji imajo interno priklopljeni samo liniji C1 in C2...
Zraven sta še dva 3-pinska konektorja (+3.3V, C, GND), signal C je PWM izhod mikrokontrolerja vezan preko transistorja (+3.3V). Uporabi se lahko za LED diode ali pa mikro servo.
Zadnja izmed izhodov sta še dva 2-pinska konektorja (C, GND), pri čemer je C vezan na digitalni izhod mikrokontrolerja, vezan preko transistorja (+3.3V). Uporaben je tam, kjer ne rabimo krmiljenja moči ampak samo on/off (npr. LED diode).
Na kartici je tudi "servisni" konektor (6-pinski), ki vsebuje D+ in D- za USB, PDI-DATA in RST/PDI-CLK za programiranje ter GND in povezavo na enega izmed digitalnih vhodov (s pullup uporom) za priklop tipke (ki jo bomo uporabili za "pairing" z oddajnikom, če ne bo pri roki računalnika).
Priklop za RF kartico (ženska letvica) je povezan na SPI na mikrokontrolerju.
Kartica ima tudi 3 statusne LED diode (+3.3V napajanje + dve, ki sta vezani na izhode mikrokontrolerja).

Način uporabe:

Ta kartica bo delovala v dveh načinih. Master način bo takrat, ko bo priklopljena komunikacijska kartica (RF ali IR za kompatibilnost). Ukaze, ki jih bo sprejela preko komunikacijske kartice (nastavitev izhodov, pwmja, zahteva za status baterije, ...) bo obdelala. Če ne bodo namenjeni njej (ampak bodo kanali izven njenega obsega), jih bo poslala na i2c vodilo slave karticam.

Slave način, kjer kartica ne bo imela komunikacijske "hčerinske" kartice, ampak bo ukaze sprejemala preko i2c vodila. To bo uporabljeno pri krmiljenju statičnih motorjev na dioramah (vrtiljaki, kretnice, železniški prehodi - lučke in zapornice, ...), ter kot dodatna razširitev izhodov v večjih technic modelih, kjer so uporabljeni več kot 4 motorji.

Za kompatibilnost z originalnimi Lego oddajniki bo izdelana tudi komunikacijska kartica na osnovi TSOP38 (38 kHz IR sprejemnik), majhnega ATtinyja ter stikala za izbiro kanala in bo imela isti pin-out kot ga ima RFM70.

PCB
PCB - zgoraj
PCB - spodaj
Shema sprejemnika

- Oddajnik

Glede na to, da bo čisto nov način prenosa, je potrebno nadgradit tudi oddajnike. To bom naredil tako, da bom zamenjal tiskano vezje v originalnih. S tem ohranim "look & feel" originalnih lego kontrol. Novi oddajniki bodo imeli mikrokontroler (verjetno kar isti xmega, kot bo v sprejemnikih, zaradi manj različnih elementov. S kombinacijo tipk se bo dalo nastavljati način delovanja (IR, kompatibilen z originalnim, ter RF - nov). Narejeni bosta ploščici za oba tipa oddajnikov, ki se bodo lahko "ročno" povezali z določenim sprejemnikom (tipka na servisnem konektorju) ali preko RF.

- Napajanje

Potrebujemo dve vrsti napajanja. Baterijsko in navadno omrežno za diorame. Za diorame bo skrbel računalniški napajalnik, ki ima dovolj A na +12V ter +3.3V, s tem, da bo potrebno +12V izhod znižat na +9V (pri recimo 15-20A), saj so DRV8833 narejeni za napetosti do 10.8V (drugače bi bila možnost omejitve PWM ja do max. 75% pri +12V in ne bi bilo problema z motorji).

Drugo napajanje pa bo baterijsko. Zahteve so, da LiPo baterija vsebuje vsaj protection (PCM). Zaželjeno je, da vsebuje tudi polnilni čip, balancer ter fuel gauge (torej celoten BMS), ki ima možnost komunikacije preko i2c protokola (tudi smbus / twi). V takem primeru bo baterija imela tudi pullup upore za i2c vodilo.
Za vlake bi radi razvili tudi sistem, da bi se baterija avtomatsko polnila, ko bi vlak stal na odstavnem tiru. S tem bi se lahko v lokomotive vgrajevale celice manjših kapacitet, ki bi se polnile med postanki (npr. 30 minut vožnje, 30 minut postanka).
Po vsej verjetnosti bo ta BMS za LiPo celice zasnovan na atmelovem ATmega406 ali podobnem, ki je namenjen ravno temu.

Obstajala bo tudi možnost napajanja iz obstoječih baterijskih škatel, ki imajo izhod +9V in GND. Napajalni kabel bo vseboval še "terminator" za i2c vodilo (torej pull up uporčka za obe liniji) ter +9V na +3.3V stepdown DC-DC konverter.

- Gumbi

Trenutno že imamo izdelane 4 škatlice s po 6 barvnimi gumbi na vsaki. Vsaka ima tudi mrežni konektor, ki skrbi za prenos VCC, GND in 6 signalnih linij iz tipk.
Na drugi strani pa potrebujemo kartico, ki bo te signale sprejemala. Za to bom izdelal modul z ATxmega16a4u (ja, večinoma bo ta mikrokontroler, ker ima je dovolj majhen in dovolj zmogljiv za vse kar potrebujem, ne bi pa rad imel na vsaki kartici drugega). Ta bo imel na 24 digitalnih vhodov pripeljanih iz 4 škatlic z gumbi. Zraven tega bo imel priklop za RF kartico. Poleg tega bo imel standardni 5-pinski napajalni konektor z obema napajanjema (+9V in 3.3V) ter i2c.
Ta kartica bo imela dve funkciji. Delovala bo kot "master" vsem ostalim slave karticam za diorame. Hkrati bo tudi imela funkcijo gatewaya med i2c vodilom in RF napravami.

- Diorame

Celoten sistem za diorame bo vgrajen v skupno ohišje. Vseboval bo računalniški napajalnik, močan step-down konverter iz 12V na 9V (15-20A), ter zagotavljal +3.3V za kartice. Poleg tega bo v ohišje vgrajen še en poceni router (tak, ki ga lahko upgradeam na DD-WRT), napajal se bo iz +5V linije iz napajalnika. Router bo služil kot WiFi gateway med LAN in WLAN. Na LAN bo priklopljen Raspberry Pi, ki bo služil kot WebServer in gateway med LAN in i2c vodilom kartic.
Na ta način lahko zagotovim možnost krmiljenja vsega preko tablic/telefonov (brez uporabe originalnih Lego oddajnikov - ki so dejansko premalo zmogljivi za vse možnosti, ki jih bo novi sistem ponujal - ne bi pa rad rezal lukenj vanje za vgradnjo displayev in dodatnih gumbov). Software za telefone (android) ali pa mogoče kar na webpage bo omogočal izdelavo custom grafičnih vmesnikov (z uporabo raznih navideznih gumbov, sliderjev itd...) za naprave. Ker je možna 2-smerna komunikacija, bo možno na telefonu/tablici videti npr. status baterije v modelu (vlak, technic model...).

Možne nadgradnje

Naslednji korak pa je lociranje vlakov ter popolna avtomatika dioram (skrb, da se vlaki ne zaletijo, ustavljanje vlaka na postaji, zapiranje zapornic, ko vlak pelje mimo prehoda, avtomatska menjava vlaka - eden iz odstavnega tira, drugi na odstavni tir - pri tem je potrebno prestavljati kretnice, skrbeti za hitrost enega in drugega vlaka, ustavljanje na pravi lokaciji itd...).
Osnovni 9V Lego sistem s kovinskimi tračnicami je bil uporaben za razstave, saj so se vlaki napajali preko regulatorja in baterije niso bile potrebne. Slabost tega sistema je bila možnost samo enega vlaka na enem tiru. Sicer so obstajale variante izoliranja posameznih segmentov tračnic in posameznih regulatorjev na vsakem segmentu, ampak je to bolj medla rešitev. Velik napredek je bil prihod plastičnih tirov (3x cenejše kot kovinske) in PF komponent, ki omogočajo vožnjo več vlakov na istem tiru. Seveda so se takoj pojavile slabosti zaradi baterij, tako da sem za test predelal originalni Lego 9V motorček s kovinskimi kolesi tako, da sem prekinil direktno povezavo med motorjem in kolesi, vanj vgradil gretzov mostiček (ki je skrbel za to, da ni bilo važno, kako si motor obrnil na tračnicah), dodal par kondezatorjev, ki so poskrbeli, da je bilo dovolj napajanja za trenutke slabega stika s tračnicami (oksidirane tračnice itd...) in vanj vdelal standardni PF kabel (+9V in GND linijo iz gretza in kondenzatorjev ter C1 in C2 nazaj na motor). Tako smo imeli "best of both worlds". Napajanje iz tirov (ki so sedaj imeli fiksno napajanje) in kontrolo preko PF. Ravno zaradi vedno višje cene teh delov pa smo se sedaj odločili prestopiti na PF.
Ker pa nobena dva vlaka ne vozita isto hitro (različna teža, različno stanje baterij, nenazadnje tudi različna nastavitev hitrosti), je potrebno non-stop korigiranje hitrosti, da se vlaki ne zaletijo. Za to pa obstaja več možnosti.
Prva je ultrazvočni senzor razdalje, nameščen na vlak. Je dokaj avtonomna rešitev za vlak, saj za to skrbi vlak sam. Služil bi kot neke vrste radarski tempomat in bi vlak pravočasno upočasnil / ustavil, če bi se preveč približal tistemu pred njim. Žal pa se pojavi problem, da je v ovinku zelo težko meriti razdaljo do vlaka pred njim, saj bi se verjetno prej zaletela, preden bi zadnji vlak zaznal, da npr. pred njim (v ovinku) stoji prejšnji.
Druga varianta je lociranje vlaka. To se lahko izvede na več načinov.
Eden je montaža senzorja iz optične miške pod vlak ter branje (štetje) pragov na tiru (ali pa barvnih ploščic / črtnih kod), ki bi jih tja namestili). Malo bi bilo zapletov, ker je več vrst tirov (ravni, krivi, kretnice, križišče, dvojne kretnice), ampak to je rešljivo. Lokomotiva pa bi morala lokacijo oz. stvari, ki bi jih zaznavala, javljati nazaj sprejemniku na kartici za gumbe (ki služi tudi kot gateway med RF in ostalimi vodili).
Še ena možnost lociranja vlaka je vgradnja senzorja pospeškov, žiroskopa in kompasa (SensorFusion podjetja ST ali pa InvenSense). Tu bi lahko (vsaj v teoriji) z integriranjem pospeškov in nato hitrosti dobili lokacijo. Seveda bi vse potekalo preko Kalmanovega filtra in korigiranjem s pomočjo naprej znane poti (tračnice so fiksne in lahko napake sproti popravljamo, če vemo vse možne lokacije). Ta sistem pa zahteva precej matematike...

No, upam da nisem preveč "zabluzil". V glavnem, projekt se bo delal po fazah, naslednja razstava bo marca ali aprila naslednje leto in upam, da bo do takrat že kaj gotovega, da se lahko testira.

Tukaj je tudi shema celotnega sistema, za malo lažje razumevanje.

Če ima še kdo kakšne ideje, predloge in mnenja, kar na dan z njimi.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Zbirka projektov Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group