Мазмуну:

Arduino магнитометр: 5 кадам (сүрөттөр менен)
Arduino магнитометр: 5 кадам (сүрөттөр менен)

Video: Arduino магнитометр: 5 кадам (сүрөттөр менен)

Video: Arduino магнитометр: 5 кадам (сүрөттөр менен)
Video: How to use MPU-9250 Gyroscope, Accelerometer, Magnetometer for Arduino 2024, Сентябрь
Anonim
Arduino магнитометр
Arduino магнитометр

Биз эмнени куруп жатабыз?

Адамдар магнит талааларын аныктай алышпайт, бирок биз дайыма магнитке таянган түзмөктөрдү колдонобуз. Моторлор, компастар, айлануу сенсорлору жана шамал турбиналары, мисалы, иштөө үчүн магнитти талап кылат. Бул окуу куралы үч Hall эффект сенсорунун жардамы менен магнит талаасын сезүүчү Arduino негизиндеги магнитометрди кантип курууну сүрөттөйт. Магнит талаасынын вектору кичинекей экранда изометрдик проекцияны колдонуу менен көрсөтүлөт.

Arduino деген эмне?

An Arduino-кичинекей ачык булагы бар колдонуучуга ыңгайлуу микроконтроллер. Бул санарип киргизүү жана чыгаруу казыктары бар. Ошондой эле сенсорлордун кирүүсүн окуу үчүн пайдалуу болгон аналогдук кирүү казыктары бар. Ар кандай Arduino моделдери бар. Бул окуу куралы Arduino Uno же Arduino MKR1010 кантип колдонууну сүрөттөйт. Бирок, башка моделдер да колдонулушу мүмкүн.

Бул окуу куралын баштоодон мурун Arduino өнүктүрүү чөйрөсүн, ошондой эле сиздин конкреттүү моделиңизге керектүү китепканаларды жүктөп алыңыз. Иштеп чыгуу чөйрөсү https://www.arduino.cc/en/main/software дарегинде жеткиликтүү, ал эми орнотуу боюнча нускамалар https://www.arduino.cc/en/main/software дарегинде жеткиликтүү.

Магнит талаасы деген эмне?

Туруктуу магниттер башка туруктуу магниттерге күч келтирет. Учурдагы өткөрүүчү зымдар башка ток өткөрүүчү зымдарга күч келтирет. Туруктуу магниттер жана ток өткөрүүчү зымдар да бири -бирине күч келтирет. Бирдиктүү сыноо тогуна карата бул күч магнит талаасы.

Эгерде биз нерсенин көлөмүн өлчөсөк, анда бир скалярдык санды алабыз. Бирок, магнетизм вектордук талаа менен сүрөттөлөт, бул татаалыраак чоңдук. Биринчиден, ал бардык мейкиндиктеги абалына жараша өзгөрөт. Мисалы, туруктуу магниттен бир сантиметрлик магнит талаасы он сантиметр алыстыктагы магнит талаасынан чоң болушу мүмкүн.

Кийинки, мейкиндиктин ар бир чекитиндеги магнит талаасы вектор менен көрсөтүлөт. Вектордун чоңдугу магнит талаасынын күчүн билдирет. Багыты күчкө да, сыноо токунун багытына да перпендикуляр.

Биз бир жердеги магнит талаасын жебе катары элестете алабыз. Биз магнит талаасын мейкиндик боюнча ар кандай жерлерде, балким ар кандай өлчөмдөгү жана ар кандай багытта көрсөткөн жебе менен элестете алабыз. Жакшы визуалдаштыруу жеткиликтүү https://www.falstad.com/vector3dm/. Биз куруп жаткан магнитометр дисплейдеги жебе катары сенсорлор жайгашкан жердеги магнит талаасын көрсөтөт.

Hall эффекти сенсору деген эмне жана ал кантип иштейт?

Холл эффекти сенсору - бул белгилүү бир багыт боюнча магнит талаасынын күчүн өлчөөчү кичинекей, арзан аппарат. Бул ашыкча айыптоолор менен коштолгон жарым өткөргүчтөн жасалган. Кээ бир Hall эффект сенсорлорунун чыгышы аналогдук чыңалуу. Башка Hall эффекти сенсорлору интегралдык салыштыргычка ээ жана санарип өндүрүштү чыгарат. Башка Hall эффекти сенсорлору агымдын ылдамдыгын, айлануу ылдамдыгын же башка өлчөмдөрдү өлчөгөн чоң инструменттерге бириктирилген.

