„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.
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 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. 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 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.
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.
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.
FW verze 1.1 (15. 3. 2011):
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 (EN).
Několik zelených plošných spojů mi zbylo, zájemci se mohou ozvat na adam@adamh.cz.