ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ-Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Β«ArduinoΒ» для программирования Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… систСм

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Рис. 9 Π Π΅ΠΆΠΈΠΌ рСгистрации Π’ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΠΎΡΡ‚Π°Π²ΡˆΠ΅ΠΌΡΡ рСгистрС, Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠ°ΠΊ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° ΡˆΠΈΠ½Π΅ I2C ΠΈ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°. Высокоскоростной Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ I2C (3400 ΠΊΠ“Ρ†) устанавливаСтся записью Π² Π±ΠΈΡ‚ MR7 Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹. MD1|MD0 ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°: 00 — Ρ€Π΅ΠΆΠΈΠΌ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ измСрСния. 01 — Ρ€Π΅ΠΆΠΈΠΌ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎΠ³ΠΎ измСрСния (Π² ΡΡ‚ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ). ПослС… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ-Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Β«ArduinoΒ» для программирования Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… систСм (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ-Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ «Arduino» для программирования Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… систСм

ВступлСниС Если Ρƒ Π½Π°Ρ Π½Π΅Ρ‚ GPS ΠŸΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°, Π° ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΏΡ€ΠΎΡΡ‚ранствС, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ компас, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° ΠΌΠ°Π³Π½ΠΈΡ‚Π½ΡƒΡŽ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ нашСй ΠΏΠ»Π°Π½Π΅Ρ‚Ρ‹ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… полюсов. ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ всС ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ этот ΠΏΡ€ΠΈΠ±ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅ чувствитСлСн ΠΊ Π»ΡŽΠ±Ρ‹ΠΌ ΠΌΠ°Π³Π½ΠΈΡ‚Π½Ρ‹ΠΌ возмущСниям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся Π²Π±Π»ΠΈΠ·ΠΈ, Ссли Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π½Π° Ρ‚Π°ΠΊΡƒΡŽ схСму Π² Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅, Π½Π΅ ΠΈΠ·Π²Π΅ΡΡ‚Π½ΠΎ Π±ΡƒΠ΄ΠΈΡ‚ Π»ΠΈ ΠΎΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π²ΠΎΠΎΠ±Ρ‰Π΅. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΌΠ°Π³Π½ΠΈΡ‚Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅, Ρ‚Π΅ ΠΆΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠΈ.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π»Π΅Ρ‚Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π°Ρ…, ΠΊΠ²Π°Π΄Ρ€ΠΎΠΊΠΎΠΏΡ‚Π΅Ρ€Π°Ρ…, Π² ΡΠΎΡ‚ΠΎΠ²Ρ‹Ρ… Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°Ρ…, смартфонах. Для ΠΈΠ³Ρ€ΡƒΡˆΠ΅ΠΊ опрСдСлСния Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°, опрСдСлСния, Π³Π΄Π΅ юг, Π³Π΄Π΅ Π·Π°ΠΏΠ°Π΄, Π³Π΄Π΅ восток. Для GPS ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π² Ρ‚ΠΎΡ‡ΠΊΠ΅, Π½ΠΎ ΠΌΡ‹ Π½Π΅ Π·Π½Π°Π΅ΠΌ ΠΊΡƒΠ΄Π° смотрим, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π±Π΅Π· двиТСния ΠΌΡ‹ Π½Π΅ ΡƒΠ·Π½Π°Π΅ΠΌ Π³Π΄Π΅ ΠΌΡ‹ Π½Π°Ρ…одимся ΠΈ ΠΊΠ°ΠΊ пСрСдвигаСмся. Компас сразу подскаТСт, ΠΊΡƒΠ΄Π° наш смартфон Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½.

Π§Π΅ΠΌ интСрСсСн Π΄Π°Ρ‚Ρ‡ΠΈΠΊ HMC5883L? Π£ Π½Π΅Π³ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ, шина I2C. Π¨ΠΈΠ½Π° I2C ΠΈ 2Π‘ — это Π¨ΠΈΠ½Π° придуманная ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΠ΅ΠΉ Philips, это двухпроводная шина, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ скоростная шина Π΄Π°Π½Π½Ρ‹Ρ…. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π»Π° ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½Π° Philips для взаимодСйствия микросхСм Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π΅Π²ΠΈΠ·ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°, Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΈ ΡΠ΅ΠΉΡ‡Π°Ρ это фактичСский Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠ°ΠΊ Π² Π»ΡŽΠ±ΠΎΠΌ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ Π΅ΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ аппаратная рСализация ΡˆΠΈΠ½Ρ‹ I2C. БоотвСтствСнно Π΄Π°Ρ‚Ρ‡ΠΈΠΊ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ с Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹ΠΌ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΊΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ значСния.

Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°Ρ… ускорСний, Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΡ€ΠΎΠ³ΠΈΠ΅. Π’ΠΎ Π΅ΡΡ‚ΡŒ тСхнология, сначала Π±Ρ‹Π»Π° Π΄ΠΎΡ€ΠΎΠ³ΠΎΠΉ, Π½ΠΎ Π·Π° ΡΡ‡Π΅Ρ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ элСктроника ΠΎΡ‡Π΅Π½ΡŒ быстро развиваСтся фактичСски ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ сСнсоры, Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΈ стали ΠΎΡ‡Π΅Π½ΡŒ популярны ΠΈ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½Ρ‹ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… элСктронных систСм.

Π’Π°ΠΊ ΠΆΠ΅ ΠΈ Π·Π΄Π΅ΡΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ. Π—Π΄Π΅ΡΡŒ Π½Π΅ Π²ΡΠ΅ Ρ‚Π°ΠΊ просто ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΈ. Π‘Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ, ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ с ΠΊΠ°ΠΊΠΎΠΉ частотой ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π΄Π°Π»Π΅Π΅ вызываСтся функция Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ΄-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ значСния направлСния ΠΊΠ°ΠΊ располоТСн соотвСтствСнно Π΄Π°Ρ‚Ρ‡ΠΈΠΊ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сторон свСта.

1.Arduino UNO — Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ компас Рис. 1. ΠœΠΈΠΊΡ€ΠΎΡΡ…Π΅ΠΌΠ° HMC5883L

ΠœΠΈΠΊΡ€ΠΎΡΡ…Π΅ΠΌΠ° HMC5883L прСдставляСт собой 3-Ρ… осСвой Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ компас, прСдставлСна Π½Π° (Рис.1), Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎ ΡˆΠΈΠ½Π΅ I2C. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ сСнсоров ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Ρ€ΠΈ магниторСзистивных Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ: компания Honeywell. НапряТСниС питания составляСт 2.2−3.6 Π’. Π§ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° составляСт 5 миллигаусс.

Π”Π°Ρ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°Ρ…, ΠΏΠ»Π°Π½ΡˆΠ΅Ρ‚Π°Ρ…, Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΡ‡Π΅ΠΉ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ элСктроникС, Π½ΠΎ Π΄Π»Ρ Ρ€Π°Π΄ΠΈΠΎΠ»ΡŽΠ±ΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ интСрСсСн Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ компас ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ пригодится ΠΏΡ€ΠΈ конструировании Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΠ² ΠΈ Ρ€Π°Π΄ΠΈΠΎΡƒΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌΡ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ HMC5883L ΠΊ Arduino. Π’.ΠΊ. Π΄Π°Ρ‚Ρ‡ΠΈΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ ΡˆΠΈΠ½Π΅ I2C, Ρ‚ΠΎ ΡΡ…Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ проста, разработанная с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Fritzing. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ компаса HMC5883L ΠΊ Arduino UNO, прСдставлСно Π½Π° (Рис.2):

Рис. 2. Π‘Ρ…Π΅ΠΌΠ° разработанная с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Fritzing

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ компаса HMC5883L ΠΊ Arduino UNO.

Π’.ΠΊ. сам Ρ‡ΠΈΠΏ компаса ΠΎΡ‡Π΅Π½ΡŒ малСнький 3×3 ΠΌΠΌ (16-Ρ‚ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π½ΠΎΠΉ LPCC корпус), Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΠΈΡ€ΠΌΡ‹ Π²Ρ‹ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ΠΏΠ»Π°Ρ‚Ρ‹ с ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ Π²Ρ‹Π²ΠΎΠ΄Π°ΠΌΠΈ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ Ρ€Π°ΡΠΏΠ°ΡΠ½Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΠΈ рСзисторами.

1.1 ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π’Ρ‹Π²ΠΎΠ΄ SDA Ρ‡ΠΈΠΏΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ SDA ΠΏΠ»Π°Ρ‚Ρ‹ Arduino (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Analog IN 4), Π° Π²Ρ‹Π²ΠΎΠ΄ SCL Ρ‡ΠΈΠΏΠ° соотвСтствСнно ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ SCL ΠΏΠ»Π°Ρ‚Ρ‹ Arduino (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Analog IN 5). На Arduino Mega это 20 ΠΈ 21 ΠΏΠΈΠ½Ρ‹. И Π½Π΅ Π·Π°Π±Ρ‹Π²Π°Π΅ΠΌ ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ 3.3 Π’ ΠΈ ΠΎΠ±Ρ‰ΠΈΠΉ GND

1.2 Код Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ:

#include «Wire.h»

#include «HMC5883L.h»

HMC5883L compass;

void setup (){

Serial.begin (9600);

Wire.begin ();

compass = HMC5883L (); // создаСм экзСмпляр HMC5883L Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

setupHMC5883L (); // инициализация HMC5883L

}

void loop (){

float heading = getHeading ();

Serial.println (heading);

delay (250);

}

void setupHMC5883L (){

// инициализация HMC5883L, ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° наличия ошибок

int error;

error = compass. SetScale (0.88); // Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°: 0.88, 1.3, 1.9, 2.5, 4.0, 4.7, 5.6, 8.1

if (error ≠ 0) Serial. println (compass.GetErrorText (error)); // Ссли ошибка, Ρ‚ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π΅Π΅

error = compass. SetMeasurementMode (Measurement_Continuous); // установка Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ ΠΊΠ°ΠΊ Continuous (ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ)

if (error ≠ 0) Serial. println (compass.GetErrorText (error)); // Ссли ошибка, Ρ‚ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π΅Π΅

}

float getHeading (){

// считываСм Π΄Π°Π½Π½Ρ‹Π΅ с HMC5883L ΠΈ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅

MagnetometerScaled scaled = compass. ReadScaledAxis (); // ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ элСмСнты с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°

float heading = atan2(scaled.YAxis, scaled. XAxis); // высчитываСм Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅

// ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ значСния с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Π·Π½Π°ΠΊΠΎΠ²

if (heading < 0) heading += 2*PI;

if (heading > 2*PI) heading -= 2*PI;

return heading * RAD_TO_DEG; // ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ Ρ€Π°Π΄ΠΈΠ°Π½Ρ‹ Π² Π³Ρ€Π°Π΄ΡƒΡΡ‹

}

Π§ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° задаСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ SetScale () ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: 0.88, 1.3, 1.9, 2.5, 4.0, 4.7, 5.6, 8.1.

ПослС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ скСтча Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Arduino ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΏΠΎΡ€Ρ‚Π°, слСдуСт ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°, прСдставлСнныС Π½Π° (Рис.3):

Рис. 3 ΠŸΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Вращая Π΄Π°Ρ‚Ρ‡ΠΈΠΊ Π²ΠΎΠΊΡ€ΡƒΠ³ своСй оси, Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ градус ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π°. 0Β° - это Π±ΡƒΠ΄Π΅Ρ‚ сСвСр, Π° 180Β° - юг. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ ΠΎΡ‡Π΅Π½ΡŒ чувствитСлСн ΠΊ Π»ΡŽΠ±Ρ‹ΠΌ Π½Π°ΠΌΠ°Π³Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°ΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊ ΡΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°ΠΌ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ устройствам ΠΈΠ·Π»ΡƒΡ‡Π°ΡŽΡ‰ΠΈΡ… ΠΌΠ°Π³Π½ΠΈΡ‚Π½Ρ‹Π΅ поля. Π’Π°ΠΊΠΆΠ΅ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ строго Π² Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ плоскости, стоит Π΅Π³ΠΎ Π½Π°ΠΊΠ»ΠΎΠ½ΠΈΡ‚ΡŒ ΠΈ Ρ‚ΠΎΠ³Π΄Π° Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π΅Π²Π΅Ρ€Π½Ρ‹Π΅. ΠŸΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… компасов Π² Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΡ‚Π΅Ρ…Π½ΠΈΠΊΠ΅ это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Ρ‚Π°ΠΊΠΈΠ΅ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅ компасы ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ Π² ΠΏΠ°Ρ€Π΅ с Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹ΠΌ аксСлСромСтром, для компСнсации Π½Π°ΠΊΠ»ΠΎΠ½Π°.

2. Π Π°Π±ΠΎΡ‚Π° с ΠΌΠ°Π³Π½ΠΈΡ‚ΠΎΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ HMC5883L

ОписаниС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΡ‡Π΅Π½ΡŒ интСрСсного Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° — ΠΌΠ°Π³Π½ΠΈΡ‚ΠΎΠΌΠ΅Ρ‚Ρ€Π° HMC5883L. Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Π½Π°Π·Π²Π°Π½ΠΈΡ этот Π΄Π°Ρ‚Ρ‡ΠΈΠΊ измСряСт ΠΌΠ°Π³Π½ΠΈΡ‚Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π΄Π΅Π»Π°Π΅Ρ‚ это Π² Ρ‚Ρ€Π΅Ρ… осях. Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ направлСнности ΠΌΠ°Π³Π½ΠΈΡ‚Π½ΠΎΠ³ΠΎ поля ΠΈ Π΅Π³ΠΎ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ. А Π΅ΡΠ»ΠΈ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‚ΠΎ Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ свой Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ компас. HMC5883L достаточно распространСнный ΠΈ Π½Π΅Π΄ΠΎΡ€ΠΎΠ³ΠΎΠΉ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ, для общСния с ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ стандартный I2C интСрфСйс. Π§ΠΈΠΏ выпускаСтся Π² ΠΊΡ€ΠΎΡˆΠ΅Ρ‡Π½ΠΎΠΌ 16-ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π½ΠΎΠΌ корпусС LPCC Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ 3×3 ΠΌΠΌ, прСдставлСнный Π½Π° (Рис.4).

Рис. 4.ΠœΠ°Π³Π½ΠΈΡ‚ΠΎΠΌΠ΅Ρ‚Ρ€ HMC5883L

2.1 ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ²

1. SCL — Π²Ρ…ΠΎΠ΄ тактирования ΡˆΠΈΠ½Ρ‹ I2C (линия синхронизации)

2. VDD — Π²Ρ…ΠΎΠ΄ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ питания (кормится эта козявка напряТСниСм Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ 2,16−3,6 Π²ΠΎΠ»ΡŒΡ‚)

3. Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся

4. S1 — Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ для ΠΏΠΎΡ€Ρ‚ΠΎΠ² Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ VDDIO

5. Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся

6. Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся

7. Π½Π΅ ΠΈΡΠΏΠΎΠ»Π·ΡƒΠ΅Ρ‚ся

8. SETP — ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ кСрамичСского кондСнсатора Π½Π° 0,22uF

9. GND — зСмля

10. Π‘1 — Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π²Ρ…ΠΎΠ΄ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ кондСнсатора. ЭлСктролитичиского ΠΈΠ»ΠΈ Ρ‚Π°Π½Ρ‚Π°Π»ΠΎΠ²ΠΎΠ³ΠΎ Π½Π° 4,7uF (Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠ½Π΅Ρ† кондСнсатора ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ Π·Π΅ΠΌΠ»Π΅)

11. GND — зСмля

12. SETC — Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π²Ρ…ΠΎΠ΄ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ кСрамичСского кондСнсатора Π½Π° 0,22uF

13. VDDIO — Π²Ρ…ΠΎΠ΄ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ напряТСния ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π° ΠΏΠΎΡ€Ρ‚Π°Ρ… Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°

14. Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся

15. Π’Ρ‹Ρ…ΠΎΠ΄ прСрывания, ΠΊΠΎΠ³Π΄Π° Π΄Π°Π½Π½Ρ‹Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ Π½Π° ΡΡ‚ΠΎΠΌ Π²Ρ‹Π²ΠΎΠ΄Π΅ появляСтся логичСская 1

16. SDA — линия ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… интСрфСйса I2C

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, обвязка Ρƒ ΡΠ΅Π½ΡΠΎΡ€Π° минимальная, всСго Π΄Π²Π° кондСнсатора. НС ΡΡ‡ΠΈΡ‚Π°Ρ Π΄Π²ΡƒΡ… pullup рСзисторов, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для ΡˆΠΈΠ½Ρ‹ I2C. Π’ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡ€Ρ‚Ρ‹ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° Π·Π°ΠΏΠΈΡ‚Π°Π½Ρ‹ напряТСниСм питания схСмы ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся Π²Ρ‹Π²ΠΎΠ΄ прСрывания, схСма ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ: ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π° Π½Π° (Рис.5).

2.2 Π‘Ρ…Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Рис. 5. Π‘Ρ…Π΅ΠΌΠ° HMC5883L, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡ€Ρ‚Ρ‹ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° Π·Π°ΠΏΠΈΡ‚Π°Π½Ρ‹ напряТСниСм питания схСмы ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся Π²Ρ‹Π²ΠΎΠ΄ прСрывания

3. Π Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΡˆΠΈΠ½Π΅ I2C

Как ΠΈ Π»ΡŽΠ±ΠΎΠ΅ устройство, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π΅ ΠΏΠΎ ΠΈΠ½Ρ‚СрфСйсу I2C, Π΄Π°Ρ‚Ρ‡ΠΈΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ свой собствСнный ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ адрСс для Ρ€Π°Π±ΠΎΡ‚Ρ‹. HMC5883L присвоСн адрСс 0Ρ…1E. Π‘ Π²ΠΎΡΡŒΠΌΡ‹ΠΌ Π±ΠΈΡ‚ΠΎΠΌ записи/чтСния адрСс Π±ΡƒΠ΄Π΅Ρ‚ 0Ρ…3D для чтСния ΠΈ 0Ρ…3C для записи.

ΠšΠ°Ρ€Ρ‚Π° рСгистров Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° прСдставлСна Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½ΠΈΠΆΠ΅ (Рис.6):

Рис.6

Как Π²ΠΈΠ΄Π½ΠΎ, для настройки Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° доступны рСгистры (это Ρ‚Π΅, ΠΊΡƒΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ) находящиСся Π½Π° Π°Π΄Ρ€Π΅ΡΠ°Ρ… 00 (configuration register A), 01 (configuration register B) ΠΈ 02 (mode register).

3.1 Configuration Register A (CRA)

Рис. 7. РСгистр ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ А

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ· Π΄ΠΎΡΡ‚ΡƒΠΏΠ½Ρ‹Ρ…, для настройки Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°, рСгистров. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π±ΠΈΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ своС имя, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ Π²ΠΈΠ΄Π½ΠΎ с ΠΊΠ°ΠΊΠΈΠΌ Π΅Ρ‰Π΅ Π±ΠΈΡ‚ΠΎΠΌ Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π΅ ΠΎΠ½ ΡΠ²ΡΠ·Π°Π½ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±ΠΈΡ‚Ρ‹ CRA6 ΠΈ CRA5 ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ±Ρ‰Π΅Π΅ имя MA1 ΠΈ MA0 соотвСтствСнно, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€) CRA7 — Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π±ΠΈΡ‚ ΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся CRA6|CRA5 — ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ число Π·Π°ΠΌΠ΅Ρ€ΠΎΠ² (сСмплов) ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π΄Π°Ρ‡Π΅ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° измСрСния. Π­Ρ‚ΠΈ Π±ΠΈΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ значСния: 00 = 1(Default); 01 = 2; 10 = 4; 11 = 8 ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ 4 сСмпла записываСм Π² CRA6 Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ, a Π² CRA5 ноль. CRA4|CRA3|CRA2 — ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ с ΠΊΠ°ΠΊΠΎΠΉ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Ρ‹ считывания Π΄Π°Π½Π½Ρ‹Ρ… (Data Output Registers). 000 — 0,75 Π“Ρ† 001 — 1,5 Π“Ρ† 010 — 3 Π“Ρ† 011 — 7,5 Π“Ρ† 100 — 15 Π“Ρ† (Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) 101 — 30 Π“Ρ† 110 — 75 Π“Ρ† 111 — Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΠŸΡ€ΠΈΠΌΠ΅Ρ€: для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ записи Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎ 75 Π“Ρ† Π·Π°ΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌ Π² CRA4 Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ, Π² CRA3 Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ, Π² CRA2 ноль. CRA1|CRA0 — Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ Ρ‚ΠΈΠΏ измСрСния. Π’ΡƒΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ тСхничСскиС Π·Π°ΠΌΠΎΡ€ΠΎΡ‡ΠΊΠΈ с ΠΈΠΌΠΏΠ΅Π΄Π°Π½ΡΠΎΠΌ Π² ΠΌΠ°Π³Π½ΠΈΡ‚орСзистивной Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΎΡΠ΅ΠΉ. ΠžΡΡ‚Π°Π²ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ рСгистров ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (00 — Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ измСрСния). ΠŸΡ€ΠΈΠΌΠ΅Ρ€: настроим ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ рСгистр А, установим количСство сСмплов Ρ€Π°Π²Π½Ρ‹ΠΌ 8, ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ записи Π΄Π°Π½Π½Ρ‹Ρ… 3 Π“Ρ†, Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ измСрСния. Для этого ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ 8 Π±ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Ρ…, Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ прСдставлСнии это Π±ΡƒΠ΄Π΅Ρ‚: &b01101000.

3.2. Configuration Register B (CRB)

Рис. 8. РСгистр ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π’

Π’ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π΅ B Π½Π°ΡΡ‚раиваСтся Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° ΠΊ ΠΌΠ°Π³Π½ΠΈΡ‚Π½ΠΎΠΌΡƒ полю. Π—Π° ΡΡ‚ΠΈ установки ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π±ΠΈΡ‚Ρ‹ CRB7|CRB6|CRB5. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ 5 Π±ΠΈΡ‚ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ся, Π½ΠΎ Π΄Π»Ρ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π±ΠΈΡ‚Ρ‹ нулями. Π—Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (Lsb/Gauss) Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° ΠΎΡ‚ ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… Π±ΠΈΡ‚ΠΎΠ² CRB7|CRB6|CRB5

000 -1370 001 -1090 (Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) 010 — 820 011 — 660 100 — 440 101 — 390 110 — 330 111 — 230 ΠŸΡ€ΠΈΠΌΠ΅Ρ€: установим ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°, для этого ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠΌ Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ B Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ &b00000000 3.3. Mode Register (MR)

Рис. 9 Π Π΅ΠΆΠΈΠΌ рСгистрации Π’ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΠΎΡΡ‚Π°Π²ΡˆΠ΅ΠΌΡΡ рСгистрС, Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠ°ΠΊ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° ΡˆΠΈΠ½Π΅ I2C ΠΈ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°. Высокоскоростной Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ I2C (3400 ΠΊΠ“Ρ†) устанавливаСтся записью Π² Π±ΠΈΡ‚ MR7 Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹. MD1|MD0 ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°: 00 — Ρ€Π΅ΠΆΠΈΠΌ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ измСрСния. 01 — Ρ€Π΅ΠΆΠΈΠΌ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎΠ³ΠΎ измСрСния (Π² ΡΡ‚ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ). ПослС измСрСния ΠΈ Π·Π°ΠΏΠΈΡΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… Π΄Π°Ρ‚Ρ‡ΠΈΠΊ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ€Π΅ΠΆΠΈΠΌ оТидания (Idle) 10 — ΠΏΠΎΠ³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ² Ρ€Π΅ΠΆΠΈΠΌ оТидания. ΠŸΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ Π² ΡΡ‚ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΠ°Π΄Π°Π΅Ρ‚ Π΄ΠΎ 2 мкА 11 — Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π΄Π°Ρ‚Ρ‡ΠΈΠΊ Π² Ρ€Π΅ΠΆΠΈΠΌ оТидания.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: установим высокоскоростноС соСдинСниС Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° с ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΠΈ 3400ΠΊΠ“Ρ† ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΠΌ Ρ€Π΅ΠΆΠΈΠΌ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ измСрСния. Для этого запишСм Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ &b10000000. Π˜Π·ΠΌΠ΅Ρ€Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎ Ρ‚Ρ€Π΅ΠΌ осям Π΄Π°Π½Π½Ρ‹Π΅ Π·Π°Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ ΠΈΠ· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… рСгистров, для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΎΡΠ΅ΠΉ Π΄Π°Π½Π½Ρ‹Π΅ состоят ΠΈΠ· Π΄Π²ΡƒΡ… Π±Π°ΠΉΡ‚ — ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ ΠΈ ΠΌΠ»Π°Π΄ΡˆΠ΅Π³ΠΎ. Для получСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Π½ΠΎ ΡΡ‚ΠΎ ΡƒΠΆΠ΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ поэтому приступим нСпосрСдствСнно ΠΊ ΠΊΠΎΠ΄Ρƒ ΠΈ ΠΆΠ΅Π»Π΅Π·Ρƒ. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ ΠΏΠ°ΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΡƒΠΏΠΈΡ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΡƒΡŽ Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ‡Π°Ρ‚Π½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρƒ, прСдставлСна Π½Π° (Рис.10):

Рис. 10.ΠŸΠ΅Ρ‡Π°Ρ‚Π½Π°Ρ ΠΏΠ»Π°Ρ‚Π° Π‘Ρ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ 5 $ ΠΈ ΠΏΠΎΠΌΠΈΠΌΠΎ минимально Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ обвязки содСрТит стабилизатор питания ΠΈ ΡΡ…Π΅ΠΌΡƒ прСобразоватСля ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ эту ΠΏΠ»Π°Ρ‚Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΊ 5-ΠΈ Π²ΠΎΠ»ΡŒΡ‚ΠΎΠ²ΠΎΠΉ схСмС Π±Π΅Π· опасности ΡΠΏΠ°Π»ΠΈΡ‚ΡŒ сСнсор. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΏΠ»Π°Ρ‚Π° с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΊ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ, ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ рСзисторы ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, ΠΎΠ½ΠΈ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π½Π° ΠΏΠ»Π°Ρ‚Π΅ (Рис.11):

Рис. 11. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Π°Ρ ΠΏΠ»Π°Ρ‚Π° с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΊ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ Π”Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°:

#include //I2C Arduino Library

#define address 0x1E //1 1110b, I2C 7bit address of HMC5883

void setup (){

//Initialize Serial and I2C communications

Serial.begin (9600);

Wire.begin ();

//Put the HMC5883 IC into the correct operating mode

Wire.beginTransmission (address); //open communication with HMC5883

Wire.send (0×02); //select mode register

Wire.send (0×00); //continuous measurement mode

Wire.endTransmission ();

}

Код, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π²Π½ΡƒΡ‚Ρ€ΠΈ Setup () функция запускаСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² Π½Π°Ρ‡Π°Π»Π΅. Она ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ соСдинСниС со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ 9600 Π±ΠΎΠ΄. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ соСдинСниС для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ оси пСрСдавая ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€. I2C Ρ‚Π°ΠΊΠΆΠ΅ инициализируСтся. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ «write» Π² HMC5883L. ЦСль этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ 'записи' являСтся для Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠΈ значСния Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΎΡ‚ HMC5883L, Π·Π°Π΄Π°Π΅ΠΌ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π­Ρ‚ΠΎ позволяСт Π½Π°ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… оси. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ‡ΠΈΠΏ находится Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ чтСния, послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ прочтСния, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ΄Ρ‚ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ оТидания для экономии энСргии. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ оТидания, ΠΌΡ‹ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌ Π² Π½Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ ΡΠΌΠΎΠΆΠ΅ΠΌ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ· Π½Π΅Π³ΠΎ снова.

ДвигаСмся дальшС, Π²ΠΎΡ‚ Π³Π΄Π΅ ΠΌΡ‹ Ρ„актичСски Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅:

void loop (){

int x, y, z; //triple axis data

//Tell the HMC5883L where to begin reading data

Wire.beginTransmission (address);

Wire.send (0×03); //select register 3, X MSB register

Wire.endTransmission ();

//Read data from each axis, 2 registers per axis

Wire.requestFrom (address, 6);

if (6<=Wire.available ())= Wire. receive (); //X lsb

z = Wire. receive ()<<8; //Z msb

z

//Print out values of each axis

Serial.print («x: «);

Serial.print (x);

Serial.print («y: «);

Serial.print (y);

Serial.print («z: «);

Serial.println (z);

delay (250);

}