Холл эффектинин артындагы физика Лоренц күч теңдемеси менен жыйынтыкталган. Бул теңдеме тышкы электрдик жана магнит талаасынын эсебинен кыймылдуу заряддын күчүн сүрөттөйт.

Сүрөт
Сүрөт

Төмөндөгү сүрөттө Hall эффектиси көрсөтүлгөн. Магнит талаасынын күчүн көк жебе багытында өлчөгүбүз келет дейли. Сүрөттүн сол жагында көрсөтүлгөндөй, биз өлчөнө турган талаанын багытына перпендикуляр болгон жарым өткөргүч аркылуу ток өткөрөбүз. Ток - заряддардын агымы, андыктан жарым өткөргүчтөгү заряд кандайдыр бир ылдамдык менен жылат. Бул заряд фигуранын ортоңку бөлүгүндө көрсөтүлгөндөй тышкы талаанын күчүн сезет. Заряддар күчтүн эсебинен жылып, жарым өткөргүчтүн четине топтолот. Заряддар топтолгон заряддардын таасири менен тышкы магнит талаасынын күчүн теңдештирмейинче чогулат. Биз сүрөттүн оң жагында көрсөтүлгөндөй, жарым өткөргүчтөгү чыңалууну өлчөй алабыз. Чыңалган чыңалуу магнит талаасынын күчүнө пропорционалдуу жана ал токко жана магнит талаасынын багытына перпендикуляр.

Сүрөт
Сүрөт

Изометрдик проекция деген эмне?

Космостун ар бир чекитинде магнит талаасы үч өлчөмдүү вектор менен сүрөттөлөт. Бирок, биздин дисплей экраныбыз эки өлчөмдүү. Биз үч өлчөмдүү векторду эки өлчөмдүү тегиздикке проекциялай алабыз, ошондо аны экранга тарта алабыз. Муну аткаруунун көптөгөн жолдору бар, мисалы изометрдик проекция, орфографиялык проекция же кыйшык проекция.

Изометрдик проекцияда x, y жана z огунун огу 120 градус, алар бирдей алдын ала көрүнөт. Изометрдик проекция жөнүндө кошумча маалыматты, ошондой эле керектүү формулаларды Википедиянын темасындагы баракчасынан тапса болот.

1 -кадам: Берилиштерди чогултуу

Arduino жана Cable

Arduino - магнитометрдин мээлери. Бул нускамалар Arduino Uno же Arduino MKR1010 кантип колдонууну сүрөттөйт. Кандай болбосун, аны компьютерге туташтыруу үчүн кабель керек.

1 -вариант: Arduino Uno жана USB AB кабели

www.digikey.com/product-detail/en/arduino/A000066/1050-1024-ND/2784006

www.digikey.com/product-detail/en/stewart-connector/SC-2ABE003F/380-1424-ND/8544570

2 -вариант: Arduino MKR1010 жана microUSB кабели

www.digikey.com/product-detail/en/arduino/ABX00023/1050-1162-ND/9486713

www.digikey.com/product-detail/en/stewart-connector/SC-2AMK003F/380-1431-ND/8544577

TFT дисплейи

TFT жука тасма транзисторун билдирет. Бул 1,44 дюймдук дисплейде 128 х 128 пиксель бар. Ал кичинекей, жаркыраган жана түстүү. Ал үзүлүү тактасына тиркелет. Бирок, төөнөгүч казыктар өзүнчө келет, андыктан аларды ширетүүгө туура келет. (Лайк менен ширетүүчү керек.)

www.digikey.com/product-detail/en/adafruit-industries-llc/2088/1528-1345-ND/5356830

    Сүрөт
    Сүрөт
  • Аналогдук зал эффекти сенсорлору

Үч Hall эффекти сенсорлору талап кылынат. Төмөндөгү шилтеме Allegro бөлүгү номери A1324LUA-T үчүн. Бул сенсор үчүн пин 1 - бул камсыздоо чыңалуусу, пин 2 - жер, пин 3 - чыгаруу. Башка Hall сенсорлору да иштеши керек, бирок алар санарип эмес, аналог экенин текшериңиз. Эгерде сиз башка сенсорду колдонсоңуз, пинту текшерип, керек болсо зымдарды тууралаңыз. (Мен чындыгында тестирлөө үчүн ошол эле компаниянын башка сенсорун колдондум. Бирок, мен колдонгон эскирген, жана бул сенсор аны алмаштырат.)

