Skocz do zawartości

Programowanie czujnika Halla


ZielonyZeZlosci

Pomocna odpowiedź

Witam.

Mam problem z oprogramowaniem czujnika halla. Posiadam dokładnie coś takiego: https://www.e-biker.pl/czujnik-pas-rapid,3,1090,3128.

Potrzebuję uzyskać z takiego czujnika informacją czy korba w rowerze się obraca. Czyli jeżeli dobrze rozumiem to typu boolean. Tylko nie wiem za chiny ludowe jak do tego się zabrać. Szukałem informacji w czeluściach internetu ale odpowiedzi nie znalazłem. Przydały by się jakieś poradnik nie muszą być w języku polskim, lub gotowy program.

Pozdrawiam.

Link do komentarza
Share on other sites

Na oś suportu zakładasz tarczę z 8 magnesami. Na jeden obrót korby dostaniesz więc z tego czujnika 8 impulsów. Musisz mierzyć czas między kolejnymi impulsami i sam decydować, czy korba obraca się czy już nie. Przy wysokiej kadencji, powiedzmy 160 dostaniesz jakieś 21 impulsów/s (rzadko kto tak jeździ, to raczej na treningach), ale gdy ktoś jest na spokojnej wycieczce po lesie i na dodatek lubi twardsze przełożenia, możesz spodziewać się 2Hz. Napisz program który odmierza czas między impulsami i przy przekroczeniu np. 1s uznaje, że korba przestała się kręcić. Powrót do stanu "pedałujemy" rób po wykryciu min. kilku impulsów w odstępach mniejszych niż np. 500ms.

Link do komentarza
Share on other sites

Link nie działa.

Najpierw polecam sprawdzić czy hallotrony w tym czujniku są analogowe czy cyfrowe. Jak cyfrowe to spoko, będzie ciut łatwiej, jak analogowe to najpierw trzeba by "zrobić" prostokąt a potem sprawdzać czy impulsy się pojawiają. Jeżeli kolejny impuls nie przychodzi przez jakiś czas to znaczy, że korba się nie obraca.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Sprawdziłem czy halotron będzie działał na pinie cyfrowym na przykładzie tego kodu:

const int hallPin = 8;
const int ledPin = 13;

int hallState = 0;


void setup(){
 pinMode(hallPin, INPUT);
 pinMode(ledPin, OUTPUT);
 digitalWrite(hallPin, HIGH);
}

void loop(){
 hallState = digitalRead(hallPin);


if (hallState == HIGH){
   digitalWrite(ledPin, LOW);
 }
 else{
   digitalWrite(ledPin, HIGH);
 }
}

Czyli muszę teraz jakoś muszę zliczyć ilość impulsów. W tedy gdy zliczy mi 8 impulsów to korba się obraca i na wyjściu będę miał 1, a przy przerwie np 1s już nie kręci się i wartość jest równa 0.

Link do komentarza
Share on other sites

Nie musisz zliczać do 8. Musisz ciągle liczyć czas jaki minął od ostatniego impulsu. Gdy następny impuls przyjdzie w czasie krótszym niż ileśtam, korba się kręci. Gdy czas będzie dłuższy a impulsu wciąż nie będzie, uznajesz, że stoi. Zastanów się co dokładnie znaczy dla Ciebie "kręci się" i do czego tego potrzebujesz. Czy zrobione pół obrotu to już tak czy jeszcze nie? A czy obracanie z prędkością 1 obr/s to obracanie czy zatrzymanie? A jeden obrót na 2 sekundy? itd.

Co to w ogóle będzie za urządzenie?

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.