Модуль датчика Холла

Рис. 1. Ефект Холла.1 - Електрони 2 - Пластина 3 - Магніти 4 - Магнітне поле 5 - Джерело струму

Датчик Холла - це датчик магнітного поля. Він був так названий завдяки принципу своєї роботи - ефекту Холла: якщо в магнітне поле помістити пластину через яку протікає струм, то електрони в пластині будуть відхилятися в напрямку, перпендикулярному напрямку струму. У яку саме сторону будуть відхилятися електрони, залежить від полярності магнітного поля.

Різна щільність електронів на сторонах пластини створює різницю потенціалів, яку можна посилити і виміряти, що датчики Холла і роблять.

Аналогові та цифрові датчики Холла

Рис. 2. Модуль датчика Холла

Датчики Холла (далі просто ДХ) бувають аналоговими і цифровими. Аналоговий перетворює індукцію магнітного поля в напругу, знак і величина якої будуть залежати від полярності і сили поля. Цифровий же видає лише факт наявності / відсутності поля, і зазвичай має два порога: включення - коли значення індукції вище порога, датчик видає логічну одиницю; і виключення - коли значення нижче порога, датчик видає логічний нуль. Наявність зони нечутливості між порогами називається гістерезисом і служить для виключення помилкового спрацьовування датчика на всілякі перешкоди - аналогічно працює цифрова електроніка з логічними рівнями напруги. Цифрові ДХ діляться ще на уніполярні і біполярні: перші включаються магнітним полем певної полярності і вимикаються при зниженні індукції поля; біполярні ж включаються полем однієї полярності, а вимикаються полем протилежної полярності.

Вони сумісні з ПЗ Arduino версії 1.0.5 і вище.

Виводи датчика

Вивід; Призначення; Вивід Arduino

  • G; Земля; GND;
  • +; Живлення + 2,3 ... 10 В; 5V;
  • AO; Аналоговий вихід - значення напруженості магнітного поля; A0
  • DO; Цифровий вихід - індикатор перевищення напруженості магнітного поля заданого порогу; 12

Аналогові датчики Холла

Рис. 3. Аналоговий датчик Холла

Розмір - 4х3 мм, є 3 виводи (рис.3).

Живлення датчику потрібно біполярне - тоді на південний полюс магніту датчик реагуватиме позитивним рівнем на виході, на північний - негативним, а на відсутність поля - нульовим. Однак можна обійтися однополярним живленням - в цьому випадку рівень на виході (Vo) в половину напруги живлення (Vdc / 2) буде означати відсутність магнітного поля, Vo> Vdc / 2 - південний полюс, Vo <Vdc / 2 - північний.

Характеристики при однополярному живленні 5 В і температурі від -40 до 85 ° C:

  • Струм: від 6 до 10 мА
  • Вихідний струм: від 1.0 до 1.5 мА
  • Вихідна напруга: від 1.0 до 1.75 мВ / Гс, в середньому 1.4 мВ / Гс (мілівольт на гаус)
  • Нульова точка: від 2.25 до 2.75 В, в середньому 2.5 В
  • Магнітний діапазон: від ± 650 Гс до ± 1000Гс
  • Час відгуку: 3 мс

З цих даних випливає, що при стандартному живленні від Arduino (+ 5V, GND) при 25 ° C датчик за відсутності магнітного поля буде видавати 2.5 В, а на поле силою 1000 Гс - 2.5 ± 1.4 В. Відповідно, якщо скористатися АЦП, розкид значень буде приблизно в діапазоні від 280 до 800 з нульовою точкою в 512.

Підключення аналогового датчика Холла

Підключаємо вивід "+" до 5V Arduino, вивід "-" до GND, останній вивід - до Analog 0 (рис. 4).

Рис. 4. Підключення аналогового датчика Холла до Arduino

Цифровий біполярний датчик Холла

Рис. 5. Цифровий датчик Холла