www.digikey.com/product-detail/en/allegro-microsystems-llc/A1324LUA-T/620-1432-ND/2728144

Small Breadboard жана Wire

www.digikey.com/product-detail/en/adafruit-industries-llc/239/1528-2143-ND/7244929

Сыноо үчүн туруктуу магниттер

Муздаткычтын магниттери жакшы иштейт.

2 -кадам: Кабелдөө

Электр өткөргүчтөрү
Электр өткөргүчтөрү

Дисплейдеги баштарды ээрчиңиз.

Сүрөт
Сүрөт

Сенсорлорду панелдин бир четине коюп, дисплейди жана Arduino карама -каршы жагына кой. Arduino жана дисплейдеги зымдардын агымы магнит талааларын пайда кылат, биз сенсорлордун окушун каалабайбыз. Мындан тышкары, сенсорлорду дисплейдин жана сенсордун зымдарындагы токко терс таасирин тийгизиши мүмкүн болгон туруктуу магниттердин жанына койгубуз келет. Ушул себептерден улам, сенсорлор дисплейден жана Arduinoдон алыс болушун каалайбыз. Ошондой эле ушул себептерден улам бул магнитометрди абдан күчтүү магнит талааларынан алыс кармоо керек.

Сенсорлорду бири -бирине перпендикуляр, бирок бири -бирине мүмкүн болушунча жакыныраак коюңуз. Сенсорлорду акырын ийип, аларды перпендикуляр кылып алыңыз. Ар бир сенсордун пини өзүнчө туташуу үчүн, нан тактасынын өзүнчө катарында болушу керек.

Сүрөт
Сүрөт

Электр өткөргүчтөрү эки себептен улам MKR1010 менен Uno ортосунда бир аз айырмаланат. Биринчиден, Arduino жана дисплей SPI аркылуу байланышат. Ар кандай Arduino моделдеринде белгилүү бир SPI линиялары үчүн ар кандай атайын казыктар бар. Экинчиден, Uno аналогдук кириштери 5 В чейин кабыл алат, ал эми MKR1010дун аналогдук кириштери 3,3 В чейин кабыл алат, Hall эффектинин сенсорлору үчүн сунушталган камсыздоо чыңалуусу 5 В. Сенсордун чыгышы Arduino аналогдук киришине туташкан, жана булар жеткирүү чыңалуусу сыяктуу чоң болушу мүмкүн. Uno үчүн, сенсорлор үчүн сунушталган 5 В булагын колдонуңуз. MKR1010 үчүн 3.3 V колдонуңуз, андыктан Arduino аналогдук кириши эч качан чыңалууну көрө албайт.

Сиз колдонуп жаткан Arduino үчүн төмөндөгү диаграммаларды жана көрсөтмөлөрдү аткарыңыз.

Arduino Uno менен зымдар

Сүрөт
Сүрөт

Дисплейде 11 пин бар. Аларды Arduino Uno менен төмөнкүдөй туташтырыңыз. (NC туташкан эмес дегенди билдирет.)

  • Vin → 5V
  • 3.3 → NC
  • Gnd → GND
  • SCK → 13
  • SO → NC
  • SI → 11
  • TCS → 10
  • RST → 9
  • D/C → 8
  • CCS → NC
  • Lite → NC

Сенсорлордун Винди 5V Arduino'го туташтырыңыз. Сенсордун жерин Arduino менен байланыштырыңыз. Сенсорлордун чыгышын Arduino A1, A2 жана A3 аналогдук кириштерине туташтырыңыз.

Сүрөт
Сүрөт

Arduino MKR1010 менен зымдар

Сүрөт
Сүрөт

Дисплейде 11 пин бар. Аларды Arduino менен төмөнкүдөй туташтырыңыз. (NC туташкан эмес дегенди билдирет.)

  • Vin → 5V
  • 3.3 → NC
  • Gnd → GND
  • SCK → SCK 9
  • SO → NC
  • SI → MOSI 8
  • TCS → 5
  • RST → 4
  • D/C → 3
  • CCS → NC
  • Lite → NC

Сенсорлордун Винди Arduino Vcc менен туташтырыңыз. Бул пин 5V эмес, 3.3V болуп саналат. Сенсордун жерин Arduino менен байланыштырыңыз. Сенсорлордун чыгышын Arduino A1, A2 жана A3 аналогдук кириштерине туташтырыңыз.

