Skocz do zawartości

Wyświetlanie danych na LCD zakłóca inną funkcję


Pomocna odpowiedź

2 godziny temu, _LM_ napisał:

A i jeszcze jedna rzecz chyba najważniejsza: kiedy robisz odczyt zmiennej w main, może się zdarzyć że w tym momencie wpadnie przerwanie, nie będę tego tłumaczył tutaj, ale jest to typowy przykład kiedy połowa zmiennej może zostać nadpisana podczas trwania przerwania. W tym celu stosuje się dostęp atomowy, poszukaj ATOMIC_BLOCK i jak się go używa. Bo czuję po kościach że w tym miejscu jest problem. 


Poczytam, ale to chyba jednak nie będzie miało nic wspólnego. Zrobiłem mały test - wywaliłem cały kod odpowiedzialny za przeskalowanie sygnału wraz z obsługą przerwania i zrobiłem małą funkcję testową wysyłającą pulsy co 10ms, najpierw z użyciem millis() a potem delay:

void TestPulse() {
  digitalWrite(speedometerPin, LOW);
  delay (10);
  digitalWrite(speedometerPin, HIGH);
  delay (10);

}

I jest ten sam problem. Każda operacja na lcd powoduje zakłócenia w wysyłaniu nawet tak prostego kodu do diody LED.
 

Ogólnie zbyt przywiązałem uwagę do pomiaru i wyświetlania wyników, dobrze tutaj radzą @ethanak i @matsobdev i jeśli układ ma faktycznie przetwarzać impulsy do wyjścia (na co ja w ogóle nie zwróciłem uwagi) to trzeba skorzystać któregoś wolnego licznika.

22 godziny temu, matsobdev napisał:

Na drogi raczej nie powinno takie coś wyjeżdżać. W sensie modyfikowane czymkolwiek po drodze.

Dlaczego?

Po zmianie kół na większe, albo przełożeń w mostach, licznik będzie sporo oszukiwał w jedną lub drugą stronę.

Robiłem już taki układ dla suzuki jimny i działało to bez najmniejszego problemu.

Na tej zasadzie nie można mieć w aucie niczego elektronicznego z czym nie zostało homologowane.

To bardziej bat na cofających liczniki a nie tych co chcą mieć _prawidłowe_ wskazania.

Ale "dajcie mi człowieka, a paragraf się znajdzie" 🙂

 

(edytowany)
1 godzinę temu, kostuch napisał:

Na tej zasadzie nie można mieć w aucie niczego elektronicznego z czym nie zostało homologowane.

Jasne, że można. Oświetlenie wewnętrzne nie podlega homologacji. Nawet można nadawać na licencjonowanych pasmach (FM), byle z niewielką (formalnie określoną) mocą. I zegarek na Arduino może być na pokładzie. Tylko, jeśli będzie on w sposób jawny bruździł tam, gdzie nie ma, to już wtedy mogą być problemy. Duża różnica prędkości rzeczywistej z licznikiem, choćby ABS. Sygnały z czujnika prędkości w skrzyni mogą być wykorzystywane razem z tymi na piastach. I nikt nie zagwarantuje, że po takiej modyfikacji będzie to działać. W sumie jest ktoś, rzeczoznawca. A pojazd, żeby poruszał się po drogach publicznych musi spełniać warunki techniczne.

Edytowano przez matsobdev

Ja powiem tak: robiłem te ustrojstwa do motocykla, ale nie ingerowałem w to co on ma firmowo na pokładzie. Prędkość i przebyta droga zliczane ilością obrotów koła byłe mi potrzebna przede wszystkim do olejarki łańcucha. Tak samo czujnik wilgotności i termometr. Być może nie pokazywały wszystkiego ze stuprocentową dokładnością (chociaż mój prędkościomierz był kalibrowany na podstawie tego co siedzi w motorku), ale do olejarki wystarczyło. Wskaźnik biegu też nie ingeruje w oryginalną instalację, a jest po prostu miłym dodatkiem. Co do chińskiego prędkościomierza... to nie ja wsadziłem tam ten chiński patent, ale z tego co wiem wielu ludzi tak przerabia motory i nikt za to jeszcze nie siedział.

A w ogóle jeśli prędkościomierz przekłamuje, to coś jest nie tak. Bo z tym się wiążą też liczniki przebiegu, a tu ingerencja może być bolesna. Sam na szczęście nie jeżdżę (okulista wystawił mi pozwolenie na prowadzenie wózka dziecięcego z osobą towarzyszącą), ale wszyscy moi kumple jakieś jeździdełka posiadają i są zainteresowani bardziej dojechaniem z punktu A do punktu B, niż amatorską ingerencją na poziomie przedszkola w najważniejsze wskaźniki.