Ѐункция loop () Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ снова ΠΈ ΡΠ½ΠΎΠ²Π° Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π΅ΡΡ‚ΡŒ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ. Π§Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ запись, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π³Π΄Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ для осСй. РСгистр 3 Π²Ρ‹Π±Ρ€Π°Π½ ΠΈ, получаСтся, Ρ‡Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΉ Π±Π°ΠΉΡ‚ оси Π₯.

ΠœΡ‹ Π·Π°Π΄Π°Π΅ΠΌ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ 6 Π±Π°ΠΉΡ‚ ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ. Π§ΠΈΠΏ Π°Π²Ρ‚ΠΎ-ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² это Π½ΠΎΠΌΠ΅Ρ€ рСгистра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌ, поэтому ΠΌΡ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ рСгистр Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ· Π½Π΅Π³ΠΎ. Ось Π΄Π°Π½Π½Ρ‹Ρ… Ρ…, Ρƒ, z ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ эти значСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ 'Serial Monitor' срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Arduino, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅ (Рис.12).

Рис. 12.ЗначСния осСй Ρ…, Ρƒ, z

4.Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Π½Π° Ρ‚ранзисторС Данная схСма ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для согласования ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ 5 Π’ Π²Ρ‹Ρ…ΠΎΠ΄Π° с 3.3 Π’ Π²Ρ…ΠΎΠ΄ΠΎΠΌ. Π‘Ρ…Π΅ΠΌΠ° являСтся одностороннСй (Рис.13).

Рис. 13.Π‘Ρ…Π΅ΠΌΠ° согласования ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ 5 Π’ Π²Ρ‹Ρ…ΠΎΠ΄Π° с 3.3 Π’ Π²Ρ…ΠΎΠ΄ΠΎΠΌ ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ уровня производится с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ NPN транзистора. Π‘ΠΈΠ³Π½Π°Π» инвСртируСтся, Π² ΡƒΡΡ‚ройствах Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… это Π»Π΅Π³ΠΊΠΎ ΡƒΡ‡Π΅ΡΡ‚ΡŒ простым ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ сигнала. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ n-канального ΠΏΠΎΠ»Π΅Π²ΠΎΠ³ΠΎ транзистора (Рис.14):

Рис. 14.Π‘Ρ…Π΅ΠΌΠ° согласования ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ 5 Π’ Π²Ρ‹Ρ…ΠΎΠ΄Π° с 3.3 Π’ Π²Ρ…ΠΎΠ΄ΠΎΠΌ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ n-канального ΠΏΠΎΠ»Π΅Π²ΠΎΠ³ΠΎ транзистора

РСзистор R2 Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ запирания транзистора ΠΏΡ€ΠΈ ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ Π½Π° Π·Π°Ρ‚Π²ΠΎΡ€Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ стартС систСмы. Π’ Π΄Π°Π½Π½ΠΎΠΉ схСмС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ транзисторы с ΠΌΠ°Π»Ρ‹ΠΌ ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²Ρ‹ΠΌ напряТСниСм Π·Π°Ρ‚Π²ΠΎΡ€Π°. Π˜Π΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ использованиС Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… «Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ…» транзисторов. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ для сохранСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ нарастания сигнала Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π½ΠΎΠΌΠΈΠ½Π°Π» ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ рСзистора R5 Π΄ΠΎ 4.7 кОм. НСдостатком являСтся увСличСнная ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ. Π‘ΠΎΠ»Π΅Π΅ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ MOSFET транзистор Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ.

4.1 БогласованиС ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΡˆΠΈΠ½Ρ‹ I2C

Рис. 15.ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π° схСма согласования ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΡˆΠΈΠ½Ρ‹ I2C

4.2 Π‘Ρ…Π΅ΠΌΠ° с ΠΈΠ½Ρ‚СрфСйсом I2C

Рис. 16. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π° схСма с ΠΈΠ½Ρ‚СрфСйсом ΡˆΠΈΠ½Ρ‹ I2C

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ компас Π’ Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Π΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅: Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ компас HMC5883L, ΠΏΠ»Π°Ρ‚Π° Arduino UNO, ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚. Π£Π·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ HMC5883L ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ значСния, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ написания ΠΊΠΎΠ΄Π°. Π£Π·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ шина I2C ΠΈ ΠΊΠ°ΠΊ с Π½Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Выяснили, ΠΊΠ°ΠΊΠΈΠ΅ Π΅ΡΡ‚ΡŒ нСдостатки ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ прСимущСства. Π Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Fritzing, использовали для построСния нашСй схСмы ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ компаса HMC5883L ΠΊ Arduino UNO. Π’Π°ΠΊΠΆΠ΅ рассмотрСли согласования ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ 5 Π’ Π²Ρ‹Ρ…ΠΎΠ΄Π° с 3.3 Π’ Π²Ρ…ΠΎΠ΄ΠΎΠΌ.

Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

1. Π‘Π°Π±ΠΈΠ½ А. И., Π¨ΠΈΠΏΠΈΠ»ΠΎΠ². ЭлСктричСскиС ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΈ ΡΡ…Π΅ΠΌΡ‹ управлСния: ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ указания для студСнтов ΠΎΡ‡Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ обучСния ΠΏΠΎ Π΄ΠΈΡΡ†Π΅ΠΏΠ»ΠΈΠ½Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ элСктропривод. 2010. — 65 с.

2. МоскалСнко Π’. Π’. Автоматизированный элСктропривод: Π£Ρ‡Π΅Π±Π½ΠΈΠΊ для Π²ΡƒΠ·ΠΎΠ².- М.: Π­Π½Π΅Ρ€Π³ΠΎΠ°Ρ‚ΠΎΠΌΠΈΠ·Π΄Π°Ρ‚, 2008. — 416 с.

3. Π§ΠΈΠ»ΠΈΠΊΠΈΠ½ М. Π“., Π‘Π°Π½Π΄Π»Π΅Ρ€ А. Π‘. ΠžΠ±Ρ‰ΠΈΠΉ курс элСктропривода: ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ для Π²ΡƒΠ·ΠΎΠ². — Πœ.:Π­Π½Π΅Ρ€Π³ΠΎΠΈΠ·Π΄Π°Ρ‚, 2007. — 567 с.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