Uživatelské nástroje

Nástroje pro tento web


linesensori2c

Rozdíly

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

Odkaz na výstup diff

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]].
  
linesensori2c.txt · Poslední úprava: 2017/10/10 00:00 (upraveno mimo DokuWiki)


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