Съдържание:

Магнитометър Arduino: 5 стъпки (със снимки)
Магнитометър Arduino: 5 стъпки (със снимки)

Видео: Магнитометър Arduino: 5 стъпки (със снимки)

Видео: Магнитометър Arduino: 5 стъпки (със снимки)
Видео: How to use 4 channel Relay to control AC load with Arduino code 2024, Септември
Anonim
Магнитометър Arduino
Магнитометър Arduino

Какво строим?

Хората не могат да откриват магнитни полета, но ние използваме устройства, които разчитат на магнити през цялото време. Двигателите, компасите, сензорите за въртене и вятърните турбини, например, изискват магнити за работа. Този урок описва как да се изгради магнитометър на базата на Arduino, който улавя магнитното поле с помощта на три сензора за ефект на Хол. Векторът на магнитното поле на дадено място се показва на малък екран, използвайки изометрична проекция.

Какво е Arduino?

Arduino е малък удобен за потребителя микроконтролер с отворен код. Има цифрови входни и изходни щифтове. Той също така има аналогови входни щифтове, които са полезни за четене на вход от сензори. Предлагат се различни модели Arduino. Този урок описва как да използвате Arduino Uno или Arduino MKR1010. Въпреки това могат да се използват и други модели.

Преди да започнете този урок, изтеглете средата за разработка на Arduino, както и всички библиотеки, необходими за вашия конкретен модел. Средата за разработка е достъпна на адрес https://www.arduino.cc/en/main/software, а инструкциите за инсталиране - на адрес

Какво е магнитно поле?

Постоянните магнити упражняват сили върху други постоянни магнити. Токопроводящите проводници упражняват сили върху други проводници с токов ток. Постоянните магнити и проводниците за ток упражняват сили един върху друг. Тази сила на единица изпитвателен ток е магнитно поле.

Ако измерваме обема на обект, получаваме единично скаларно число. Магнетизмът обаче се описва с векторно поле, по -сложна величина. Първо, тя варира в зависимост от позицията в цялото пространство. Например магнитното поле на един сантиметър от постоянен магнит вероятно ще бъде по -голямо от магнитното поле на десет сантиметра разстояние.

След това магнитното поле във всяка точка на пространството се представя с вектор. Величината на вектора представлява силата на магнитното поле. Посоката е перпендикулярна както на посоката на силата, така и на посоката на изпитвателния ток.

Можем да си представим магнитното поле на едно място като стрелка. Можем да си представим магнитното поле в цялото пространство чрез набор от стрелки на различни места, вероятно с различни размери и насочени в различни посоки. Хубава визуализация е достъпна на https://www.falstad.com/vector3dm/. Магнитометърът, който изграждаме, показва магнитното поле на мястото на сензорите като стрелка на дисплея.

Какво е сензор за ефект на Хол и как работи?

Сензорът за ефект на Хол е малко, евтино устройство, което измерва силата на магнитното поле по определена посока. Изработен е от парче полупроводник, легиран с излишни заряди. Изходът на някои сензори за ефект на Хол е аналогово напрежение. Други сензори за ефект на Хол имат вграден компаратор и произвеждат цифров изход. Други сензори за ефекта на Хол са интегрирани в по -големи инструменти, които измерват дебита, скоростта на въртене или други величини.

Физиката зад ефекта на Хол е обобщена чрез уравнението на силата на Лоренц. Това уравнение описва силата върху движещ се заряд поради външно електрическо и магнитно поле.

Образ
Образ

Фигурата по -долу илюстрира ефекта на Хол. Да предположим, че искаме да измерим силата на магнитното поле по посока на синята стрелка. Както е показано в лявата част на фигурата, прилагаме ток през парче полупроводник, перпендикулярно на посоката на измерваното поле. Токът е поток от заряди, така че заряд в полупроводника се движи с известна скорост. Този заряд ще усети сила, дължаща се на външното поле, както е показано в средната част на фигурата. Зарядите ще се движат поради силата и ще се натрупват по ръбовете на полупроводника. Зарядите се натрупват, докато силата, дължаща се на натрупаните заряди, уравновеси силата, дължаща се на външното магнитно поле. Можем да измерим напрежението в полупроводника, както е показано в дясната част на фигурата. Измереното напрежение е пропорционално на силата на магнитното поле и е в посока, перпендикулярна на тока и посоката на магнитното поле.

Образ
Образ

Какво е изометрична проекция?

Във всяка точка на пространството магнитното поле се описва с триизмерен вектор. Дисплеят ни обаче е двуизмерен. Можем да проектираме триизмерния вектор в двуизмерна равнина, така че да можем да го нарисуваме на екрана. Има много начини да се постигне това, като изометрична проекция, ортографска проекция или коса проекция.

В изометричната проекция осите x, y и z са на 120 градуса един от друг и изглеждат еднакво преднамерени. Допълнителна информация за изометричната проекция, както и необходимите формули, можете да намерите на страницата на Уикипедия по темата.

Стъпка 1: Съберете консумативи

Arduino и кабел

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 означава Thin Film Transistor. Този 1.44 -инчов дисплей съдържа 128 на 128 пиксела. Той е малък, ярък и цветен. Той е прикрепен към пробивна платка. Но щифтовете на заглавката се отделят, така че трябва да ги запоявате. (Припой и поялник са необходимо.)

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

    Образ
    Образ
  • Сензори за аналогов ефект на Хола

Необходими са три сензора за ефекта на Хол. Връзката по-долу е за номер на Allegro A1324LUA-T. За този сензор щифт 1 е захранващото напрежение, щифт 2 е заземен, а щифт 3 е изходът. Други сензори на Хол също трябва да работят, но се уверете, че са аналогови, а не цифрови. Ако използвате друг сензор, проверете извода и коригирайте окабеляването, ако е необходимо. (Всъщност използвах различен сензор от същата компания за целите на тестването. Този, който използвах, е остарял и този сензор е неговата подмяна.)

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

Малка платка и тел

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 V, докато аналоговите входове на MKR1010 могат да приемат само до 3,3 V. Препоръчителното захранващо напрежение за сензорите на ефекта на Хол е 5 V. Изходите на сензора са свързани към аналоговите входове на Arduino, и те могат да бъдат толкова големи, колкото захранващите напрежения. За Uno използвайте препоръчаното 5 V захранване за сензорите. За 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

Свържете Vin на сензорите към 5V на Arduino. Свържете земята на сензора към масата на Arduino. Свържете изхода на сензорите към аналогови входове A1, A2 и A3 на Arduino.

Образ
Образ

Окабеляване с 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

Свържете Vin на сензорите към Vcc на Arduino. Този щифт е при 3.3V, а не 5V. Свържете земята на сензора към масата на Arduino. Свържете изхода на сензорите към аналогови входове A1, A2 и A3 на Arduino.

Образ
Образ

Стъпка 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 97 // ИЛИ използвайте този инициализатор (разкомментирайте), ако използвате 1.44 TFT: 98 //tft.initR(INITR_144GREENTAB); // Init ST7735R чип, зелен раздел

Правилна версия за 1.44 дисплей:

94 // Използвайте този инициализатор, ако използвате 1.8 TFT екран:

95 //tft.initR(INIT_BLACKTAB); // Init ST7735S чип, черен раздел 96 97 // ИЛИ използвайте този инициализатор (разкомментирайте), ако използвате 1.44 TFT: 98 tft.initR (INITR_144GREENTAB); // Init SST35R чип, зелен раздел

Дисплеят комуникира чрез SPI, а различните модели Arduinos използват различни специални щифтове за някои комуникационни линии. Примерът с графичен тест е настроен да работи с щифтовете Uno. Ако използвате MKR1010, добавете следните редове между редове 80 и 81.

Корекции за MKR1010:

80

#дефинирай TFT_CS 5 #дефинирай TFT_RST 4 #дефинирай TFT_DC 3 #дефинирай TFT_MOSI 8 #дефинирай TFT_SCLK 9 Adafruit_ST7735 tft = Adafruit_ST7735 (TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK) 81 поплавък р = 3,1415926;

Запазете примера на модифицирания графичен тест. Включете Arduino в компютъра, ако все още не сте го направили. Отидете на Tools → Board and Tools → Port, за да проверите дали компютърът може да намери Arduino. Отидете на Скица → Качване. Ако примерът работи, на дисплея ще се покажат линии, правоъгълници, текст и пълната демонстрация. Урокът Adafruit предоставя повече подробности, ако е необходимо отстраняване на неизправности.

Стъпка 4: Кодът на магнитометъра

Изтеглете прикачения код и го отворете в средата за разработка на Arduino.

Тази програма използва шест функции:

Setup () инициализира дисплея

Loop () съдържа основния цикъл на програмата. Той затъмнява екрана, чертае осите, чете входовете и рисува стрелката, представляваща вектора на магнитното поле. Той има честота на опресняване от една секунда, която може да бъде променена чрез промяна на ред 127

DrawAxes3d () изчертава и маркира осите x, y и z

DrawArrow3d () приема вход x, y и z в диапазона от 0 до 1023. От тези стойности изчислява крайните точки на стрелката в пространството. След това използва функциите isometricxx () и isometricyy () за изчисляване на крайните точки на екрана. И накрая, той рисува стрелката и отпечатва напреженията в долната част на екрана

Isometricxx () намира x координатата на изометричната проекция. Той приема координати x, y и z на точка и връща съответното местоположение x пиксела на екрана

Isometricyy () намира y координатата на изометричната проекция. Той приема координати x, y и z на точка и връща съответното y пикселно местоположение на екрана

Преди да стартираме кода, трябва да посочим кои пинове да използваме за 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/

Информация за сензорите за ефекта на Хол и за ефекта на Хол

  • 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

Препоръчано: