Оригиналът е на Palingenesis, който с помощта на нещо като електронна играчка демонстрира маса интересни идеи и похвати
Наскоро ми хрумна идеята да сглобя малък инструмент – електронен пергел, с който да покажа базовите принципи на работа с датчик на Хол. Заснех малък клип демонстриращ работата на този електронен пергел в ежедневието и показващ как откривам какви точно са полюсите на използваните в това устройство магнити.
Почти всички детайли разпечатах с помощта на 3D принтер. Разбира се, могат да се използват и други материали, за да се постигне по-голяма точност и устройството да не прилича на играчка, какъвто е моят прототип. Самият проект се базира на датчика на Хол 49Е плюс два постоянни магнита. Изчисленията се извършват от електронната платка Arduino Nano. Тъй като AtMega328p има само 10-битов АЦП, а в изчисленията се използва синус, то точността на този малък прибор не е особено висока. Резултатите се извеждат на дисплея 1602, който може да показва два реда с по 16 символа на ред. Разбира се, може да се постигне много по-голяма точност, но исках просто да демонстрирам основните похвати при създаването на електронния пергел.
Използвани компоненти
- Линеен датчик на Хол модел 49E
- Два неодимови магнита с широчина 5 мм и височина 2 мм (север-юг трябва да се променят по оста на височината)
- Инструмент за определяне полюсите на магнитите – приложение за смартфон
- Arduino Nano
- Дисплей модел 1602 с I2C интерфейс – това е модулът PCF8575
- Кабел и проводници
- Лепило
- 3D принтер за разпечатване крачетата на пергела – съвсем опционално, може да се използва и друго
Датчикът на Хол 49E
Много компании произвеждат датчици на Хол, като няма някаква особена разлика между произвежданите от тях компоненти. По-долу съм дал необходимата информация, която намерих в Honeywell.
Лично аз използвах най-евтиният датчик на Хол, който успях да намеря. Това бе моделът 49E и отверстията в пластмасовите рамена на пергела са направени именно за неговите размери.
Датчикът има само три крачета:
- Първи пин – захранване от +2.7 до +6,5 V
- Втори пин – GND
- Трети пин – линеен аналогов изход, mV/Gauss
В спецификацията е указано направлението , в което датчикът определя силата на магнитното поле [N S]. Ако магнитът се движи в посока по-далече и по-близо до датчика, то неговите показания ще показват магнитната сила в това направление
Магнитите
За промяна на силата на магнитното поле около датчика на Хол аз използвам два неодимови магнита. Направлението Север-Юг съответства на горната/долната част на магнитите. Тоест, ориентирано е по оста на височината.
Приблизително по следния начин изглежда магнитното поле, създавано от един магнит:
Магнитното поле е концентрирано в неговия център, където магнитните линии преминават от Юг към Север и са успоредни една на друга. Излизайки извън пределите на магнита тези линии се огъват и в крайна сметка се затварят от другата страна – при противоположния полюс.
Така изглежда магнитното поле на два магнита (в средата е показан датчикът на Хол)
Ако приближим датчика към единия полюс и го отдалечим настрани, то е очевидно, че силата на магнитното поле съществено ще намалее. Датчиците на Хол са много чувствителни и тяхното неточно разполагане ще доведе до грешни показания и е необходимо да се намали колкото се може повече броя на потенциалните грешки. Жалко, че няма как датчикът да бъде поставен във вътрешността на магнита – това би било идеалният случай. Но за да намаля броя на грешките и да увелича точността реших да използвам два магнита.
Ако разположим тези магнити недалече един от друг, то между тях възниква еднородно магнитно поле, каквото би било във вътрешността на магнита. Ако в тази зона поставим датчика на Хол, то при завъртането на магнитите около него полето ще има същия ъгъл на завъртана, каквото имат магнитите.
Изчисляването на ъгъла
Идеята е да завъртаме магнитите около датчика на Хол.
Завъртането и обикновеното отдалечаване на магнитите от датчика са различни неща. Тоест, в резултат от завъртането на изхода няма да имаме линеен резултат, а значението на синуса на ъгъла на завъртането.
За по-добро разбиране предлагам следния чертеж:
Използваните цветове в този чертеж са следните:
- Виолетов кръг – това е пътят, по който магнитите се движат около центъра, в който е поставен датчикът
- Сините линии – ъглите/позициите на магнитите по време на тяхното въртене
- Жълти линии – линейните сили, които датчикът ще регистрира от Юг към Север
- Зелена линия – графиката за изчисление на синуса
- Червен цвят – зоната на точност
Тъй като изходът на датчика е аналогов, то това означава, че точността е ограничена от възможностите на вградения в чипа аналогово цифров преобразовател.
В Arduino Nano се използва 10-битов АЦП. В този микроконтролер типът double е аналогичен на Float, който има 6, максимум 7 десетични знака. На нас ни се налага да изчисляваме значението на синус и в този случай неизбежно ще има участъци, в които този 10-битов АЦП няма да може да извърши необходимото пресмятане с достатъчна точност.
Ъглите, които могат да бъдат изчислени точно съм показал със сини линии с малки окръжности в техния край. Проблемните ъгли са обозначени с помощта на същите линии, но с кръстчета в края.
Самата синусоида показва, че в крайните позиции на завъртането в промените на силата на магнитното поле, деленията са повече и са по-нагъсто. За по-нагледно специално съм отбелязал областта на по-висока точност.
За обхващането и на тези проблемни зони може да се използва втори датчик на Хол, който е разположен на ъгъл от 90° по отношение на първия. Това ще даде възможност да получим точни значения за всички ъгли на завъртане на електронния пергел.
От гледна точка на математиката това е съвсем обикновена геометрия и ще се спра на нея когато стигнем до кода.
Сглобяване
Вече казах, че датчикът на Хол е много чувствителен и поради тази причина всички компоненти трябва да бъдат закрепени здраво и с голяма точност. Аз имах на разположение 3D принтер, който осигури достатъчна точност при разпечатването на детайлите. Разбира се, може да се използва нещо друго.
При поставянето на датчика и магнитите може да се допусне минимална погрешност, но след тяхното фиксиране, компонентите не трябва да мърдат. Ако те не са поставени съвсем точно, това до известна степен може да се коригира в кода, но трябва да са неподвижни.
Поставянето на датчика
Датчикът на Хол трябва да бъде залепен в едното рамо на пергела, където съм направил отверстие за него, осигуряващо правилното разположение на датчика.
Ориентацията на магнитите
Много е важно магнитите да бъдат поставени правилно. За да направя това използвах приложение за смартфона. Разбира се, това решение е възможно само ако мобилният телефон има магнитометър. Но обикновено, ако смартфонът има GPS, то той трябва да има и магнитометър.
Що се отнася до самото приложение, то от многобройните варианти избрах Compass and Magnetometer. Изображението по-горе показва типичен 3D изглед, в който стрелката сочи север.
Магнитометрите не винаги се намират в центъра на смартфона. Добре е да се разбере неговото точно разположение с помощта на малък магнит и тъкмо по този начин ще стане ясно как се разпознават неговите полюси.
Поставянето на магнитите
Тук се изисква малко повече старание.
Преди да съединим крачетата на пергела е необходимо да се убедим, че магнитите без проблеми се завъртат около датчика на Хол, като едновременно с това трябва да са поставени плътно и да са неподвижни. Те трябва да бъдат фиксирани в правилното разположение на техните полюси. Не трябва да има луфтове.
Включването на кабела
Тук запояваме три проводника на кабел с неголяма дължина, като в другия му край съм поставил конектор тип DuPont.
Необходимо е да се обърне внимание на вярното запояване на кабелите към съответните крачета, като е добре да се погледнат изображенията на датчика, които са в началото на статията.
Дисплеят
За показването на ъглите използвах обикновен LCD дисплей, който може да изобразява два реда символи с по 16 символа на ред.
Реших да използвам и преходния модул PCF8575, като благодарение на него включването става чрез I2C изводи. Включих го към Arduino с помощта на кабел с четири проводника.
Включването към Arduino
Това е схемата за включването на всичко към Arduino Nano.
Кодът
Ако вече сте посещавали ресурса Arduino Nano навярно сте посещавали сайта Arduino.cc за изучаване на различните нюанси. А ако сте начинаещи в тази област, можете да започнете с Arduino IDE 2 Tutorials.
Калибрирането
За калибрирането на електронни пергел използвах Serial Monitor.
Затворете пергела и запишете първото числи, което излиза над Angle.
Сега отворете пергела и отново запишете първото число над Angle.
Числото при отворен пергел трябва да е по-голямо при това от затворен. Ако се е получило обратното, то е объркана полярността на магнитите.
Променете значенията #defined за CAL_0 и CAL_180 според тези показания:
#define CAL_0 377 // Value of hall efect sensor at 0 angle
#define CAL_180 690 // Value of hall efect sensor at 180 angle
Използвайте транспортир, за да разтворите пергела на ъгъл 60° и отново запишете числото на този ъгъл. Докато пергелът се намира в това положение, с помощта на линийка измерете разстоянието между неговите върхове и запишете това значение. Грешката в градусите на ъгъла и разстоянието ще бъдат еднакви.
Променете #defined , за да компенсирате тази грешка“
#define MAG_BIOS 0 // Set to zero, then change to a value that will correct the measurement about 60 Degrees.
След тези действия показаният ще бъдат точни, освен при крайните значения от 0 до 15° и от 165 до 180°. Причината е, че в тези области синусоидата слабо се променя.
Повишаване на точността
Дотук показах създаването на съвсем опростен измерителен инструмент и работата с датчик на Хол. Това е съвсем достатъчно за една полезна лекция за моите студенти.
Датчикът на Хол 49E е само един линеен аналогов сензор, но могат да бъдат използвани и други, които са много по-добри.
Така например моделът AS5600 е съвсем лесен за програмиране 12-битов магнитен сензор за измерване ъгъла на завъртането с аналогов и PWM извод
Моделът MLX90393 предлага 16-битов изход, сигналът на който е пропорционален на плътността на магнитния поток., регистриран около осите X и Y. Има възможност за избор на протоколите SPI и I2C.
Има и по-скъпи модели, които осигуряват още по-голяма точност, но при тях остават неясни основните принципи и заложените в един подобен продукт идеи.
Всичко важно от света на технологиите, директно в пощата ти.
С абонирането приемате нашите Условия и Политика за поверителност. Може да се отпишете с един клик по всяко време.
Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Google Новини, TikTok, Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iPhone, Huawei, Google Chrome, Microsoft Edge и Opera!


















