![]() |
|
Licznik obrotów czujnik halla - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Czujniki (https://forum.arduinopolska.pl/dzial-czujniki) +--- Wątek: Licznik obrotów czujnik halla (/watek-licznik-obrot%C3%B3w-czujnik-halla) Strony:
1
2
|
Licznik obrotów czujnik halla - poziomka97 - 11-06-2024 Witam, mam problem dotyczący zliczania obrotów czujnikiem halla w arduino. Mam kod który to robi ale jest jeden problem a mianowicie na monitorze portu szeregowego podawane są wartości co 1200 impulsów czyli 1200, 2400, 3600 i tak dalej zamiast normalnie. Kod mam z internetu i ktoś kto to zrobił miał "normalnie" ale u mnie tak niestety nie jest. Czy można to jakoś naprawić ? Z góry dziękuję za pomoc. Kod: #include <Wire.h> RE: Licznik obrotów czujnik halla - oscarX - 12-06-2024 (11-06-2024, 23:45)poziomka97 napisał(a): Witam, mam problem dotyczący zliczania obrotów czujnikiem halla w arduino. Mam kod który to robi ale jest jeden problem a mianowicie na monitorze portu szeregowego podawane są wartości co 1200 impulsów czyli 1200, 2400, 3600 i tak dalej zamiast normalnie. Kod mam z internetu i ktoś kto to zrobił miał "normalnie" ale u mnie tak niestety nie jest. Czy można to jakoś naprawić ? Z góry dziękuję za pomoc. Czysta matematyka - liczysz (a więc liczby całkowite) impulsy w czasie 50ms - 1/20 sekundy. Stąd 1 zliczony impuls odpowiada 1200 (20 * 60) obr/min, 2 - 2400 obt/min itp. Po prostu tyle wynosi rozdzielczość pomiaru. To w sumie jest pomiar częstotliwości - a częstotliwość mierzy się zasadniczo na 2 sposoby - duże częstotliwości mierzy się jak tutaj - w ustalonym czasie liczy się impulsy, a małe mierząc czas jaki upływa pomiędzy dwoma impulsami. Musisz zwiększyć czas czas w jakim impulsy są liczone - to zmienna sampleTime w twoim kodzie. Można też umieścić więcej magnesików - tak by 1 obrót dawał kilka impulsów. RE: Licznik obrotów czujnik halla - poziomka97 - 12-06-2024 (12-06-2024, 00:06)oscarX napisał(a):No dobra działa ale wystąpił kolejny problem. Po zwiększeniu tego czas wydłużyło się też wyświetlanie danych w porcie bo ustawiłem tam 720 ms bo tyle jest potrzebne do uzyskania odpowiednich wartości a zależy mi na tym aby opóźnienie nie występowało w ogóle i wszystko było w czasie rzeczywistym. Może można na tych 50 ms zrobić jakieś inne obliczenie i już nawet zwiększyć maksymalną wartość ? Nie muszą to być dokładne wartości, ważne żeby były w miarę szybko.(11-06-2024, 23:45)poziomka97 napisał(a): Witam, mam problem dotyczący zliczania obrotów czujnikiem halla w arduino. Mam kod który to robi ale jest jeden problem a mianowicie na monitorze portu szeregowego podawane są wartości co 1200 impulsów czyli 1200, 2400, 3600 i tak dalej zamiast normalnie. Kod mam z internetu i ktoś kto to zrobił miał "normalnie" ale u mnie tak niestety nie jest. Czy można to jakoś naprawić ? Z góry dziękuję za pomoc. RE: Licznik obrotów czujnik halla - Jarewa0606 - 12-06-2024 Do takich rzeczy służą timery i icp wtedy było by normalnie i szybko i bez blokad i wyświetlanie nie czasie rzeczywistym. RE: Licznik obrotów czujnik halla - poziomka97 - 12-06-2024 (12-06-2024, 08:59)Jarewa0606 napisał(a): Do takich rzeczy służą timery i icp wtedy było by normalnie i szybko i bez blokad i wyświetlanie nie czasie rzeczywistym.A można to wpisać w kod czy potrzebne są jakieś inne przyrządy ? Bo jeżeli sam kod to lepiej ale i tak nie potrafię tego napisać (
RE: Licznik obrotów czujnik halla - poziomka97 - 12-06-2024 Mam pomysł. A jakby tak z tego kodu wyrzucić funkcje obliczenia RPM i zostawić "gołe" impulsy, które będę miał od razu bo tylko to potrzebuje. Wartość RPM w zasadzie nie jest mi do niczego potrzebna. Dobrze myślę ? Po prostu wyrzucę to: Kod: int countRpm = int(60000/float(sampleTime))*count;RE: Licznik obrotów czujnik halla - Jarewa0606 - 12-06-2024 Przyjże się bo mam projekt na atinny i oleda pomiar prędkości wrzeciona to jak będzie do przeróbki to vi wrzucę zapodam wieczorem. RE: Licznik obrotów czujnik halla - oscarX - 13-06-2024 (12-06-2024, 10:44)poziomka97 napisał(a): Mam pomysł. A jakby tak z tego kodu wyrzucić funkcje obliczenia RPM i zostawić "gołe" impulsy, które będę miał od razu bo tylko to potrzebuje. Wartość RPM w zasadzie nie jest mi do niczego potrzebna. Dobrze myślę ? Ten fragment kodu jest trochę dziwnie napisany, ale nie on decyduje o czasie trwania. Pojedyncze obliczenia zmiennoprzecinkowe, nawet na małym 8-bitowcu zużyją może milisekundę. Użycie ICP jest zdecydowanie najlepszym rozwiązaniem - przede wszystkim przechodzimy na tą drugą metodę pomiaru częstotliwości - przez pomiar okresu - wystarczy jeden obrót by otrzymać wynik. Jednak wtedy nie wiadomo ile potrwa taki pomiar bo jak obroty będą małe może to być nawet kilkukrotnie więcej niż 50ms. 1200 obr/min to 20obr/sec czyli 20 pomiarów na sec - minimalnie to 50ms na pomiar. Zaletą ICP jest fakt, że nie musisz zatrzymywać kodu na czas pomiaru - robote zrobią timery. Wadą - zależnie od typu procka prawdziwe ICP to jedna/kilka konkretna nóżka procka - a więc być może trzeba będzie zmienić połączenia. Np.w ATXmegach można było użyć dowolnego pinu jako ICP. Już sugerowałem użycie drugiego magnesika lub hallotronu. Można pójść dalej i dać więcej, można też też zrobić odczyt optyczny i tarczę z paskami/szczelinami. Nawet można namalować paski na wale. Taką tarczę można zrobić z kliszy fotograficznej - robiąć zdjęcie powiększonemu obrazkowi, wywołując kliszę i wycinając odpowiednie kółko. Przydałby się aparat na duży obrazek 6x6. Sam się trochę zdziwiłem, jak podczas rozbierania drukarki zauważyłem, że napędzana jest nie silnikami krokowymi, a zwykłymi szczotkowymi, ale każdy ma na osi bardzo gęstą tarczę z paskami, umożliwiającą odczyt ze 100 kroków na obrót. To taki odpowiednik przekładni. Taki mechanizm, tylko trochę mniej czuły był stosowany w starych myszkach - takich z kólką, która toczyła się po stole. Była tam zwykle mała (ok 1cm) tarcza ze szczelinami i odpowiednie transoptory szczelinowe. W ten sposób możesz poprawić dokładność i/lub czas pomiaru. RE: Licznik obrotów czujnik halla - poziomka97 - 14-06-2024 (13-06-2024, 16:00)oscarX napisał(a):Generalnie chodzi o to że podpinam arduino pod czujnik obrotów (kabelki podpięte do licznika) w motocyklu. Ten kod który mam działa lecz co 1200 jednostek. Oczywiście aby wykonać jakąś blokadę obrotów (używając przekaźnika wpiętego w czujnik stópki) to wystarczy. Natomiast wymyśliłem licznik cyfrowy z telefonu na androidzie do którego mam zrobioną aplikację w APP Inventorze. Tam do wpisania mam bardzo dokładne wartości bez opóźnień których nie mogę jak narazie uzyskać z portu szeregowego a pomysł z ICP wydaje się sensowny z tym że nie wiem jak mam się do tego zabrać i nawet nie znalazłem żadnych przykładów a z pisaniem tego może być u mnie dosyć spory problem.(12-06-2024, 10:44)poziomka97 napisał(a): Mam pomysł. A jakby tak z tego kodu wyrzucić funkcje obliczenia RPM i zostawić "gołe" impulsy, które będę miał od razu bo tylko to potrzebuje. Wartość RPM w zasadzie nie jest mi do niczego potrzebna. Dobrze myślę ? RE: Licznik obrotów czujnik halla - Jarewa0606 - 14-06-2024 Jaki masz uc bo jednak jest różnica z atinny |