close
Vážení uživatelé,
16. 8. 2020 budou služby Blog.cz a Galerie.cz ukončeny.
Děkujeme vám za společně strávené roky!
Zjistit více

Vážení uživatelé,
16. 8. 2020 budou služby Blog.cz a Galerie.cz ukončeny.
Děkujeme vám za společně strávené roky!

Červen 2013

Matematika v robotice 4. Svět celých čísel 1.

6. června 2013 v 4:32 | Petr |  Roboti a Matematika
Jako borec, který začíná být starý neustále vzpomínám na "zašlou slávu mládí". A jedním z mých minulých programátorsko-elektronických majstrštyků byl stereofonní ultrazvuk, o kterém jsem psal tolikrát, že asi právě klikáte na tlačítko zpět.
V době, kdy jsem ultrazvuk dával dohromady jsem byl správně drzý a tak mi nepřipadalo jako problém na 16 MHz procesoru zpracovávat datový tok 320 kB/sec - pro vaši informaci 16M/320K = 50 strojových cyklů na jeden vzorek. Samozřejmě, že smyčka, která zpracovávala data (mohu-li to napsat) byla mistrovské dílo v assembleru, kde jeden kanál se načítal AD převodníkem (což trvalo 26 taktů) a druhý se mezitím zpracovával matematicky. Samozřejmě, že v těch 50 taktech se nic moc převratného spočíst nedalo, nicméně stereofonní ultrazvuk pro MiniSumo fungoval zázračně.

Vzhledem k tomu, že dnes už pro takové datové toky byste vzali spíše nějaký STM32 tak minimálně na 70 MHz, nebo možná i vice tak patrně nikdy nebudete řešit problém, typu - "jestli spočtu z těchto hodnot průměr - už se nevejdu do patřičného času". Nicméně věc, kterou budete řešit bude asi otázka zdali cpát z čidel do centrálního počítače (izolepou přilepeného notebooku) rovnou surová data, nebo jestli je nějak předzpracovat.
Srovnání z praxe - pokud používáte 40 kHz ultrazvuk, který dle Shanona-Nyquista digitalizujete na ideální frekvenci 160 kHz a měříte vzdálenost max. 4 metry, a to 10x za sekundu je to datový tok 38 kilobyte/sec. Pokud budete posílat jenom změřenou vzdálenost překážky v milimetrovém rozlišení bude to 20 byte / sec.

Pokud zvolíte verzi - posílat surová data - pak asi narazíte na to, že s rostoucím počtem čidel vám žádná sběrnice nebude dosti rychlá a že nároky na centrální počítač velice vzrostou.
Pokud zvolíte verzi zpracovávat data mikrokontrolérem co nejblíže jejich vzniku, tedy přímo v procesoru řídícím čidlo (což osobně považuju za správné) narazíte na problém omezených prostředků mikrokontrolérů.

Jedním ze základních omezení, které je i u většiny 32 bitových MCU je nutnost používat celočíselnou aritmetiku.
Exisutjí sice procesory s matematickým komprocesorem, nebo v C je možno přilinkovat emulační knihovny. Obojí ale znamená značné omezení. Jestli si právě říkáte, že se vykašlete na rady konzervativního dědka a budete si psát své algoritmy ve "float" jak budete chtít - tak si vás dovolím upozornít, že dnes nejčastěji používané DSP algoritmy - to jest dekódování MP3 a dekódovaná GSM signálu jsou taky - zcela úmyslně naprogramovány v celočíselné matematice, aby pro MP3, nebo mobil od Vietnamce za 299,- nebylo nutno používat procesor s koprocesorem nebo s velkou ROM (FLASH) pamětí.

Takže v nejbližší době probereme celočíselné algoritmy. Dnes už jsem psaním poněkud unaven, tak si dáme jenom ochutnávku.

A = 7/8 X spočteme jako A = ( ( X << 3 ) - X + 4 ) >> 3

Tušíte proč je to mnohem rychlejší než násobení 7 a dělení 8 ?
Tušíte proč je tam + 4 ?

