Dobór właściwego schematu czujnika Halla zależy przede wszystkim od tego, czy używasz wersji cyfrowej, analogowej czy zestawu sensorów w silniku BLDC. Poniżej pokazuję praktyczne połączenia, rolę rezystora podciągającego, zasady współpracy z Arduino i typowe błędy, przez które układ pozornie „nie widzi” magnesu.
Najważniejsze informacje przed montażem układu
- Typ wyjścia decyduje o sposobie podłączenia czujnika.
- Wyjście typu open collector lub open drain wymaga podciągnięcia do napięcia logicznego.
- Najczęściej stosuje się rezystor 4,7-10 kΩ oraz kondensator 100 nF przy zasilaniu.
- Nie wolno zakładać kolejności pinów bez sprawdzenia noty katalogowej konkretnego modelu.
- Czujnik analogowy daje napięcie zależne od pola, a cyfrowy tylko stan niski lub wysoki.
Od typu czujnika zależy cały schemat
Czujnik Halla wykrywa pole magnetyczne, ale różne układy przekazują tę informację w zupełnie inny sposób. Ja najpierw sprawdzam, czy mam przełącznik cyfrowy, czy sensor liniowy. Dopiero potem dobieram rezystory, sposób odczytu i napięcie zasilania.
| Typ czujnika | Sygnał wyjściowy | Typowe zastosowanie |
|---|---|---|
| Cyfrowy jednobiegunowy | Zmiana stanu po zbliżeniu określonego bieguna | Kontaktron elektroniczny, licznik obrotów |
| Cyfrowy bipolarny | Reakcja zależna od kierunku pola i histerezy | Prędkościomierze, enkodery |
| Cyfrowy zatrzaskowy | Stan zmienia się po jednym biegunie i wraca po przeciwnym | Przełączniki magnetyczne, silniki |
| Cyfrowy omnipolarny | Reaguje na biegun północny i południowy | Detekcja obecności magnesu |
| Analogowy liniowy | Napięcie zmienia się wraz z natężeniem pola | Pomiar położenia, prądu lub kąta |
W opisach modułów Arduino często pojawiają się symbole KY-003 lub KY-024. To gotowe płytki, a nie jeden uniwersalny standard. Moduł może mieć już rezystor podciągający, diodę LED i komparator, podczas gdy sam układ scalony wymaga zbudowania tych elementów osobno.
Największy błąd początkujących polega na traktowaniu każdego trzyprzewodowego elementu tak samo. Trzy piny zwykle oznaczają zasilanie, masę i wyjście, ale ich kolejność, dopuszczalne napięcie oraz sposób reakcji na magnes trzeba sprawdzić dla konkretnego oznaczenia.

Najprostszy schemat cyfrowego czujnika Halla
W najpopularniejszym wariancie czujnik ma wyjście typu otwarty kolektor. Oznacza to, że układ potrafi aktywnie ściągnąć linię sygnałową do masy, ale sam nie wystawia na niej stanu wysokiego. Do tego potrzebny jest rezystor podciągający.
+5 V lub +3,3 V
|
R1 4,7-10 kΩ
|
+---------- SIG do mikrokontrolera
|
OUT czujnika
|
VCC czujnika --------- +5 V lub +3,3 V
GND czujnika ---------------------- GND mikrokontrolera
|
100 nF
|
VCC
Gdy magnes nie działa na sensor, wewnętrzny tranzystor wyjściowy pozostaje wyłączony, a rezystor R1 podciąga sygnał do zasilania. Po wykryciu pola tranzystor przewodzi i na wyjściu pojawia się stan niski. Ta logika bywa odwrotna do intuicji, dlatego przy testach nie zakładam, że „magnes oznacza HIGH”.
Połączenie z Arduino
Dla typowego układu zasilanego napięciem 5 V połączenie wygląda następująco:
| Pin czujnika | Arduino Uno | Znaczenie |
|---|---|---|
| VCC | 5V | Zasilanie zgodne z notą katalogową |
| GND | GND | Wspólna masa |
| OUT | D2 | Wejście cyfrowe |
Jeżeli sensor ma wyjście otwartego kolektora, można użyć wewnętrznego podciągania Arduino:
const byte hallPin = 2;
void setup() {
pinMode(hallPin, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
bool magnesWykryty = digitalRead(hallPin) == LOW;
Serial.println(magnesWykryty ? "Wykryto pole" : "Brak pola");
delay(50);
}
W prostych projektach INPUT_PULLUP zwykle wystarcza. Przy dłuższych przewodach, silnych zakłóceniach lub szybkich impulsach wolę jednak zastosować zewnętrzny rezystor 4,7 kΩ i kondensator 100 nF przy samym sensorze. Daje to bardziej przewidywalne działanie niż poleganie wyłącznie na rezystorze wbudowanym w mikrokontroler.
Jak podłączyć analogowy czujnik Halla
Sensor liniowy nie działa jak przełącznik. Na jego wyjściu pojawia się napięcie zależne od pola magnetycznego. W wielu modelach przy braku pola napięcie znajduje się w pobliżu połowy napięcia zasilania, ale jest to cecha konkretnego układu, a nie zasada obowiązująca dla wszystkich elementów.
+5 V ---------------- VCC
|
100 nF
|
GND ----------------- GND
VOUT ---------------- A0 Arduino
````
W rzeczywistym kodzie trzeba odczytać wartość spoczynkową i dopiero potem interpretować odchylenie. Dla przetwornika 10-bitowego Arduino Uno napięcie 2,5 V odpowiada w przybliżeniu wartości 512, lecz tolerancja sensora, temperatura i magnes mogą przesunąć ten punkt.
Pomiar napięcia i filtracja
Jeżeli odczyt delikatnie „pływa”, nie oznacza to od razu uszkodzenia czujnika. Pole magnetyczne zmienia się wraz z odległością, a przetwornik analogowy reaguje także na zakłócenia z przewodów i zasilacza. Pomaga prosty filtr programowy, na przykład uśrednianie kilku pomiarów.
long suma = 0;
for (int i = 0; i < 16; i++) {
suma += analogRead(A0);
delayMicroseconds(200);
}
int wynik = suma / 16;
Nie przesadzam jednak z filtrowaniem. Zbyt duża liczba próbek poprawia stabilność, ale opóźnia reakcję. Przy pomiarze położenia spokojne uśrednianie ma sens, natomiast przy pomiarze obrotów może zniekształcić impulsy.
Czujnik Halla w pomiarze obrotów i silniku BLDC
Do liczenia obrotów wystarczy jeden sensor cyfrowy i magnes zamocowany na obracającym się elemencie. Każde przejście magnesu obok sensora generuje impuls. Jeżeli na kole znajduje się jeden magnes, częstotliwość impulsów odpowiada liczbie obrotów na sekundę. Przy kilku magnesach trzeba podzielić wynik przez ich liczbę.
Dla przykładu, 10 impulsów na sekundę i dwa magnesy oznaczają 5 obrotów na sekundę, czyli 300 obr./min. Ten szczegół często umyka podczas kalibracji, a wskazania licznika wychodzą wtedy dokładnie dwa razy za wysokie.
W silniku bezszczotkowym BLDC spotyka się zwykle trzy czujniki Halla. Ich sygnały informują sterownik o położeniu wirnika, aby mógł przełączać odpowiednie fazy. Nie należy zamieniać przewodów sygnałowych przypadkowo, ponieważ błędna kolejność może powodować szarpanie, brak startu albo obrót w niewłaściwą stronę.
| Przewód lub pin | Rola | Typowy problem |
|---|---|---|
| VCC | Zasilanie grupy sensorów | Za niskie napięcie lub brak wspólnej masy |
| GND | Wspólny punkt odniesienia | Losowe stany logiczne i zakłócenia |
| H1, H2, H3 | Informacja o położeniu wirnika | Odwrotna kolejność faz lub uszkodzony sensor |
Przed podłączeniem silnika sprawdzam miernikiem, czy każdy sygnał zmienia stan podczas powolnego obracania wałem. To prosty test, który pozwala oddzielić problem czujników od problemu sterownika mocy. Warto też pamiętać, że kąty rozmieszczenia sensorów i tablica komutacji zależą od konstrukcji konkretnego silnika.
Najczęstsze błędy przy budowie układu
Brak rezystora podciągającego
Bez podciągania wyjście otwartego kolektora może pozostawać w stanie nieustalonym. Mikrokontroler odczytuje wtedy przypadkowe zera i jedynki, szczególnie gdy przewód sygnałowy jest długi. Rozwiązaniem jest rezystor 4,7-10 kΩ podłączony do właściwego napięcia logicznego.
Pomylenie poziomów napięć
Arduino Uno toleruje logikę 5 V, ale wiele płytek z ESP32 pracuje z poziomami 3,3 V. Jeżeli podciągniesz wyjście do 5 V i podasz je bezpośrednio na wejście ESP32, możesz uszkodzić mikrokontroler. Rezystor podciągający należy połączyć z 3,3 V, o ile sam sensor i jego wyjście na to pozwalają.
Nieprawidłowy kierunek magnesu
Sensor jednobiegunowy może reagować tylko na biegun południowy albo północny. Wersja bipolarną lub zatrzaskowa również ma określone progi zadziałania i zwolnienia. Obracanie magnesu o 180 stopni jest więc sensownym testem diagnostycznym, a nie przypadkową próbą.
Założenie, że każdy moduł ma ten sam pinout
Układ w obudowie TO-92 może mieć inną kolejność wyprowadzeń niż podobnie wyglądający element innego producenta. Ja zawsze zaczynam od oznaczenia na obudowie i dokumentacji, ponieważ zamiana VCC z GND może zakończyć się natychmiastowym uszkodzeniem sensora.
Przeczytaj również: DHT11 czy DHT22? Porównanie, błędy i wybór czujnika
Brak kondensatora przy zasilaniu
Kondensator ceramiczny 100 nF umieszczony blisko pinów VCC i GND ogranicza krótkie zakłócenia zasilania. Przy silnikach, przekaźnikach i długich przewodach warto dodać także większy kondensator elektrolityczny, na przykład 10-47 µF, przy punkcie zasilania całego modułu.
Jak sprawdzić gotowy schemat krok po kroku
- Odczytaj dokładny symbol czujnika i sprawdź zakres napięcia zasilania.
- Ustal, czy wyjście jest cyfrowe, analogowe, otwartego kolektora czy typu push-pull.
- Połącz masę sensora z masą mikrokontrolera.
- Dodaj rezystor podciągający, jeśli wymaga tego wyjście.
- Umieść kondensator 100 nF przy pinach zasilania.
- Przetestuj działanie najpierw bez obciążenia, obserwując stan na pinie lub napięcie miernikiem.
- Sprawdź reakcję na oba bieguny magnesu i różne odległości.
Jeżeli wyjście cyfrowe stale pokazuje LOW, najpierw odłącz magnes i zmierz napięcie na wyjściu. Gdy nadal jest bliskie zeru, przyczyną może być zwarcie, odwrotne wyprowadzenia albo zbyt duży prąd obciążenia. Gdy napięcie jest poprawne, lecz mikrokontroler nie reaguje, szukam problemu we wspólnej masie, konfiguracji pinu lub poziomach logicznych.
Przy testach z magnesem neodymowym zachowuję rozsądną odległość i nie umieszczam go bezpośrednio na obudowie bez sprawdzenia specyfikacji. Silne pole może nasycić sensor, zmienić punkt przełączania, a w pobliżu innych elementów zakłócić pracę kompasu, przetwornicy lub nośnika magnetycznego.
Najpewniejszy schemat zaczyna się od noty katalogowej
Dobry układ z czujnikiem Halla nie musi być rozbudowany. Dla detekcji obecności magnesu zwykle wystarczy sensor cyfrowy, właściwy rezystor podciągający, kondensator 100 nF i poprawnie podłączona masa. Przy pomiarze siły pola, położenia lub prędkości trzeba już dobrać typ analogowy albo odpowiednią konfigurację impulsową.
Najwięcej problemów nie wynika z samego efektu Halla, lecz z pominięcia drobnych szczegółów: odwróconej logiki, pinoutu, biegunowości magnesu i napięcia wejściowego. Sprawdzenie tych czterech punktów przed uruchomieniem oszczędza znacznie więcej czasu niż późniejsze wymienianie kolejnych modułów na chybił trafił.