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.

Atmega64 - Obrotomierz samochodowy na LCD - zliczanie impulsów obrotów.

Matixov 24 Mar 2014 11:33 3810 10
  • #1 24 Mar 2014 11:33
    Matixov
    Poziom 9  

    Witam. Postanowiłem stworzyć swój komputer pokładowy do auta daewoo lanos.
    Komputer oparty jest na atmega64, cel jaki chce osiągnąć to wyświetlanie na LCD prędkości, drogi, spalania średniego/chwilowego oraz obrotów silnika.

    Napotkałem się na pewien problem otóż jak podłączyć upc pod komputer tego samochodu by zliczać bez problemu impulsy (dane z auta) , program mam już w całości napisany działa on bez problemu, problem polega na tym aby dostosować sygnał z auta pod mikroprocesor 5V.

    1. Prędkościomierz oraz przejechana droga:

    Do tego celu podłączam się pod czujnik prędkości auta jest to halotron. Jak obracam kołem samochodu pojawia się napięcie 0V lub 12V. Obliczyłem ile impulsów przypada na 1m przejechanej drogi i autko mi wylicza jaką przebyłem drogę, analogicznie przy prędkości.
    Otóż do czego zmierzam, na wejście mikroprocesora (Timer) mogę podać napięcie 5V a na halotronie jest 12V jak zastosuje transoptor wszystko ładnie działa ale gdy ten sygnał obciążę zbyt mocno wskazówka prędkościomierza w aucie zatrzymuje sie na 0 km/h a mikroprocesor pokazuje jaka mam prędkość.

    Schemat poglądowy podłączenia transoptora.
    Atmega64 - Obrotomierz samochodowy na LCD - zliczanie impulsów obrotów.

    Transoptor jaki posiadam to ILD206 Gdy potencjometrem 10k ustawie wartość na około 1k. mikroprocesor zlicza mi impulsy bez problemu oraz prędkościomierz działa również bez problemu. Gdy ta wartość jest zbyt duża prędkościomierz w aucie pokazuje 0.
    Z tego co wywnioskowałem czujnik ten ma bardzo mały prąd a obciążenie jego powoduje złe działanie.

    Zamiast transoptora chce zastosować jakiś układ wzmacniacza operacyjnego.

    Na wejście + wzm. będę podawać sygnał z czujnika z tego co się orientuje wzmacniacz będzie wzmacniał do napięcia zasilania czyli 5V. Wiec napięcie 14V na wejściu wzmacniacza da mi na wyjściu sygnał 5V. A przy sygnale 0V na wyjściu będzie 0V i otrzymam ładny prostokąt.

    Atmega64 - Obrotomierz samochodowy na LCD - zliczanie impulsów obrotów.

    Charakterystyka:

    Atmega64 - Obrotomierz samochodowy na LCD - zliczanie impulsów obrotów.





    Wszystko ładnie i pięknie na symulacji a w rzeczywistości Atmega nie zlicza mi impulsów co się okazało rezystor na wejście wzmacniacza + 100k jest zbyt duży dałem rezystor 10k i uklad liczy ale prędkość auta nie zgadza sie z prędkością wyświetlana na LCD. Atmega reaguje na zbocza opadające.


    2. Obrotomierz

    Atmega64 - Obrotomierz samochodowy na LCD - zliczanie impulsów obrotów.

    Korzystam tutaj z sygnałów B3 lub A2 tylko nie wiem zbytnio jaka jest różnica pomiędzy nimi. Nie chce brać sygnału z cewki bo 1 impuls więcej czy mniej powoduje duże różnice na wyświetlaczu.

    Taka samą konfiguracje wzmacniaczy operacyjnych podłączyłem pod obrotomierz i dzieją się cyrki układ zlicza podwójnie impulsy. Każde zakłócenie na wzmacniaczu powoduje dodatnia szpilkę na wyjściu a następnie mikroprocesor to zlicza. Czy zbyt małe zasilanie wzmacniacza może powodować wadliwe działanie?, może lepiej zasilać wzmacniacz 14V a sygnał dać przez transoptor?
    Gdy auto ma 2500 obr/min upc pokazuje 5000(tutaj nie wina programu lecz impulsów, wzmacniaczu się wzbudza czy cos.). Gdy podłącze obrotomierz pod sam transoptor dioda transoptora nie reaguje. Jest tam prąd rzędu uA, a dioda transoptora potrzebuje około 10mA. Przy innych konfiguracjach obrotomierz działał raz dobrze raz źle Napięcie jakie pokazuje mi woltomierz to około 1V przy wolnych obrotach i rośnie w górę wraz ze wzrostem obrotów do koło 2V jest tam czujnik indukcyjny (Tarcza z ząbkami oraz przesuwający się rdzeń)

    Proszę o jakieś sugestie jak to rozwiązać ? Prędkościomierz bym mógł zostawić na samym transoptorze ale co z obrotami silnika i tak samo spalanie samochodu będzie działać na samym transoptorze bo jest duża wydajność prądowa ale co z tym obrotomierzem.
    Atmega64 - Obrotomierz samochodowy na LCD - zliczanie impulsów obrotów.

    Gdy są złe dobrane elementy na wyjściu jest całkiem inny sygnał i myślę ze to jest przyczyną złego zliczania(nie mam dostępu do oscyloskopu). Chciałem te wszystkie układy wejściowe rozwiązać na wzmacniaczach operacyjnych a transoptory odstawić na bok. Czekam na jakieś pomysły jak komputer będzie sprawny w 100% umieszczę schematy oraz kilka fotek czy filmików jak to działa w moim Lanosie.

    0 10
  • #2 24 Mar 2014 12:43
    tehaceole

    Poziom 28  

    Może niegłupie byłoby zasilenie diody transoptora od strony anody a podłączenie pod transoptor katodą...?

    0
  • #3 24 Mar 2014 13:04
    Matixov
    Poziom 9  

    Nie wiem nie próbowałem sprawdzę.

    Jest jakieś rozwiązanie ale nie jest zbyt dokładne ..
    http://warsztaty.samochodowka.internetdsl.pl/serwishdd/poradnik/elek_autom/wykonaw/dis.htm

    Sygnał D10 i C3 steruje inicjacja iskry jest tam sygnał prostokątny 5V ale 1 impuls więcej czy mniej będzie mi robić dużą różnice we wyświetlanych obrotach na LCD.
    Upc zlicza mi impulsy, Zliczone impulsy muszę pomnożyć razy 2 i zamienić to na minuty. Wiec jeden impuls może mi mocno przekłamać wskazanie na LCD.

    Z Czujnika położenia wału 1000 imp = 1000 obr/min tylko jest tam sygnał sinusoidalny +(jest to stan wysoki) - (Stan niski) teraz kwestia jest taka jak ten sygnał przerobić pod mikroprocesor? 5V, transoptor nie daje rady bo mała wydajność prądowa a wzmacniacz(wtórnik napięciowy) coś komplikuje sprawę.

    0
  • #4 24 Mar 2014 21:17
    emarcus
    Poziom 35  

    Matixov napisał:
    teraz kwestia jest taka jak ten sygnał przerobić pod mikroprocesor? 5V, transoptor nie daje rady bo mała wydajność prądowa a wzmacniacz(wtórnik napięciowy) coś komplikuje sprawę.


    Smitt Trigger np. 1/4 CD4093B powinien dać radę; albo zmień sensor.
    Zamiast indukcyjnego daj tam inny, oparty na zasadzie effektu Halla - podobny z wyglądu, jednak ten jest trzy przewodowy (+5, GND. Sig). Mogę ci taki dać.

    e marcus

    0
  • #5 24 Mar 2014 21:39
    Matixov
    Poziom 9  

    Czujnika nie moge zmienic jest to oryginalny przy produkcji auta i ten sygnal jest przerabiany przez ECU auta ktory korzysta z tych danych o położeniu oraz steruje zapłonem. Mysle wlasnie aby zastosowac tu jakis uklad ze schmittem i po sprawie.

    0
  • #6 25 Mar 2014 08:38
    BlueDraco
    Specjalista - Mikrokontrolery

    Podłącz wyjście czujnika do uC przez rezystor 47..100 k i będzie po kłopocie. Ale sobie ludziska lubią życie komplikować...

    0
  • #7 25 Mar 2014 08:55
    Eagle
    Poziom 23  

    Nie wiem czy to odpowie na twoje pytania ale :

    Cytat:
    Gdy auto ma 2500 obr/min upc pokazuje 5000(tutaj nie wina programu lecz impulsów

    Zakładam, że masz 4 cylindrowy silnik, z dwoma cewkami. Cewka wyzwalana jest dla dwóch cylindrów jednocześnie tz. podczas zapłonu dla jednego cylindra oraz w tym samym czasie podczas wydechu dla drugiego. Tak więc na jeden obrót wału cewka zostanie załączona dwa razy. W tym przypadku podejrzewam, że zliczasz poprawnie ilość impulsów, tylko powinieneś podzielić przez 2 uzyskując prędkość obrotową wału.
    Ja w swoim rozwiązaniu po prostu zbierałem sygnał z uzwojenia pierwotnego cewki. Dioda w kierunku zaporowym, spolaryzowana po stronie anody przez 1k do 5V i bezpośrednio do uC. Jeśli cewka zostawała załączona ( typowo do GND), dioda przewodziła ściągając do 0,7 napięcie na uC wyzwlając INT. Nie pamiętam teraz czy musiałem jeszcze programowo znieczulić układ na jakieś drgania, ale na pewno było to zrobione programowo.

    A co do pomiaru prędkości pojazdu dawno temu rozwiązałem to następująco:

    Do osi pojazdu przymocowałem magnes o kształcie pół-walca, takli jak typowo montowany jest w małych silniczkach. A do detekcji impulsów wykorzystałem elektronikę z halotronem z wentylatora komputerowego, jest tam wyjście otwarty kolektor który kluczował mi 5V do uC.

    0
  • #8 25 Mar 2014 08:57
    Matixov
    Poziom 9  

    BlueDraco

    Cytat:
    Podłącz wyjście czujnika do uC przez rezystor


    Przy zliczaniu impulsów z prędkościomierza nie mogę napięcie zbyt duże i tam płyną malutkie prądy(można dać diode zenera 4.7V z R do masy w razie czego). Tak samo przy obrotomierzu amplituda wynosi około 6V i sa tam (Szpliki) dlatego myślę nad zastosowaniem tego układu 74HC04.


    Eagle Rozumiem twoją wypowiedz może nie wyraziłem się zbyt jasno. Takie problemy miałem jak używałem wzmacniacz. On jakoś się wzbudzał i zrobił mi podwójne szpilki(prostokąty) dlatego wynik był inny a program był dobrze napisany.

    Gdy teraz sygnał biorę z cewki następnie daje go na układ schmitta a następnie na upc, pojawił mi się błąd z dokładnością.

    Układ zlicza impulsy te impulsy tak jak wspomniałeś muszę pomnożyć razy 2 a następnie razy 60 aby zamienić na minuty. I tu własnie jest problem układ raz zlicza 1 impuls więcej raz 2-3 mniej (w tym samym okresie) i tutaj obroty mocno skaczą. Zaokrągliłem aby wynik był pokazywany do takich wartości 1100,1200,1300 itd. Na wolnych obrotach pokazuje mi raz 700 raz 800 i tak skacze moim zdaniem zbyt mocno.

    Po podłączeniu się pod czujnik z położenia wału. Sygnał dałem tak samo jak poprzednio przez układ schmitta i tam mam zależność taka 1000 imp = 1000 obr/min. 1 impuls w ta czy w ta daje mi bardzo mały błąd np. 999 Teraz zaokrąglenie do 1000 i działa super.

    0
  • #9 25 Mar 2014 10:00
    BlueDraco
    Specjalista - Mikrokontrolery

    Nie trzeba diody Zenera do masy, bo wewnątrz uC masz diodę do plusa, która przytnie napięcie tak, jak trzeba, a przez rezystor 100k popłynie prąd tak mały, że nie ma żadnej groźby uszkodzenia.

    Wejście uC zachowuje się z grubsza tak samo, jak wejście każdego innego układu logicznego, więc jeżli możesz podać sygnałe na wejście braki, to ten sam sygnał możesz podać na wejście uC.

    0
  • #10 06 Lis 2014 17:48
    Matixov
    Poziom 9  

    Wszystkie sygnały z których korzystam obniżyłem im napięcie za pomocą dzielników napięcia do około 4,5 - 4,9V a następnie sygnał był podawany na buffor smd (cos z tego 74HC) który nie obciąża badanego sygnału a następnie sygnał był podawany do mikroprocesora i tak rozwiązałem mój problem z wszystkimi sygnałami. Oczywiście dzielniki dobierałem doświadczalnie. Temat do zamknięcia z komputer pokładowy śmiga łądnie w lanosie do dzisiaj.

    0
  • #11 06 Lis 2014 18:52
    tmf
    Moderator Mikrokontrolery Projektowanie

    Tylko co z tego, że bufor prawie nie obciąża sygnału, jeśli obciąża go dzielnik?
    BTW, dzielnika nie dobiera się doświadczalnie, można go policzyć - to naprawdę prosta matematyka...
    A kolega BlueDraco dał ci najprostsze rozwiązanie. Fajnie, że układ ci działa, niemniej twoje rozwiązanie nie ma większego sensu.

    0
  Szukaj w 5mln produktów