Zbývá už jenom oblíbená rada pro blondýny : Když v Cosmopolitanu píšou, že začíná léto - není to rozkaz lézt do plískanice v minišatech - oni píšou své články půl roku dopředu, a navíc někde v Anglii - takže prd vědí jak je zrovna teď u vás v Zatopené Lhotě.

Post Scriptum : Protože moje matematické schopnosti, se blíží svým hranicím - hledám už předem "hostujícího autora" který napíše srozumitelnou lekci (nebo vice lekcí) o Kalmanových numerických filtrech a to nejlépe vidláckým způsobem, abych to i já (konečně) pochopil. Hlaste se hojně - v diskusi. Pokud by psaní "vidláckým způsobem" mohlo znamenat, že vás vyhodí z Matfyzu nebo ČVUT, nebo s vámi přestanou chodit na pivo - můžu identitu autora utajit (nebo s ním začít chodit na pivo sám)....

Samá diagnostika - žádná léčba

4. června 2013 v 6:20 | Petr |  Příroda
Asi tak před 4 lety - uprostřed víkendové noci přišel na příjmovou ambulanci mladý pacient, že ho bolí břicho takovým způsobem, že už neví kudy kam. Vyšetřil jsem jej zběžně a nic patologického - nebo dokonce nebezpečného - jsem na něm neshledal. Tak jsem si říkal - "je to neurotik s dráždivým střevem" - což se nakonec ukázalo jako zcela přesná diagnóza, ale jeho případ je jistým způsobem zajímavý.

Přinesl totiž s sebou chorobopis z minulé hospitalisace na "slovutné soukromé klinice". Ten chorobopis byl šokující tím, že měl 240 stran a samotná propouštěcí zpráva měla asi 15 stran.
Začetl jsem se do chorobopisu, který se četl jako krvák od Tarantina - občas mu bývá špatně. Takže prodělal gastroskopii (hadice krkem do žaludku) kde mu odebrali vzorek sliznice, podrobili ji vyšetření na Helicobacter pylori, včetně molekulární genetiky tohoto bacila, pak histologii, cytologii, imunohistochemii, a molekulárně genetický rozbor sliznice - nic se nenašlo.
Pak stejný postup kolonoskopicky - druhou stranou - řitním otvorem- s odběry vzorků střevní stěny a jejich detailním "mikro-imuno-histo-cyto-genetickým rozborem" - rovněž nic.
Pak prodělal CT vyšetření - prakticky celého organismu od hlavy po kolena s náplní střeva dvojím kontrastem a 3D rekonstrukcí - zase nic....
Drobné nepodstatnosti jako laboratorní vyšetření, nebo ultrazvuk břicha ani nepopisuju....

To už jsem se při čtení i jeho vykládání královsky bavil a tak jsem se chudáka zeptal - "A pomohlo vám to ?" - a on se držel za břicho řka: "Víte že ani ne !!". Tak jsme probrali otázku "sociálního střeva" a jestli by to nemohl být jeho problém, jemu se výrazně ulevilo, že nic smrtelného nemá , hlasitě odříhnul, hlasitě prdnul a telefonoval přitelkyni, ať si jej odveze domů....
Princip problému je ale v něčem jíném - každé jedno vyšetření CT je za 3-5 tisíc, histologie je za tisícovky, molekulárně genetické metody jsou za desítky tisíc - takže byl "vyšetřovací program", kterým chudáka prohnali věcí neschopnosti, poznat stresový podíl na potížích, nebo se jenalo o cynické "vytěžení hejla" a jeho zdravotní pojistky ? Těžko o tom rozhodnout, protože současná medicína poněkud spěchá, takže je možné, že provedli všechna ta "advanced" vyšetření aniž by čekali na výsledky přechozích "low tech" vyšetření - jako je třeba prostý rozhovor s pacientem.

Vy si v každém případě pamatujte - vyšetření chorobu stanoví, ale chorobu nevyléčí. Systém zdravotního pojištění je totiž postaven natolik úchylně, že vyšetřování generuje zisk, protože se k němu používají ty "drahé přístroje made in U. S. of A.", jejichž koupě se musí z pojištění zaplatit, zatímco léčba je většinou spojena s předpisem léků a dalších zdravotnických prostředků a za to je doktor finančně trestán. Navíc vyšetřovat se dá až do smrti, zatímco léčit jen do vyléčení. Takže jako ve všem - ve zdravotnictví - společnosti i v Evropské unii - vše je zcela opačně než velí "zdravý selský rozum".

Proto až si budete u doktora stěžovat že "bolesti nepřestaly" a on vás "pošle na rentgen" nebo jakékoliv jiné vyšetření - ve vlastním zájmu ze sebe udělejte blbce a ptejte se "a po tom rentgenu se mi uleví" ? Taková otázka sice vypadá jako z otřepané doktorské historky typu "kdyby do dědy nepouštěli to EKG, tak ten infarkt nedostal..."
Vy ale snesete vypadat 10 minut jako blbci - a během těch 10 minut pozorně poslouchejte reakci doktora - vysvětlí vám k čemu nové informace z nového vyšetření potřebuje, nebo bude blábolit a mluvit z cesty ?

V každém případě je nepochopitelné proč pojišťovny drakonicky pokutují každý předepsaný acylpyrin, a nad (zbytečnými) vyšetřeními za desítky tisíc krčí rameny. Jako vidlák z venkova to připisuju tomu, že Ministerstvo zdravotnictví, centrály pojišťoven, velké fakultní nemocnice, dodavatelské firmy i letiště, odkud se lítá do "U. S. of A. "na kongresy, jsou všechny v Praze velmi blízko jedno od druhého....

Vidlákovo elektro 42. Jak zvládat zkrat 3.

2. června 2013 v 4:27 | Petr |  Vidlákovo Elektro
Jako učitel bych se teda skutečně neuživil. Minule jsem probíral Schmidtovy klopné obvody a pak jsem si myslel, že v dnešních vidlácích napíšu - abyste nespálili spínací tranzistor - jak jsem demonstroval předminule - musíte proudovou pojistu zapojit "tak nějak" jako Schmidtův klopný obvod.
Drobný problém je ale že "tak nějak" jako Schmidtův klopný obvod - neznamená "doslova" jako Schmidtův klopný obvod. Protože součástí mnoha a mnoha napájecích obvodů jsou kondenzátory a co vznikne pokud proud kondenzátorem řídíte pomoci Schmidtova klopného obvodu (byť je součásti proudové pojistky) ?
Ano máte pravdu je to RC oscilátor, který jsme tady dokonce už probírali. Taky když se podíváte jak takový proud obvodem se proudovou pojistkou na principu "holého" Schmidtova klopného obvodu vypadá tak vidíte hrůzu která následuje.
Neboli - proudová pojistka vám obvod spolehlivě rozkmitá - tím spínací tranzistor prochází neustále lineární oblastí "velké výkonové ztráty" a navíc zátěž dostává proudové pulsy na tak vysoké frekvenci jak jen parazitní kapacity obvodu dovolí (desítky až stovky kHz).
Shrnuto - použíjete li mnou nedoporučovanou lineární proudovou pojistku - shoří vám spínací tranzistor. Pokud použijete mnou doporučovaný Schmidtův klopný obvod - Shoří vám tranzistor i zátěž - to jsou výsledky žejo ?
Takže nezbývá než probrat nějakou tu teorii - což jsem původně chtěl vynechat.
Běžné zdroje - od nejjednodušších proudových pojistek, po zdroje laboratorního typu mají tzv. pravoúhlou voltampérovou charakteristiku. To zní složitě jak u tabule na průmyslovce, ale zas tak složité to není. Když se podíváte na levý graf - je to celkem jasné - zdroj urdžuje konstantní napětí, dokud se neaktivuje proudová pojistka a pak udržuje konstantní proud. Pokud dojde ke zkratu - je jediná možnost jak udržovat konstantní proud a to tak, že veškerý výkon Umax * Imax se propálí na výkonovém tranzistoru - pokud tento je spínací a není na takový výkon stavěn nastane - kouř - smrad - jiskry - slzy.

Takže existují zdroje typu FOLDBACK - což je "něco jako" Schmidtův klopný obvod. Vidíte to na grafu vpravo - pokud zdroj dosáhne svého maximálního proudu - tak se přepne do režimu nízkého proudu, který je spočten tak nízko, aby to spínací tranzistor vydržel. Krom ochrany tranzistoru to má ještě tu vlastnost, že pomocí malého produ zdroj "testuje" zdali zkrat už přestal a může se tedy přepnout do "normálního režimu". Jinými slovy - zdroj, který dá třeba až 1A se při zkratu přepne do režimu kdy dává třeba jenom 20mA. Takhle to dělají všechny lineární analogové stabilizátory 7805, LM317, a další, které si jen vymyslíte.
Jak jen takový zdroj vypadá - liší se od prosté proudové pojistky z předminulých vidláků jenom dvěma odpory navíc, které do obvodu zavádějí "hysterezi". Ty dva odpory jsou R2 a R3 a celá věc funguje takto - pokud je Q1 sepnutý jsou R2 a R3 zapojeny paralelně přes sepnutý Q1 (na kterém je napěťový úbytek jen v desítkách miliVoltů). Pokud se pojistka aktivuje Q1 se "přivře" tím napětí na "horním konci" R3 prudce stoupne a R2/R3 začne fungovat jako dělič napětí, který je "opřený" o snímací rezistor R3. To že snímací rezistor a napětí na něm je stále součástí zpětné vazby - je vlastně rozdíl oproti klasickému Schmidtovu klopnému obvodu, který se o drobné výkyvy proudu v mezích své hystereze "vůbec nezajímá". Je vám jasné, že tento rozdíl mezi Schmidtovým klopným obvodem a foldback pojistkou - je klíčový, protože díky "zbytku" zpětné vazby se foldback obvody (většinou) nerozkmitají.

Proud pro stav mimo zkrat se spočte klasicky 0,7 V / R1 - což je v našem případě 100 mA
Proud pro stav ve zkratu se (přibližně) spočte jako (0,7 - Vcc (R2/ (R2+R3) ) / R1 - což je v našem případě (0.7 - 12 / 23) / 6.8 = ( 0,7 - 0,52) / 6.8 = 26 mA
Když se podíváte na graf proudu zkušebním obvodem vidíte, že výpočet celkem funguje - proud obvodem stoupal až nepatrně nad 100mA a pak prudce klesl něco nad 20 mA (těch oscilací si nevšímejte ty jsou artefakt ze simulátoru, kte tyto křivky generuju). Někde v oblasti 0,9 mSec - vidíte, že proud obvodem poklesl pod 26 mA a obvod se vrátil zpět do režimu - bez zkratu. Rozdíl mezí 100 a 26 mA je "něco jako" hystereze ve Schmidtově klopném obvodu.


Jelikož v tomto okamžiku je hluboká noc - už se mi nechce přemýšlet kam umístit dva "Foldback odpory" do schémátku mého jednoduchého zdroje - tudíž to zadávám za domácí úkol vám.

Na samotný závěr - upozornění - jestli jste četli vzorečky pro "foldback" pozorně jistě jste si všimli, že proud sepnuté pojistky je závislý na napájecím napětí. Tudíž pokud proud spočteme pro jiné napětí než nakonec v robotovi bude mohou nastat dvě možnosti
1. Skutečné napětí bude větší než ve výpočtu - v tom případě člen Vcc (R2 / R2+R3) může být vyšší než 0,7 V a tím se pojistka začne chovat tak, že sepne a už nevypne, protože tranzistor v proudové pojistce - bude očekávat záporný proud obvodem.
2. Skutečné napětí v robotovi bude menší než to ve vašem výpočtu - v tom případě nemusí být proud zkratovaného obvodu dosti nízký - a tranzistor se upeče i přes foldback.

Jak z toho ven ? Pokud počítáte s napájecím napětím "od Šumavy k Tatrám" - třeba 5-24V - musíte spočítat foldback tak aby "kompromisně" fungoval pro obě krajní napětí, i všechny varianty mezi nimi - tedy pro 5-24V alespoň pro klasickou trojici 5, 12, 24 V.

Pro dnešek končíme - zbývá jenom oblíbená rada pro brunety - blondýny by to nikdy nepřiznaly, ale víte, že manžel, který se snaží alespoň průměrně - porazí v posteli 90% milenců, prostě jenom proto, že za dlouhá léta se naučil, které "čudlíky" a kdy je třeba mačkat ?