суббота, 14 марта 2020 г.

Измеритель магнитной индукции на Arduino

Прибор для измерения магнитной индукции может быть полезен для самостоятельного изготовления каких либо приборов с магнитными катушками например электродвигателей, реле и т.д. Для измерения магнитной индукции можно использовать аналоговый датчик Холла например SS490 или какой либо другой подобный датчик. Если подать питание на данный датчик то напряжение на его выходе будет изменяться пропорционально магнитной индукции магнитного поля в области в которой находиться данный датчик. Для того чтобы удобнее было узнавать индукцию можно данный датчик соединить с каким нибудь устройством отображающим информацию так чтобы её можно было увидеть глазами. Например можно использовать любое Arduino и индикатор ТОТ-3361АН (или какой либо другой подобный этому). Давайте рассмотрим схему:
Рисунок 1 - Измеритель магнитной индукции на Arduino

Датчик SS490 имеет небольшие пределы измерения индукции поэтому если необходимо измерять индукцию в более широких пределах то вместо SS490 можно использовать какой либо другой аналогичный датчик. Инндикатор ТОТ-3361АН может показывать 3 цифры, в данном случае используются две цифры и чёрточка для показывания знака (минус если индукция отрицательная и ничего если индукция положительная). Данный индикатор может показывать только одну цифру (букву или знак) в один момент времени. Для того чтобы было видно 3 используется динамическая индикация т.е. цифры поочередно переключаются так быстро что человеческий глаз не распознает этого переключения. Для переключения цифр используются транзисторы. Давайте рассмотрим скетчь:


Никакие библиотеки в данном скетче не подключаются т.к. для связи с датчиком холла достаточно аналогового пина. В начале объявляются все необходимые константы, глобальные переменные и массив в который будут записаны коды для вывода цифр на индикаторы. В функции "setup" настраиваются пины и заполняется массив.В функции "loop" имеется счётчик который делает 99 пропусков на которых выводятся цифры полученные от датчика а на 100й раз эти цифры получаются от датчика считыванием напряжения на аналоговом пине функцией "analogRead" переносом полученного значения в диапазон -64...64 мТл функцией "map" и разделением значения на две цифры и знак.
Видео по данной теме: