Skocz do zawartości

Wysterowanie wskaźnika paliwa poprzez Arduino


Pomocna odpowiedź

Napisano

Planuje wysterować samochodowy wskaźnik paliwa. Jest on bezpośrednio podłączony w liczniku pod +10 V ze stabilizatora a następnie do pływaka pracującego w zakresie od 210 Ohm(pusty) do 47 Ohm(pełny). Chce zastosować Arduino Nano do podania sygnału na ten wskaźnik. Domyślam się, że wskaźnik działa na zasadzie pomiaru prądu płynącego w obwodzie. Myślałem nad zastosowaniem tranzystora, który by mi regulował napięcie na rezystorze a tym samym płynący prąd. Rezystor też musiałbym zastosować jakiejś większej mocy, ponieważ jak testowałem wskaźnik to prąd wynosił około 200mA dla pełnego baku. Zastanawiam się czy to ma sens, a może jest jakiś inny lepszy lub w ogóle działający w porównaniu do tego co zaproponowałem.

Jeżeli chcesz sterować prądem to masz dwa wyjścia:

  • albo robisz źródło prądu czyli układ który niezależnie od tego co do niego podłączysz wypuszcza taki prąd jaki potrzebujesz (tj. taki jaki ustawi Arduino)
  • albo robisz źródło napięcia i dajesz szeregowy rezystor (stały) ustawiony tak, by przy konkretnej rezystancji obciążenia (czyli rezystancji uzwojenia wskaźnika) płynęło tyle co chcesz. 

Tranzystor sam z siebie nie jest źródłem napięcia a źródłem prądu jest wtedy gdy sterujesz go prądem więc masło maślane plus dodatkowo działanie zależy od wzmocnienia i punktu pracy. Jeżeli przy oporniku 47Ω w obwodzie wskaźnika płynie ok. 200mA to znaczy, że rezystancja uzwojenia jest stosunkowo mała (np. kilkanaście omów) i jest szansa, że poprawne sterowanie możesz osiągnąć nie uciekając się do wysokich (dla Arduino) napięć. Prostota i ostateczny kształt Twojego układu zależy od tego, czy ten wzkaźnik da się napędzać z 5V albo lepiej z 4V. Jeżeli tak, schemat sprowadzi się do prostego filtra RC i jednego trnazystora w układzie wtórnika napięciowego z ew. dodatkowym rezystorem szeregowym. Natomiast jeśli okaże się,  że wskaźnik ma więcej niż 20Ω to niestety musisz go sterować z wyższcyh niż 4V napięć a to już oznacza wstawienie jakiegoś wzmacniacza sygnału.

Na szczęście jest jeszcze trzecie rozwiąznie: portraktowanie wzkaźnika jak typowego.. silnika i sterowanie nim za pomocą tranzystora, ale pracującego impulsowo. Wtedy w ogóle odpada sprawa jakichkolwiek filtrów, wzmocnień, sprzężeń zwrotnych itp magii a zostaje jeden tranzystor podączony przez opornik do wyjścia procesora i wzkaźnk w kolektorze podpięty do np. +10 czy +12V zależy co tam masz blisko. Wołając fukcję analogWrite() ustawiasz wypełnienie sygnału PWM a fizyka prądu i bezwładność mechaniki zrobią resztę. Pozostaje kwestia wyskalowania tego czegoś, ale przecież procesory nie takie rzeczy robią.. 

  • Lubię! 1
  • 7 miesiące później...

Finalnie znalazłem czas tym się zająć i układ znajduje się już w samochodzie razem z uruchomieniem wejścia audio zmieniarki w radiu. Pojawił się problem zakłóceń. Najprawdopodobniej należy dobrać odpowiednie kondensatory na zasilaniu. W zestawie z atmegą 328p dostałem 0,1 uF (na wyjściu stabilizatora LM7805) oraz 0,33 uF (na wejściu stabilizatora). Zakłócenia nie pochodzą z wyjść atmegi podłączonych do radia, ponieważ na odłączonych przewodach od radia problem nadal występuje. Wciśnięcie przycisku reset przy atmedze powoduje ustanie na moment zakłóceń do czasu ponownego załadowania programu w atmedze. Do momentu jak działałem jeszcze na oryginalnym Arduino Uno zakłócenia nie występowały. Zwiększać pojemność kondensatorów do momentu ustania zakłóceń? 

  • 4 miesiące później...

Tak jak mi odpisano w tym temacie

Dnia 8.12.2019 o 23:20, marek1707 napisał:

Na szczęście jest jeszcze trzecie rozwiąznie: portraktowanie wzkaźnika jak typowego.. silnika i sterowanie nim za pomocą tranzystora, ale pracującego impulsowo. Wtedy w ogóle odpada sprawa jakichkolwiek filtrów, wzmocnień, sprzężeń zwrotnych itp magii a zostaje jeden tranzystor podączony przez opornik do wyjścia procesora i wzkaźnk w kolektorze podpięty do np. +10 czy +12V zależy co tam masz blisko. Wołając fukcję analogWrite() ustawiasz wypełnienie sygnału PWM a fizyka prądu i bezwładność mechaniki zrobią resztę. Pozostaje kwestia wyskalowania tego czegoś, ale przecież procesory nie takie rzeczy robią.. 

Na wyskalowanie już nie ma instrukcji. Trzeba to zrobić doświadczalnie.

  • 2 tygodnie później...

Czyli ty nie masz wskaźnika paliwa z licznika samochodowego, ale chcesz go stworzyć. W takim razie moje szkice na nic ci się zdadzą. Najpierw napisz co masz do wykorzystania. Jaki czujnik poziomu paliwa, jak chcesz to wyświetlać, co masz do dyspozycji w związku z tym (elementy elektroniczne itd.). Wtedy będzie łatwiej pomóc.

Wskaźnik będzie skakał. Możesz zrobić odczyt co jakiś określony czas, ale jest szansa że trafi akurat na odczytaną wartość podczas zabujania i będziesz miał przez dany czas zakłamany poziom paliwa. Lepiej uśrednić pomiary i wyświetlić. Zwykła pętla for wystarczy (no chyba że program wykonuje jeszcze inne operacje to wtedy nie bardzo, bo będą przerwy w działaniu innych funkcji programu, ponieważ będzie zajęty obliczaniem średniej) albo lepszą opcją jest tablica danych. Jeśli chodzi o uśrednianie pomiarów to tutaj masz opisane co i jak: 

 

  • Lubię! 1

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...