Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Arduino program do serva i czujnika halla

DjSixteen 28 Lut 2018 16:41 1395 38
  • #1 28 Lut 2018 16:41
    DjSixteen
    Poziom 5  

    Witam, Ostatnio zrobiłem zakupy min; arduino uno klon, servo oraz czujnik halla. Cała płytka fajnie działa na testowych bibliotekach.
    Teraz mam problem otóż potrzebne mi są wasze rady bądź ktoś kto napisze mi program do mojego regulatora. Samym wyzwaniem było dla mnie skonfigurowanie tej płytki z komputerem bo zajęło mi to ponad 5 godzin hah. Cała idea polega na tym aby regulator za pomocą serva oraz zliczonych obrotów z czujnika halla utrzymywał mi obroty mimo obciążenia, czyli kolokwialnie dodawał gazu. Nie mam zielonego pojęcia od czego mam zacząć gdzie zamocować najlepiej ten czujnik. Bardzo proszę o pomoc, za program który będzie śmigał jestem w stanie zapłacić. :)
    wstawiam zdj czujnika:

    0 29
  • Pomocny post
    #2 28 Lut 2018 23:58
    emarcus
    Poziom 35  

    DjSixteen napisał:
    ........... aby regulator za pomocą serva oraz zliczonych obrotów z czujnika halla utrzymywał mi obroty mimo obciążenia, czyli kolokwialnie dodawał gazu. Nie mam zielonego pojęcia od czego mam zacząć gdzie zamocować najlepiej ten czujnik. Bardzo proszę o pomoc,


    Zacznij od podzielenia projektu na dwa segmenty:
    Jeden: to utworzenie formalnego tachometru (miernika obrotów) z wykorzystaniem czujnika Halla
    Drugi, kontrola serwa wynikami z tachomeru.
    Przy opracowywaniu tachometru, musisz zwrócic uwagę na rodzaj posiadanego czujnika Halla. W zasadzie nie jest tu potrzebny „czujnik” w sensie urządzenia analogowego lecz zwyczajny „Hall Efect Switch”; - mam nadzieję że takim dysponujesz.
    To jeszcze nie wszystko w tej materii. Zależnie od posiadanego modelu tego ‘Switcha’ mozesz spotkac sie z kilkoma jego odmianami, które mogą wpłynąc na konstrukcję mechaniczną jego zamontowania względem wirujacego wału urzadzenia pędnego z magnesem.
    W handlu masz dostępne trzy typy tych sensorów: uni-polarny, bi-polarny oraz omni-polarny.
    Jedne załaczaja i wyłaczaja obwód na skutek zmian wartości indukcji magnetycznej (z pewną histerezą) niezaleznie od polaryzacji; gdzie zbliżenie/oddalenie zarówno bieguna N jak i S powoduje załaczenie/wyłaczenie obwodu (czyli uzyskujesz impuls)./
    Inne bedą reagowac tylko na jeden biegun aby załączyc, natomiast wymagają zmiany biegunowosści pola magnetycznego aby go wyłaczyc.
    Trzecia grupa funkcjonuje podobnie do pierwszej ale tylko przy polaryzacji dodatniej, czyli pod wpływem zmian pola ‘S’.

    Nie poprawnie zastosowany układ mechanicny i z nim związany programming, moze powodowac podwójne wystepowanie/zliczanie impulsów, lub ich brak w ogóle. Musisz znac typ sensora; bądż to z jego oznaczenia, bądź określic experymentalnie....
    Druga faza projektu jest trywialnie prosta: zmapujesz zmiany w wysterowaniu serva w zależności od RPM zmierzonych/wyznaczonych w pierwszej fazie.
    Tu jednak musisz zwrócic uwagę na wprowadzenie ograniczenia kątowego ruchu serva, wynikające z autentycznych warunów/konstrukcji mechanicznej istniejącego układu.
    Zwyczajnie, pełny zakres serva RC przyjmuje się na ok 180 st. Zaleznie od zastosowania i zamontowania może to byc: -90 i +90.
    Ty mozesz sobie pozwolic na zakres nie większy niz 60 stopni, gdzie przesunięcie łącznika aktywujące „dodanie gazu”w funkcji kąta nie będzie liniowe. (Czy wymagana jest liniowośc?).

    e marcus

    0
  • #3 01 Mar 2018 09:46
    DjSixteen
    Poziom 5  

    Dzieki za zainteresowanie moim postem. Myślę nad zastosowaniem jednego z nich wolał bym ten z wyświetlaczem tylko czy z niego będę mógł pobrać sygnał ?


    Co do cięgła zrobię sobie je na dwóch przegubach więc servo jak najbardziej mi pasuje.

    0
  • Pomocny post
    #4 01 Mar 2018 17:24
    emarcus
    Poziom 35  

    DjSixteen napisał:
    Myślę nad zastosowaniem jednego z nich wolał bym ten z wyświetlaczem tylko czy z niego będę mógł pobrać sygnał ?

    Oczywiście, W tym czujniku metalowym masz wbudowany układ halla oraz magnes, przez co nie jest on wymagany jako element aktywujący. Wystarcza tu zwykły objekt metalowy o charakterze ferro-magnetycznym (stalowy).
    Jak to działa(?) Jest temat na inny post....
    Obecnośc tego przedmiotu w zasięgu obszaru sensytywnego, powoduje zamknięcie obwodu, co zatem idzie ‘masz impuls’ na przewodzie wyjściowym. Co naturalnie jeszcze nie jest tachometrem. Pozostała /(zasadnicza) częśc układu tego tachometru jest umieszczona w obudowie z wyświetlaczem, która prawdopodobnie zawiera jakiś uControlller przetwarzajacy te impulsy na RPM i steruje wyświetlaczem. Jeżeli to jest masowo produkowany 'chiński produkt', to processor i program w nim nie jest znany i nie zawiera standardowej obudowy, a jest pokryty na płytce drukowanej dużą kroplą epoxy przypominającej z wyglądu 'blop' smoły.
    Czy jest możliwośc wpięcia się gdzieś w ten układ aby odczytac gotową wartośc RPM?
    Prawdopodobnie NIE(!). Z multiplexowanego wyjścia do wielocfrowego LED nie jest praktycznie sensowne odwzorowanie pierwotnej wartości. Zatem niezależnie od wyświetlacza potrzebowałbys ten proces rachunkowy ‘powielic’ w swoim układzie i wykorzystac własną wartośc RPM do sterowania servem. Inaczej mówiąc; dla swojego układu wykorzystasz tylko ten sensor w metalowej obudowie, montując go gdzieś w bliskim sąsiedztwie wirującego metalowego kształtowego objektu, który cyklicznie będzie w zasięgo sensora. Może to byc stalowa tarcza z wyciętymi oknami lub też rodzaj koła zębatego. Z ilości tych okien/zębów na obwodzie oraz czasu wyliczysz RPM.

    e marcus

    0
  • Pomocny post
    #5 01 Mar 2018 17:50
    ghost2000
    Poziom 18  

    emarcus napisał:
    Z multiplexowanego wyjścia do wielocfrowego LED nie jest praktycznie sensowne odwzorowanie pierwotnej wartości

    To sie da dość łatwo zrobić ale na pewno lepiej wykorzystać sam czujnik i swój uC.

    0
  • Pomocny post
    #6 01 Mar 2018 18:10
    TvWidget
    Poziom 31  

    Sprawa nie jest taka prosta. To co chcesz zrealizować nazywa się regulatorem PID. Zwróć uwagę, że silnik zmienia obroty stosunkowo wolno. Regulator musi to uwzględniać. Nie można więc zrobić prostej pętli sprzężenia zwrotnego typu dodawaj gazu aż osiągnięta zostanie odpowiednia prędkość.
    https://pl.wikipedia.org/wiki/Regulator_PID

    0
  • #7 01 Mar 2018 19:27
    DjSixteen
    Poziom 5  

    Miło mi że wzrosło zainteresowanie moim postem. A więc temat bardzo podobny nawet taki sam był już przerabiany pod tym linkiem i w zasadzie od niego pochodzi cały mój pomysł jednak dla takiego laika jak ja w tym temacie Arduino musi być to niestety wytłumaczone dogłębniej link niżej

    https://www.elektroda.pl/rtvforum/viewtopic.php?p=16579942#16579942

    Okej, mam w silniku koło zamachowe na którym są umieszczone zęby (jest to część gdzie rozrusznik odpala silnik) czyli idąc moim zrozumieniem kupuje czujnik halla matuje go przy tym kole z trybami, czujnik podłączam do Arduino i zapisuje te informacje które płyną mi z czujnika ? Dobrze to rozumiem ?

    Jeżeli dobrze to zrozumiałem to mam jeszcze takie pytania co do podłączenia czujnika nie powinienem mieć żadnych kłopotów jednakże

    Jak sczytać te informacje z podłączonego czujnika do Arduino ?

    No i jaki polecacie mi czujnik do tego ponieważ muszę zrobić zakupy z waszych postów wynika :) bardzo bym był wdzięczny za link czujnika :)

    Ja znalazłem taki co wy o nim sądzicie czy będzie się nadawał ?

    0
  • Pomocny post
    #8 01 Mar 2018 19:59
    TvWidget
    Poziom 31  

    Jeśli koło jest stalowe to sam czujnik Halla nie wystarczy. Potrzebny jest jeszcze niewielki magnes.
    Czujnik wygeneruje impuls gdy przesunie się obok niego ząb koła zamachowego. Takie impulsy zwykle się zlicza w jednostce czasu lub mierzy się czas pomiędzy nimi. Może to robić np. Arduino.
    Jeśli chcesz coś kupić to najpierw zastanów się w jakich warunkach ma pracować czujnik. To co na zdjęciu nadaje się do pracy tylko w suchym pomieszczeniu gdzie temperatura jest w miarę stała.

    0
  • #9 01 Mar 2018 20:57
    DjSixteen
    Poziom 5  

    Właśnie, mam dwie myśli na ten moment skoro jest to silnik od forda transit to w sumie takowy silnik musiał już mieć gdzieś oryginalnie zapakowany taki czujnik halla ale teraz pytanie gdzie go szukać i czy jeszcze działa 😮😑

    Druga opcja to kupienie takiego obrotomierza jak wyżej w moim poście z wyświetlaczem wyświetlacz wywalić a użyć samego czujnika on jest trwały a wiem to bo miałem zamątowany takowy przy tokarce gdzie pracował w różnych warunkach hmm 😒

    0
  • #10 02 Mar 2018 17:40
    emarcus
    Poziom 35  

    DjSixteen napisał:
    Właśnie, mam dwie myśli na ten moment skoro jest to silnik od forda transit to w sumie takowy silnik musiał już mieć gdzieś oryginalnie zapakowany taki czujnik halla ale teraz pytanie gdzie go szukać i czy jeszcze działa 😮😑


    Czy był/jest zainstalowany, to zależy z którego roku produkcji pochodzi ten silnik, oraz jego rodzaj. Jeżeli produkcja tego silnika pochodzi z lat przed 1980 to z pewnością tej technologii w mechanice pojazdowej nie stosowano.
    W późniejszych latach, z rozwojem i stosowaniem elektronicznego zapłonu pojawiły się sensory dla określenia położenia wału korbowego (CrankShaft Position Sensor) , a także takim/podobnym przełącznikiem zastąpiono mechaniczny ("platynki") lub indukcyjny ('PickUp Coil') układ przerywacza w aparacie zapłonowym.
    Z czasem też wprowadzono elektronicznie sterowane wtryski paliwa i pojawiły się towarzyszące sensory polożenia wałka rozrzadu ("CamShaft Position Sensor").
    Jeżeli ten silnik jest s. wysokoprężnym (diesel) z dawnych lat, to jest szansa ze takiego sensora nigdy nie posiadał.
    DjSixteen napisał:

    Druga opcja to kupienie takiego obrotomierza jak wyżej w moim poście z wyświetlaczem wyświetlacz wywalić a użyć samego czujnika on jest trwały a wiem to bo miałem zamątowany takowy przy tokarce gdzie pracował w różnych warunkach hmm 😒

    Zastosowanie opcji drugiej:
    Zaleznie od wymiarów gabarytowych (średnicy) czujnika oraz jego czułości a także odstępów pomiędzy zębami kola rozrusznika, moze byc sytuacja że nie uzyskasz odpowiednio długiej przerwy aby sygnał z sensora zmienił stan na przeciwny.
    Niektóre, podobne sensory mają wbudowaną regulacje czułości a także wymagają/umożliwiają pewnej określonej orientacji względem kierunku przesuwanego objektu metalowego (tu płaszczyzny rotacji koła z zębami), po to aby 'efektywnie zawęzic' szerokośc pola oddziaływania magnetycznego na sensor mimo cylindrycznej obudowy sensora.

    W obecnie stosowanych pojazdach samochodowych, wcześniej wymienione sensory połozenia wału korbowego otrzymuja impuls nie z koła zębatego rozrusznika, lecz ze specjalnej tarczy z obrzeżem cylindrycznym ('flexplate') w której wycięte okna w nieregularnych odstępach, pozwalaja określic nie tylko prędkośc obrotową a także położenie tego wału względem GMP/DMP.

    e marcus

    0
  • #11 03 Mar 2018 12:16
    jaclew
    Poziom 16  

    DjSixteen napisał:
    silnik musiał już mieć gdzieś oryginalnie zapakowany taki czujnik halla ale teraz pytanie gdzie go szukać

    Zapytaj o to na dziale samochodowym, tam są spece od silników na pewno coś doradzą, a tu raczej nie zaglądają.

    DjSixteen napisał:
    z wyświetlaczem wyświetlacz wywalić a użyć samego czujnika

    bez sensu kupić całość a potem wywalić połowę. Możesz przecież kupić sam czujnik.
    Tu mam jednak wątpliwości czy tu jest czujnk Halla czy indukcyjny...

    0
  • #12 03 Mar 2018 19:26
    DjSixteen
    Poziom 5  

    Bardzo fajnie że mi wszytko tłumaczycie tylko mi bardzo zależy na czasie nawet jak bym do końca nie wiedział jak to działa a by działało to bym był w 100% spełniony 😁 szukam osoby która rozpisze dokładnie mi taki projekt jak już wspomniałem jestem skłonny zapłacić. A więc wstawiam wam kilka fotek mojego silnika (agregatu ) i czekam może ktoś będzie miał jakiś fajny pomysł :)

    0
  • Pomocny post
    #13 03 Mar 2018 20:25
    jaclew
    Poziom 16  

    Mieć fajny pomysł na umieszczenie czujnika i dobranie jego typu to jedna sprawa. To bardziej kwestia mechaniki i nikt Tobie nie doradzi tego na 100% nie mając dostępu do tego silnika.
    Można tu tylko teoretyzować jak wyżej.
    Druga sprawa to napisanie programu pod wybrane konkretne już rozwiązanie z czujnikiem.
    Gdy będziesz miał już dobrany czujnik, podasz ile impulsów na obrót on daje, w jakim zakresie serwo ma reagować itp. to napisanie programu nie będzie już problemem.
    Chętnie wtedy pomogę ogarnąć kod. Za darmo :)

    0
  • #14 03 Mar 2018 20:43
    DjSixteen
    Poziom 5  

    Okej, na ogół czujniki nie są drogie i zakupie kilka różnych typów wszystkie przetestuję i wtedy będę miał pewność, w moim przypadku pozostaje metodą prób i błędów 😁. Wiadomo też że te sterownie nie musi być bardzo bardzo dokładne bo wiadomo chwilowa zmiana Hz dla silnika 3 fazowego nie jest taka tragiczna a do bardziej wymagających sprzętów mam już w posiadaniu (tylko muszę umieścić ) stabilizator napięcia :)

    0
  • #15 03 Mar 2018 21:24
    TvWidget
    Poziom 31  

    DjSixteen napisał:
    Wiadomo też że te sterownie nie musi być bardzo bardzo dokładne bo wiadomo chwilowa zmiana Hz dla silnika 3 fazowego nie jest taka tragiczna a do bardziej wymagających sprzętów mam już w posiadaniu (tylko muszę umieścić ) stabilizator napięcia :)

    Czy robisz agregat prądotwórczy ? Jeśli tak to do pętli sprzężenia zwrotnego lepiej jest użyć częstotliwości generowanej przez prądnicę.

    0
  • Pomocny post
    #17 03 Mar 2018 22:10
    TvWidget
    Poziom 31  

    Chciałeś użyć czujnik Halla do pomiaru prędkości silnika. Nie jest on potrzebny. Zamiast niego lepiej jest użyć częstotliwości napięcia wytwarzanego przez prądnice. Zawiera ona identyczną informacje o prędkości silnika jak impulsy z czujnika Halla.
    Pętla sprzężenia zwrotnego w tym wypadku oznacza dodaj więcej gazu gdy częstotliwość napięcia spada.

    0
  • #18 03 Mar 2018 22:23
    ghost2000
    Poziom 18  

    Gdyby od razu było wiadomo, że chodzi o agregat, to wątek miałby jakieś 12 postów mniej. Niestety, na Elektrodzie jest taka moda na tajną tajność.

    1
  • #19 04 Mar 2018 00:54
    DjSixteen
    Poziom 5  

    Zrobiłem taki wątek i zero odpowiedzi więc poszedłem w ta stronę mówisz że by pobrać to z częstotliwości prądu prądnicy hmmm był by to dobry pomysł ale jak to połączyć ze sobą jakieś dokładne informacje, tak pobocznie dodam że prądnica to RolStal 16kw

    0
  • #20 04 Mar 2018 09:07
    ghost2000
    Poziom 18  

    DjSixteen napisał:
    ale jak to połączyć ze sobą jakieś dokładne informacje

    A jak się mierzy częstotliwość sieci 230V?
    Jak agregat ma rozrusznik to i układ jego ładowania. Jak ładowanie to alternator. Tu też można mierzyć częstotliwość a jest łatwiej bo mamy niskie napięcie.

    0
  • #21 04 Mar 2018 11:27
    DjSixteen
    Poziom 5  

    No z tego co mi wiadomo to miernikiem bądź hercomierzem tak? Okej teraz powiedz mi jak by to wyglądało co zastosować do Arduino żeby mało informacje o tych Hz.

    Z każdym zadanym pytaniem myślę sobie że raczej jest to rzecz której nigdy nie zrobię haha tracę nadzieję 😊

    0
  • #22 04 Mar 2018 12:15
    ghost2000
    Poziom 18  

    DjSixteen napisał:
    Okej teraz powiedz mi jak by to wyglądało co zastosować do Arduino żeby mało informacje o tych Hz.

    Szukaj pod hasłem miernik częstotliwości. Tego dla Arduino jest sporo. W praktyce mierzony będzie czas (okres sygnału).

    Dodano po 2 [minuty]:

    DjSixteen napisał:
    hercomierzem

    Za "hercomierz" to szkole od razu lufa. Podobnie jak "centytometromierz", "jasnomierz" itp. Fantazja ludzka nie zna granic.

    Dodano po 43 [sekundy]:

    DjSixteen napisał:
    Z każdym zadanym pytaniem myślę sobie że raczej jest to rzecz której nigdy nie zrobię

    Też mam takie odczucie.


    Jaki kolega ma sprzęt?
    Jaki oscyloskop? W częstotliwościomierzu jest analogowy układ wejściowy.
    Jak oscyloskop kiepski to przydałby się miernik częstotliwości, ale skoro padło słowo "hercomierz" to moge założyć, że kolega nie posiada takiego.
    O debuger nie pytam, bo Arduino takowego nie obsługuje.


    PS
    To zadanie jest stosunkowo proste. Problem PID był już poruszany, reszta jest prosta o ile ma się wiedzę i sprzęt.

    0
  • #23 04 Mar 2018 12:52
    DjSixteen
    Poziom 5  

    W tej dziedzinie uczę się od zera więc prawda nie wiem zbyt dużo może i nie skończyłem szkoły elektromechanicznej tu też dlatego nie znam pojęć wiem dużo w praktyce. Tak jak pisałem temat Arduino to dla mnie zupełna nowość dla tego tak to opornie idzie. Ale z autopsji wiem że zawsze rozwiązanie jakieś jest tylko trzeba się w temat zagłębić i słuchać rad doświadczonych już w tych tematach więc odezwałem się tutaj. Za wszystkie złe określenia przepraszam :)

    0
  • #24 04 Mar 2018 13:24
    ghost2000
    Poziom 18  

    DjSixteen napisał:
    W tej dziedzinie uczę się od zera

    Proponuję zacząć od mniej ambitnych konstrukcji.

    Przechodząc z AVR na ARM nie rozpocząłem od skomplikowanego projektu (karty SD, HDMI, precyzyjny pomiar czasu) ale od prostego rozwiązania, gdzie główna role odgrywają GPIO a z peryferii to tylko timer systemowy i przerwania zewnętrzne.

    Podobnie pierwszy projekt na OrangePi to terminal z komunikacją po RS485, USB z DTFI, kilka led i przycisków.

    Trzeba mierzyć siły na zamiary.
    Podłącz do Arduino LCD np znakowy, aby obrazować wyniki
    Zbuduj miernik częstotliwości, pobaw się nim
    Zrealizuj pomiar okresu sygnału
    Dodaj obwody wejściowe do alternatora/prądnicy, pobaw się pomiarami (na ile stałe sa wyniki pomiaru)
    Zrealizuj sterowanie przepustnicą agregatu
    Sprawdź jak zachowuje się regulacja (czas reakcji)
    Połącz w całość.

    Początkujacy, na Arduino, powinien to zrealizować w 1..2 miesiące, zakładając prace po ok 4 godziny dziennie.

    0
  • #26 04 Mar 2018 13:46
    ghost2000
    Poziom 18  

    Chcesz mierzyć częstotliwość ("hercomierz") czy okres sygnału ("okresomierz")?

    Częstotliwość jest niska. Przy 3000obr/min to ??? Policzyłeś ile?
    Można to mierzyć na wiele sposobów.
    Jaką rozdzielczość chcesz uzyskać? 1Hz? 0,1Hz? 0,01Hz a może 0,001Hz
    1Hz to za mało, musisz mierzyć z rozdzielczością co najmniej 0,1Hz jak chcesz mieć stabilność na poziomie 1Hz.
    Przy rozdzielczości 1Hz stabilność będziesz miał na poziomie +/-3 a może nawet +/-5Hz.

    Pisałem już, ze lepiej mierzyć czas. Przy pomiarze częstotliwości, rozdzielczość 0,1Hz to pomiar trwający 10sek, 0,01Hz to 100sek (ponad półtorej minuty!!!) 0,001Hz sam policz.
    Jeśli chcesz mierzyć czas, to musisz użyć timera (przechwytywanie). Czy wyprowadzenie Arduino, którego użyłeś jest wejściem przechwytującym timera?

    0
  • #27 09 Mar 2018 19:17
    DjSixteen
    Poziom 5  

    Witam, dokonałem ponownych zakupów między innymi:
    Wyświetlacz 2x16
    Tachometr z czujnikiem i wyświetlaczem
    Podpowiedziano mi abym w pierwszym kroku skonstruował tachometr aby ustalić aktualne obroty silnika, podłączyłem wyświetlacz i czujnik wgrałem znaleziony program na internecie do tematu tachometru jednak teraz mam problem,
    Zaczepiając magnes na główkę od wiertarki odpowiednio trzymam czujnik od magnesu i wyświetlacz pokazuje mi wartości 250rpm za chwilę 500 bądź 1200rpm, nwm czym może być to spowodowane proszę o pomoc ponieważ jestem słaby w tym temacie :/ ?????... Zdj programu oraz wyświetlacza.

    0
  • #28 09 Mar 2018 19:26
    ghost2000
    Poziom 18  

    DjSixteen napisał:
    wgrałem znaleziony program na internecie

    I wszyscy wiedzą co to za program więc nie ma problemu aby wskazać błąd.
    Prosze załaczyc ten program, w przeciwnym wypadku to wróżenie z fusów.

    0