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.
----------- 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();
}
--------------
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.
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.
----------- 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();
}
--------------