Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

linesensori2c 2011/03/15 17:09 linesensori2c 2017/10/10 00:00 aktuální
Řádek 1: Řádek 1:
 +====== LineSensor I2C ======
 +[[http://translate.google.com/translate?prev=hp&hl=cs&js=n&u=http%3A%2F%2Fprojects.adamh.cz%2FLineSensorI2C&sl=auto&tl=en|English version]]
 +
 +//"Inteligentní"// senzor čáry pro malé mobilní roboty, který nabízí kalibraci čidel, komunikaci s okolím prostřednictvím sběrnice I<sup>2</sup>C a čtení hodnoty čidla v několika formátech. Podrobný článek o senzoru vyšel v časopise Robot Revue ([[http://robotrevue.cz/2011/03|03/11]] a 04/11). Mozkem je mikrokontrolér ATmega8A s jádrem AVR taktovaný na 1 MHz.
 +
 +{{http://dir.adamh.cz/line_sensor_i2c/foto/top.jpg?305x157}}
 +
 +{{http://dir.adamh.cz/line_sensor_i2c/foto/bottom.jpg?305x96}}
 +
 +===== Popis komunikace =====
 +Senzor komunikuje jako I<sup>2</sup>C slave s výchozí adresou 0xAA, kterou lze změnit zápisem do registru 0xAA. V případě, že je adresa nastavena na 0x00 nebo 0xFF, použije se adresa výchozí.
 +
 +Zelená LED dioda blikne při každém čtení z registru senzoru.
 +
 +K dispozici jsou tyto registry:
 +
 +
 +^Číslo registru          ^Název                      ^Popis ^
 +|0                      |Digitální pozice          |Pozice čáry jako jeden bajt, ve kterém n-tý bit odpovídá stavu n-tého čidla. Pokud čidlo čáru vidí, je odpovídající bit nastaven na 1, v opačném případě je jeho hodnota nulová. Dva zbývající bity jsou ignorovány. <html><br><br></html> __Příklad:__ <html><br></html> 0 0 1 1 0 0 – čára je uprostřed pod 3. a 4. čidlem<html><br></html>1 0 0 0 0 0 – čára je pod levým krajním čidlem |
 +|1                      |OnLine                    |1 = Aspoň jedno čidlo vidí čáru<html><br></html>0 = Celý senzor je mimo čáru|
 +|2                      |Pozice čáry (high byte)    |Vyšší bajt pozice čáry (0-5000) získané váženým průměrem naměřených hodnot.<html><br><br></html> __Příklad:__ <html><br></html> 2500 – čára je uprostřed pod 3. a 4. čidlem<html><br></html>0 – čára je pod levým krajním čidlem<html><br></html>5000 – čára je pod pravým krajním čidlem<html><br><br><br><img src="http://dir.adamh.cz/line_sensor_i2c/foto/vazeny_prumer.png" alt="vážený průměr"><br><br><small></html>//a<sub>n</sub> jsou naměřené hodnoty z čidel (0-1000)//<html></small></html>|
 +|3                      |Pozice čáry (low byte)    |                              |
 +|4, 6, 8, 10, 12, 14    |Hodnota čidla (high byte)  |Vyšší bajt hodnoty jednoho ze šesti čidel (0-1000),|
 +|5, 7, 9, 11, 13, 15    |Hodnota čidla (low byte)  |                              |
 +|16, 18, 20, 22, 24, 26  |Nezpracovaná hodnota čidla (high byte) |Vyšší bajt nezpracované hodnoty čidla – hodnota přímo naměřená A/D převodníkem před kalibrací. |
 +|17, 19, 21, 23, 25, 27  |Nezpracovaná hodnota čidla (low byte) |  |
 +
 +Z pozice čáry (registry 2 a 3) se nedá zjistit, zda je čidlo nad čárou nebo ji už "ztratilo" - k regulaci to totiž není potřeba. Tato informace lze zjistit přečtením registru 1, respektive 0.
 +
 +===== Kalibrace =====
 +Kalibraci je třeba provést přo změně prostředí, ve kterém se robot pohybuje (například na soutěži). Také je nezbytná před prvním použitím senzoru, protože kalibrační hodnoty jsou uloženy v EEPROM a nejsou tak po nahrání programu do mikrokontroléru nastaveny. Kalibrace uloží maximální a minimální hodnotu čidla, která je poté použita pro přepočet naměřené hodnoty na číslo 0-1000.
 +
 +  - Zapíšte do I<sup>2</sup>C registru 0x00 hodnotu 1 nebo stiskněte tlačítko a vyčkejte, dokud se nerozsvítí zelená LED dioda.
 +  - Umistěte senzor nad černou čáru a stiskněte tlačítko nebo zapište hodnotu 0x02 do I<sup>2</sup>C registru 0x00 (LED blikne).
 +  - Umistěte senzor mimo čáru a stiskněte tlačítko nebo zapište hodnotu 0x02 do I<sup>2</sup>C registru 0x00 (LED blikne).
 +  - Nyní je možné senzor normálně používat.
 +
 +
 +===== Elektronika =====
 +
 +{{http://dir.adamh.cz/line_sensor_i2c/foto/schematic.png}}
 +
 +
 +^Označení        ^Součástka          ^Počet kusů  ^
 +| U1-U6 | QRD1114 | 6× |
 +| IC1 | ATmega8A-AI (pouzdro TQFP-32) | 1× |
 +| C1-C3 | Kondenzátor 0,1 μF (pouzdro 1206) | 3× |
 +| R13 | Rezistor 330 Ω (pouzdro 1206) | 1× |
 +| R1, R3, R5, R7, R9, R11 | Rezistor 10 kΩ (pouzdro 1206) | 6× |
 +| R4, R4, R6, R8, R10, R12 | Rezistor 220 nebo 330 Ω (já použil hodnotu 220R, pouzdro 1206) | 6× |
 +| LED1 | LED dioda zelená (pouzdro 1206) | 1× |
 +| L1 | Tlumivka 10 μH | 1× |
 +| JP1+2, JP3 | Pin header 90° (4 piny) | 2× |
 +| S3 | Tlačítko (tactile switch) | 1× |
 +| (modře) | Drátové propojky | 5× |
 +
 +
 +Popis konektorů je patrný z následujícího obrázku. ISP konektor je použit pouze pro nahrání programu do mikrokontroléru, pro připojení senzoru k řídící jednotce slouží konektor druhý. Z jendočipu je také vyveden pin Tx, který lze použít pro ladění programu.
 +
 +{{http://dir.adamh.cz/line_sensor_i2c/foto/board_top.png?471x250}}
 +
 +
 +===== Revize =====
 +**FW verze 1.1** (15. 3. 2011):
 +
 +  * Možnost uložení kalibračních hodnot zápisem do registru 0x00 (alternativa ke stisku tlačítka, pokud je tlačítko v konstrukci nepřístupné)
 +  * Úprava zasílání ACK v přerušení pro I<sup>2</sup>C
 +
 +
 +===== Podklady ke stažení =====
 +
 +Veškeré podklady ke stavbě (zdrojový kód, schéma a plošný spoj v Eagle, obrázky) jsou ke stažení na http://dir.adamh.cz/line_sensor_i2c. Plošné spoje jsou dostupné i ve verzi se zvětšenými pady pro domácí výrobu (stačí jen několik propojek).
 +
 +Celý projekt je zvěřejněn pod licencí Creative Commons <html><a href="http://creativecommons.org/licenses/by-nc-sa/3.0/cz"><img src="http://i.creativecommons.org/l/by-nc-sa/3.0/cz/80x15.png" alt="BY-NC-SA 3.0" /></a></html> [[http://creativecommons.org/licenses/by-nc-sa/3.0/|BY-NC-SA 3.0 (EN)]].
 +
 +Několik zelených plošných spojů mi zbylo, zájemci se mohou ozvat na [[adam@adamh.cz]].
 
 
Driven by DokuWiki

© 2008-2012 Adam Heinrich, adamh.cz, adam@adamh.cz