Obsługa analogowo-cyfrowego czujnika pola magnetycznego w pyMCU

Czujnik Halla, hallotron (lub halotron) to czujnik pola magnetycznego. Pod jego wpływem czujnik ten zaczyna bądź przestaje przewodzić prąd elektryczny (w uproszczeniu). Hallotrony stosuje się w tanich silnikach elektrycznych, czy jako czujniki ruchu, przesunięcia, obrotu itp.

Dla Arduino i innych podobnych płytek dostępne są gotowe moduły z czujnikiem Halla. Ja kupiłem jeden z powszechnie dostępnych chińskich modułów. Można też kupić sam czujnik, ale trzeba zwrócić uwagę czy dany model ma typowe długie nóżki co znacząco ułatwi jego montaż.

Moduł z Hallotronem dla Arduino podłączony do pyMCU
Moduł z czujnikiem Halla w zbliżeniu

Omawiany moduł zawiera cztery wyjścia - GND (-), ACC (+), A0, D0. W przypadku użycia pyMCU GND i ACC podłączamy do gniazd GND i ACC. Żeby odczytywać sygnał cyfrowy podłączamy D0 do D1 na pyMCU. Jeżeli chcemy analogowy to A0 podłączamy do A1 na płytce pyMCU. Żeby to ze sobą połączyć przydadzą się żeńsko-żeńskie i męsko-męskie kable połączeniowe.

Odczyt wartości analogowych przedstawiłem we wcześniejszym artykule. Ten konkretny moduł dawał wartość nieco ponad 200 przy braku pola magnetycznego i praktycznie 0 gdy pole było wystarczająco silne. W przypadku odczytu sygnału cyfrowego mamy 0 przy braku pola i 1 gdy jego natężenie jest wystarczające by uruchomić czujnik. Cyfrowy sygnał można odczytać tak:

import pymcu

mb = pymcu.mcuModule()
mb.digitalState(1, 'input')

while 1:
    if mb.digitalRead(1):
      print 'South'
    else:
      print '.'
Gniazda na pyMCU domyślnie działają jako wyjścia więc by czytać przychodzącą wartość przełączamy ich rolę na wejście za pomocą digitalState. Po tym wystarczy użyć prostego digitalRead. Hallotron reaguje na południowy biegun magnesu, stąd wypisywanie "South" gdy pole magnetyczne uruchomi czujnik.

Na rynku dostępnych jest wiele podobnych prostych czujników-modułów dla Arduino. Większość, jak nie wszystkie da się namówić do współpracy z innymi kontrolerami - takimi jak pyMCU, czy Raspberry (czy też jakaś płytka rozszerzeń do Raspberry). Można oczywiście używać ich także z Arduino - mamy wtedy pewność że to musi wtedy działać. Obsługa innych modułów powinna wyglądać bardzo podobnie do tego. Bardziej złożone (np. wyświetlacze, albo płytki z interfejsem I2C, SPI) korzystają już z innych interfejsów i ich obsługa wyglądać będzie zupełnie inaczej.

RkBlog

Elektronika i Python, 19 June 2013

Comment article
Comment article RkBlog main page Search RSS Contact