Mam pewien problem, mianowicie zrobiłem sobie komputer do samochodu, liczy mi spalanie, predkosc, przejechany dystans, na ile starczy jeszcze paliwa, spalanie chwilowe temp i jeszcze pare innych rzeczy. I mam 2 problemy:
1 - kiedy włącze światła wszystko sie zawiesza....(musze odpalac auto z włączonymi swiatłami wtedy komp się uruchamia bez problemu) mam założony zestaw ksenonów, przed procesorem atmega16 mam zwykły stabilizator 5 voltowy i mimo ze dodawałem kondesatory na wejściu i wyjściu to problem nie znikł, Nawet przy odpalaniu auta nic sie niedzieje. Dodam tylko że mam tez funkcje przypominania o swiatłach ale mimo odłączonego przewodu od lampy problem nadal występuje.
2 - układ podłaczyłem pod sygnał prędkości jazdy ze skrzyni biegów Vss. Sygnał przechodzi przez jeden opór 4 kOm a przed wejściem do procesora jest jeszcze opornik do masy 1 kOm. Jest to chyba zbyt proste rozwiązanie, działa ale czasem wyskakują błędne odczyty. Sprawe programową rozwiązałem w ten sposób:
zmienna czas jest typu long tak wiec duzo czasu trzeba zeby sie przepełniła. działa to tak: ze jak wystąpi sygnał z vss to zmienna czas jest aktualizowana o stan timera1 ( jak nie wystąpi to przerwanie timera1 aktualizuje zmienną czas), do zmiennej droga1 jest zapisywany czas poprzedniego przerwania vss a do drogi2 czas aktualnego przrewania. Ze zmiennej vss (czasu pomiedzy kolejnymi impulsami) jest pozniej obliczana prędkość. Dokładność jest tu dość spora, przy małych predkościach pozwala na odczyt do 0,0001 a powyzej 130 maleje do 0,1 co w zupełności wystarcza. Ale problem mam jak przefiltrować ten sygnał żeby nie łapał jakiś smieci? bo czasem jade 60 a tu wskoczy 180 na ułamek sekundy, myslałem o filtrowaniu przez kondesator lub transoptorze ale może ktoś juz to przetestował i podsunie mi jakiś sprawdzony sposób??
1 - kiedy włącze światła wszystko sie zawiesza....(musze odpalac auto z włączonymi swiatłami wtedy komp się uruchamia bez problemu) mam założony zestaw ksenonów, przed procesorem atmega16 mam zwykły stabilizator 5 voltowy i mimo ze dodawałem kondesatory na wejściu i wyjściu to problem nie znikł, Nawet przy odpalaniu auta nic sie niedzieje. Dodam tylko że mam tez funkcje przypominania o swiatłach ale mimo odłączonego przewodu od lampy problem nadal występuje.
2 - układ podłaczyłem pod sygnał prędkości jazdy ze skrzyni biegów Vss. Sygnał przechodzi przez jeden opór 4 kOm a przed wejściem do procesora jest jeszcze opornik do masy 1 kOm. Jest to chyba zbyt proste rozwiązanie, działa ale czasem wyskakują błędne odczyty. Sprawe programową rozwiązałem w ten sposób:
Config Timer1 = Timer , Prescale = 64
Enable Timer1
On Timer1 Przerwanie_timer
Enable Interrupts
Enable Int2
Config Int2 = Rising
On Int2 Sygnalvss
......
przerwanie_timer1:
Czas = Czas + 65536
Return
Sygnalvss: ' syg z predkosciomierza
Czas = Czas + Counter1
Counter1 = 0
Droga1 = Droga2
Droga2 = Czas
Vss = Droga2 - Droga1
Return
zmienna czas jest typu long tak wiec duzo czasu trzeba zeby sie przepełniła. działa to tak: ze jak wystąpi sygnał z vss to zmienna czas jest aktualizowana o stan timera1 ( jak nie wystąpi to przerwanie timera1 aktualizuje zmienną czas), do zmiennej droga1 jest zapisywany czas poprzedniego przerwania vss a do drogi2 czas aktualnego przrewania. Ze zmiennej vss (czasu pomiedzy kolejnymi impulsami) jest pozniej obliczana prędkość. Dokładność jest tu dość spora, przy małych predkościach pozwala na odczyt do 0,0001 a powyzej 130 maleje do 0,1 co w zupełności wystarcza. Ale problem mam jak przefiltrować ten sygnał żeby nie łapał jakiś smieci? bo czasem jade 60 a tu wskoczy 180 na ułamek sekundy, myslałem o filtrowaniu przez kondesator lub transoptorze ale może ktoś juz to przetestował i podsunie mi jakiś sprawdzony sposób??