Виглядає він точно так само, як і аналоговий, навіть виводи розташовані так само (рис. 5).

Біполярний він тільки в магнітному сенсі, а живлення йому можна подавати звичайне, однополярне. Живлення цей датчик приймає в досить широкому діапазоні - від 3.8 до 24 В, а струм може віддавати до 100 мА, що дозволяє безпосередньо від нього живити керовані ним пристрої (наприклад, реле). Чутливість у нього майже така сама, як у аналогового SS49E: від -600 Гс до -1000 Гс (північний полюс магніту) і від 600 Гс до 1000 Гс.

Підключення цифрового датчика Холла

Приклад підключення (Рис.6). Вихід Q підключений до цифрового піну 2, решта - як у аналоговому.

Рис. 6. Підключення цифрового датчика Холла

Застосування

Датчики Холла використовуються в якості безконтактних вимикачів, як заміна герконів, а також:

  • як датчики швидкості обертання - широко використовуються в автомобілебудуванні і всюди, де потрібно визначити швидкість обертання колеса або іншого обертового об'єкта;
  • як датчики наближення;
  • вимір кута повороту;
  • вимір величини вібрації;
  • вимір величини магнітного поля - магнітометри і цифрові компаси;
  • вимір сили струму (змінного і постійного);
  • вимір повітряних зазорів, рівня рідини тощо.

Приклад вимірювання швидкості обертання

За допомогою датчика Холла можна вимірювати швидкість обертання.

RPM (Revolutions per minute) - кількість оборотів в хвилину. Оберти в хвилину - одиниця вимірювання частоти обертання: кількість повних обертів, здійснених тілом (валом, колесом, шківом тощо) навколо фіксованої осі. Використовується для характеристики швидкості обертання механічних компонентів в механізмах і машинах.

Для вимірювання швидкості обертання на диску повинен бути закріплений магніт, який буде впливати на датчик Холла після кожного повного оберту диска. Таким чином, після кожного оберту диска отримуємо імпульс, який можемо трактувати як один оберт.

Програма для Arduino, яка зчитує показання датчика Холла і рахує кількість обертів в хвилину і частоту обертання. При наявності магнітного поля включається світлодіод.

// read RPM

volatile int rpmcount = 0;//see http://arduino.cc/en/Reference/Volatile

int rpm = 0;

unsigned long lastmillis = 0;

void setup(){

Serial.begin(9600);

attachInterrupt(0, rpm_fan, FALLING);//interrupt cero (0) is on pin two(2).

}

void loop(){

if (millis() - lastmillis == 1000){ /*Uptade every one second, this will be equal to reading frecuency (Hz).*/

detachInterrupt(0); //Disable interrupt when calculating

rpm = rpmcount * 60; /* Convert frecuency to RPM, note: this works for one interruption per full rotation. For two interrups per full rotation use rpmcount * 30.*/

Serial.print("RPM =\t"); //print the word "RPM" and tab.

Serial.print(rpm); // print the rpm value.

Serial.print("\t Hz=\t"); //print the word "Hz".

Serial.println(rpmcount); /*print revolutions per second or Hz. And print new line or enter.*/

rpmcount = 0; // Restart the RPM counter

lastmillis = millis(); // Uptade lasmillis

attachInterrupt(0, rpm_fan, FALLING); //enable interrupt

}

}

void rpm_fan(){ /* this code will be executed every time the interrupt 0 (pin2) gets low.*/

rpmcount++;

}

Результат вимірювання швидкості обертання .jpg

Перелік посилань

  1. http://robocraft.ru/blog/electronics/594.html
  2. https://ru.wikipedia.org/wiki/Arduino#Периферия
  3. https://uawest.com/datchik-holla-modul-magnitnogo-polya-dlya-arduino.html
  4. https://arduino.ua/prod1203-modyl-datchika-holla-a3144
  5. https://soltau.ru/index.php/arduino/item/491-kak-podklyuchit-datchik-kholla-49e-k-arduino

Назар Паляниця