<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title> IRFEE01A </title>
    <meta name="keywords" content="stavebnice MLAB univerzální moduly infračervený detektor infrared tykadlo">
    <meta name="description" content="Projekt MLAB, Infračervný detektor překážek pro robota">
    <!-- AUTOINCLUDE START "Page/Head.cs.ihtml" DO NOT REMOVE -->
    <link rel="StyleSheet" href="../../../../../Web/CSS/MLAB.css" type="text/css" title="MLAB základní styl">
    <link rel="StyleSheet" href="../../../../../Web/CSS/MLAB_Print.css" type="text/css" media="print">
    <link rel="shortcut icon" type="image/x-icon" href="../../../../../Web/PIC/MLAB.ico">
    <script type="text/javascript" src="../../../../../Web/JS/MLAB_Menu.js"></script>
    <!-- AUTOINCLUDE END -->
  </head>

  <body lang="cs">

    <!-- AUTOINCLUDE START "Page/Header.cs.ihtml" DO NOT REMOVE -->
    <!-- ============== HLAVICKA ============== -->
    <div class="Header">
      <script type="text/javascript">
      <!--
        SetRelativePath("../../../../../");
        DrawHeader();
      // -->
      </script>
      <noscript>
        <p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
      </noscript>
    </div>
    <!-- AUTOINCLUDE END -->

    <!-- AUTOINCLUDE START "Page/Menu.cs.ihtml" DO NOT REMOVE -->
    <!-- ============== MENU ============== -->
    <div class="Menu">
      <script type="text/javascript">
      <!--
        SetRelativePath("../../../../../");
        DrawMenu();
      // -->
      </script>
      <noscript>
        <p><b> Pro zobrazení (vložení) menu je potřeba JavaScript </b></p>
      </noscript>
    </div>
    <!-- AUTOINCLUDE END -->

    <!-- ============== TEXT ============== -->
    <div class="Text">
      <p class="Title">
        Infračervené tykadlo pro robota
      </p>
      <p class=Autor>
        Milan Horkel
      </p>
      <p class="Subtitle">
        Čidlo využívá modulované infračervené záření pro bezdotykovou detekci
        předmětů. Je určeno zejména pro menší pohyblivé roboty jako náhrada
        mechanických tykadel. Jádrem čidla je procesor řady ATtiny a přijímač
        Ir pro dálkové ovládání. Modulace a průměrování signálu zajišťuje
        zvýšenou odolnost proti rušení.
      </p>
      <p class="Subtitle">
        <img width="327" height="105" src="IRFEE01A_Files/image001.jpg"
        alt="Pohled na čidlo zhora">
      </p>
      <p class="Subtitle">
        <img width="328" height="162" src="IRFEE01A_Files/image002.jpg"
        alt="Pohled na čidlo ze strany">        
      </p>      
      <p>
        <a href="../IRFEE01A.cs.pdf"><img class="NoBorder"
           src="../../../../../Web/PIC/FileIco_PDF.ico"
           alt="Acrobat">&nbsp;PDF verze</a>
      </p>
      
      <h1>Technické parametry </h1>

      <table>
        <tr>
          <th> Parametr </th>
          <th> Hodnota  </th>
          <th> Poznámka </th>
        </tr>
        <tr>
          <td> Napájení </td>
          <td> (2.7V&nbsp;..)&nbsp;3.6V&nbsp;..&nbsp;5V&nbsp;(..&nbsp;5.5V) </td>
          <td> Zkontrolujte požadavky U1 a U2 </td>
        </tr>
        <tr>
          <td> Spotřeba </td>
          <td> 10mA&nbsp;/&nbsp;15mA </td>
          <td> Při 5V v&nbsp;klidu a při detekci </td>
        </tr>
        <tr>
          <td> Nosný kmitočet </td>
          <td> 38kHz </td>
          <td> Obvyklé hodnoty: 30, 33, 36, 38, 40, 56kHz </td>
        </tr>
        <tr>
          <td> Dosah </td>
          <td> Cca&nbsp;1m </td>
          <td> Bez stínítka proti listu papíru A4 </td>
        </tr>
        <tr>
          <td> Rychlost odezvy </td>
          <td> 20ms&nbsp;/&nbsp;15ms </td>
          <td> Aktivace a deaktivace </td>
        </tr>
        <tr>
          <td> Rozměry </td>
          <td> 35&nbsp;x&nbsp;15&nbsp;x&nbsp;15mm </td>
          <td> Bez stínítka </td>
        </tr>
      </table>
      
      <h1> Popis konstrukce </h1>
      
      <h2> Úvodem </h2>

      <p>
        Aby mohl robot detekovat překážku aniž do ní narazí, potřebuje vhodné
        čidlo. Tato konstrukce popisuje čidlo, které využívá odrazu
        infračerveného záření od překážky.
      </p>
      
      <h2> Zapojení modulu </h2>
    
      <p>
        Srdcem čidla je obvod U1, přijímač infračerveného signálu a procesor 
        ATtiny U2, který zajišťuje inteligenci čidla.
      </p>
      
      <p>
        <img width="588" height="396" src="IRFEE01A_Files/image003.png"
        alt="Schéma zapojení čidla">
      </p>
      
      <p>
        Infračervená dioda D2 vysílá modulovaný signál směrem k&nbsp;překážce.
        Signál se od překážky odráží do přijímače U1. Procesor U2 generuje
        vysílací signál pro diodu D2 a současně analyzuje přijímaný signál
        z&nbsp;přijímače U1. Pokud se přijímaný signál <i>dostatečně</i>
        shoduje s&nbsp;vysílaným signálem, je aktivován výstupní signál na
        výstupu J2 a rozsvítí se indikační dioda D3.
      </p>
      
      <p>
        R1 a C1 filtruje napájení pro přijímač infračerveného signálu U1, dioda
        D1 je ochranná proti nechtěnému přepólování čidla. Čidlo je vybaveno
        jedním upevňovacím šroubem.
      </p>
      
      <p>
        Konektor J3 je standardní programovací konektor ATMEL ISP 6 PIN. Je
        zapojen obvyklým způsobem. Do procesoru se musí nahrát ovládací program
        přeložený pro příslušný nosný kmitočet použitého přijímače U1. Kmitočet
        přijímače bývá uváděn v&nbsp;posledním dvojčíslí označení, například 38
        znamená 38kHz.
      </p>
      
      <h2> Přijímač IR (obvod U1) </h2>
      
      <p>
        Tyto obvody jsou vyráběny pro přijímače dálkového ovládání rádií,
        televizí a dalších komponent spotřební elektroniky.
      </p>
      
      <p>
        <img width="386" height="195" src="IRFEE01A_Files/image004.png"
        alt="Blokové schéma IR přijímače">
      </p>
      
      <p>
        Sdružují v&nbsp;sobě přijímací fotodiodu, selektivní zesilovač
        s&nbsp;proměnným ziskem a obvody pro demodulování signálu. Aby čidlo
        fungovalo nezávisle na okolním osvětlení, je jeho pouzdro z&nbsp;černé
        hmoty, která propouští je vybranou vlnovou délku infračerveného záření.
      </p>
      
      <p>
        <img width="222" height="212" src="IRFEE01A_Files/image005.png"
        alt="Závislost citlivosti na vlnové délce záření">
      </p>
      
      <p>
        Dálkové ovládání používá spoustu přenosových kódů, ale drtivá většina
        je založena na vysílání pulsů nosné frekvence řádu 30 až 50kHz.
        Nejkratší přenesený impuls musí obsahovat alespoň 10 period nosného
        kmitočtu. Pro optimální fungování přijímače je doporučeno, aby
        přenášené impulsy byly dlouhé mezi 10 a 70 periodami nosného kmitočtu.
      </p>
      
      <p>
        <img width="362" height="158" src="IRFEE01A_Files/image006.png"
        alt="Testovací signál">
      </p>
      
      <p>
        Čidla se vyrábějí pro různé frekvence nosného kmitočtu a mohou být lépe
        nebo méně přizpůsobené pro použití konkrétního přenosového protokolu
        (jedná se o kompromis mezi odolností vůči rušení a parametry
        jednotlivých kódů). <i>Je třeba dát pozor na zapojení vývodů, existují
        i typy, které mají prohozené napájecí vývody.</i>
      </p>
      
      <h2> Jaký použít IR přijímač? </h2>
      
      <p>
        Zdánlivě prostá otázka skrývá velkou záludnost. Záludnost spočívá
        v&nbsp;tom, že některé přijímače IR signálu fungují dobře, jiné
        mizerně. Platí zde že méně inteligence může být lépe.
      </p>
      
      <h3> TSOP34838 – špatná volba </h3>
      
      <p>
        Konkrétně přijímač TSOP348xx funguje tak, že s&nbsp;tím, jak se signál
        zeslabuje zvyšuje svou citlivost až nakonec signál ztratí. Jenže pak je
        třeba signál hodně zesílit, aby ho přijímač zase začal registrovat.
      </p>
      
      <p>
        V&nbsp;praxi to pak vypadá tak, že čidlo nic nevidí dokud se překážka
        velmi nepřiblíží a pak ji vidí dokud se velmi nevzdálí. Pro náš účel je
        tato řada IR přijímačů nepoužitelná.
      </p>
      
      <h3> Jaký přijímač tedy použít? </h3>
      
      <p>
        Přijímače OSRAM řady SFH5110-xx pracují správně. Překážku čidlo 
        zaregistruje a zase ztratí v&nbsp;prakticky stejné vzdálenosti. Další
        typy je třeba ověřit.
      </p>
      
      <table>
        <tr>
          <th> Přijímač </th>
          <th> Výrobce  </th>
          <th> Poznámka </th>
        </tr>
        <tr>
          <td> TSOP348xx </td>
          <td> VISHAY </td>
          <td> Má obrovskou hysterezi mezi zachycením signálu a jeho ztrátou </td>
        </tr>
        <tr>
          <td> SFH5110-33 <br>
               SFH5110-36 <br>
               SFH5110-38 <br>
               SFH5110-40 </td>
          <td> OSRAM </td>
          <td> Funguje výborně </td>
        </tr>
      </table>

      <h2> Inteligence čidla </h2>
      
      <p>
        Pro detekci překážky by stačilo použít střídavý signál o vhodném
        kmitočtu a přímo výstup IR přijímače. Takové řešení ale není příliš
        odolné proti rušení, a kromě toho stejně potřebujeme nějaký obvod pro
        generování nosného kmitočtu. Proto bylo zvoleno řešení s&nbsp;malým
        procesorem, který generuje signál a současně ho i vyhodnocuje.
      </p>
      
      <p>
        Vysílá se signál v&nbsp;podobě nepřetržité řady jedniček a nul.
        Jednička je představována 10 impulsy nosného kmitočtu a nula stejně
        dlouhou mezerou, během které se nevysílá žádné záření. Průběh je na
        obrázku ve stopě 1.
      </p>
      
      <p>
        <img width="320" height="240" src="IRFEE01A_Files/image007.png"
        alt="Průběh vysílaného a přijímaného signálu">
      </p>
      
      <p>
        Ve stopě 2 je signál na výstupu IR přijímače U1. Stav L indikuje
        detekovaný optický signál. Detekovaný signál na přijímači je „rozpitý“,
        protože přijímač potřebuje cca 6 až 10 period signálu pro vyhodnocení a
        změnu stavu. Na obrázku vidíme asi 10 sekund aktivity zaznamenané přes
        sebe.
      </p>
      
      <p>
        Vyhodnocování procesor provádí tak, že testuje, zda přijímač zachytil
        kombinaci 10 a pokud ano, zvýší počítadlo úspěšných detekcí. Jakmile
        toto počítadlo přeroste aktivační mez, nastaví výstup čidla do stavu H.
        Pokud se místo očekávané kombinace 10 přijme cokoli jiného, sníží se
        počítadlo. Jakmile počítadlo poklesne pod nulu, výstup čidla se
        překlopí do neaktivního stavu L. Obrázek ukazuje máchnutí rukou před
        čidlem, odezva 20ms pro zapnutí a 15ms pro vypnutí.
      </p>
      
      <p>
        <img width="320" height="240" src="IRFEE01A_Files/image008.png"
        alt="Odezva čidla na máchnutí rukou">
      </p>
      
      <p>
        Toto poměrně jednoduché řešení vede k&nbsp;solidní odolnosti vůči
        rušení. Ani ovladač od televize z&nbsp;bezprostřední blízkosti
        neovlivňuje funkci čidla.
      </p>
      
      <h2> Mechanická konstrukce </h2>
      
      <p>
        Předpokládá se, že čidlo bude připevněno na přední část robotu nebo na
        nějaký drátový nebo plechový tvarovatelný nosník. Je proto opatřeno 1
        upevňovacím šroubem. Vysílací dioda a přijímací obvod na sebe nesmějí
        vidět a je nutné tyto komponenty doplnit vhodně tvarovanými stínítky
        tak, aby čidlo detekovalo překážky dle potřeby. Přijímač je velmi
        citlivý a vidí vysílací LED i tehdy, kdyby to člověk neřekl (například
        zezadu). Stínítko lze udělat například z&nbsp;černé smršťovací bužírky.
      </p>
      
      <p>
        Vysílací IR LED lze osadit jak shora desky, tak i ze spodní strany.
        V&nbsp;případě potřeby je možné LED umístit dál od desky a vhodně
        nasměrovat.
      </p>
      
      <h1> Osazení a oživení </h1>
      
      <h2> Osazení </h2>
      
      <p>
        <img width="567" height="241" src="IRFEE01A_Files/image010.jpg"
        alt="Osazovací výkres, strana součástek">
      </p>
      
      <p>
        <img width="563" height="240" src="IRFEE01A_Files/image011.jpg"
        alt="Osazovací výkres, strana spojů">
      </p>
      
      <table class="Soupiska">
        <tr>
          <th> Počet </th>
          <th> Reference </th>
          <th> Název </th>
          <th> Pouzdro </th>
        </tr>
        <tr>
          <th colspan="4"> Odpory </th>
        </tr>
        <tr>
          <td> 1 </td>
          <td> R1 </td>
          <td> 100 </td>
          <td> R0805 </td>
        </tr>
        <tr>
          <td> 1 </td>
          <td> R2 </td>
          <td> 330 </td>
          <td> R0805 </td>
        </tr>
        <tr>
          <td> 1 </td>
          <td> R3 </td>
          <td> 680 </td>
          <td> R0805 </td>
        </tr>
        <tr>
          <td> 1 </td>
          <td> R4 </td>
          <td> 10k </td>
          <td> R0805 </td>
        </tr>
        <tr>
          <th colspan="4"> Keramické kondenzátory </th>
        </tr>
        <tr>
          <td> 2 </td>
          <td> C1, C2 </td>
          <td> 4u7/6.3V </td>
          <td> C0805 </td>
        </tr>
        <tr>
          <th colspan="4"> Diody </th>
        </tr>
        <tr>
          <td> 1 </td>
          <td> D1 </td>
          <td> 1N4007SMD </td>
          <td> MELF </td>
        </tr>
        <tr>
          <th colspan="4"> LED </th>
        </tr>
        <tr>
          <td> 1 </td>
          <td> D2 </td>
          <td> L-53F3BT </td>
          <td> LED5 </td>
        </tr>
        <tr>
          <td> 1 </td>
          <td> D3 </td>
          <td> LED_RED_5mm </td>
          <td> LED5 </td>
        </tr>
        <tr>
          <th colspan="4"> Integrované obvody </th>
        </tr>
        <tr>
          <td> 1 </td>
          <td> U1 </td>
          <td> IR_RECEIVER (viz text) </td>
          <td> TSOP348xx </td>
        </tr>
        <tr>
          <td> 1 </td>
          <td> U2 </td>
          <td> ATtiny13-20SU </td>
          <td> SO8_210 </td>
        </tr>
        <tr>
          <th colspan="4"> Mechanické součástky </th>
        </tr>
        <tr>
          <td> 1 </td>
          <td> J1 </td>
          <td> JUMP3 </td>
          <td> JUMP3 </td>
        </tr>
        <tr>
          <td> 1 </td>
          <td> J2 </td>
          <td> JUMP1 </td>
          <td> JUMP1 </td>
        </tr>
        <tr>
          <td> 1 </td>
          <td> J3 </td>
          <td> JUMP2x3 </td>
          <td> JUMP2x3/B </td>
        </tr>
      </table>

      <p>
        <img width="328" height="147" src="IRFEE01A_Files/image009.jpg"
        alt="Obrázek osazené desky ze strany spojů">
      </p>

      <h2> Oživení a kalibrace </h2>
      
      <p>
        Oživení spočívá v&nbsp;naprogramování řídícího programu do procesoru.
        Je třeba použít program, který generuje vysílací signál o stejné
        frekvenci, na jakou je naladěn přijímací obvod. Hodnoty pro
        naprogramování konfiguračních buněk procesoru jsou uvedeny na začátku
        zdrojového kódu.
      </p>
      
      <h1> Programové vybavení </h1>
      
      <h2> Popis programu </h2>
      
      <p>
        Pro generování budícího signálu vysílací IR diody se využívá časovač
        v&nbsp;režimu CTC. Časovač opakovaně čítá od 0 do horní meze, která je
        nastavena v&nbsp;registru OCR0A. Touto konstantou je dána frekvence
        generovaného signálu.
      </p>
      
      <p>
        Při každém dosažení horní meze časovače se automaticky neguje výstup
        PB1, na který je připojena vysílací dioda. Současně se vyvolá
        podprogram pro obsluhu přerušení, který čítá počet půlperiod vysílaného
        signálu. Pokud se má vysílat tma (nazvěme stav 0), vše probíhá stejně,
        jen se výstupní stav PB1 nemění.
      </p>
      
      <p>
        Po vyslání nastaveného počtu period signálu (konstanta SYMBOL_LENGTH)
        se střídá vysílání stavu 0 a 1 (střídavý signál a tma) a současně se
        vyhodnocuje, zda se přijímaný signál shoduje s&nbsp;vysílaným.
        Vyhodnocování se provádí po dvojici 0/1.
      </p>
      
      <p>
        Hlavní program obsahuje inicializační část a prázdnou nekonečnou
        smyčku. Za běhu se vše vyřizuje v&nbsp;podprogramu obsluhy přerušení od
        časovače.
      </p>
      
      <h2> Překlad programu </h2>
      
      <p>
        Pro překlad je připravený Makefile, který přeloží program
        s&nbsp;nastavením pro vyjmenované nosné kmitočty.
      </p>
    </div>

    <!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE -->
    <!-- ============== PATIČKA ============== -->
    <div class="Footer">
      <script type="text/javascript">
      <!--
        SetRelativePath("../../../../../");
        DrawFooter();
      // -->
      </script>
      <noscript>
        <p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
      </noscript>
    </div>
    <!-- AUTOINCLUDE END -->

  </body>
</html>