logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Kostka ATmega8 - odczytywanie obrotów silnika benzynowego

ogor_89 16 Sty 2008 22:06 5218 34
Najlepsze odpowiedzi

Jak użyć ATmega8 do pomiaru obrotów czterosuwowego silnika V4 i wyświetlić wynik kolorami diody RGB?

Najprościej zliczaj impulsy z układu zapłonowego timerem albo mierz okres na wejściu INT, a wynik przeliczaj w krótkim oknie czasowym zamiast używać blokującego `Wait 1`; dla szybkiej reakcji możesz liczyć impulsy co 1/4–1/2 s i przypisywać progi obrotów do kolorów RGB [#4702475][#4706859] Jeśli sygnał i układ pracują w motocyklu, zadbaj o odsprzęganie zasilania: kondensator 100 nF przy układzie scalonym jak najbliżej nóżek zasilania [#4710128] Diod RGB traktuj jak 6 zwykłych LED-ów, więc nie obciążaj bezpośrednio portów ATmegi; przy większym prądzie użyj tranzystorów, a dla bazy BC547 padł rząd 1 kΩ [#4710251][#4711689] Do sterowania diodami polecono też ULN2804, bo odciąża mikrokontroler i nie utrudnia programowania [#4721008] Pamiętaj o limitach prądowych ATmegi8 dla całych portów i sumy prądów zasilania, bo łatwo je przekroczyć przy kilku LED-ach [#4710251]
Wygenerowane przez model językowy.
REKLAMA
  • #1 4702137
    ogor_89
    Poziom 13  
    Posty: 137
    Ocena: 5
    W jaki sposób zaadoptować kostkę ATmega8 do odczytywania obrotów silnika benzynowego (czterosuwowy V4)? Wynik pomiaru ma być przedstawiany za pomocą kolorów diody RGB (nieb -> ziel -> żółty -> czerw). Jak sobie z tym poradzić?
  • REKLAMA
  • #2 4702475
    kamyczek
    Poziom 38  
    Posty: 3994
    Pomógł: 394
    Ocena: 570
    Musisz wykonać pomiar częstotliwości lub okresu
    metoda dowolna...
  • #3 4703230
    ogor_89
    Poziom 13  
    Posty: 137
    Ocena: 5
    Znalazłem coś takiego:
    http://sklep.avt.pl/photo/_pdf/AVT2711.pdf
    W jaki sposób zaadoptować ten układ do ATmegi8 i zapłonu elektronicznego? Przydałoby się te zwiększyć maksymalne mierzone obroty do ok. 14 tys.

    Dodano po 5 [minuty]:

    Może mi ktoś sprawdzić czy płytka jest dobrze zrobiona? Chodzi mi również o wymiary AVR-a.
    Załączniki:
    • Kostka ATmega8 - odczytywanie obrotów silnika benzynowego plytka2.png (5.8 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Kostka ATmega8 - odczytywanie obrotów silnika benzynowego plytka.PNG (14.69 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #4 4703246
    ogor_89
    Poziom 13  
    Posty: 137
    Ocena: 5
    Gniazdo PRG ma służyć do programowania i jako wejście obrotomierza.
  • REKLAMA
  • #5 4703581
    szelus
    Poziom 34  
    Posty: 1508
    Pomógł: 315
    Ocena: 53
    ogor_89 napisał:

    Może mi ktoś sprawdzić czy płytka jest dobrze zrobiona? Chodzi mi również o wymiary AVR-a.


    A gdzie schemat?
    Generalnie, od sprawdzania jest funkcja DRC (Design Rule Check) w programach do projektowania płytek. Tylko najpierw trzeba stworzyć schemat, na jego podstawie tzw. net-listę i dopiero na podstawie tej ostaniej układ ścieżek. Wtedy program sam ślicznie pokazuje wszystkie błędy (chyba obecnie wszystkie programy maja taką funkcję).

    Na oko widać, że za małe są odstępy pomiedzy ścieżkami. W warunkach amatorskich nie wciśniesz też dwóch ścieżek pomiędzy nogi scalaka.

    Sam chcesz robić płytkę czy dać do płytkarni?
  • #6 4706115
    ogor_89
    Poziom 13  
    Posty: 137
    Ocena: 5
    Sorry, zapomniałem dać schemat :D. Skoro Eagle ma opcję sprawdzania, to nie ma problemu. Możesz jeszcze rzucić okiem na rozmiary scalaka? To jest ATmega8, tylko nie jestem pewien czy nie jest czasem zbyt szeroka (sam robiłem bibliotekę). Płytki na pewno wykona jakaś firma, tylko pytanie jaka? Znalazłem taką www.prototypy.com.pl. Znacie może jakąś inną dość tanią firmę?
  • REKLAMA
  • #8 4706653
    ogor_89
    Poziom 13  
    Posty: 137
    Ocena: 5
    Dzięki Piotrek.
    Jak jest sterowany obrotomierz? Impulsami?
  • Pomocny post
    #9 4706732
    Pijopic
    Poziom 17  
    Posty: 235
    Pomógł: 10
    Ocena: 2
    Zwyczajna makabra, ta plytke mozna na 1000 sposobow lepiej zaprojektowac, a gorzej sie chyba juz nie da...
  • #10 4706811
    PiotrPitucha
    Poziom 34  
    Posty: 2658
    Pomógł: 201
    Ocena: 424
    Cześć
    Miałem nie komentować płytki ale:
    - złącze programowania użyłbym jako sterowanie LED
    - jako wejście wygodnie jest użyć INT więc raczej nie jest to żaden z pinów do programowania, nie wyprowadzaj na złącze programowania nietypowych pinów i zachowaj układ typowego rozmieszczenia pinów programatora
    To wszystko da się zobić o ile pamiętam bez kręcenia ścieżkami pomiędzy nogami procesora.
    Piotr
  • #11 4706859
    ogor_89
    Poziom 13  
    Posty: 137
    Ocena: 5
    1.
    Pierwsza moja płytka. W eaglu nie mogłem się odnaleźć (elementy).
    Załączam schemat. Pijopic, jak możesz, to zrób mi wzór płytki. Jakbyś się już bawił, to dorzuć jeszcze kwarc, ok?

    2.
    Jabel J-91 wygląda dość ciekawie. Ten układ dostosowujący myślę, że będzie dobry. Dobrze myślę?

    Znalazłem taki kod:
    $crystal = 4000000 
    
    $regfile "m8def.dat" 
    Config Lcdbus = 4 
    Config Lcd = 16 * 2 
    Config Lcdpin = Pin , Db4 = Pb.2 , Db5 = Pb.3 , Db6 = Pb.4 , Db7 = Pb.5 , E = Pb.1 , Rs = Pb.0 
    Set Portd.2 
    ' Miernik prędkości obrotowej 
    'licznikiem 0...65535 jest Timer1 
    Dim Wynik As Long 
    Config Timer1 = Counter , Edge = Rising 'konfiguracja Timera do zliczania impulsów 
    Cls : Lcd "Obrotomierz" : 
    Wait 1 
    
    Do 
    Timer1 = 0 
    Start Timer1 
    Wait 1 
    Stop Timer1 
    
    Wynik = Timer1 / 4 
    
    Cls 
    Lcd "+ Obrotomierz +" 
    Lowerline 
    
    Lcd "P: " ; Wynik ; " obr/min" 
    Cursor Off 
    Loop 
    End

    Interesuje mnie tylko zmienna "Wynik", więc sterowanie LCD wyrzucę. Mam inny problem. AVR nie będzie odpowiadał tylko za mierzenie obrotów, więc "Wait 1" muszę zastąpić czymś w taki sposób, żeby nie wstrzymywać całego programu. Poza tym silnik w motorze dość szybko wkręca się na obroty, więc zmiana wartości zmiennej "Wynik" co sekundę odpada. Czy mierzenie co 1/4 sek. jest realne?
    Załączniki:
    • Kostka ATmega8 - odczytywanie obrotów silnika benzynowego plytka.PNG (10.69 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #12 4707016
    ogor_89
    Poziom 13  
    Posty: 137
    Ocena: 5
    Trochę za bardzo się napaliłem. To trzeba na spokojnie. Najpierw muszę posprawdzać poszczególne części programu, potem spiąć to w całość i dopiero projektować płytkę.
    Mam jeszcze jedno pytanie przed testami: jak to wszystko podpiąć do uC? Chodzi mi o to gdzie podłączyć wyjścia, a gdzie wejścia?
  • Pomocny post
    #13 4707116
    snow
    Poziom 31  
    Posty: 1825
    Pomógł: 178
    Ocena: 201
    Przydałby się jakiś kondensator na zasilaniu do odfiltrowania śmieci
  • #14 4707291
    ogor_89
    Poziom 13  
    Posty: 137
    Ocena: 5
    Moduł zasilania będzie na osobnej płytce (stabilizator + kondensatory), więc tutaj już chyba nie trzeba odfiltrowywać
  • #15 4707525
    Pijopic
    Poziom 17  
    Posty: 235
    Pomógł: 10
    Ocena: 2
    Trzeba odfiltrowac to po pierwsze, po drugie to skad ma ktos wiedziec gdzie co podpiac jak nie wie co podpiac, po trzecie to wpierw sie robi prototyp na ktorym sie testuje program a nie odwrotnie.
  • #16 4707830
    ogor_89
    Poziom 13  
    Posty: 137
    Ocena: 5
    Podpiąć pasuje to o czym jest mowa wyżej, czyli 10 diod LED, 2 diody RGB i wejście do pomiaru obrotów.
  • #17 4708291
    Pijopic
    Poziom 17  
    Posty: 235
    Pomógł: 10
    Ocena: 2
    A gdzie rezystory ograniczajace, gdzie wyjscia zasilania dla diod ?
  • #18 4708970
    ogor_89
    Poziom 13  
    Posty: 137
    Ocena: 5
    O to się nie martw. Rezystory będą przy diodach (jakieś 20 cm od uC), a zasilanie pociągnę ze stabilizatora. Od razu mam pytanie. Czy do ATmegi8, 10-ciu LED i 2 diod RGB wystarczy 7805, czy lepiej dać 2A (78S05 czy jakoś tak)?
  • #19 4709316
    Pijopic
    Poziom 17  
    Posty: 235
    Pomógł: 10
    Ocena: 2
    No to sie nie martwie...
  • REKLAMA
  • #21 4710032
    snow
    Poziom 31  
    Posty: 1825
    Pomógł: 178
    Ocena: 201
    Jak tak czytam i czytam to mam coraz większe obawy (szczególnie przy tak niechlujne wykonanej płytce) że wszelkie zakłócenia będą ci skutecznie utrudniać pracę tego urządzenia. Długie przewody, zero filtrowania zakłóceń na płytce. Podejrzewam że to ma pracować w jakimś samochodzie a nie w laboratorium
  • #22 4710114
    ogor_89
    Poziom 13  
    Posty: 137
    Ocena: 5
    Dokładniej w motocyklu. Pisałem, że tej płytki nie będę robił, a projekt zrobię od nowa jak już się uporam ze stroną programową. Jakie filtrowanie zakłóceń masz na myśli? Chyba nie na zasilaniu? Stabilizator z kondensatorami będzie na osobnej płytce, ale w tej samej obudowie. Odległość na kablu może 3 cm.
  • Pomocny post
    #23 4710128
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    po prostu nie bedzie dzialac [;

    1. filtrowanie daje sie PRZY ukladzie scalonym, na KAZDEJ nozce zasilania, przy uzyciu kondensatora 100n. bez wyjatkow - zadnych. 'przy' oznacza, ze daje sie to JAK NAJBLIZEJ, a nie na osobnej plytce z wiszacym kablem. nie mowiac juz o tym, ze po jaka cholere to ma byc na osobnej plytce?
    2. rezystory ograniczajace prad diody na kablach przy diodzie? przeciez to BEZ SENSU, skoro mozna je dac na plytce...
    3. ta plytka jest tak zaprojektowana, ze to sie do niczego nie nadaje. nie mowiac juz o tym, ze jesli nie masz doswiadczenia w robieniu plytek (a raczej nie masz, skoro nie mogles sie odnalezc w eagle), to po prostu ci nie wyjdzie taka plytka za pierwszym razem - za cienkie sciezki, za duzo nawciskane sciezek miedzy padami, ogolnie slabo.... nawet jesli ktos inny ci to zrobi, to po jaka cholere ma robic takie cienkie sciezki, skoro to przy uzyciu zwor (3-4) mozna zrobic 100x lepiej ze sciezkami grubymi na 30milsow... plytek sie nie robi w 5 minut, tylko w 5 godzin, po to sie marnuje ten czas, aby potem wszystko ladnie dzialalo od pierwszego razu (hehe [; ), bez poprawek, zwarc, podtrawien, zaklocen i tym podobnych rewelacji. popatrz np tutaj - gdybym robil to twoja metoda byloby wieksze conajmniej 3x, a przelotek byloby ze 300.
    4. ty chcesz zasilac 10 ledow i 2 rgb (czyli w sumie 16 diod) z uC na raz? czyli tu tez zakladasz ze wszystko jest spoko i ze kontroler to wytrzyma? pozatym, ze uC ma ograniczenie pradu z jednej nozki, ma tez ograniczenie calkowitego pradu. zblizasz sie do niebezpiecznej granicy, za ktora twoj procek pojdzie z dymem. i jeszcze pytasz czy podlaczyc do kontrolera stabilizator 2A... jesli zamierzasz z tego kontrolera ciagnac wiecej niz 100-200mA to dobrze sie nad tym zastanow. tego sie tak nie robi, tylko sie daje tranzystory jako wzmocnienie pradu.

    moze na razie tyle... polecalbym troche pracy wlasnej, bo od postow w tym temacie nie zacznie dzialac. w obecnym ksztalcie zreszta tez nie bedzie dzialac.

    0x41 0x56 0x45!!
  • #24 4710224
    ogor_89
    Poziom 13  
    Posty: 137
    Ocena: 5
    Maksymalnie miały się świecić 2 diody RGB i do 3 LED. Jako laik nie pomyślałem o tranzystorach... Tak mnie zjechałeś (nie dziwię się), że już niczego nie jestem pewien... Skontroluj moje myślenie, ok?
    Stabilizator z trzema kondensatorami plus jeszcze jeden na VCC uC. Do każdego wyjścia LED i RGB rezystor (tylko jaki?) i baza tranzystora (BC547?), emiter do masy, a kolektorem do LED i rezystora. Co jest źle?
  • #25 4710251
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    2 diody RGB to w zasadzie 6 diod zwyklych. nie traktuj tego jako zjechanie, tylko po prostu policz sobie - na kazda z diod trzeba te 20mA przeznaczyc, razy 9 diod to jest 180mA, wiec teraz mykaj do datasheeta i znajdz jaka jest obciazalnosc sumaryczna portow. jesli stosownie wieksza, to luz, jesli nie bardzo, to trzymajmy sie tranzystorow [; musisz po prostu oszacowac prad jaki beda te diody pobieraly, a to juz zalezy od twojej aplikacji, bo jesli swiecisz w diodzie RGB wszystkimi 3 czesciami na raz, to nalezy ja traktowac jako 3 zwykle. jesli zas nie... to trzeba sobie oszacowac [;

    co do stabilizatora to zwyklo sie tak robic, ze na jego wejscie i wyjscie daje sie po 2 kondensatory - jeden duzy (w uF, od 1 - 1000uF [; ) i jeden maly (zwykle 100n) - jesli twoj stabilizator niczego innego delikatnego nie zasila poza prockiem, to z tego malego na wyjsciu mozna zrezygnowac na rzecz 100n przy samym procku.

    0x41 0x56 0x45!!
  • #26 4710309
    ogor_89
    Poziom 13  
    Posty: 137
    Ocena: 5
    RGB liczyłem jako 3 zwykłe.
    Obciążalnośc sumaryczna... DC Current VCC and GND Pins... To to? 300mA.

    Dodano po 16 [minuty]:

    Chciałbym wykożystać Timery do zliczania przez 1/4 lub 1/2 sekundy impulsów na wejściu, a później do sterowania jasnością diod RGB (Timery jako PWM). Jeśli wykożystam tranzystory to na RGB będę potrzebował 3 wyjścia, z wejściem to będzie razem 4. Jak to podłączcyć do ATmegi8?
  • #27 4710407
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    dc current vcc and gnd pins - wystarczy przetlumaczyc (prad staly na pinach zasilania i masy), zeby wiedziec, ze to nie to.

    bez uzycia tranzystorow tez musialbys uzyc 3 wyjsc zeby robic to przez PWM, no chyba ze sciemniasz wszystkie 3 czesci na raz, wtedy wystarczy ci jedno.

    0x41 0x56 0x45!!
  • #28 4711329
    ogor_89
    Poziom 13  
    Posty: 137
    Ocena: 5
    Nie jestem pewny, ale chyba znalazłem.
    The sum of all IOL, for all ports, should not exeed 300mA
    .(..) for ports C0 - C5 (...) not exeed 100 mA
    (...) for ports B0 - B7, C6, D0 - D7 and XTAL2, (...) not exeed 200 mA
  • #30 4711627
    ogor_89
    Poziom 13  
    Posty: 137
    Ocena: 5
    W takim razie wytrzyma, ale w sumie lepiej sie zabezpieczyć.
    Czy to jest dobre podłączenie?
    Cytat:
    Do każdego wyjścia LED i RGB rezystor (tylko jaki?) i baza tranzystora (BC547?), emiter do masy, a kolektorem do LED i rezystora. Co jest źle?

Podsumowanie tematu

✨ Dyskusja dotyczy adaptacji mikrokontrolera ATmega8 do pomiaru obrotów czterosuwowego silnika benzynowego V4 z wyświetlaniem wyniku za pomocą diody RGB zmieniającej kolory w zależności od prędkości obrotowej (niebieski → zielony → żółty → czerwony). Proponowane metody pomiaru to zliczanie impulsów na wejściu przerwania (INT) lub pomiar częstotliwości/okresu sygnału z zapłonu elektronicznego. Wskazano na konieczność zastosowania timerów (Timer1 do zliczania impulsów, Timer2 do PWM sterującego jasnością diod RGB). Omówiono projekt płytki drukowanej, zwracając uwagę na błędy w rozmieszczeniu ścieżek, zbyt małe odstępy, nieprawidłowe rozmieszczenie nóżek ATmegi8 oraz konieczność filtrowania zakłóceń przy układzie scalonym za pomocą kondensatorów 100nF blisko nóżek zasilania. Poruszono temat stabilizacji napięcia z użyciem stabilizatora 7805 (lub 78S05 2A) oraz kondensatorów filtrujących (duże pojemności na wejściu i wyjściu stabilizatora, dodatkowo małe 100nF przy mikrokontrolerze). Dyskutowano o obciążalności prądowej pinów ATmega8 (maksymalnie 300mA sumarycznie, 100mA dla portu C, 200mA dla portów B i D) oraz konieczności stosowania tranzystorów (np. BC547) do sterowania diodami RGB i LED, aby nie przeciążać mikrokontrolera. Zwrócono uwagę na prawidłowe podłączenie rezystorów ograniczających prąd przy diodach oraz na konieczność podciągnięcia pinu Reset do VCC. Poruszono także kwestie pinów programowania ISP, które nie powinny być obciążane podczas programowania, oraz możliwość użycia bufora ULN2804 do sterowania diodami bez utrudniania programowania. Wspomniano o alternatywie w postaci mikrokontrolera ATmega48 z większą liczbą wyjść PWM, co może ułatwić sterowanie diodami RGB i pomiar obrotów. Całość wymaga najpierw przetestowania oprogramowania na prototypie, a dopiero potem projektowania płytki PCB.
Wygenerowane przez model językowy.
REKLAMA