18 godzin temu, matsobdev napisał:

 I nikt nie zagwarantuje, że po takiej modyfikacji będzie to działać.

Jeżeli modyfikacja polega na tym żeby wskazówka się mniej lub bardziej wychylała w zegarze (czyli de facto zmiana średniego prądu w ustroju magnetoelektrycznym), to nie ma to najmniejszego wpływu na pozostałe układy auta. Równie dobrze (ale mniej estetycznie) można by wygiąć wskazówkę żeby wskazywała właściwe liczby. To samo dotyczy sytuacji gdy zegar jest na silniku krokowym.

Sam mam auto które ma możliwość samodzielnej kalibracji położenia wskazówek prędkościomierza i obrotomierza po OBD, ale wymaga to spec software.

Wskazanie z zegarów trafia już tylko do oczu kierowcy a nie jakimś sprzężeniem zwrotnym do komputerów sterujących.

(edytowany)

Nie mówimy tutaj o pośrednim oddziaływaniu pola elektromagnetycznego (czy będzie mniejszy, czy większy prąd w tym ustroju, to jest normalna sytuacja jak różnica, kiedy wskazówka jest na 100 czy 120, to się dziej normalnie podczas eksploatacji - przykład nietrafiony), na co muszą być odporne inne układy, tylko bezpośrednim wpięciu się we wiązkę i modyfikację sygnału w taki lub inny sposób. Samo przełożenie wskazówki też będzie wiązało się z ingerencją w dokładność pomiaru (prędkości, przebytej drogi), bo to nie będzie przesunięcie tylko proporcjonalna zmiana (jeśli jest zmiana wielkości kół).

37 minut temu, kostuch napisał:

Sam mam auto które ma możliwość samodzielnej kalibracji położenia wskazówek prędkościomierza i obrotomierza po OBD, ale wymaga to spec software.

Otóż to. Producent w pewnym zakresie przewidział stosowanie różnego rodzaju ogumienia/felg (ma które pojazd jest homologowany) i zrobił stosowne API. Oczywiście nie mylić z grzebaniem we wsadzie jakiegoś scalaka w liczniku. Podejrzewam, że to nie jest niczym niespotykanym. Jeśli metoda pomiaru sama nie tworzy wzorca jednostki, to trzeba uwzględnić konieczność dopasowania z oszacowanym prawdopodobieństwem wyniku pomiaru do wartości rzeczywistej - kalibracja.

37 minut temu, kostuch napisał:

Wskazanie z zegarów trafia już tylko do oczu kierowcy a nie jakimś sprzężeniem zwrotnym do komputerów sterujących.

No nie mówimy o bębenkowym drogomierzu na lince, ale czymś bardziej współczesnym. Informacja o prędkości krąży w układzie. Skąd "komputer pokładowy" będzie znał przejechany dystans? Istnieje ryzyko, że ta informacja jest wykorzystywana do określenia, kiedy system typu ABS/ESB/EBD itd. ma zadziałać, czy do auto-diagnostyki układu (tak jak choćby silnik diesla jest gaszony na różne sposoby, celem właśnie diagnostyki układów wykonawczych i czujników). Informacja o rozmiarze kół może mieć więc zasięg globalny.

Edytowano przez matsobdev
1 godzinę temu, matsobdev napisał:

Informacja o prędkości krąży w układzie. Skąd "komputer pokładowy" będzie znał przejechany dystans? Istnieje ryzyko, że ta informacja jest wykorzystywana do określenia, kiedy system typu ABS/ESB/EBD itd. ma zadziałać, czy do auto-diagnostyki układu (tak jak choćby silnik diesla jest gaszony na różne sposoby, celem właśnie diagnostyki układów wykonawczych i czujników). Informacja o rozmiarze kół może mieć więc zasięg globalny.

Ale tutaj nikt nie chce modyfikować "faktycznej" informacji o prędkości czy przebiegu (które jak słusznie zauważyłeś mogą być globalne dla auta), tylko zmienić położenie wskazówki na cyferblacie. Komputer auta wie swoje, a prędkościomierz wychyla wskazówkę na wartość, którą sobie zażyczył użytkownik (plus na ekraniku coś sobie poprzelicza i pokaże).

Przynajmniej tak zrozumiałem założenia tego projektu.

(edytowany)

W sumie ciężko powiedzieć. Jeśli sygnał jest tylko sondowany - wpięty równolegle (tylko nasłuch sygnału) z czujnika prędkości (tego w skrzyni jak mniemam, tutaj VSS) i wykorzystywany tylko do wyświetlenia skorygowanej wartości na wyświetlaczu LCD podpiętym do płytki z mikrokontrolerem, to byłbym skłonny przyznać Ci rację. Tylko jeśli z uwagi na np. dużą zajętość procesora wyświetlaniem tekstu, coś się knoci na prędkościomierzu pojazdu, to już coś jest bardziej pomieszane, co być nie powinno - jakoś coś oddziałuje na ten sygnał.

48 minut temu, kostuch napisał:

Komputer auta wie swoje, a prędkościomierz wychyla wskazówkę na wartość, którą sobie zażyczył użytkownik (plus na ekraniku coś sobie poprzelicza i pokaże).

Jeśli użytkownik decyduje, jak zachowuje się wskazówka pasywnie nasłuchując sygnału z VSS, to tak się nie da. Albo do licznika idzie bezpośrednio sygnał z czujnika i impulsy przelicza na wskazania, albo licznik dostaje pakiety z informacjami, co ma wyświetlić.

Podłączanie się do linii sygnału prędkości może zaburzyć jego integralność.

W sumie pytanie do autora, jak jest po połączone i czy wskazówka na prędkościomierzu też ma pokazywać wartość zmodyfikowaną.

Edytowano przez matsobdev

Wyobraź sobie sytuację, że fizycznie wypinasz prędkościomierz (nie mówię o liczniku przebiegu). Wpłynie to jakoś na sygnał? Nie. Tak samo jak np wypięcie zegara temperatury nie wpłynie na jej wartość.

Teraz w miejsce fizycznie usuniętego prędkościomierza wsadzasz kalibrator. Nadal nie wpłynie to na sygnał prędkości. Kalibrator tylko "słucha" sygnał.

A teraz za kalibratorem wpinasz ponownie prędkościomierz. Nadal nic się nie zmienia z punktu widzenia auta i jego komputera.

Zamiast tego układu kalibrującego użytkownik mógłby zdjąć szybkę i palcem naginać wskazówkę - to też nie miałoby żadnego wpływu na sygnał prędkości.

 

Musiałby być jakiś megawyrafinowany układ śledzący położenie wskaźnika i porównujący go z sygnałem, żeby np zapalić checkengine z kodem "nielegalne położenie wskazówki" 😉

 

  • Lubię! 1

  

Widzę że przez weekend dyskusja poszła w zupełnie inną stronę niż jest to konieczne. Tematy prawne, dotyczące legalności pewnych modyfikacji zdecydowanie mnie nie interesują. A modyfikacja wskazań licznika jest ostatnią rzeczą którą się przejmuję przy tych rozważaniach 😄

- Auto to weekendowa zabawka. Wyjechało z fabryki jako totalny analog, prędkościomierz pędzony na linkę. Brak ABS, ESP i innych bajerów. Fabrycznie nie było nawet wspomnianego przeze mnie na początku czujnika VSS
- Zmienione jest przełożenie główne i w związku z tym są przekłamania na liczniku. Można to naprawić na dwa sposoby: zdemontować skrzynię biegów, rozebrać ją na atomy i wymienić przekładnię prędkościomierza LUB dołożyć czujnik VSS (który występował w innej wersji tego auta) i zastosować prędkościomierz napędzany elektronicznie
- Wybrałem opcję drugą, na zegarach nie widać żadnej różnicy że coś było zmienione, zestaw wskaźników wygląda jak fabryczny
- Zostaje kwestia odpowiedniej kalibracji wskazań prędkości i licznika km. I tego i tylko tego punktu dotyczy mój temat 😉

Więc, wracając do mojego problemu związanego z jednoczesnym odczytem sygnału z VSS, jego modyfikacją i dodatkowo wyświetleniem wskazań na LCD to problem jest na dobrej drodze do rozwiązania.

Eksperymentuję z biblioteką TimerOne i na testowym projekcie jednoczesne wysyłanie sygnału do licznika i wyświetlanie parametrów na LCD nie jest już problemem. Zostaje mi kwestia przeniesienia tego na główny projekt i testowanie czy wszystkie funkcje działają prawidłowo i nie zakłócają się wzajemnie.

  • Lubię! 2

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...