Сүрөт
Сүрөт

3 -кадам: дисплейди сыноо

Келгиле, TFT дисплейин иштетели. Бактыга жараша, Adafruitте колдонуучуларга ыңгайлуу китепканалар жана алар менен бирге баруу үчүн мыкты окуу куралы бар. Бул көрсөтмөлөр окуу куралын так аткарат, Arduino өнүктүрүү чөйрөсүн ачыңыз. Куралдар → Китепканаларды башкаруу бөлүмүнө өтүңүз. Adafruit_GFX, Adafruit_ZeroDMA жана Adafruit_ST7735 китепканаларын орнотуңуз. Android иштеп чыгуу чөйрөсүн өчүрүп күйгүзүңүз.

Графикалык мисал китепканаларга кошулган. Ачыңыз. Файл → Мисалдар → Adafruit ST7735 жана ST7789 Китепкана → graphicstest. 1.44 дисплейдеги комментарийди 95 -саптан жана 98 -сызыкты комментарийлөөдөн тандоо үчүн.

Түп нускасы:

94 // 1.8 дюймдук TFT экраны колдонулса, бул башталгычты колдонуңуз:

95 tft.initR (INITR_BLACKTAB); // Init ST7735S чипи, кара таб 96 96 // ЖЕ 1.44 TFT: 98 //tft.initR(INITR_144GREENTAB) колдонулса, бул башталгычты (комментарийсиз) колдонуңуз; // Init ST7735R чипи, жашыл өтмөк

1.44 дисплей үчүн туура версия:

94 // 1.8 дюймдук TFT экраны колдонулса, бул башталгычты колдонуңуз:

95 //tft.initR(INIT_BLACKTAB); // Init ST7735S чипи, кара таб 9667 // ЖЕ 1.44 TFT: 98 tft.initR (INITR_144GREENTAB) колдонулса, бул башталгычты (комментарийсиз) колдонуңуз; // Init SST35R чипи, жашыл өтмөк

Дисплей SPI аркылуу байланышат жана ар кандай модель Arduinos кээ бир байланыш линиялары үчүн ар кандай атайын казыктарды колдонот. Графикалык мисал Uno пиндери менен иштөө үчүн коюлган. Эгерде сиз MKR1010 колдонуп жатсаңыз, 80 жана 81 -саптардын арасына төмөнкү саптарды кошуңуз.

MKR1010 үчүн түзөтүүлөр:

80

#define TFT_CS 5 #define TFT_RST 4 #define TFT_DC 3 #define TFT_MOSI 8 #define TFT_SCLK 9 Adafruit_ST7735 tft = Adafruit_ST7735 (TFT_CS, TFT_DC, TFT_MOSI, TFT_MOSI; 81 float p = 3.1415926;

Өзгөртүлгөн графикалык тесттин мисалын сактаңыз. Ардуинону компьютерге туташтыра элек болсоңуз. Куралдар → Такта жана Куралдар → Портко өтүп, компьютер Arduino таба аларын текшериңиз. Эскизге → Жүктөөгө өтүңүз. Эгерде мисал иштесе, дисплейде сызыктар, тик бурчтуктар, текст жана толук демо көрсөтүлөт. Adafruit үйрөткүчү көйгөйлөрдү чечүү керек болсо, кененирээк маалымат берет.

4 -кадам: Магнитометрдин коду

Тиркелген кодду жүктөп алып, аны Arduino өнүктүрүү чөйрөсүндө ачыңыз.

Бул программа алты функцияны колдонот:

Setup () дисплейди баштайт

Loop () программанын негизги циклин камтыйт. Ал экранды караңгылатат, чүкөлөрдү тартат, киргизүүлөрдү окуйт жана магнит талаасынын векторун чагылдырган жебени тартат. Бул 127 линиясын өзгөртүү менен өзгөртүлүшү мүмкүн болгон бир секунда жаңыртуу ылдамдыгына ээ

DrawAxes3d () x, y жана z огторун тартат жана белгилейт

DrawArrow3d () 0ден 1023кө чейинки x, y жана z киргизүүлөрүн алат. Бул маанилерден жебенин мейкиндиктеги акыркы чекиттерин эсептейт. Андан кийин, экрандын акыркы чекиттерин эсептөө үчүн isometricxx () жана isometricyy () функцияларын колдонот. Акырында, ал жебени тартып, экрандын ылдый жагындагы чыңалууларды басып чыгарат

