logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak zliczać impulsy z czujnika HAL AH49E w Arduino dla CNC?

SALLDHMF 13 Lip 2019 13:34 3462 12
REKLAMA
  • #1 18058618
    SALLDHMF
    Poziom 5  
    Posty: 12
    Pracuję nad pomiarem faktycznej prędkości wrzeciona w małej obrabiarce CNC.

    Moduł to WiFi Lora 32 V2 (https://heltec.org/project/wifi-lora-32/). Czujnik HAL to moduł Waveshare AH49E - https://botland.com.pl/pl/czujniki-pradu/4494-czujnik-halla-ah49e-modul-waveshare.html, schemat modułu - https://www.waveshare.com/w/upload/2/28/Hall-Sensor-Schematic.pdf. IDE Arduino.
    Dla testów przygotowałem banalny kod: Przez jedną sekundę przez przerwania mają być zliczane impulsy z cyfrowego wyjścia modułu Waveshare Halla AH49E (ma zarówno wyjście analogowe, jak i cyfrowe). Potem, wyłączam przerwania i wyświetlam liczbę zliczonych impulsów. W docelowym programie policzę sobie RPM. Na początek wystarczy mi liczba impulsów na sekundę.

    Dla sprawdzenia działania kodu podłączam do wejścia modułu sygnał z generatora przebiegu prostokątnego. Sygnał ma częstotliwości kilkuset Hz. To częstotliwość zbliżona do tej którą będzie dawał czujnik zamocowany na wrzecionie. Kod działa idealnie. Bez problemu zmieniając częstotliwość z generatora mogę mierzyć "prędkość" od kilkuset do kilkudziesięciu tysięcy RPM. Pięknie.

    Niestety pięknie nie jest. :-( Problemy zaczynają się, gdy zamiast generatora, podłączam do ESP 32 (GPIO 17) czujnik HAL.

    Zrobiłem dwie próby z tym samym smutnym wynikiem:

    1) Czujnik zamocowany jest blisko magnesu przyklejonego do skrzydełek wentylatora z PC.

    2) Czujnik zamocowany przy wrzecionie CNC

    Wyniki pokazywane przez program są bardzo zmienne. Zmieniają się z sekundy na sekundę np. między 780, a 1140 zliczonych w czasie jednej sekundy impulsów mimo pozornie stałej prędkości obrotowej wentylatora lub wrzeciona. W to, że wentylator obraca się nierównomierna jeszcze bym dał sobie wmówić, ale wrzeciono sterowane falownikiem raczej ma stałą prędkość obrotową. Amplituda sygnału z generatora i modułu HAL jest taka sama.

    Mój zabawkowy oscyloskop pokazuje, że sygnał narasta powoli, ale opada szybko.

    Załączam dwa obrazki. Jeden pokazuje wyniki na konsoli IDE Arduino dla przebiegu prostokątnego i sam przebieg na ekranie mojego zabawkowego oscylo0skopiku, drugi wyniki wypisywane co sekundę gdy do ESP podłączony jest czujnik HAL i przebieg z cyfrowego wyjścia modułu z czujnikiem HAL. Nawet na ekranie oscyloskopiku odczytywana częstotliwość nie jest stała.

    Czy ktoś może pomóc? Gdzie może być błąd? Nie podoba mi się kształt "cyfrowego" sygnału z modułu czujnika. Może przenieść ten post na jakieś inne forum bliższe elektronice czyli czujnikowi Hal.

    Jak zliczać impulsy z czujnika HAL AH49E w Arduino dla CNC? Jak zliczać impulsy z czujnika HAL AH49E w Arduino dla CNC?


    ----------- Kod -----------
    int hallsensor = 17;
    volatile long ticks = 0;

    void pick() {
    ticks++;
    }

    void setup() {
    Serial.begin(9600);
    pinMode(hallsensor, INPUT_PULLUP);
    attachInterrupt(digitalPinToInterrupt(hallsensor), pick, FALLING);
    }

    void loop() {
    delay(1000);
    sei();
    Serial.println(ticks);
    ticks=0;
    cli();
    }
    --------------
  • REKLAMA
  • #2 18058700
    Konto nie istnieje
    Poziom 1  
  • #3 18058703
    rb401
    Poziom 39  
    Posty: 3000
    Pomógł: 750
    Ocena: 980
    SALLDHMF napisał:
    Gdzie może być błąd? Nie podoba mi się kształt "cyfrowego" sygnału z modułu czujnika.


    Moim zdaniem w użyty w module komparator jest obciążony stosunkowo dużą opornością na wyjściu. A ponieważ LM393 ma wyjście open kolektor to te zbocza narastające, które widzisz, są łagodne bo tu działa tylko opornik do plusa. Można spróbować między wyjście modułu a plus jego zasilania dodać opornik i obserwować jak się kształt polepszy.

    Ale tak w ogólności to do tego zastosowania lepszy byłby czujnik halla nie liniowy a cyfrowy, zintegrowany z przerzutnikiem schmitta. Choćby coś takiego:

    https://botland.com.pl/pl/czujniki-magnetyczn...ik-halla-pola-magnetycznego-iduino-se054.html
  • #4 18058775
    SALLDHMF
    Poziom 5  
    Posty: 12
    Kocham fora. Dziękuję za Wasze odpowiedzi.

    Czujnik zasilam 3.3V z modułu z ESP.

    W Botlandzie nie rozpoznałem różnicy między tymi czujnikami. Przy kupionym było napisane "Cyfrowy sygnał wyjściowy", więc uwierzyłem w to, że będzie cyfrowy ;-). Cena Iduino SE054 to niecałe 5 zł., więc Botland zaraz będzie miał klienta :-).

    A może sięgnąć po jeszcze inny czujnik? Zależy mi na precyzyjnym pomiarze. Teraz już moje zaufanie do takich czujników "lekko" zmalało.
  • REKLAMA
  • #5 18058836
    rb401
    Poziom 39  
    Posty: 3000
    Pomógł: 750
    Ocena: 980
    SALLDHMF napisał:
    W Botlandzie nie rozpoznałem różnicy między tymi czujnikami.


    Nie martw się bo sam Botland chyba nie za bardzo czyje różnicę między liniowymi a cyfrowymi.
    Na przykład to:

    https://botland.com.pl/pl/czujniki-pradu/1429...ul-z-czujnikiem-halla-pola-magnetycznego.html

    Gdzie na zdjęciu ewidentnie widać symbol na czujniku "49E" czyli liniowy (ten sam co na Twoim module) i brak opornika R1 potrzebnego przy cyfrowych, a sprzedają to jako cyfrowe.


    SALLDHMF napisał:
    Czujnik zasilam 3.3V z modułu z ESP.


    Tu bardzo ważna kwestia. Moduł cyfrowy, który ci dałem za przykład wcześniej z czujnikiem A3144 (lub odpowiednikiem o tym samym numerze) ma katalogowy zakres zasilania 4,5...24V.
    Dlatego na 3,3V zasilania się w zasadzie nie nadaje. Ale jeśli tylko masz w urządzeniu dostępne np. 5V to z racji że sam czujnik ma wyjście open kolektor, to można zasilić czujnik 5V a na wyjściu podpiąć opornik podciągający do 3,3V i będzie wszystko całkowicie poprawnie:

    Jak zliczać impulsy z czujnika HAL AH49E w Arduino dla CNC?

    Jeśli nie masz 5V to kwestia się komplikuje bo trzeba by znaleźć czujnik cyfrowy halla pracujący przy 3,3V. Ale tak z głowy Ci nie podam w tej chwili typu bo trzeba wyszukiwać i sprawdzić dostępność, ceny itp. . Z pięciowoltowymi nie ma problemu bo wiadomo jakie są tanie i łatwe do kupna.
  • REKLAMA
  • #6 18058864
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #7 18058867
    SALLDHMF
    Poziom 5  
    Posty: 12
    Znalazłem jeszcze jeden:
    https://botland.com.pl/pl/grove-czujniki-prad...html?search_query=Czujnik+halla+gro&results=5

    https://www.seeedstudio.com/Grove-Hall-Sensor-p-965.html.

    Czujnik A1101.

    Dodano po 9 [minuty]:

    Że ESP ma wbudowany czujnik Hall wiem, tylko nie przystawię go do wrzeciona :-).

    Całość układu jest już bardzo zawansowana, a jest dużo bardziej skomplikowana niż tylko tachometr. Jeden ESP jest przy CNC obsługuje odczyt i wysyła informacje do drugiego, znajdującego się w bezprzewodowej konsoli do frezarki. Głównym zadaniem całości jest reagowanie na spadek prędkości wrzeciona. Pracuję w drewnie, a ono nie jest jednorodne. Czasem trzeba zwolnić posów, by nie zatrzymać wrzeciona, którego moc jest mała. Teraz robię to ja sam jako "biologiczna przystawka" do CNC :-). Jak nie znam jeszcze deski, czy gatunku drewna dostosowuje prędkość posuwu do danego kawałka drewna. Ale ja mam ciekawsze zajęcia :-).

    Tomasz

    Dodano po 10 [minuty]:

    A. Oczywiście mam dostępne 5V. Byle czujnik nie dawał na wyjściu 3,8V, a taka informacja jest na stronie: http://www.openplatform.cc/index.php/home/index/details/apiid/196. ESP nie lub dostać więcej niż 3.3V. Nie sprawdzałem wartości granicznych, ale nie będę ich testował.
  • #8 18059064
    TvWidget
    Poziom 38  
    Posty: 4386
    Pomógł: 471
    Ocena: 691
    Sprawdź czy ten czujnik nadaje się do takich częstotliwości jak potrzebujesz.
    Impulsy zliczaj przy pomocy sprzętowego licznika a nie w przewianiu.
  • #9 18059220
    SALLDHMF
    Poziom 5  
    Posty: 12
    Co masz na myśli pisząc sprzętowy licznik?
  • #10 18059269
    rb401
    Poziom 39  
    Posty: 3000
    Pomógł: 750
    Ocena: 980
    SALLDHMF napisał:
    Byle czujnik nie dawał na wyjściu 3,8V, a taka informacja jest na stronie


    To napięcie wynika nie z własności samego czujnika a tylko z tego że na module wyjście czujnika jest połączone z +5V przez opornik i diodę LED (czerwoną), która ma spadek w kierunku przewodzenia 1,2V (stąd 5V-1,2V=3,8V).
    Ale tym się nie przejmuj, bo i tak do Twoich celów trzeba ten moduł nieco zmodyfikować.
    Tu jest schemat tej płytki oznaczanej u sprzedawców symbolem SE054 (stosowanej i do czujników liniowych i do cyfrowych). Poniżej w konfiguracji z czujnikiem cyfrowym (dla czujników liniowych płytka jest ta sama tylko nieobsadzone są miejsca na opornik i LED):
    Jak zliczać impulsy z czujnika HAL AH49E w Arduino dla CNC?
    źródło: http://www.okaauto.com/HallSensorD.html

    Tu widać też wyraźnie skąd się bierze akurat te 3,8V.
    Dla Twoich potrzeb, musisz tylko wymontować tą diodę LED a do jednego z pól lutowniczych tej diody (tego które jest połączone do opornika) dolutować przewód który pójdzie do 3,3V.
    I wyjdzie schemat dokładnie jak narysowałem wcześniej. Gdzie stan wysoki będzie równy 3,3V.




    SALLDHMF napisał:


    Ten moduł Cię nie ratuje bo czujnik A1101 ma katalogowo minimum zasilania 3,8V czyli i tak za dużo. Po za tym dla Ciebie może wygodniejszy jest czujnik w obudowie przewlekanej jak w tym innych modułach, bo w razie czego można przygiąć lub nawet bez większego kłopotu przedłużyć przewodami. A ten SMD dużo trudniej razem z płytką gdzieś przyłożyć. Po za tym moduł przesadnie drogi.
  • #11 18059292
    SALLDHMF
    Poziom 5  
    Posty: 12
    Założyłem, że A1101 zasilę z 5V.

    SMD jest zdecydowanie kłopotliwe.

    A rozwiązanie ze zmodyfikowaniem SE054 jest zdecydowanie warte uwagi.

    Dzięki rb401
  • #13 18059415
    SALLDHMF
    Poziom 5  
    Posty: 12
    Ups. No tak, oczywiście. A ja pomyślałem o sprzęcie zakładanym na wrzeciono. :-)

Podsumowanie tematu

✨ Użytkownik pracuje nad pomiarem prędkości wrzeciona w obrabiarce CNC, wykorzystując czujnik HAL AH49E oraz moduł WiFi Lora 32 V2. W kodzie Arduino zlicza impulsy z cyfrowego wyjścia czujnika przez przerwania. W odpowiedziach poruszono kwestie zasilania czujnika, różnice między czujnikami liniowymi a cyfrowymi oraz sugestie dotyczące użycia sprzętowego licznika do zliczania impulsów. Użytkownik rozważa również inne czujniki, takie jak A3144 i A1101, oraz modyfikacje istniejącego modułu SE054 dla lepszej precyzji pomiaru.
Wygenerowane przez model językowy.
REKLAMA