Тахометр на Ардуино
Привет. В этой статье расскажу, как я сделал цифровой тахометр на Ардуино (Arduino) и датчике Холла для китайского шпинделя 0,5кВт диаметром 52 мм.
Комплектующие для сборки тахометра
Итак, тебе понадобятся:
- датчик Холла из стартового набора ардуинщика KY-003
- отладочная плата Arduino Nano v3
- семи сегментный индикатор на драйвере ТМ1637
- соединительные провода XH2.54 4pin и 3pin
- 2-ух жильный экранированный провод
- набор «Все для паяния»
- набор «Всё для изготовления печатных плат»
- установленная на компьютере Arduino IDE желательно версии 1.6.5
Детали тахометра на Ардуино
И установи библиотеку tm1637 в свою Arduino IDE. Как это сделать? Просто добавь папку из архива в папку куда установлена Arduino. Например С > Program Files (x86) > Arduino > Libraries
Схема подключения тахометра на Ардуино
Тахометр на Ардуино схема подключения
Сборка тахометра не представляет особых трудностей. Просто собирай по схеме, заливай скетч и проверяй работоспособность. После включения на индикаторе должен появится 0, а при мелькании магнитом перед одной из сторон датчика должен загораться светодиод и на индикаторе изменяться показания. Если что-то не так — пиши в х — разберемся.
Сборка тахометра
Итак, начнем по порядку:
Индикатор
При изготовлении тахометра мне хотелось, чтобы индикатор был аккуратно и красиво установлен в корпус блока управления станком. В качестве корпуса я использовал корпус-рамку от вышедшего из строя вольт/ампер метра.
Плата индикатора TM1637 практически идеально подходила в этот корпус. Только нужно было обработать напильником — снять по 1 мм с каждой стороны.Также заменил стандартные пины на разъем XH2.54 4 pin.
Получилось практически как заводское изделие.
Индикатор тахометра TM1637
Плата датчика Холла
Для аккуратного крепления датчика Холла на шпиндель пришлось сделать новую печатную плату. Кому интересно как я делаю печатные платы читай в этой статье.
После изготовления платы, я перенес все детали с KY-003, а так же добавил разъем XH2.54 3 pin.
И еще вырезал изоляционную прокладку из какого-то пластика толщиной 3 мм и просверлил в ней небольшие отверстия, чтобы плата ложилась на прокладку всей плоскостью.
Плата тахометра вид сверху
Плата тахометра вид снизу
Прокладка
Также на плате предусмотрено место под SMD конденсатор, для устранения помех от шпинделя. Но пока он мне не понадобился — экранированный кабель справляется со своей задачей.
Установка платы датчика Холла
Во-первых, для реализации тахометра, мне нужен был небольшой неодимовый магнит, который нужно было прикрепить на вал шпинделя. Перерыл все ящики — я ничего подходящего не нашел. Зато нашел старый, нерабочий cd-rom от ноутбука. Вот в нем, в катушке электромагнита открывания, как раз и нашел, то, что нужно — небольшой, прямоугольный неодимовый магнит!
Определив высоту и полярность, я приклеил магнит к валу на «суперклей» и обтянул вал с магнитом термоусадкой. На копус шпинделя приклеил прокладку, а уже на прокладку — плату. Как видите — получилось довольно аккуратно. Защитный колпачек в процессе обдумывания, так что, пока без него ????
Установка платы на шпиндель
Датчик Холла 3144 реагирует каждой своей стороной либо на северный, либо на южный полюс магнита, так что перед установкой магнита — определи его положение!
Как протянуть провода от датчика, я расскажу в статье посвященной прокладке кабелей, а пока небольшое видео о работе тахометра на Arduino Nano и индикаторе TM1637
На этом всё. Если понравилось — ставьте лайки, делитесь с друзьями в соцсетях и подписывайтесь на уведомления о новых статьях!
Как подключить датчик Холла 49E к Arduino
В статье рассматривается подключение датчика Холла 49E к Arduino.
Нам понадобятся:
1Описание датчика Холла 49E
Датчик Холла – это прибор, который регистрирует изменение напряжённости магнитного поля. В настоящее время датчики на основе эффекта Холла нашли широкое применение. Например:
- датчики скорости вращения – широко используются в автомобилестроении и везде, где требуется определить скорость вращения колеса или иного вращающегося объекта; сенсоры на основе эффекта Холла пришли на замену механическим герконам;
- датчики приближения; типичный пример – раскладной чехол на вашем смартфоне, который включает подсветку экрана при открытии;
- измерение угла поворота;
- измерение величины вибрации;
- измерение величины магнитного поля – магнитометры и цифровые компасы;
- измерение силы тока (переменного и постоянного);
- измерение воздушных зазоров, уровня жидкости, и многие другие.
Приобрести такой датчик можно здесь.
2Схема подключения модуля с датчиком Холла к Arduino
Модуль с датчиком Холла содержит следующие компоненты: подстроечный резистор, двухканальный компаратор, несколько согласующих резисторов, пару светодиодов и собственно, сам датчик Холла 49E.
Модуль с датчиком Холла 49E
Подстроечный резистор служит для настройки чувствительности датчика Холла. Первый светодиод сигнализирует о наличии напряжения питания на модуле, второй – о превышении магнитным полем установленного порога срабатывания.
Модуль с датчиком имеет 4 вывода. Назначение выводов приведено в таблице. В третьем столбце таблицы – соответствующий вывод платы Arduino, к которому будет подключаться модуль.
G | Земля. | GND |
+ | Питание +2,3…10 В. | 5V |
AO | Аналоговый выход – значение напряжённости магнитного поля. | A0 |
DO | Цифровой выход – индикатор превышения напряжённости магнитного поля заданного порога. | 12 |
Вот как будет выглядеть модуль с датчиком Холла, подключённый к плате Arduino Nano:
Подключение модуля с датчиком Холла к Arduino Nano
2Скетч для считывания показаний датчика Холла 49E
Итак, давайте проверим наш датчик в действии. Напишем самый простой скетч, который только и делает, что выводит считанные значения в последовательный порт.
int analogPin = A0; // с аналогового выхода датчика Холла int digitalPin = 12; // с цифрового выхода датчика Холла void setup() { pinMode(digitalPin, INPUT); Serial.begin(9600); } void loop() { int analogValue = analogRead(analogPin); // считываем аналоговое значение int digitalValue = digitalRead(digitalPin); // считываем цифровое значение Serial.println((String)digitalValue + » » + (String)analogValue); delay(100); }
Загрузим скетч и посмотрим, что же выводится в порт:
Вывод в последовательный порт показаний датчика Холла
Очень интересно. Вывод цифрового канала понятен: «0» – магнитное поле ниже заданного подстроечным резистором значения, «1» – выше (я поднёс магнит к датчику). А что же показывает аналоговый канал? Разберёмся с этим чуть позже.
3Скетч для определения скорости вращения диска
Для того чтобы определить скорость вращения, будем использовать сигнал с цифрового канала сенсора. Такая схема пригодится, например, для создания спидометра для велосипеда.
Для демонстрации соберём вот такую установку: разместим неподвижно датчик Холла (зажмём тисками), а на поверхности вращающегося диска закрепим постоянный магнит. В качестве вращающейся платформы у меня будет старый жёсткий диск, на котором скотчем (простите за неэстетичность) будет зафиксирован магнит.
Установка для определения скорости вращения на основании показаний датчика Холла
Вспомним формулу угловой скорости: ω = φ / tгде ω – угловая скорость, φ – угол поворота, t – время, за которое диск повернулся на этот угол. В нашем случае угол (1 оборот) будет равен 360° или 2π радиан. Всё, что нам остаётся – это подсчитать время, за которое происходит один оборот диска.
В скетче мы будем отлавливать переход сигнала с датчика от HIGH к LOW и вычислять разницу между двумя последовательными переходами.
Временная диаграмма цифрового сигнала с датчика Холла для вращающегося диска
Для определения промежутка времени используем встроенную функцию millis(), которая возвращает количество миллисекунд, прошедших с момента включения платы Arduino.
int digitalPin = 12; // с цифрового выхода датчика Холла unsigned long runTime; // время с запуска платы Arduino, мс int prevValue = 0; // предыдущее считанное значение void setup() { pinMode(digitalPin, INPUT); Serial.begin(9600); runTime = millis(); // запоминаем время запуска программы } void loop() { int digitalValue = digitalRead(digitalPin); // значение с цифрового канала delay(50); // небольшая задержка чтобы исключить дребезг контактов if ((prevValue == HIGH) && (digitalValue == LOW)) { // ловим переход HIGH->LOW сигнала unsigned long timeSpan = millis() — runTime; // время одного оборота, мс runTime = millis(); // запомним текущее время Serial.println(«Период оборота = » + (String)timeSpan + » мс»); double omega = 2 * PI / (timeSpan * 1.0E-3); Serial.println(«Угловая скорость = » + (String)omega + » рад/с»); } prevValue = digitalValue; // запомним предыдущее значение датчика Холла }
Загрузим скетч, и начнём вращать наш диск с магнитом. Период оборота и угловая скорость выводятся в окно консоли:
Скорость и период вращения диска выводятся в монитор последовательного порта
Кстати, если на небольшом расстоянии друг за другом на диске разместить два магнита, то можно будет определить не только скорость вращения, но и направление. Естественно, скетч придётся немного усложнить.
Возвращаясь к идее спидометра для велосипеда, нужно вспомнить ещё одну формулу – связь угловой и линейной скоростей: v = ω r
Здесь v – линейная скорость, ω – угловая скорость, r – радиус колеса велосипеда. Теперь несложно дописать наш последний скетч с учётом этой формулы.
4Значения с аналогового каналадатчика Холла 49E
Теперь разберёмся, что же показывают аналоговые значения с датчика Холла.
Датчик выдаёт напряжение, которое изменяется в зависимости от величины магнитного поля. Вектор индукции магнитного поля измеряется в Гауссах (Гс, GS по-английски).
Согласно техническому описанию на детектор Холла, пределы измерения датчика Холла 49E ±1500 Гс с линейным участком от −1200 до +1200 Гс., а чувствительность датчика примерно 2,9 мВ/Гс.
Рассмотрим график зависимости напряжения на датчике Холла от величины магнитного поля:
График зависимости напряжения на датчике Холла от величины магнитного поля
Помните наш первый скетч? Показания, снятые с датчика, изменялись в районе 508..525 отчётов (левая шкала ординат на графике). Если перевести их в вольты, то это как раз около нуля шкалы отсчёта датчика, или 2,5 В (правая шкала). Если мы поднесём магнит одним полюсом к датчику Холла, показания будут меняться от нуля в одну сторону, если поднесём другим полюсом – в другую.
Таким образом, по показаниям аналогового канала датчика Холла можно судить о величине магнитного поля и о направлении магнитных силовых линий.
Скачать техническое описание (datasheet) на датчик Холла 49E
KY-003 цифровой датчик Холла. Подключение к Arduino
KY-003 модуль датчика Холла (Hall sensor) выполнен на базе элемента «44E» и, по сути, является магнитным переключателем. Если рядом с ним нет магнитного поля, то на сигнальном выходе датчика имеется высокий уровень напряжения, и наоборот, если поле присутствует, то на выходе низкий уровень напряжения.
Технические характеристики модуля KY-003
Магнитный датчик Холла KY-003 состоит из чувствительного элемента эффекта Холла 3144EUA-S, резистора 680 Ом и светодиода. Совместим с популярными электронными платформами, такими как Arduino и ESP32.
- Рабочее напряжение: от 4,5 В. до 24 В.
- Диапазон рабочих температур от -40 ° C. до 85 ° C.
- Размеры 18,5 x 15 мм.
Внимание! Не перепутайте модуль KY-003 с аналоговым датчиком Холла KY-035. Модули выглядят одинаково, только на модуле KY-003 распаяны светодиод и резистор, а на модуле KY-035 их нет.
Схема подключения к Arduino UNO KY-003
Схема подключения к Arduino NANO KY-003
Подключите линию питания (посередине) к +5 Arduino, землю (-) и GND, соответственно. Подключите сигнальный контакт (S) к контакту 3 на Arduino. Подключение датчика Холла KY-003:
- S — цифровой выход
- “средний контакт” —“+” 5 В (можно подключить к “+5 В” на плате Arduino)
- “-” — общий
Пример кода (скетч) для “KY-003” и Arduino
// KY-003 цифровой магнитный датчик Холла (Hall)
// https://arduino-tex.ru/
int led = 13 ; // назначение пина светодиода
int hallPin = 3 ; // назначение пина датчика
int value ; // переменная для хранения значения с датчика
void setup ()
{
pinMode (led, OUTPUT);
pinMode (hallPin, INPUT);
//Serial.begin (9600); // Задаем скорость передачи данных
}
void loop ()
{
value = digitalRead (hallPin) ; // чтение значения с датчика
if (value == LOW) // когда имеется магнитное поле светодиод горит
{
digitalWrite (led, HIGH);
}
{
digitalWrite (led, LOW);
}
}
В коде KY-003 для Arduino. При обнаружении магнитного поля загорается встроенный в плату Arduino светодиод, который подключен к 13 пину. Также светодиод на самом модуле загорается при обнаружении магнитного поля. Если магнитного поля нет, то светодиод на модуле не горит.
Применение KY-003цифрового датчика Холла
Цифровой датчик холла KY-003 можно использовать в охранных системах, системах сигнализации и контроля процесса. Также можно применять модуль KY-003, когда нужен бесконтактный датчик.
Например, в случае если у нас есть герметичный резервуар (не металлический и с относительно не толстыми стенками) и нам нужно определить приближение элемента к стенке, или перемещение элемента вдоль стенки, например, поплавка в жидкости. Так как проложить в резервуаре провода мы не можем, а закрепить магнит на подвижном элементе можно.
При приближении магнита к стенке, датчик холла, установленный с противоположной стороны, позволяет определить приближение. Таким способом мы получаем бесконтактный датчик.
Описание всех датчиков из набора «37 in 1 Sensors Kit for Arduino» вы можете посмотреть на странице описания данного набора модулей для Arduino.
Понравился УрокKY-003цифровой датчик Холла. Подключение к Arduino? Не забудь поделиться с друзьями в соц. сетях.
- А также подписаться на наш канал на YouTube, вступить в группу
Датчик Холла (Trema-модуль)
Trema-модуль датчик Холла — датчик, реагирующий на магнитные поля. Исполнен в линейке Trema-модулей, благодаря этому вам не придется ничего паять и собирать на макетной плате.
Видео:
Спецификация:
- Потребляемый ток: от 6 до 10 мА
- Выходной ток: от 1.0 до 1.5 мА
- Выходное напряжение: от 1.0 до 1.75 мВ/Гс, в среднем 1.4 мВ/Гс (милливольт на гаусс)
- Нулевая точка: от 2.25 до 2.75 В, в среднем 2.5 В
- Магнитный диапазон: от ±650 Гс до ±1000Гс
- Время отклика: 3 мс
- Габариты 31 x 31 мм
Все модули линейки «Trema» выполнены в одном формате
Подключение:
Датчик Холла имеет аналоговый выходной сигнал, в спокойном состоянии на выходе будет примерно 2.5 В при питании модуля 5 вольт. В комплекте имеется кабель для быстрого и удобного подключения к Trema Shield.
Модуль удобно подключать 3 способами, в зависимости от ситуации:
Способ — 1 : Используя проводной шлейф и Piranha UNO
Используя провода «Папа — Мама», подключаем напрямую к контроллеру Piranha UNO
Способ — 2 : Используя Trema Set Shield
Модуль можно подключить к любому из аналоговых входов Trema Set Shield.
Способ — 3 : Используя проводной шлейф и Shield
Используя 3-х проводной шлейф, к Trema Shield, Trema-Power Shield, Motor Shield, Trema Shield NANO и тд.
Примеры:
Простой пример с магнитом
Если мы считаем сигнал arduino'й через аналоговый порт, то мы получим значение примерно равное 512. При приближении магнита к датчику значение будет меняться. Оно может увеличиваться и уменьшаться в зависимости от того, каким полюсом подносится магнит
const int analogInPin = A5; // Определяем номер вывода, к которому подключен модуль
int sensorValue = 0; // Задаем переменную для значений, полученных с модуля
void setup() {
Serial.begin(9600); // Инициируем передачу данных на скорости 9600 бит/сек
}
void loop() {
sensorValue = analogRead(analogInPin); // Записываем в переменную значения с модуля
Serial.print(«Hall Sensor = » ); // Выводим текст
Serial.println(sensorValue); // Выводим значение
delay(1000); // Ждём секунду
}
В результате мы получим следующую картину если откроем «Монитор последовательного порта»:
Применение:
- Датчики поворота, открытия/закрытия;
- Сигнализация;
Ссылки:
- Датчик Холла (Trema-модуль)
Датчик Холла
Датчик Холла OH137 Модуль KY-003 Модуль KY-024 Модуль KY-035
Датчик Холла OH137
Униполярный датчик Холла OH137 — датчик, работающий на эффекте Холла — при помещении в магнитное поле некоторого проводника с постоянным током, в этом проводнике возникает поперечная разность потенциалов.
- Тип: Униполярный
- Рабочий ток источника питания: 5 mA
- Максимальный выходной ток: 25 mA
- Рабочая точка, макс.: 18 mT
- Точка сброса мин.: 2 mT
- Рабочая температура: -40…85 C
- Рабочее напряжение питания: 24 V
- Тип корпуса: TO-92
- Тип выхода: open-collector
- Напряжение питания: 4.5 V — 24 V
Подключение показано на рисунке.
Показания сигнала зависят от полюса магнита (поэтому он называется униполярным).
При подключении к плате используйте резистор на 820 Ohm и конденсатор на 20 pF.
//OH137 Hall Sensor Tutorial
int hallPin = 2; // Use Pin 0 as our Input
int hallVal = HIGH; // This is where we record the OH137 Input
boolean isMagneticField = false;
unsigned long lastDetectTime; // Record the time that we measured a Magnetic Field
int magFieldHoldTime = 500; // How long to hold the magnetic field detection on.
void setup ()
{
Serial.begin(9600);
pinMode (hallPin, INPUT);
}
void loop ()
{
hallVal = digitalRead (hallPin);
if (hallVal == LOW) // means magnetic field detected
{
lastDetectTime = millis(); // record the last time mag field was detected
if (!isMagneticField)
{
Serial.println(«MAGNETIC SOUTH POLE DETECTED»);
isMagneticField = true;
}
}
else
{
if( (millis()-lastDetectTime) > magFieldHoldTime && isMagneticField)
{
Serial.println(«no magnetic field»);
isMagneticField = false;
}
}
}
Модуль KY-003
Датчик Холла (модуль KY-003) выполнен на базе элемента «44E» и позволяет обнаруживать магнитное поле. Если рядом с датчиком нет магнитного поля, то на сигнальном выходе датчика имеется высокий уровень и наоборот если поле присутствует, то на выходе низкий уровень напряжения, таким образом датчик имеет цифровой выход.
На плате модуля есть светодиод, который горит когда есть магнитное воздействие. Существуют также аналоговый (KY-035) и комбинированный датчик Холла (KY-024).
Имеет три вывода: сигнальный вывод S подключается к цифровому выводу платы, средний к питанию, а крайний левый к земле.
KY-003 | Arduino
—————-
S | D
+ | 5V
— | GND
При появлении магнитного поля будет включаться светодиод на выводе 13.
int ledPin = 13;
int hallPin = 3;
int val;
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(hallPin, INPUT);
}
void loop()
{
val = digitalRead(hallPin);
if (val == LOW) //when magnetic field is detected, turn led on
{
digitalWrite(ledPin, HIGH);
}
else
{
digitalWrite(ledPin, LOW);
}
}
Входит в состав набора Набор из 37 датчиков
Модуль KY-024
Модуль KY-024 является линейным датчиком Холла (датчик магнитного поля), способный обрабатывать цифровой и аналоговые сигналы.
Цифровой выход выдаёт логический 0 если магнита рядом нет и логическую 1, если магнит в поле чувствительности датчика. А на аналоговом выходе можно отслеживать изменение напряжения, когда магнитное поле есть и когда его нет.
Также на модуле расположены два красных светодиода, один сигнализирует о наличии питания, другой загорается при срабатывании датчика. Для настройки датчика на плате модуля имеется подстроечный резистор для регулировки чувствительности датчика — можно менять расстояние до магнита, при котором датчик сработает.
Модуль определяет присутствие поля постоянного магнита или магнитного поля катушки проволоки, подключённой к постоянному току. Часто применяется для определения скорости вращения различных деталей механизмов.
Имеет четыре вывода: На + подаём 5В, на G – землю (GND), A0 – аналоговый выход, D0 – цифровой выход.
KY-024 | Arduino
—————-
A0 | A0
G | GND
+ | 5V
D0 | D
Скетч.
const int digital = 2; // Цифровой пин 2
const int analog = A0; // Аналоговый пин A0
void setup()
{
pinMode(digital, INPUT);
Serial.begin(9600);
}
void loop()
{
Serial.print(«Digital: «);
Serial.print(digitalRead(digital)); // Цифровой сигнал с датчика
Serial.print(«, Analog: «);
Serial.println(analogRead(analog)); // Аналоговый сигнал с датчика
delay(500);
}
Входит в состав набора Набор из 37 датчиков
Модуль KY-035
Аналоговый датчик Холла KY-035 внешне практически не отличается от датчика KY-003, только у него нет встроенного светодиода (стоит пустая заглушка).
Других отличий нет — схема соединений и код остаётся без изменений.
Входит в состав набора Набор из 37 датчиков
Дополнительные материалы
На плате ESP32 есть встроенный датчик Холла.
Реклама
Как подключить датчик Холла к Arduino
Вам понадобится
- — Модуль с датчиком Холла.
- — Arduino (любая из семейства).
- — Соединительные провода.
- — Компьютер со средой разработки Arduino IDE.
Инструкция
Датчик Холла – это прибор, который регистрирует изменение напряжённости магнитного поля. Датчики на основе эффекта Холла нашли широкое применение в быту и промышленности. Так, к примеру, они используются как:- датчики скорости вращения – используются в автомобилестроении и везде, где требуется определить скорость вращения колеса или иного вращающегося объекта;- датчики приближения; типичный пример – раскладной чехол на вашем смартфоне, который включает подсветку экрана при открытии;- измерение угла поворота;- измерение величины вибрации;- измерение величины магнитного поля – цифровые компасы;- измерение силы тока;- измерение воздушных зазоров, уровня жидкости и т.д. Модуль с датчиком Холла содержит следующие компоненты: подстроечный резистор, двухканальный компаратор, несколько согласующих резисторов, пару светодиодов и собственно, сам датчик Холла 49E. Подстроечный резистор служит для настройки чувствительности датчика Холла. Первый светодиод сигнализирует о наличии напряжения питания на модуле, второй – о превышении магнитным полем установленного порога срабатывания.
Модуль с датчиком имеет 4 вывода. Их подключение к плате Arduino приведено на рисунке.
Напишем скетч для считывания показаний с цифрового и аналогового выходов датчика. Будем каждые 100 мс опрашивать датчик и выводить значения в последовательный порт.
Загрузим скетч в Arduino и откроем монитор последовательного порта или любую терминальную программу. Мы видим два столбца с цифрами. В первом — показания цифрового канала. Если значение «0» — магнитное поле не превышает заданный порог, если «1» — превышает. Я поднёс магнит к датчику, и в нескольких строках пробежали значения «1». Порог устанавливается подстроечным резистором.
А во втором столбце — значения с аналогового канала датчика. Чтобы понять, что они означают, необходимо составить таблицу соответствия, отмечая направление магнитных линий (полярность магнита) и удалённость магнита от датчика. На основании этой таблицы можно будет трактовать показания датчика Холла.
Использование датчика холла с arduino
В этой статье мы рассмотрим, как использовать модуль датчик холла совместно с Arduino. Датчик холла — это датчик, который меняет свой выходной потенциал (напряжение) в зависимости от присутствии или отсутствии магнитного поля.
Это означает, что выходной сигнал датчика Холла является функцией плотности магнитного поля вокруг него.
Когда плотность магнитного потока вокруг него превышает некоторое заранее выставленное пороговое значение, датчик обнаруживает его и меняет напряжение тока выхода для того чтобы показать присутствие магнитного поля.
Датчики эти в последнее время стали очень популярны и нашли много различных применений.
Одним из мест популярных использований датчиков холла — в автомобильных схемах, где они используются для определения положения, измерения расстояния и скорости.
Они также установлены в смартфоны и компьютеры, в разных переключателях где присутсвие магнитного поля использовано для того чтобы включить или выключить цепь питания.
По виду они обычно выглядят как плата с 3 контактами: один контакт сигнал и другие 2 для питания датчика. Это существенно упрощает подключение модуля к любому микроконтроллеру или исполнительной схеме.
В сегодняшнем материале Elwo.ru покажет, как работает датчик холла, подключив его вместе со светодиодом к Arduino блоку. Arduino будет запрограммирован таким образом, что, когда магнит приближается к датчику холла — светодиод включается, а когда магнит удаляется — он гаснет.
Схема принципиальная
Схема для этого проекта проста, так как все, что нам нужно сделать, это подключить 3 контакта датчика холла и светодиод к платформе Arduino. Соедините компоненты, как показано на схеме.
Датчик Холла — Ардуино
- VCC — 5V
- GND — GND
- SIG — D2
LED можно подсоединить сразу в Arduino с положительной ногой в pin 13 Arduino и другой ногой в земляной штырь без резистора, потому что arduino имеет внутренний резистор прикрепленный к pin 13.
Требуемые компоненты для схемы
Для построения этого проекта требуются следующие компоненты.
- Датчик холла
- Arduino Uno
- LED
- Магнит
- Провода
Теперь можем перейти к коду для этого проекта.
Код прошивки МК
Код для этого проекта очень прост, так как все, что нужно сделать это проверить, ощущается ли магнитное поле, и если да — включается ли от него светодиод.
В функции настройки void мы объявляем pinmode для контактов Arduino, к которому подключены светодиод и датчик Холла.
Далее идет функция void loop, задача здесь как если бы надо было использовать кнопку для управления светодиодом с Arduino между ними. Читаем выход датчика холла и храним в переменной с именем state.
Полный код для этого проекта показан далее:
- int hallSensorPin = 2;
int ledPin = 13; - int state = 0;
- void setup() {
pinMode(ledPin, OUTPUT);
pinMode(hallSensorPin, INPUT); - }
- void loop(){
- state = digitalRead(hallSensorPin);
- if (state == LOW) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
} - }
Скопируйте код и загрузите его на плату Arduino. Вы должны увидеть переключение светодиода, когда магнит поднесен близко к датчику, показанному на фото.
Подключение аналоговых датчиков к Arduino
Для платформы Arduino существует огромное количество датчиков. Эта статья будет посвящена аналоговым датчикам. Они так называются потому, что сигнал на их выходе измеряется величиной напряжения.
Arduino преобразует аналоговые значения сигнала в цифровые с помощью встроенного АЦП (Аналого-цифрового преобразователя) разрядностью 10 бит (у большинства плат). Количество возможных значений напряжения при этом будет равно 1024: от 0 (0 В) до 1023 (5 В).
Минимально возможное регистрируемое изменение напряжения будет 5В/1024 = 0,004883 В (4,883 мВ).Разрядность не всегда 10 бит, например у Arduino Due АЦП 12-битный (4096 значений).
Обычно эти датчики имеют следующие выводы:
– G (GND).Минус напряжения питания.
– V (VTG или +5V, VCC).Плюс напряжение питания.
– S (AO (Analog Output), SIG, OUT).Аналоговый выход.
G подключается к земле (вывод GND). V подключается к выводу +5V либо 3V3 (читайте описание датчика). S подключается к заданному программно аналоговому выводу (не все выводы Arduino могут принимать аналоговый сигнал), считывание состояния этого вывода в Arduino IDE осуществляется при помощи функции analogRead().
Пример кода программы для считывания показания датчиков. Показания датчика будут выводиться в последовательный порт компьютера. Просмотреть их можно будет при помощи монитора порта в Arduino IDE.
Подключение аналоговых датчиков к Arduino const int analogPin = 0;
void setup() {
Serial.begin(9600); // Скорость работы порта
Serial.println(«Analog Sensor Test»); // Выводим текст
Serial.println(); // Пустая строка
}
void loop() {
int analogValue = analogRead(analogPin); // Задаем переменную analogValue для считывания показаний
Serial.println(analogValue); // Выводим значения
delay(500);
}
Serial.begin(9600); // Скорость работы порта Serial.println(«Analog Sensor Test»); // Выводим текст Serial.println(); // Пустая строка int analogValue = analogRead(analogPin); // Задаем переменную analogValue для считывания показаний Serial.println(analogValue); // Выводим значения |
В программе можно управлять какими-либо параметрами при изменении состояния датчиков. Поэтому теперь приведём более наглядный пример. При получении с датчика значения менее 500 будет загораться встроенный в плату Arduino светодиод (пин 13).
Подключение аналоговых датчиков к Arduino const int analogPin = 0;
void setup() {
}
void loop() {
int analogValue = analogRead(analogPin); // Задаем переменную analogValue для считывания показаний
// Подобрать необходимый порог значений вашего датчика
if (analogValue < 500) // Если значение на аналоговом входе < 500 { // Выполняем действие digitalWrite(13, HIGH); // Включаем светодиод } else // В ином случае (если значения на аналоговом входе > 500)
{
// Выполняем действие
digitalWrite(13, LOW); // Выключаем светодиод
}
delay(100);
}
int analogValue = analogRead(analogPin); // Задаем переменную analogValue для считывания показаний // Подобрать необходимый порог значений вашего датчика if (analogValue 500) digitalWrite(13, LOW); // Выключаем светодиод |
Обратите внимание! У датчиков бывает различный диапазон выходных напряжений. При составлении программ нужно это учитывать. Наибольшее значение не всегда 1023.
Существуют также комбинированные датчики. Они имеют как цифровой, так и аналоговый выходы. При достижении определённого значения на аналоговом выходе сигнал на цифровом выходе меняет значение на противоположное. Такими бывают, например, датчики громкости звука.
“KY-003” – цифровой датчик Холла на базе “44E” для Arduino
“KY-003” – датчик Холла (Hall sensor) выполнен на базе элемента “44E” и по сути является магнитным переключателем. Если рядом с ним нет магнитного поля, то на сигнальном выходе датчика имеется высокий уровень и наоборот если поле присутствует, то на выходе низкий уровень напряжения, таким образом сенсор имеет цифровой выход .
На плате есть светодиод, который горит когда есть магнитное воздействие. Существуют также аналоговый и комбинированный датчики Холла.
Характеристики “KY-003”:
Напряжение питания, В: 5
Подключение датчика Холла:
- “S” — цифровой выход
- “средний контакт” — “+” 5 В (можно подключить к “+5 В” на плате Arduino)
- “-” — общий
Схема подключения к Arduino
Пример кода (скетч) для “KY-003” и Arduino:
// KY-003 цифровой магнитный датчик Холла (Hall)
// umnyjdomik.ru
int led = 13 ; // назначение пина светодиода
int hallPin = 10 ; // назначение пина датчика
int value ; // переменная для хранения значения с датчика
void setup ()
{
pinMode (led, OUTPUT);
pinMode (hallPin, INPUT);
}
void loop ()
{
value = digitalRead (hallPin) ; // чтение значения с датчика
if (value == LOW) // когда имеется магнитное поле светодиод горит
{
digitalWrite (led, HIGH);
}
{
digitalWrite (led, LOW);
}
}
// KY-003 цифровой магнитный датчик Холла (Hall)int led = 13 ; // назначение пина светодиодаint hallPin = 10 ; // назначение пина датчикаint value ; // переменная для хранения значения с датчика pinMode (hallPin, INPUT); value = digitalRead (hallPin) ; // чтение значения с датчика if (value == LOW) // когда имеется магнитное поле светодиод горит digitalWrite (led, HIGH); |
Модуль “KY-003” продается как отдельно, так и входит в набор.