Jak podłączyć czujnik Halla? Schemat, Arduino i typowe błędy

Artur Wójcik .

5 listopada 2026

Schemat połączenia Arduino z modułem czujnika wilgotności gleby i modułem czujnika Halla.

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.

Schemat czujnika Halla DRV5055 z Arduino i kondensatorem ceramicznym.

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

  1. Odczytaj dokładny symbol czujnika i sprawdź zakres napięcia zasilania.
  2. Ustal, czy wyjście jest cyfrowe, analogowe, otwartego kolektora czy typu push-pull.
  3. Połącz masę sensora z masą mikrokontrolera.
  4. Dodaj rezystor podciągający, jeśli wymaga tego wyjście.
  5. Umieść kondensator 100 nF przy pinach zasilania.
  6. Przetestuj działanie najpierw bez obciążenia, obserwując stan na pinie lub napięcie miernikiem.
  7. 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ł.

FAQ - Najczęstsze pytania

Czujnik cyfrowy działa jako przełącznik i przekazuje stan niski lub wysoki, natomiast analogowy generuje napięcie zależne od natężenia pola. Przy wyjściu otwartego kolektora potrzebny jest rezystor podciągający 4,7-10 kΩ. Sensor analogowy podłącza się do wejścia analogowego, na przykład A0 w Arduino.
Wyjście typu otwarty kolektor może aktywnie ściągać sygnał do masy, ale samo nie wystawia stanu wysokiego. Rezystor podciągający ustala stan wysoki, gdy czujnik nie wykrywa pola, a po zadziałaniu sensora na wyjściu pojawia się zwykle stan niski. W prostym układzie Arduino można użyć INPUT_PULLUP, ale przy długich przewodach lepszy bywa zewnętrzny rezystor 4,7 kΩ.
VCC i GND łączy się odpowiednio z zasilaniem i masą Arduino, a VOUT z wejściem analogowym, takim jak A0. W wielu sensorach napięcie bez pola jest zbliżone do połowy napięcia zasilania, co dla Arduino Uno może odpowiadać wartości około 512. Pływanie odczytu można ograniczyć przez uśrednianie kilku lub kilkunastu pomiarów, pamiętając, że zbyt silne filtrowanie opóźnia reakcję.
Najpierw odłącz magnes i zmierz napięcie na wyjściu, a następnie sprawdź pinout w nocie katalogowej, wspólną masę, napięcie logiczne i obecność rezystora podciągającego. W silniku BLDC trzeba dodatkowo zweryfikować kolejność sygnałów H1, H2 i H3, ponieważ ich zamiana może powodować szarpanie, brak startu lub niewłaściwy kierunek obrotów. Warto też sprawdzić reakcję na oba bieguny magnesu.
Oceń artykuł

Średnia: 0.0 / 5 · 0 ocen

Tagi

arduino bldc rezystory podciągające efekt halla
Autor Artur Wójcik
Artur Wójcik
Nazywam się Artur Wójcik i od 14 lat zajmuję się elektroniką, robotyką oraz programowaniem. Moje zainteresowanie tymi dziedzinami zaczęło się w dzieciństwie, kiedy to samodzielnie budowałem różne urządzenia i eksperymentowałem z programowaniem. Od tego czasu nieustannie poszerzam swoją wiedzę i umiejętności, co pozwala mi na bieżąco śledzić najnowsze trendy oraz technologie. Piszę o różnych aspektach elektroniki i robotyki, starając się w przystępny sposób wyjaśniać skomplikowane zagadnienia. Zależy mi na tym, aby moje teksty były nie tylko informacyjne, ale także zrozumiałe dla każdego, niezależnie od poziomu zaawansowania. W swojej pracy zawsze dokładam starań, aby weryfikować źródła i porównywać informacje, co pozwala mi dostarczać rzetelne oraz aktualne treści. Wierzę, że dobrze zorganizowana wiedza i klarowne przedstawienie tematów są kluczowe dla zrozumienia elektroniki i robotyki.
Komentarze (0)
Dodaj komentarz