Isometricxx () изометрдик проекциянын х координатын табат. Ал чекиттин x, y жана z координаттарын алат жана экранда тиешелүү x пиксель ордун кайтарат

Isometricyy () изометрдик проекциянын y координатын табат. Ал чекиттин x, y жана z координаттарын алат жана экранда у пикселдин тиешелүү ордун кайтарат

Кодду иштетүүдөн мурун, дисплей менен SPI байланышы үчүн кайсы казыктарды колдонушубуз керек жана сенсорлор үчүн булак чыңалуусун белгилешибиз керек. Эгерде сиз MKR1010 колдонуп жатсаңыз, 92-96-саптарды жана 110-сапты комментарийлеңиз. Андан кийин 85-89-линияларды жана 108-сапты комментарийлебеңиз. Эгер Uno колдонуп жатсаңыз, 85-89-саптарды жана 108-сапты комментарийлеңиз. Андан кийин, 92-96-саптарды, ошондой эле 110-сапты жазгыла.

Кодду жүктөө, Эскиз → Жүктөө.

Сиз x, y жана z огун кызыл түстө көрүшүңүз керек. Жашыл жебе учу үчүн көк тегерек менен сенсорлордогу магнит талаасынын векторун билдирет. Чыңалуу көрсөткүчтөрү сол жактын төмөн жагында көрсөтүлөт. Магнитти сенсорлорго жакындатканыңызда, чыңалуу көрсөткүчтөрү өзгөрүшү керек, ал эми жебенин өлчөмү өсүшү керек.

Сүрөт
Сүрөт

5 -кадам: Келечектеги иш

Келечектеги иш
Келечектеги иш

Кийинки кадам түзмөктү калибрлөө болмок. Сенсор маалымат баракчасы чийки сенсордун чыңалуусун магнит талаасынын күчүнө кантип айландыруу боюнча маалымат берет. Калибрлөө так магнитометрге салыштыруу аркылуу текшерилиши мүмкүн.

Туруктуу магниттер ток өткөрүүчү зымдар менен өз ара аракеттенишет. Дисплейдин жанындагы жана Arduinoдогу зымдар сенсордун көрсөткүчтөрүнө таасир эте турган магниттик талааларды пайда кылат. Андан тышкары, эгерде бул түзмөк күчтүү туруктуу магниттин жанында өлчөө үчүн колдонулса, сыналып жаткан аппараттын магнит талаасы өз ара аракеттенет, ызы -чуу киргизет жана Arduino менен дисплейге зыян келтириши мүмкүн. Коргоо бул магнитометрди дагы күчтүү кылат. Arduino чоңураак магнит талааларына туруштук бере алат, эгерде ал темир кутуга корголгон болсо жана жылаңач зымдардын ордуна сенсорлорду экрандуу кабелдер туташтырса, азыраак ызы -чуу киргизилет.

Магнит талаасы - бул позициянын функциясы, андыктан ал мейкиндиктин бардык чекиттеринде ар башка. Бул түзмөк бир убакта магнит талаасынын x, y жана z компоненттерин өлчөө үчүн үч сенсорду колдонот. Сенсорлор бири -бирине жакын, бирок бир жерде эмес жана бул магнитометрдин чечимин чектейт. Магниттик талаанын көрсөткүчтөрүн ар кандай чекиттерде сактап, анан аларды тиешелүү жерлерде жебелердин массиви катары көрсөтүү жакшы болмок. Бирок, бул дагы бир күн үчүн долбоор.

Шилтемелер

Adafruit Arduino Graphics китепканалары жөнүндө маалымат

https://learn.adafruit.com/adafruit-1-44-color-tft-with-micro-sd-socket/overview

Магнит талаасынын визуализациясы

https://www.falstad.com/vector3dm/

Hall эффекти жана Hall эффекти сенсорлору жөнүндө маалымат

  • https://sensing.honeywell.com/index.php?ci_id=47847
  • https://www.allegromicro.com/~/media/Files/Datasheets/A1324-5-6-Datasheet.ashx

Изометрдик проекция боюнча маалымат

  • https://en.wikipedia.org/wiki/3D_projection
  • https://en.wikipedia.org/wiki/Isometric_projection

Сунушталууда: