warning!

Funguje báječně, ale neseje (1. díl)

Představte si následující situaci – půl roku pracujete nad hardwarem Vašeho robota, pak napíšete software – velice sofistikovaný a dlouhý. Pak nabijete baterky, zapnete vypínač a … NIC.

Nebo ještě hůře než nic – robot se půl vteřiny chová spořádaně a pak skončí v jakési křeči.  Standardní reakcí mladých robotiků je, že podrobně popíšou co robot dělá, co nedělá a pak vezmou celý software pro PICAXE nebo Arduino a CTRL-C CTRL-V šup se vším na Fórum RoboDoupěte nejlépe s dotazem – kdo mi vysvětlí proč robot nefunguje ?

Asi jsem starý, ale nechápu proč to děláte – nechce se vám hledat chybu? Pokud se VÁM nechce hledat chybu VAŠEHO robota myslíte, že někomu CIZÍMU  se bude chtít hledat chybu VAŠEHO robota? Nebo máte pocit, že chyby a jejich odhalování jsou tak složité, že se v tom absolutně nevyznáte? Opět budu trošku nepříjemný, máte-li chybu ve svém softwaru, kdo jiný se v něm vyzná lépe než vy sami? Takže na konec odstavce budu ještě horší než učitelka před písemkou a dovolím si odcitovat smutnou pravdu dle Jana Amose Komenského: Nejbližší pomocnou ruku najdeš na konci vlastního ramene.

Možná to zní neuvěřitelně, ale za celou dobu co se zabývám elektronikou (od roku 1980) se mi nikdy nic nepodařilo spravit tak, že bych o řešení prosil někoho jiného, proto dneska probereme otázku toho jak stávkující roboty přinutit fungovat. Dnes tedy probereme to, čemu bratři anglosassové říkají „debugging“ – neboli „odhmyzování“. Česky to nazýváme poetičtěji „oživování“ hardwaru a „ladění“ softwaru.

Princip je úplně jednoduchý, protože platí jenom dvě důležité zásady:

  1. Postupujeme od jednoduchého ke složitému.
  2. Dodržujeme zásadu „Rozděl a panuj“.

Nerad to říkám, ale teď si ty dva body všichni robotici povinně zopakují 100x – pilnější si to můžou i 100x opsat 🙂

„Ladění“ robota začíná už v okamžiku kdy ještě nic neexistuje a plánujeme co postavit. Nejhorší postup je vymyslet si super-složitého robota, pak jej postavit a pak zápasit s tím, že máme spoustu „míst možného selhání“ a navíc každá možná chyba má milion příčin a pokud jedna chyba má dvě příčiny tak se složitost ji odhalit nesčítá, ale násobí. Takže bych přidal další tři zásady:

  1. Zapoměňte na to, že byste rovnou psali definitivní software.
  2. Robota musíte rozdělit na tak malé kousky, aby každý z nich měl jenom jedno místo možné chyby.
  3. Každý robot MUSÍ mít LEDku, kterou může z procesoru blikat a je dobré, aby měl i tlačítko.

Právě teď křičíte – na co LEDku a tlačítko, když můj robot bude přes Bluetooth modul komunikovat rovnou s mým iPhonem. Škodolibě dodávám – až se jej podaří rozchodit!!! Do té doby je LEDka a tlačítko základ pro ladění softwaru a na druhou stranu pokud se za LEDku a tlačítko stydíte, nikdo vás nenutí abyste jej na hotovém robotu používali.

Jak tedy začneme? Protože robot je velká „černá skříňka“ u které nevíme co funguje a co ne, musíme začít od toho nejjednoduššího. Princip je v tom, že píšeme jednoduchoučký software, který nám ověří fuknce jednotlivých modulů robota. A až máme jistotu, že jsme pomocí software vyzkoušeli veškerý hardware (všechny hardwarové chyby vychytali) pak teprve je čas psát definitivní software. Zdá se vám to složité a možná je to složité, ale na rozdíl od CTRL-C + CTRL-V do RoboDoupěte to opravdu vede k cíli.

0. Před zapnutím řídící desky

Pokud si robotický motherboard vyrábíme sami tím, že do plošného spoje pájíme součástky, postupujeme stejně jako v následujícím bodě, ale postupně. To znamená osadím a připájím napájení a vyzkouším, jestli funguje, pokud ne opravím chybu, pokud ano pokračuju dále. Místo procesoru osaďte jenom patici a nakonec před bodem 1. vyzkoušejte motherboard bez procesoru v patici. Čistě jenom abyste věděli, že nikde nic nezačne hořet.

1. Zapnutí řídící desky

Úplně první co musíme zjistit je jestli nám funguje deska s procesorem robota. Robotický motherboard zatím nepřipojujeme na baterky. Pokud máme laboratorní zdroj, nastavíme na laboratorním zdroji napětí, které odpovídá napětí baterek (obvykle 5-12 V) a omezení proudu, podle předpokládané spotřeby desky (vhodné je 50-100 mA). Na tento zdroj řídící desku robota připojíme a zapneme. Pokud je vše v pořádku nic se nestane a odnikud se nebude kouřit, žádná součástka se nerozžhaví do ruda, laboratorní zdroj pěkně udrží nastavené napětí. Pokud máme na desce někde zkrat v laboratorním zdroji se aktivuje proudová pojistka a napětí na výstupu klesne téměř na 0V. Proudová pojistka nám zároveň desku zachrání. Pokud bychom připojili chybnou desku rovnou na baterky, tak i tužková baterka dodá proud až 5A což by nám desku spolehlivě zničilo.

2. Co když to nefunguje ?

Pokud na řídící desce máme někde zkrat, prostě jej musíme najít. Celou desku prozkoumáme pod lupou, jestli nemáme někde z pájení „cínový můstek“ mezi cestičkami na plošném spoji, jestli se vývody součástek nedotýkají, jestli nemáme piny konektorů tak pozohýbané, až se navzájem dotýkají. Jestli diody a integrované obvody nemáme připájené obráceně, atd… Dokud se řídící deska nechová podle vašich představ, nelze pokračovat dále.

3. Co když nemám laboratorní zdroj ?

Pokud váš robot používá 5V nebo pokud používá 12V, lze postavit jednoduchý zdroj třeba ze 78L05 nebo ze 78L12. Schéma najdete třeba zde. Pokud nemáte laboratorní zdroj, postavte si zdrojík ze 78L12 i když máte adaptérů do zásuvky dostatek. Dnešní adaptéry do zásuvky jsou většinou spínané a dávají vysoký proud, který může robotickou elektroniku zničit. Kouzlo 78L15 je právě v tom, že má „vestavěnou“ 100mA proudovou pojistku. Pokud budete šikovní dejte si na výstup zdroje kontrolní LEDku a pak to bude jednoduché jako facka. LED svítí – deska v pořádku. LED zhasla – ZKRAT.

Žádný článek by neměl mít více než 800 slov. Tento limit jsme dávno překonali, proto Vás nebudu unavovat a pokračovat budeme příště.