Roboti
24. února 2013 v 3:58 | Petr
Podle jisté pravidelnosti mého blogu by mohli moji čtenářové mylně soudit, že píšu tak lehce "jako když slípka snáší vejce". Opak je pravdou - krátká, ale intenzivní období, kdy "se píše" jsou střídána dlouhými a trudnými obdobími kdy "se přemýšlí" o čem se bude psát aby se blog nemusel s ostudou ukončit.
Takže na přelomu roku jsem si vyměnil pár mailů s jedním z nejgeniálnějších z nás -
Martinem Lockerem (jeho vítězství na Eurobotu 2005 a opakovaná vítězství na Robotour vejdou do dějin). Otázka zněla: "
Martine o čem mám psát?" A Martin, který stejně jako já píše nerad mi navrhl - napiš o nárazníku.
Tím měl na mysli ne robota obaleného gumou, ale nárazník jako mechanický kontakt, který po nárazu na překážku sepne a procesor robota na to "nějak" reaguje....
Martin hned uvedl i příklad - děcka někde ma
Istrobotu měla robota bez nárazníku, ten narazil do stěny bludiště, hrabal kolečkama a než uplynul timeout - shořely mu
H-můstky.
Problém psaní o nárazníku je v tom, že žádný můj robot nikdy nárazník neměl, protože nárazník nepotřeboval, takže ač je nárazník de facto mechanický kontakt alias tlačítko - tak tím, že jsem jej nikdy nepoužil - nemůžu poutavě popisovat "v čem je pes zakopaný".
Nárazník totiž nějak nezapadá do mé koncepce robota - co když robot narazí ze strany, kterou nárazník nepokryje, nebo co když se mu zablokuje kolečko, třeba protože se zamotá do koberce a H-můstky shoří i tak ? Takže jako správný vidlák, kterém u je i mikrospínače za 4.60 kč líto už léta letoucí používám jinou techniku jak určit jestli robot narazil nebo ne.
Nějaká idea ? Měřít proud motory ? Ale fuj - tačítko za 4.60 nahradit elektronikou za 2x tolik a ještě to muset naroutovat na plošný spoj. Nic takového. Martinovi, který se třese nad tím jak to dělám (nebo se chechtá, že on to objevil dávno přede mnou) prozradím rovnou konec - sleduju poměr mezi otáčkami a plněním PWM.
No a my ostatní to musíme probrat polopatisticky. Protože zbytek článku se bude zabývat jemnostmi regulace otáček koleček - pro ty, kdo v tom plavou - nebuďte líní a
tady si přečtěte jak to funguje. Pro ty, kteří jsou opravdu líní tak opakování jedním vzorcem:
Chyba_rychlosti = Nastavená - současná rychlost
Suma_chyb = Chyba_rychlosti + Suma_chyb
Rozdíl_rychlosti = Současná - minulá rychost
Proud_do_motoru = P * Chyba_rychlosti + I * Suma_chyb + D * Rozdíl_rychlosti
kde
P, I a D jsou Proporcionální , Integrační a Derivační koeficient regulace - jestli jste z toho jeleni - opět vyzývám -
čtěte zde.
A co je teda to
PWM ? Protože regulovat
Proud do motoru analogově by vedlo k velkým ztrátám na regulačních tranzistorech řeší se to tak, že se do motoru chvíli pouští plné napětí baterky a chvíli zase nic - tomu se říká
Pulse Width Modulation alias
pulsně šířková modulace a poměr Vypnuto/zapnuto se nazývá
Plnění PWM.
Tak a teď konečně "vo co go"! Představte si že si počítáte dlouhodobý průměr plnění PWM a víte, že pro určitou rychlost, třeba 1m/sec je plnění PWM 33%. Váš robot si jede jede a najednou zjistí, že má nastaveno 1m/sec, ve skutečnosti jede 0.1 m/sec a plnění PWM má 90% - co to znamená ? Že by se dal takto poznat náraz i bez nárazníku a dokonce i bez měření proudu ? Ano přesně tak to je - moji roboti si vedou dlouhodobý "průměr poměru" PWM/rychlost. Pokud tento poměr na určitou relativně krátkou dobu (0.2 - 0.5 sekundy) vzestoupí nad nějaký (pokusy zjištěný) limit - robot ví, že se zasekl.
Jednoduché - laciné a navíc "správně vidlácké" protože nejlépe funguje součástka, "která tam není".
Před závěrem několik poznámek:
- H-Můstek má být postaven tak, aby snesl zaseknutý motor libovolnou dobu, nebo aby se sám (hardwarově) vypnul - zejména u malých robotů, je spíš složité to udělat naopak, protože můstky - integrované obvody - většinou nějakou ochranu mají.
- Poměr PWM / rychost se používá v PID regulaci otáček jako tzv. Feed Forward - otrocky přeloženo "předkrm" - jeho zastánci si myslí, že když rovnou nastaví obvyklé PWM pro danou rychlost - regulace se ustálí rychleji - je to pravda ale jedná se o milisekundy - což u normálních rychlostí robotů nehraje roli.
- Moje metoda klade důraz na spolehlivé měření otáček - jestli vám toto dokonale nefunguje - je pruser o to větší než kdybyste měli skutečný nárazník.
- Pochopitelně, že kolik regulujete motorků tolik sledujete poměrů PWM/rychlost, protože každý motorek se může zaseknout.
- Někdy stačí i jednodušší varianta - kdy sledujete jak dlouho je PWM nad nějakým limitem - třeba 80%. Je potřeba trochu experimentovat, protože tento způsob hlídání motorků závisí na konstrukci motorků, robota, jeho váze, rychlosti rozjezdů a brždění a i na terénu, ve kterém jezdí.
Ti, kteří nepochopili, ať napíší do komentáře - třeba to proberu příště - z jiné strany.
Zbývá už jenom tradiční rada pro blondýny, co dočetly až sem: kdysi slovo "nárazník" v souvislosti se ženou - bylo na hranici urážky - při dnes obvyklých molitanem mohutně vycpaných podprsenách, se raději moc nerozčilujte, a buďte rády, že vám ty "plné výstřihy" ješté pořád věříme.
14. února 2013 v 4:16 | Petr
Když se dneska zeptáte robotika jak funguje jeho robot dozvíte se nejčastěj, že na
DealExtreme koupil modul
BFLMPSVZ, který komunkuje přes
SPI, do
MCU , pak přes
I2C do
VGA portu jeho
PC, kde se na data filtrují přes
FIR, a pak se udělá
FFT, výsledky se proženou algoritmem
HCHKRDTN, a pak se pomocí
PWM pošlou do
BLDC....
Když se pak zeptáte "a jak funguje to BFLMPSVZ" tak znervózní a pak vám řekne - mám na to PDF -na FLASHce doma ...
Takže jste už jistě pochopili, že o programátorské části robotů se na mém blogu příliš nedovíte. Nicméně, po složité kapitole o směšování a filtrování signálů jsem zjistil, že byť "o patro níže" - na úrovni hardwaru - už jsem se dostal taky k tomu, že můžete mít dokonalý, zcela stabilní, naprosto nešumící, dokonale filtrující obvod - a přesto - předpokládaná funkce nikde ...
Je to trošku jako srovnání Americké a Ruské kosmonautiky - Raketoplán přistával pomocí 5 vzájemně se kontrolujících počítačů, zatímco Rusáci přistávají už od doby Vostoku 1 - volným pádem - nepatrné řízení pádu motorky u moderních Sojuzů je jenom bonus a komfort navíc. A taky - když se podíváte na výsledky - kdo i v dnešní mizérii - ještě má schopnost poslat člověka do kosmu a kdo už ne ?
Takže na jedné straně můžeme koupit čidlo z Dealextreme a pak doufat, že algoritmus
HCHKRDTN z dat něco vydoluje, ale taky se můžeme zamyslet, jak to čidlo vyrobit kam jej umístit a jak jej používat, aby se vám "
data spočetla sama". Že je to blbost ? přemýšleli jste nad tím že mnou velmi nedoporučované sonary
SRF05 mají mikrofon a repráček vedle sebe a že nemusí být jedno jestli jsou na robota přišroubované vodorovně, nebo svisle ?
Rozeberme to dokonaleji - programátor má představu že ze sonaru jde ven "paprsek" velmi úzký, který se odráží od kolmých stěn místnosti a naměřená vzdálenost je úměrná délce úsečky od sonaru k průsečíku se stěnou. Vtip je v tom, že tohle platí při testování, když dáte sonar přesně kolmo ke stěně, pokud je úhel jiný než 90 st tak stěna odrazí prakticky celou energii - zrcadlově někam pryč. Navíc ze sonaru nejde "paprsek" ale kužel s vrcholovým úhlem alespoň 45 st. Takže pokud se robot blíží k rohu místnosti - roh funguje jako "retroreflektor" alias "odrazka" - viz obrázek - signál "odražený od rohu" je mnohem silnější než signál odražený od průsečíku osy sonaru se zdí - a protože roh je někde dole u země "v rohu" - a protože robotici s takovou možností často nepočítají - zdá se vzdálenost odrazu je větší než má být - jakoby místo odrazu bylo až "za stěnou". Ze stejného důvodu většinou "sonar nevidí dveře" - odrazy od "futer" jsou silnější než odraz od stěny a jejich součtem - se "díra mezi futry" prostě ztratí. Což takhle se na odraz svislé stěny rovnou vykašlat a sklonit sonar k zemi a počítat s odrazy od rohů? Na to možná už SRF05 nestačí a v tom je asi ten problém.
A což takhle postavit vlastní Sonar - jako "
bistatický" tedy přijímač je vzdálen od vysílače - a mikrofon i reprák dát do takové polohy aby se rovnou využilo "
zrcadlového odrazu" ?
Nebo otázka z úvodu - SRF vodorovně nebo svisle - pro roboty na Robotour - relativně jasná volba - vzhledem k poměru šířky, délky stébla trávy a vlnové délky zvuku dává svisle postavený ultrazvuk od trávníku 4x větší draz než vodorovný. Důvody proč tomu tak je jsou poněkud fyzikálně složité - ale ruku na srdce - přemýšleli jste o tom ? Nebo je poloha Vašich sonarů dána jenom tím kam vyšly dírky pro šroubky ?
Tedy, ne že bych opustil pojednání o elektru, ale v následujících týdnech se budu mnohem více snažit upozornit na věci, které rozhodě na Internetu jen tak nenajdete - a rozhodně ne na běžných serverech o robotice.
Zbývá už jenom populární rada pro blondýny - jak poznáte, že jste to přehnala s růžovou ? Když "míláček" jde dva kroky před vámi a tváří se, že k vám nepatří ???
10. ledna 2013 v 5:45 | Petr
Před týdnem jsme probírali NUTNOST stavění robotů po malých kouscích, prorože jinak se utopíte v problémech typu "
všechno se vším souvisí".
Dnešní kapitola je o tom, že neumím zacházet se žádným strojírenským CADem ani 2D a tím méně 3D. Takže mládež si teď může odfrknout a říci "blb" a jít surfovat jinde. Na druhé straně - nevím jestli to není výraz snobismu, který je nutný k navýšení ceny projektu, ale všichni, kteří si říkají "dyzajnéři" mají plnou hubu toho jak při "dyzajnování" používají 3D tisk k rychlé výrobě "prototypů svých idejí". Proto se snad nemusím tak stydět.
A dále bych mohl napsat jenom : dělejte to taky tak a spět k radě pro blondýny... Ale abych si zasloužil dnešní porci návštěvnosti musím obrázky doprovodit nějakou omáčkou.
Když stavíte "čisté elektro" jako jsou zesilovače, rádia a tak - tak to prostě "nějak uděláte" a pak v nejhorším koupíte krabici velikosti lodního kufru a doté to všechno nějak zadrátujete.
S roboty to není zase tak snadné - jednak roboti musí mít určitou strukturu - kola by se opravdu měla dotýkat země, kamera by opravdu měla vidět dopředu, atd. Už tohle klade na konstrukci robotické elektroniky řadu omezení. A to ani neotevírám otázku rušení na moc dlouhých drátech a další má oblíbená témata z okruhu "
blbuvzdornosti" robotů, která se týkají především robotů "
ošklivých" co z nich lezou dráty, desky visí za přívody, a všemu vévodí kontaktní pole, které je hned vedle notebooku přilepené izolepou "
na hřbetě robota" a buď z něj drátek vypadne nebo třeba ne ne.
Takže už máte hotovou elektroniku typu "vrabčí hnízdo" popisovanou minule, a musíte ji někam stěsnat, aby to celé "dávalo nějaký smysl" - v této fázi obvykle beru barevné fixy a čtverečkovaný papír a začínám kreslit. Pokud se jedná jenom o klasický "nárys, bokorys, půdorys" všechny úhly jsou 90 st. je to ještě dobré, ale takhle snadné je to uvnitř robota málokdy. Takže se dostanu do problémů a nakonec se vždycky naštvu a začnu "rýsovat pilou". To jest vyrábět 3D nefunkční "fantom" budoucího robota, nebo jeho části.
Příklad na obrázku nahoře - studie budoucího Trávoměru - zcela vlevo - "fantom" na kterém jsem zjistil, že trávoměr nebude menší než veliký SICK a navíc si budu muset dávat pozor aby sám sobě nestínil. Uprostřed a vlevo - krabičky polepené naroutovanými DPS k ověření jestli si "spolu sednou" - a už v této fázi jsem zjistil, že nesednou a musel jsem jeden vyčnívající elektrolytický kondenzátor posunout.
Abyste si nemysleli, že "strejc si jenom neškodně hraje s nůžtičkami" tak tady máte něco ze dna úplně jiné škatulky to Modré - je "neporazitelný robot Ferdík" - 4 sezóny po sobě vyhrál na Robotickém dni MiniSumo. Vpravo je "fantom" jeho budoucího nástupce a potenciálního porazitele, který měl dle mých idejí převracet oponenty speciální radlicí s pákovým mechanismem využívajícím jejich vlastní váhy. (Běda jestli někdo bude opisovat ! ;-) )
Takže - už podruhé stejná věta "přísahám na holý pupek" že čas i prachy ušetříte tím, že se vykašlete na 3D CAD a z toho "co dala popelnice" postavíte fantom, který má se skutečným robotem mnohem více společného než i ten nejlepší 3D model v počitači, mimo jiné proto, že příroda na fantomu "dodržuje všechna pravidla" i ta robotikům nepříjemná jako je pevnost materiálů tuhost spojů, poloha těžiště a tak ....
Zbývá už jenom oblíbená rada pro blondýny, co dočetly až sem - muži a ženy se mohou vzájemně obohatit - On vám vysvětlí co to je
GES,
GME,
TME,
Farnell,
RS,
RadioShack,
Elix, vy mu vysvětlíte co je to
H&M,
Kenvelo,
NewYorker,
C&A,
Terranova,
Orsay, a nakonec se sejdete u dvojitého vysvětlování pojmu
MIXER.
P.S. Klidně opisujte, naopak bych byl potěšen, kdyby někdo "pákového" robota na sumo postavil.
P.P.S. Geekům vyloženě
nařizuju alespoň na
MIXER kliknout - slečna, která na vás vyskočí je fakt dost dobrá, i když (bohužel) oblečená.
30. prosince 2012 v 5:44 | Petr
Rok se s rokem sešel a zítra máme Silvestr. Nicméně nutkání psát blog pravidelně, se mi stalo železnou košilí, proto ani dnes se nebudeme zabývalt chechtáním a chlastem, ale probereme možné "slepé cesty" v konstrukci amatérských mobilních robotů.
Kdyby záleželo na mně tak bych nejraději nedělal nic jiného než vyráběl netradiční analogová čidla a zbytek konstrukce robota, a zejména programování nechal někomu zkušenějším. To mimochodem myslím zcela vážně, takže pokud vám naopak chybí někdo, kdo by vyráběl analogovou elektroniku "hlaste se na mé stále adrese".
Když se podíváme na roboty v Česku je to trochu smutné, protože všechno je kopírování kopírovaného a jen vzácně se vyskytne "
blázen" v pozitivním sova smyslu jako je Béda Himmel a postaví
Robota koulíčka. Stejné "sucho jako na poušti" vidím i v oblasti čidel. Používají se mizerné sonary typu SRFxx, Infračervené "
Sharpy" typu GPYxxxx, laserová čidla od SICKU za hříšné peníze a sem tam nějaké IR optočleny na detekci čáry nebo tak.
Proto bych dnes začal poněkud fantazírovat nad čidly, které jsem doposud nepostavil, ale už jsem o pokusech s nimi četl a vypadají nadějně.
1. "Ultrazvuk" na akustické frekvenci. Ultrazvukové mikrofony jsou citlivé jenom v tak úzkém úhlu jak to jenom jde - to komplikuje používání stereofonních ultrazvuků. Piezzo reproduktorky uzčené pro pásmo kolem 4 kHz krásně kmitají i na své "třetí harmonické" kolem 12khz - toho se dá využít pro náhradu ultrazvuku zvukem - má to ale své problémy, jako je nutnost filtrace signálů (zvukové mikrofony jsou citlivé na široké pásmo, nejenom na 40 +-1 kHz).
2. Stereofonní ultrazvuk pro blondýny - použije se taková frekvence zvuku (ultrazvuku) aby oba mikrofony byl 1/4 vlnové délky od sebe. Pak se signál z levého mikrofonu mixuje se signálem z pravého a stejnosměrné napěti, které tak vzniá je přímo úmerné azimutu překážky - lze si představit něco jednoduššího ?
3. Měření rychlosti robota dopplerem - a to buď radiovým, nebo ultrazvukovým dopplerem - v obou případech je princip stejný - vysílá se vlnění (zvukové /radiové) pod úhlem 45 st k zemi- Odražená frekvence se mixuje s vysílanou a "rozdílová" frekvence je přímo úměrná rychlosti. Tento systém velice dobře znají američní farmáři, kteží dávkují osivo a hnojiva podle rychlosti traktoru a měření přes kola nelze kvůli prokluzování v blátě použít ....
4. Side scanning ultrazvuk ultrazvuk pípá pod úhlem 45 st dolů z robota a do strany a všecha echa se "zakreslují" do obrázku na kterém by měly být vidět okraje cesty.
5. Sluneční kompas - máte kruh svisle postavených fotodiod, na některé svítí slunko, jiné jsou ve stínu podle intenzit určíte azimut ke slunci.
Další mě momentálně nenapadají, ale jestli "se dožiju", určitě všechno tohle a mnoho jiných věcí vyzkouším a budu informovat.
Přeji spokojený nový rok a dodávám už jenom radu pro blondýny: Pokud se vám v autobuse chlap po očku dívá do očí - je to v pořádku - patrně by vás rád oslovil ale stydí se. Pokud se vám dívá upřeně do výstřihu - je to taky v pořádku, proto jste si přede tu pus-upku brala. Pokud vám ale upřeně hledí do klína - je to průser, patrně vám legíny prosvítají a on usilovně počítá chloupky "na pipině" - nezapoměňte si příště vzít přes legíny sukni ...
16. prosince 2012 v 3:39 | Petr
Na robotickém dni roku 2005 jsem se rozhodl, že robotického dne roku 2006 se budu účastnit jako soutěžicí v kategorii Mini-SUMO. To jsou roboti s maximálním půdorysem 10x10cm maximálně 500 gramů těžcí, kteří se vytlačují z kruhové arény. Aréna je černá a má bílý okraj, aby podle barvy pod sebou roboti poznali, že už jsou na kraji.
Sumo zápasy v roce 2005 vypadaly tak že jeden robot se motal na jednom konci hřiště a druhý se motal na druhém a neměli o sobě ani ponětí. Takže jsem hledal způsob jak přesně změřit polohu soupeře. Tehdy se běžně používaly Infračervená čidla, která dají informaci jestli je soupeř vlevo nebo vpravo, ale to se mi zdálo málo. Tak jsem se inspiroval u netopýrů a začal stavět "Stereofonní ultrazvuk"
Pokud se podíváte na mého robota "
Helenu" z té doby - bude vám to jasné. Uprosřed je ultrazvukový reproduktor a po stranách dva ultrazvukové mikrofony. Takže ultrazvuk pískne a pokud je protivník více vlevo - odražené ECHO dorazí na levou stranu dříve než na pravou a podle časového rozdílu mezi levým a pravým kanálem poznám nejenom vzdálenost soupeře, ale i směr. Na začátku zápasu se 5 sekund čeká, během těch 5 sekud si moji roboti soupeře zaměřili a pak už "
si pro něj jeli" zcela přesně na místo kde byl .... Fungovalo to báječně, ale nakonec jsem
se stejným bodovým ziskem jako vítěz skončil 2, protože jsem prohrál vzájemný zápas, protože Pepa Hanzal měl pro Barborku silikovnové pneumatiky, které já jsem ještě neměl. (Přesněji řečeno jsem z furiantství nad "
dominancí své technologie" odmítl jeho nabídku si je přímo na místě koupit¨...)
Je zajímavé, že špatné zkušenosti s čidly typu SRFxx jsou natolik zažité, že když jsem předem oznámil, že pracuju na této technologii - dostalo se mi jasné rady "neplýtvej časem, je to nemožné". Zejména zaznívala námitka, že nebudu schopen měřit soupeře, kteří jsou blízko, což se ukázalo jako nesmysl, protože nakonec jsem měřil překážky až do 5 cm před robotem. Abych se vyhnul problémům s usměrňováním odraženého signálu diodami. (usměrňování milivoltových signálů je vždycky velice bolestivá záležitost) tak jsem vymyslel "přímou digitalizaci" UZ signálu, kterou jsem vysvětloval minule. Problém byl v tom, že při 2 kanálech musely mé AD převodníky pracovat na frekvenci 320 kHz a to už na ATmegu8 na 16 MHZ je celkem dost. Zajímavé, je že jsem každý vzorek musel zpracovat během 50 Strojových cyklů (16 MHz / 320 kHz = 50) což se samo o sobě zdálo nemožné, ale v Assembleru to celkem šlo.
Jak tedy systém fuguje ? Myslím, že je to jasné. Po identifikaci soupeře v pravém i levém kanále získám vzdálenosti - vlevo DM+DL a vpravo DM+DR- pak průměr je úměrný vzdálenosti a rozdíl je úmerný azimutu. Viz středoškolská matematika, Pythahorova věta atd. Tohle platí v případě, že máme v "zorném poli" jenom jednu překážku. Pokud máme v zorném poli více překážek vypadají signály z čidel třeba takto.
Pak můžeme prostor kolem robota rozdělit na síť souřadnic a pro každý bod v této síti můžeme násobit dané vzdálenosti odpovídající signály z levého a pravého mikrofonu a můžeme sestavovat "mapy ultrazvukové odrazivosti", které v simulaci v Excelu vypadají třeba nějak takto.
Robot je pochopitelně uprostřed levé přední strany. To že jsou ultrazvuková echa rozmazaná v čase se projeví tím, že překážky jsou poněkud roztahané do šířky (určení azimutu je náročnější než určení vzdálenosti). I tohle se dá udělat s jednoduchoučkým hardwarem z minula (pochopitelně doplněným o druhý přijímací kanál).
Stačí jenom signál plný informací neznehodnotit v zesilovačích a nakonec neposlat do ubohého komparátoru. Na druhé straně když chcete dělat ultrazuvk takto - je to mnoho programování a přemýšlení a není to nic pro nevzdělance, který se cítí jako "veliký hacker" protože umí třemi drátky připojit "SRF05 k Arduínu".
Zbývá už jenom tradiční rada pro blondýny, co dočetly až sem : Pamatujte, že jehlové kozačky se na náledí nehodí. Pokud však upadnete šikovně a s nohama ve vzduchu "tomu správnému" ukážete, co máte pod sukní - neznám lepší způsob jak si ještě před vánocemi rychle opatřit chlapa.
9. prosince 2012 v 3:05 | Petr
Minule jsem strhal oblíbené moduly SRFxx, tak musím předvést, že to umím lépe.
Vzhledem, k tomu, že se neodvažuju ani naznačit jaký mikrokontrolér by měl kdo používat tak jsem v náznaku nakreslil jenom analogovou část jednoduchoučkého sonaru.
Jak vidíte je třeba jeden (digitální) pin mikrokontroléru pro kmitání reproduktorem a jeden kanál AD převodníku pro digitalizaci odraženého echa.
Výstup označený jako INPUT jde do systému invertorů, které invertují signál a pak "můstkovým způsobem" v protifázi budí ultrazvukový reproduktor - tím dosáhnete toho, že při napájení 5V je na ultrazvukovém reproduktoru signál s amplitudou 2x větší tedy 10V, což je jednodušší alternativa MAX232 se SRF04. Tam dosahuje amplituda až 20 V, ale protože naše zpracování odraženého echa je lepší nepotřebujeme repráčkem tolik "hulákat".
Smysl kondenzátoru C4 je vytvořit překážku pro stejnosměrný proud a zabránit tak zkratu na výstupu 74HC04 když se zrovna nepíská. Ultrazvukové reprodukotry jsou piezo typu a chovají se sice jako kondenzátor, ale nikdy nevíme, kdy někoho napadne připojit k výsupu obyčejný repráček ...
Vstup a celé vstupní zesílení je primitivně jednoduché - střídavý signál jde bez jakéhokoliv usměrňování a dalšího zmršování rovnou do procesoru, kde se zpracovává digitálně. Povšimněte si "
ochranného odporu" R1 a zejména kondenzátorů C2 a C3 - ty pustí jenom střídavý signál - vstupní offsety zesilovačů se tudíž dále nezesilují a neškodí. R3 a R4 nám střidavý signál umísítí "
doprostřed" rozahu AD převodníku - do procesoru tedy půjde střídavý signál ne od -2,5 do +2,5V ale od 0 do 5V. C1 nám potlačuje šum odporového děliče.
Do procesoru nám tedy jde přímo střídavý signál. Jak se s ním dále pracuje ?
Jenom naznačím - pokud ultrazvuk píská na 40 kHZ musíme odraz digitalizovat na 4x větší frekvenci tedy 160 kHz. To pro dnešní mikrokontroléry není žádný problém. Na každou periodu signálu tedy máme 4 vzorky, které si označíme A, B, C, D, Vždy dvě dvojice od sebe odečteme asi takto
I = A - C
Q = B - D
Tím jsme dostali dva signály
I - neboli In phase komponentu a
Q - neboli Quadrature komponentu. Detaily třeba
ZDE. Zároveň jsme se zbavili stejnosměrného offsetu (ať už nechtěného, nebo uměle zavedného), protože DC komponenta je v A, B, C i D stejná.
Pokud nás zajímá amplituda signálu tu teoreticky správně vypočteme jako
a = Odmocnicna ( I2 + Q2).
Umocňování a odmocnňování je pro procesor těžký záhul, takže si pomůžeme přibližnou hodnotou amplitudy, vypočtenou pomocí absolutní hodnoty.
a = ABS ( I ) + ABS ( Q )
A máme amplitudu, se kterou můžeme dále pracovat dle vlastní fantazie - v mých sonarech jsem vždy amplitudu aktuální porovnával s tzv.
Exponenciálním klouzavým průměrem amplitud minulých a tím jsem eliminoval převážnou většinu falešných odrazů. Detaily i s nákresem
ZDE.
Takže jsme jednodušším zapojením dostali informaci nejenom o velikosti odrazu (a můžeme malé odrazy ignorovat, nebo porovnat s minulým měřením), ale i o fázi, o využití fáze se pobavíme v díle č. 4. Takže těšte se pardálové.
Zbývá už jenom tradiční rada pro blondýny, co dočetly až sem : Když přijdete domů a miláčkovi stojí na stole flaška - nepodléhejte panice "lahváč" má velmi zajímavou ultrazvukovou odrazivost, takže pořád je naděje, že jeho alkoholismus znovu nevypuknul.
2. prosince 2012 v 6:23 | Petr
Když politici mohou vykrádat kde koho aby snadno udělali diplomku na plzeňských právech, tak proč bych já nemohl vykrádat sám sebe a už předem vám nabídnout nesouvislé povídání o sonnarech z mé vlastní hlavy a to
ZDE na stránkách robotické
WIKI.
Minule jsem odvážně tvrdil, že komerčně dostupné sonary typu SRFxx jsou ty nejhorší možné a s jednou rukou v nose a druhou v zadku si postavíte lepší. Dnes bych měl své tvrzení obhájít, tedy přečtětě si nejprve článeček z odkazu nahoře jak se to má dělat a pak srovnejte s tím jak se to nemá dělat .
Tedy máme na obrázku schéma SRF04. Jednoduchá PICka píská ultrazvukovým reproduktorem přes MAX232 - to je nábojová pumpa a převodník úrovní z TTL na RS232 - takže použitím MAX 232 dosáhnete z 5V napájení amplitudy signálu až 20V - až doposud všecko v pořádku.
Pak se ale podiváte na přijímací cestu a poleje vás horko - jednotlivé zesilovací stupně mezi sebou vůbec nemají kondenzátory !!! Přestože zesilují jen střídavý signál!!! Takže LM1458, který použávají má
vstupní napěťový offset až 6mV - to znamená, že posun stejnosměrné úrovně na konci řetězce - se násobí zesílením, které zde je kololem 500 takže odchylka stejnosměrné úrovně může dosahovat až
500 * 6 mV = 3 volty !!!Stejnosměrný offset 3V ještě nemusí být taková katastrofa, ale je, vzhledem k vyhodnocení jaké SRF 04 používá.
Na konci přijímacího řetězce je komparátor zapojený jako Schmmidtův klopný obvod s mírnou hysterezí (zavedenou přes odpor R12). Referenční napětí, pro komparátor vzniká tak, že při zapískání se přes Diodu D1 vybije kondenzátor C10 až na -10V a pak se přes R6 pomaličku nabíjí až na 0V - tím je zajištěno, že komaprátor není citlivý na ohlušení vlastního mikrofonu pískáním vlastního reproduktoru.
Problém je v tom, že střídavý signál, který je ve stovkách milivoltů se sečte se stejnosměrným offsetem, který může být i ve voltech a to vše se porovnává s exponenciální křivkou napětí na C10. To je něco jako legendární věta z Járy Cimrmana - Jára zde byl přesně v 13. listopadu 1910 ve 3 hodiny +- 75 let....
Takže když jsem si stěžoval, že čidla typu SRF nedávají ani přibližnou informaci jak velkou překážku vlastně vidí - není se čemu divit, když tuto informaci "zahodí" už během analogového zpracování.
Řekli byste, že vyšší modely SRF budou lepší - nikoliv -
ZDE je schéma SRF08 - které je řešené zcela stejně akorát mezi stupni zesilovače je digitální potenciometr, aby se dalo "
nastavit zesílení" - problém s offsetem je tam zřejmě taky, protože Jirka Iša si letos na
Robotour na
toto čidlo stěžoval, že při určitém zesílení dává falešné echo ve vzdálenosti 80 cm i při zamíření z okna ven ve 3 patře.... Je zjevné čím to je - Jirka je smolař a koupil kousky s tak velkým napěťovým offsetem, že při určitém zesílení je napěťový offset větší než referenční napětí i bez přítomnosti jakéhokoliv signálu na vstupu !!!
Výrobce ušetřil za dva keramické kondy, a jeden AD převodník v procesoru - a my mu za to děkujeme. I když kluci zoufalci, na Robotour, kteří zaměřují koupené senrory do nebe pod úhlem 45 st., aby neměli falešná echa si to asi nemyslí....
Tradiční rada pro blondýny, co dočetly až sem : Pokud se v posteli trošku stydíte a nutíte chlapa aby měl "při tom" zavřené oči, kde berete jistotu, že si pod víčky nepředstavuje nějakou jinou ?
25. listopadu 2012 v 1:52 | Petr
Když se dneska řekne věta z nadpisu - to jest detekce překážky IR světlem, každý robotik okamžitě odpoví "
Máš na mysli Sharpy" a pod pojmem "
Sharpy" se myslí čidla typu
Sharp GP2Y0xxxx. Takže se nedivte, že jsem byl trochu šokován, když jsem četl
článek na "Lets Make Robots", ve kterém autor tvrdil, že "
staré dobré mravy upadají" a mládež už neumí udělat IR detektor překážek z přijímače dálkového ovládání na televizi. Jelikož i ten nejlevnější Sharp vás vyjde skoro na 400,- zatímco "
oboustranný" IR sensor klidně postavíte za 50 kč tak nemohu začínajícím robotikům neodhalit zapomenutou technologii z doby kdy my jsme v roce 2001 taky začínali ....
Omlouvám se, že začínám obrázkem, který
tady už jednou byl, ale tentokrát jsem jmenovitě popsal tři součástky. Takže vlevo a vpravo vidíte dvě úplně obyčejné IR LED - všimněte si, že slabounce svítí - to je citlivost foťáku na IR světlo a uprostřed je součástka, kterou jsem minule prohlašoval za SFH5110 - ta už je dneska špatně dostupná, tak jsem na obrázku napsal její identický (vzhledem i parametry) ekvivalent
TSOP4836.
Jak to celé funguje ? TSOP 4836 je opravdu přijímač televizního dálkového ovládání a taky se tak chová - očekává pulsy IR světla na frekvenci 36 kHz, které nesou binární informaci o tom jaké jste na "dálkáči" stiskli tlačítko. Jenomže u robotů je to trochu jinak - IR světlo vysílá samotný robot a buď je překážka tak blízko, že se světlo odrazí, nebo se nic neodrazí.
Jinými slovy - Mikrokontrolér bliká IR LEDkou na 36 kHz a čeká na signál z TSOP 4836 - buď se ho během krátké doby (výrobce doporučuje blikat alespoň 600 mikrosekund) dočká a pak je překážka nablízku, nebo se nedočká ničeho, a pak je cesta (pravděpodobně) volná. Protože TSOP 4836 má velice široké zorné pole (kolem 120 stupňů) je škoda toho nevyužít - na obrázku vidíte 2 IR LEDky. Každá je zapojená samostatně. Obě vyzařují v úhlu mnohem menším (kolem 30 stupňů) a navíc jak vidíte tak každá je poněkud ohnutá do boku.
Tím robot pozná jestli je překážka zcela vlevo (chytá odraz jenom při blikání levou LEDkou) nebo zcela vpravo (chytá odraz jenom při blikání pravou LEDkou) nebo uprostřed (chytá odraz oběma LEDkami).
Celá situace pak vypadá jako na obrázku, který pochází z
tohoto skvělého článku, který mně kdysi přivedl na stopu zde probíraného čidla. V článku se probírá, že pod moderními úspornými zářivkami, které blikají kolem 30 khz se čidlo může aktivovat i náhodně, proto se při první detekci překážky vyplatí nepanikařit a počkat ještě 1-2 cykly, jestli to nebyl "
falešný poplach".
V době kdy já jsem vyráběl roboty amatérsky
Pepa Hanzal vyráběl roboty profesionálně a koukejte na co ukazují šipečky ? Žeby dvě IR ledky (v trubičce) a TSOP 4836 ? čímž jsme narazili na poslední problém - TSOP musí být stíněný od přímého světla vlastních LEDek, což v mém případě "
vychytrale" řeším tím, že TSOP je z obou stran "
obestavěn" konektory z neprůhledného plastu.
Zbývá poslední otázka - jak alespoň přibližně odhadnout vzdálenost překážky - to lze velice velice hrubě podle intenzity odrazu - čím je doraz silnější tím TSOP 4836 vydá svůj signál dříve, takže ve svých softwarech jsem to řešil takto
- Zapnout LEDku
- Čekat polovinu periody
- Vypnout LEDku
- Podívat se na výstup čidla
- Pokud je aktivován přičíst k výsledku 1
- Čekat druhou polovinu periody
- Opakovat 128x bod 1-6
Takže hodnoty, které jsem dostal mohly být od 0 - (nic nedetekováno) do 128 ve skutečnosti se pohybovaly spíše od 0 do 40 - TSOP se nidky neaktivuje prvními IR pulsy.
Existuje i složitější, ale spolehlivějši postup jak uršit intenzitu odrazu - a to tak že postupně měníte tzv. střídu signálu - tedy poměr kdy je čidlo vypnuto a zapnuto - začínáte s poměrem "světlo / tma " 50% / 50%, při tomto poměru je čidlo nejcitlivější, pokud detekujete odraz - zkusíte při příštím měření poměr zmenšit třeba na 25% světlo 75% tma - až dojdete ke "hraně" kdy při určitém poměru čidlo překážku vidí a při malém zmenšní střídy už ne - a podle toho při které "Střídě" to je můžete usoudit jak je překážka daleko.
Na samotný závěr ještě několik poznámek:
Toto čidlo se nápadně podobá Trávoměru - ale nebojte se - tohle je vyzkoušené (mnou i jinými ) a opravdu to funguje - na vzdálenosti kolem 50 cm, což je pro malého robota v místnosti až až.
Druhá poznámka - nechat tohle "
know how" vymřít je veliká škoda hlavně pro ty, pro které jsou "
Sharpy" příliš drahé takže opakuju odkazy, a navíc vás tímhle budu otravovat i samostatným článkem na "
Robodoupěti". Takže zde seznam Linků :
Tak děcka a to je všecho až na oblíbenou radu pro blondýny - dávejte si bedlivý pozor na nylonové a polyesterové, černé oblečení - vzhledem k charakteru látky i barvy tato je černá pro naše oko, ale zcela průhledná pro infračervené světlo, takže chlapi v Americe s oblibou sledovali infračervenými kamerami "
co máte pod tím" - k tomu byly (a jsou) zejména vhodné videokamery Sony s funkcí "
Night shot".
11. října 2012 v 5:03 | Petr
Nedávno jsem s Jirkou Rottou diskutoval o tom, že distanční sloupek M3 stojí 2,80 kč zatímco imbusový šroubek M3 velice podobného vnějšího tvaru je za 20 haléřů. On, jako prodejce robotických stavebnic s mojí ideou "
stavění za málo peněz" nesouhlasil, a za tento příspěvek určitě nebudu pochválen, nicméně když kluci z
MLabu v
Holicích prodávali své stavebnice - co si myslíte že měli zašroubované v každém rohu plošného spoje - místo distančního sloupku ?? ;-)
Takže na jedné straně jsem prvního robota postavil asi za 7000 z toho 2500 byly skutečné náklady a zbytek byly peníze promrhané na součástky, které jsem - zničil - nepotřeboval - prostavěl v prototypech - nakonec nepoužil - ztratil atd .... Pro zajímavost prvního robota na sumo - Primuse jsem postavil asi za 2000 jeho identickou (nepatrně modifikovanou) kopii Helenu za 800 a nakonec neporazitelného robota Ferdíka taky za 800 (ke všem se časem dostaneme). Takže mám možná optimistickou informaci - jakmile se v tom naučíte chodit budete vydávat peníze neustále efektivněji a efektivněji.
Nicméně pořád je tady Jirka Vácha - který v
Brněnském domě dětí Junior vede kroužek elektroniky / robotiky a tvrdí - "
nejvyšší cena, kterou jsme ochotni za součástky na robota zaplatit je zadarmo". Z jeho hlavy taky pochází geniální řešení - použití ojetého zubního kartáčku místo třetího kolečka na diferenciálně řízených robotech.
Jinými slovy jako se vším v součastnosti, není problém postavit robota složitého a za hodně peněz, ale jednoduchého a za málo peněz . Takže si probereme jen takové nápady, které sám používám.
Takže princip jak se roboti sravějí lacino :
- Nakreslete si plánek
- rozložte ten plánek na základní tvary, válce, koule, kvádry, tyče, plechy, úhelníky, kola atd ...
- choďtě po světě a tyhle tvary hledejte - v popelnici, u babičky na půdě, ve slevě v Kauflandu atd ...
Základní princip stavění za málo peněz totiž je "vydrbání se systémem". V dnešní době cena věcí jen velmi málo souvisí s náklady na jejich výrobu a daleko více s marketingem firem, takže je nutno jít "proti marketingu" a používat věci jinak než měli "marketingoví manažéři" v úmyslu.
Příklad s distančními sloupyky je myslím jasný, pokud potřebujete dlouhé distanční sloupky kupte si dlouhé šroubky M3 a pro oddělení plošných spojů si nařezejte trubičky kterými šroubky provlečete jako korálky ve stylu - plošný spoj, kroužek, plošný spoj, kroužek, plošný spoj a nakonec matičkou všechno přitáhnete. Kde sehnat trubičky ? Máte doma vypsané fixy ? V jenorázových dávkovačích na tekuté mýdlo je krásná trubička přesně té správné tuhosti a správného průměru.
Potřebujete plastové tyčky - kupte si plastová ramínka - 5 kusů bývá za 20-30 korun nařežete z nich spoustu. potřebujete větší průměr - počkejte na slevu záchodových štětek. Ještě větší průměr ? Tyčka od smetáku ?
Radlice k robotu na sumo ? Od čeho jsou plastové obracečky na smažení ? Kuchyňské náčiní je vůbec vděčné - plastové krabičky, vařechy, plastová krájecí prkna - všechno relativně kvalitní materiál za hubičku.
Nevyhazujte nepovedené plošné spoje - pokud z nich sudndáte součástky (i hrubě pilou) máte velice pevné destičky vhodné k ledasčemu. To samé platí o CDčkách, které jsou z polykarbonátu - což je král vysokopevnostního plastu.
Sám teď řeším otázku stínění elektroniky - dají se koupit stínící krabičky - pro mně nevyhovujícího rozměru - za astronomické peníze, ale taky máme pech z konzerv, plech z počítačových beden, hliníkový plech z pivních plechovek, tácky na párky z tlustého alobalu a nakonec i normální tenký alobal .
Přece jenom bych ji potřeboval zabalit do něčeho pevného a nevodivého než ji budu balit do alobalu - takže PET flašku od sodovky za 4,90 rozstřínu a mám pěkného a velmi tuhého plastu, co hrdlo ráčí. Stejně tak vysekám z PET flašky izolační podložky nejrůznějších tvarů ale pozor - podložky mezi výkonovou součástku a chladič takhle vyrábět nelze - PET (polyethylen tereftalát alias polyester ) nesnáší teplo.
V začátcích PET flašek u nás jsem do vršků lil epoxid s pilinami a po vytvrdnutí jsem vyvtal díru a měl jsem knoflík na potenciometr.....
Potřebujete nějaký specializovaný tvar ? Kupte si desku plexiskla, vyřežte části toho tvaru, které se dají vteřinovým lepdilem lepit tak pevně, že spoj je pevnější než samotná hmota. (jsou to příbuzné polymery plexi je metakrylát, lepidlo kyanoakrylát)
A tak dále a tak podobně - nemáte-li peníze - holt budete muset mít fantazíí a šikovné ruce. (pokud nemáte nic z toho do robotů se ani nepouštějte). Jenom poznámka na závěr na obrázku vidíte mého posledního (bezejmenného) robota, který je ze zbytků úplně za hubičku a když se podíváte pozorně, uvidíte, že je celý slepený vteřiňákem ze 4mm tlustého plexiskla a dokonce tam vidíte i náhradu distančních sloupků šroubky M5 a trubičkou.
Dnešní obvyklá rada pro blondýny zní - pokud najdete lak na nehty v šuplíku svého miláčka - rozhodně nemyslete na nejhorší - milenky totiž přicházejí i odcházejí už "nalakované" . V úvahu přicházejí mnohem méně závažné možnosti - jakože miláček přijal roli v travesti-show, nebo potřeboval zakápnout šroubek kapkou laku, aby se nepovolil.....
4. října 2012 v 1:14 | Petr
Je to bez týdne půl roku, co jsem
poslal Trávoměr do šuplíku. Od té doby uplynulo spoustu času a zmatků - registrace na Robotour byla posunuta o měsíc dopředu, pak o měsíc dozadu, pak jsem dělal zkoušky do práce - místo robotů jsem se doma učil. Pak jsem se Martinovi Dlouhému omlouval, že robota (zase ) nestihnu dokončit.
Nicméně - pokud je vám 40 - máte přesnou představu o tom jak rychle čas plyne a kolik jej chcete (můžete) na jakou akci investovat. Takže jsem v klidu bádám si dál a beru si příklad z novozélanďana
Burta Munra, který od roku 1920 - 47 let piloval a pulíroval a ladil starou motorku než s ní v roce 1967 udělal dodnes platný rychlostní rekord.
Utěšuju se tím, že pokud by tomu nevěnoval 47 let, třeba by jeho rekord někdo později překonal.
Takže jenom pro ty kdo si nepamatují - Trávoměr je čidlo snímající barvu okolí robota na základě ozařování různobarevnými LEDkami a snímáním odrazu fotodiodou. Po různých variantách a různých zmatcích, které jsou popsány v předchozích 10 dílech seriálu jsem se dostal k blikání LEDkami na frekvenci 10.7 MHz a to mi dává možnost vestavět do Trávoměru "dodatečnou featuru" v podobě pokusu o měření vzdálenosti na základě zpoždění odraženého signálu.
Trávoměr je tak komplexní čido, že sám o sobě je složitější než běžný domáci robot. Zásadní problém je optika a s tím spojená otázka, kde sehnat vhodné čočky, tak aby byly dostupné nejenom teď ale i za pár let. To je obrovská bolest takových konstrukcí, kterou se zdá jsem vyřešil tak, že mám univerzální adaptér na který se dá nasadit jakákoliv čočka a jenom podle ohniskové vzdálenost se mění "zorný úhel" trávoměru a to v rozsahu 30 - 60 st. To je bohužel daň za moderní společnost a "bordel" v oblasti obchodu, kde každé zboží je "teď'' a co bude zítra obchodníka nezajímá.
Takže jsem začal téměř maniakálně hromadit lupy, čočky, objektivy z foťáků a výsledek se dostavi - mám jich celou krabici a část z nich je i použitelná. Viz následující obrázek, kde je ke každé čočce i popis - průměr - světelný tok na mé zkušební optické lavici (měřený jako proud mojí milovanou
BPW34) a světelný tok na 1 milimetr čtvereční plochy čočky.
Jdeme zleva doprava.
- Tzv. klenotnická lupa - koupená v Holicích za 35 kč skleněná překvapivě kvalitní.
- Klenotnícká lupa z Oční optiky - koupená za 180 - plastová překvapivě nekvalitní
- "Lupo-pinzeta" ze slevy v Kauflandu - koupená za 29.90 plastová - opticky naprostá hrůza ale má tu jedinečnou správnou ohniskovou vzdálenost kolem 35 mm.
- Lupa ze stupnic vojenských radiostanic Varšavské smlouvy - koupená v Holicích - 6 kusů za 100 kč. Má skvělé ohnisko 30 mm, ale je už moc tlustá (viz nízký tok na mm plochy)
- Mnou vyrobená optika ze dvou lup průměr 40 mm
- Kondenzor z Pulfrichova fotometru - výroba Carl Zeiss - II světová válka. na zadní straně je hákový kříž a říšská orlice - používám jako (skvělou) lupu takže i přes dokonalé vlastnosti do trávoměru určitě nepůjde.
A vítězem se stává .... Lupa z vojenských radiostanic a na druhém místě je "lupo-pinzeta" - obě protože mají velice blízké ohniskové vzdálenosti a i blízký světelný tok a obě by snad šly sehnat i v budoucnosti .
Právě pro nedostatek čoček jsem musel optiku postavit tak, že jediný kus, který se bude vždy vyrábět podle dostupné čočky je plexisklové čelo trávoměru, které čočku ponese - snad to bude dosti univerzální. Takže jedeme dále - blbnutí se světlem a fotodiodami pokračuje.
Dnešní rada pro blondýny zní - kupte si silikovnové podpatěnky a vlepte je do podpatkových bot 3 cm před střed paty - takhle bude pružnost podpatěnky odlehčovat prstům a vy budete moci se svým miláčkem cupitat daleko dále - pro opravové blondýny - zde je
odkaz na systém Baťa Insolia, který to dělá taky tak.