LineSensor I2C

English version

„Inteligentní“ senzor čáry pro malé mobilní roboty, který nabízí kalibraci čidel, komunikaci s okolím prostřednictvím sběrnice I2C a čtení hodnoty čidla v několika formátech. Podrobný článek o senzoru vyšel v časopise Robot Revue (03/11 a 04/11). Mozkem je mikrokontrolér ATmega8A s jádrem AVR taktovaný na 1 MHz.

dir.adamh.cz_line_sensor_i2c_foto_top.jpg

dir.adamh.cz_line_sensor_i2c_foto_bottom.jpg

Popis komunikace

Senzor komunikuje jako I2C slave s výchozí adresou 0xAA, kterou lze změnit zápisem do registru 0xAA. V případě, že je adresa nastavena na 0×00 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.

Příklad:
0 0 1 1 0 0 – čára je uprostřed pod 3. a 4. čidlem
1 0 0 0 0 0 – čára je pod levým krajním čidlem
1 OnLine 1 = Aspoň jedno čidlo vidí čáru
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.

Příklad:
2500 – čára je uprostřed pod 3. a 4. čidlem
0 – čára je pod levým krajním čidlem
5000 – čára je pod pravým krajním čidlem


vážený průměr

an jsou naměřené hodnoty z čidel (0-1000)
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.

  1. Zapíšte do I2C registru 0×00 hodnotu 1 nebo stiskněte tlačítko a vyčkejte, dokud se nerozsvítí zelená LED dioda.
  2. Umistěte senzor nad černou čáru a stiskněte tlačítko nebo zapište hodnotu 0×02 do I2C registru 0×00 (LED blikne).
  3. Umistěte senzor mimo čáru a stiskněte tlačítko nebo zapište hodnotu 0×02 do I2C registru 0×00 (LED blikne).
  4. Nyní je možné senzor normálně používat.

Elektronika

Označení Součástka Počet kusů
U1-U6 QRD1114
IC1 ATmega8A-AI (pouzdro TQFP-32)
C1-C3 Kondenzátor 0,1 μF (pouzdro 1206)
R13 Rezistor 330 Ω (pouzdro 1206)
R1, R3, R5, R7, R9, R11 Rezistor 10 kΩ (pouzdro 1206)
R4, R4, R6, R8, R10, R12 Rezistor 220 nebo 330 Ω (já použil hodnotu 220R, pouzdro 1206)
LED1 LED dioda zelená (pouzdro 1206)
L1 Tlumivka 10 μH
JP1+2, JP3 Pin header 90° (4 piny)
S3 Tlačítko (tactile switch)
(modře) Drátové propojky

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.

Revize

FW verze 1.1 (15. 3. 2011):

  • Možnost uložení kalibračních hodnot zápisem do registru 0×00 (alternativa ke stisku tlačítka, pokud je tlačítko v konstrukci nepřístupné)
  • Úprava zasílání ACK v přerušení pro I2C

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 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.

 
linesensori2c.txt · Poslední úprava: 2017/10/10 17:32 (upraveno mimo DokuWiki)
 
Driven by DokuWiki

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