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

Mega8 - Problem z silnikiem DC (sterowanie w samochodzie)

wawrzyc 17 Sty 2016 02:24 2982 31
  • #1 15341904
    wawrzyc
    Poziom 12  
    Mam problem z sterowaniem silnika prądu stałego za pomocą atmegi.
    Jest to układ do tempomatu w aucie. Jest to silnik który za pomocą przekładni wysuwa trzpień który steruje linką przepustnicy. Aczkolwiek problem jest już gdy płytka leży na stole. Atmega resetuje się. Program testujący polega na szybkim poruszaniu silnikiem raz w jedną, raz w drugą stronę z przerwą na "nic nie robienie" około 60ms.
    Wszystkie sygnały podane są do atmegi przez transoptory, na wyjściu mostek H z zabezpieczeniami aby nie można było włączyć dwóch sygnałów z atmegi na raz.
    W zasilaniu diody transil, równolegle z silnikiem transil dwu-kierunkowy, tranzystory zabezpieczone przez transile, oddzieliłem również zasilanie atmegi przez szeregową diodę i kondensator przed stabilizatorem. Podłączany również był drugi akumulator do zasilania atmegi lub silnika z tranzystorami, zero efektów. Już nie wiem co więcej można wymyślić.

    Załączam schemat, jutro prześlę widok 3d płytki.

    Mega8 - Problem z silnikiem DC (sterowanie w samochodzie)
  • #2 15342044
    ArturAVS
    Moderator
    1. Po co Ci w układzie transoptory, skoro nie ma separacji między wejściem a wyjściem transoptora ( zasilasz wszystko z jednego napięcia)?
    2. Gdzie filtr LC na zasilaniu, i przy silniku?

    3. Gdzie kondensatory blokujące przy AVCC I VCC?
  • #3 15342096
    DJ ANNUS
    Poziom 31  
    Bez silnika też się resetuje? A z Żarówką zamiast silnika?
    I skąd wiesz że się resetuje?
  • #4 15342101
    wawrzyc
    Poziom 12  
    Poza pętlą główną programu wstawiłem zapiszczenie buzerkiem na kilka ms. Bez silnika nie piszczy. Silnik pobiera około 0,7A. Nie próbowałem z żarówką.
  • #5 15342113
    DJ ANNUS
    Poziom 31  
    wawrzyc napisał:
    Poza pętlą główną programu wstawiłem zapiszczenie buzerkiem na kilka ms


    Gdzie takich praktyk uczą, lepiej zapalić diod na porcie, zapiszczenia możesz nie usłuszeć jak będzie krótkie.

    Dodano po 1 [minuty]:

    Po drugie możesz mieć za słaby zasilacz do wykonania szybkiego rewersu.
  • #6 15342120
    wawrzyc
    Poziom 12  
    arturavs napisał:
    1. Po co Ci w układzie transoptory, skoro nie ma separacji między wejściem a wyjściem transoptora ( zasilasz wszystko z jednego napięcia)?
    2. Gdzie filtr LC na zasilaniu, i przy silniku?

    3. Gdzie kondensatory blokujące przy AVCC I VCC?


    Czyli ten tranzystor za wyjsciem zasilać transoptora z przed stabilizatora?

    Jaki filtr wykorzystać, jakie wartości?

    Na VCC i AVCC jest 100n i 470uF równolegle.


    Na oscyloskopie nie widać żadnych szpilek za stabilizatorem.

    Dodano po 2 [minuty]:

    DJ ANNUS napisał:
    wawrzyc napisał:
    Poza pętlą główną programu wstawiłem zapiszczenie buzerkiem na kilka ms


    Gdzie takich praktyk uczą, lepiej zapalić diod na porcie, zapiszczenia możesz nie usłuszeć jak będzie krótkie.

    Dodano po 1 [minuty]:

    Po drugie możesz mieć za słaby zasilacz do wykonania szybkiego rewersu.


    Zapiszczenie słychać ustawiłem je sobie na 50ms i widać że silnik się przestaje ruszać.
    Akumulator też jest za słabym zasilaczem? Na oscyloskopie nie widać żeby przysiadało.

    Na schemacie brakuje dwóch rezystorów rozładujących bramki mosfetów, zapomniałem o nich rysując schemat, dałem je później na gotowej płytce - 22k ohm.
  • #8 15342149
    tronics
    Poziom 38  
    Cytat:
    oddzieliłem również zasilanie atmegi przez szeregową diodę i kondensator przed stabilizatorem

    A ze schematu wygląda, że nie ma podziału na masę bloku sterowania mocą (PGND) i masę układów logicznych (DGND). Czy kolega wykorzystuje BoD? Jeśli tak to może być pierwsza wskazówka.
  • #9 15342164
    wawrzyc
    Poziom 12  
    tronics napisał:
    Cytat:
    oddzieliłem również zasilanie atmegi przez szeregową diodę i kondensator przed stabilizatorem

    A ze schematu wygląda, że nie ma podziału na masę bloku sterowania mocą (PGND) i masę układów logicznych (DGND). Czy kolega wykorzystuje BoD? Jeśli tak to może być pierwsza wskazówka.


    Chcesz powiedzieć że zakłucenia idą po masie? W jaki sposób mógłbym oddzielić masy?

    Spróbuje dziś wyłaczyć Brown-Out Detector zobaczymy co się zmieni.
  • #10 15342362
    tronics
    Poziom 38  
    Mega8 - Problem z silnikiem DC (sterowanie w samochodzie) Mega8 - Problem z silnikiem DC (sterowanie w samochodzie)
    Na szybko naszkicowałem jak to wygląda w rzeczywistości. R1 i R2 to rezystancje (w sumie można dać impedancje) pasożytnicze - wszystkie rezystancje przewodów, ścieżek i złącz. U.C. to układy cyfrowe, O.M. to obwód mocy - I1 to prąd układów cyfrowych (bardzo mały), I2 to prąd obwodu mocy (dużo większy niż I1). W idealnych warunkach R1 i R2 są bliskie 0 więc nie ma na nich żadnego spadku napięcia niezależnie od obciążenia. W rzeczywistości one mają określoną wartość i łatwo zauważyć, że im większy prąd będzie pobierany przez obwód mocy tym większe spadki napięć będą występować na tych rezystancjach, w efekcie masa układu cyfrowego może w przypadku dużych chwilowych obciążeń (np. rozruch silnika, a tym bardziej zmiana kierunku wirowania) pływać. A to tylko aspekt "stałoprądowy" - bez uwzględnienia stanów nieustalonych (przeładowania pojemności etc.)
  • #11 15342376
    Konto nie istnieje
    Konto nie istnieje  
  • #12 15342498
    tronics
    Poziom 38  
    Cytat:
    R masy (jezeli kolega dał naprawde porzadne ściezki to sa tysieczne ohma.

    Z jednej strony tak, z drugiej, szczególnie jeśli jest np. zimny lut, uszkodzona przelotka, zaśniedziały konektor czy zwyczajnie naderwana ścieżka efekt może być widoczny właśnie jedynie przy większych prądach, a multimetrem <1Ohm zazwyczaj nie zmierzysz, chyba, że masz agilenta/hp i pomiar 4W to i mikroomy pewnie zmierzysz.
    Cytat:
    Mysle to program Ci gdzies idzie "w maliny".

    Możliwe biorąc pod uwagę, że autor nie sprawdził jeszcze rzetelnie działania układu bez silnika, albo mi to gdzieś umknęło. Z drugiej strony wyłączenie BOD przy podłączonym programatorze to kwestia 10s. Tyle trzeba żeby wyeliminować jedną z przyczyn. Bez BOD, bez watchdog timer i bez zewnętrznych źródeł resetu (zewnętrzny układ watchdog) nie ma możliwości "samoczynnego resetu" - jeśli wyeliminujemy te przyczyny faktycznie zostaje jedynie sam program wychodzący z pętli głównej lub zablokowany w jakiejś nieskończonej pętli. I wtedy bez analizy kodu źródłowego nic nie poradzimy.
  • #13 15342674
    Konto nie istnieje
    Konto nie istnieje  
  • #14 15342696
    DJ ANNUS
    Poziom 31  
    Zastąpienie żarówką silnik rozwieje 100% problemu z przepięciami.
  • #15 15342744
    wawrzyc
    Poziom 12  
    Bez silnika płytka leżała na stole generujac impulsy nic się nie działo. Dziś nie mam czasu jeszcze sprawdzić z wyłączonym BOD ale zrobie to w nastepnej kolejności. Wrzuce też przebiegi z oscyloskopu na bramkach mosfetów. Buzzer jest z generatorem włączam go na 50ms (pikniecie) przed główną pętlą programu a więc jest pewne że program startuje od zera, mam led na jednym wyjsciu. Program ma kilka linijek o tak (ustawienia wyjsc silnika)

    Pik
    Petla:
    {
    Ustaw 0 0
    Poczekaj
    Ustaw 1 0
    Poczekaj
    Ustaw 0 0
    Poczekaj
    Ustaw 0 1
    }

    Wiec raczej nie możliwe są błędy w programie bo on tylko generuje prostokąt. Kolejną sprawą jest to że te restary nie są cykliczne, czasem działa (macha silnikiem) kilka minut a czasem kilka sekund.
  • #16 15342771
    Konto nie istnieje
    Konto nie istnieje  
  • #17 15342789
    wawrzyc
    Poziom 12  
    Tak tylko te poczekaj jest krótkie gdy czasy są długie wszystko działa ok. Zależy mi aby silnik mógł robić szybkie ruchy, to układ do tempomatu i aby nie szarpało silnik musi często wręcz drgać aby utrzymać zadaną prędkość. W gotowym programie do tempomatu auto jeździ jednak czasem uda się przejechać 20km bez restartu atmegi a czasem tylko kilka zanim się wyłączy.
    W aucie biorę sygnał od czujnika prędkości pojazdu i zapomocą pid reguluje tym silnikiem.
  • #18 15342869
    Konto nie istnieje
    Konto nie istnieje  
  • #19 15342883
    DJ ANNUS
    Poziom 31  
    wawrzyc napisał:
    Zależy mi aby silnik mógł robić szybkie ruchy, to układ do tempomatu i aby nie szarpało silnik musi często wręcz drgać aby utrzymać zadaną prędkość.

    A po co, odpowiedź impulsowa sterowania przepustnicy ma swoją stałą czasową, jaką.??????

    Na pewno to nie są ms bo auto waży ponad tonę, spaprałeś sterowanie i szukasz dziury w całym.

    Jaki masz sygnał zwrotny nastawnika drogi ?

    Dodano po 1 [minuty]:

    Temat jest - o tym jak NIE implementować sterownia i popełnione wszystkie możliwe błędy.
  • #20 15343023
    wawrzyc
    Poziom 12  
    Temat nie dotyczy sterowania tylko problemow z restartami avr. Program testowy generuje przebieg prostokątny, nic więcej.
  • #21 15343029
    DJ ANNUS
    Poziom 31  
    Jak wepniesz zarówke 55W to wtedy odpisz.
  • #22 15343142
    Konto nie istnieje
    Konto nie istnieje  
  • #23 15343369
    wawrzyc
    Poziom 12  
    Właściwie są dwa objawy dzieją się losowo. Cześciej się restuje i zaczyna program od początku czasem zawiesi i nic się nie dzieje silnik stoi. Gdy zawiesi się po kliknięciu kilka razy resetu zresetuje się wreszcie.
  • #24 15343437
    dondu
    Moderator na urlopie...
    wawrzyc napisał:
    Gdy zawiesi się po kliknięciu kilka razy resetu zresetuje się wreszcie.

    Mikrokontroler startuje na pewno prawidłowo już po pierwszym resecie.

    1. Skąd ta pewność, że następuje reset?
    2. Pokaż cały program.
    3. Pokaż gdzie i jak prowadzisz przewody (zdjęcia).

    Samochód to często niełatwe środowisko i trzeba dbać o szczegóły, pod kątem zakłóceń.

    Edit:
    Co z tego że transoptory używasz, jeśli masa jest wspólna a zasilanie nierozdzielone galwanicznie.
  • #25 15343579
    Konto nie istnieje
    Konto nie istnieje  
  • #26 15343949
    wawrzyc
    Poziom 12  
    Płytki mam dwie różnią się minimalnie, w jednej są diody schotky nie ma transili, działają podobnie. Przewody mają 20cm i leżą obok płytki na stole.
  • #28 15363255
    wawrzyc
    Poziom 12  
    
    #include <avr/interrupt.h>
    #include <util/delay.h>
    
    
    #define BUZ PD4
    #define wiecej (1<<PD1) //chowanie
    #define mniej (1<<PD0)  //wysuwanie
    
    int main(void)
    {
    
    DDRD |= (1<<BUZ);
    DDRD |= (1<<PD0);
    DDRD |= (1<<PD1);
    PORTD = 0x00;
    
    
                  PORTD |= (1<<BUZ); //piszczenie on
    	    	  _delay_ms(50);
    	    	  PORTD &= ~(1<<BUZ); //piszczenie off
    	    	  _delay_ms(20);
     //pętla główna
         while(1){
    	   	           	       PORTD |= mniej; //wysuwanie silnika
    	    	           	       PORTD &=~wiecej;
    	    	           		   
    	    	           	   _delay_ms(200);
    	    	           	   
    	    	           	       PORTD &=~mniej; //nic nie robi
    
    	    	            	_delay_ms(60);
    	    	               
    	    	            	PORTD |= wiecej;
    	    	    		    PORTD &=~mniej; //chowanie silnika
                               
    	    	    		   _delay_ms(200);
    	    	    		   
                               PORTD &=~wiecej; //nic nie robi
                               
                               _delay_ms(60);
    }
    }
    


    Oto program testowy. Po podłączeniu żarówki słychać piśnięcie tylko po włączeniu, żarówka miga.

    Po podłączeniu silnika słychać piszczenie w losowych odstępach, czasem program przerywa swoją pracę.

    A tu zdjęcie płytki.

    Mega8 - Problem z silnikiem DC (sterowanie w samochodzie)
  • #29 15363325
    Konto nie istnieje
    Konto nie istnieje  
  • #30 15363345
    wawrzyc
    Poziom 12  
    Zamiast bezpieczników wpiąłem 2 akumulatory, jeden odpowiadał za zasilanie atmegi, a 2 za zasilanie tranzystorów (silnika). Nic to nie zmieniło.
REKLAMA