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.

[AVR] Sterownik silnika elektrycznego oparty na ISOBUS

rafisoltys 24 Cze 2018 21:50 186 4
  • #1 24 Cze 2018 21:50
    rafisoltys
    Poziom 9  

    Witajcie,

    Chciałbym skonsultować z wami swój projekt układu i programu mającego na celu sterowanie prędkością silnika elektrycznego w zależności od prędkości ciągnika rolniczego.

    Sygnał prędkości pojazdu podawany jest na złącze ISOBUS i ma następującą charakterystykę:

    Stan wysoki powyżej 6,3 V
    Stan niski poniżej 1,3 V
    Wypełnienie stanem wysokim 20%
    Wypełnienie stanem niskim 80%
    Charakterystyka sygnału = 130 Hz/m/s

    Sterowanie ma odbywać się w następujący sposób:

    Dla prędkości 15 km/h (4,16 m/s * 130 impulsów=541,6 Hz) silnik z przekładnią ślimakową ma pracować z pełną prędkością PWM = 100 %.
    Prędkość obrotowa silnika ma być proporcjonalna do prędkości ciągnika rolniczego (Wartość PWM maleje liniowo do 0 dla prędkości 0 km/h).

    Parametry silnika:
    Silnik 12 V DC o mocy 220 W i maksymalnej prędkości obrotowej 3000 obr/min (Przekładnia ślimakowa i=60, Moment na wyjściu 20 Nm)

    Schemat układu:

    [AVR] Sterownik silnika elektrycznego oparty na ISOBUS


    Przedstawiony poniżej kod w celu wizualizacji wyników wyświetla wartość prędkości obrotowej i częstotliwość sygnału na porcie szeregowym.
    W komentarzu przedstawiłem funkcję, która ma na PIN5 ustawić odpowiednią wartość PWM.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Problemy i pytania dot. UKŁADU:

    Czy zastosowanie transoptora jest dobrym rozwiązaniem, do przekształcenia napięcia sygnału prędkości ?
    Czy sygnał prędkości powinien być podpięty do transoptora przez rezystor ??
    Czy sterowanie silnikiem DC może być realizowane za pomocą MOSFET Buzz11 ?
    Czy bramka MOSFET powinna być podciągnięta rezystorem do GND ?
    Czy zastosowanie tranzystora BC332 jest konieczne do sterowania MOSFETEM ?

    Problemy i pytania dot. KODU:

    [AVR] Sterownik silnika elektrycznego oparty na ISOBUS


    Do testowania programu wykorzystuję wentylator PC i jego wyjście sygnałowe.
    Program wyświetla ciągle wartość zmiennej pwm=0 niezależnie od prędkości obrotowej (warunek pętli większe od 25,5 i mniejsze 256 spełniony). Jaka może być tego przyczyna ?
    Dokładność pomiaru jest dosyć słaba. Pomimo tego, że wentylator zasilany jest zewnętrznego źródła (brak sterowania) odczyt prędkości ma spory rozrzut. Jak można zwiększyć dokładność ?

    Z góry dziękuję za pomoc.

    0 4
  • Pomocny post
    #2 24 Cze 2018 22:24
    kicajbas
    Poziom 26  

    Witam
    Jeśli chodzi o podłączenie el. zew. do uC to szybciej sam znajdziesz wpisując w GOOGLE np.: "sterowanie tranzystora mosfet". Transoptor też inaczej się podpina:
    [AVR] Sterownik silnika elektrycznego oparty na ISOBUS
    Co do kodu: należy zacząć od tego:
    [AVR] Sterownik silnika elektrycznego oparty na ISOBUS
    ...jakoś nie widać u Ciebie tego podpięcia.
    To tak z grubsza.

    Pozdr.

    0
  • #3 24 Cze 2018 23:25
    rafisoltys
    Poziom 9  

    Dzięki za odpowiedź,
    Poprawiłem schemat zgodnie z Twoimi uwagami.

    Czy dostrzegłeś może, dlaczego program nie liczy mi wartości zmiennej pwm ??

    Dodano po 3 [minuty]:

    [AVR] Sterownik silnika elektrycznego oparty na ISOBUS

    Czy takie podłączenie MOSFET do mikro jest poprawne ??

    0
  • Pomocny post
    #4 25 Cze 2018 09:45
    leonow32

    Poziom 30  

    8-O

    1) Dokładność pomiaru jest słaba, bo masz w układzie silnik, który sieje zakłóceniami, a nie masz ani jednego kondensatora filtrującego zasilanie.
    http://mikrokontrolery.blogspot.com/2011/04/zasilanie-mikrokontrolera.html

    2) Pin AREF wisi w powietrzu, a przydałby mu się kondensator 100n
    http://mikrokontrolery.blogspot.com/2011/03/avr-adc-podlaczenie.html

    3) Dlaczego silnik jest podłączony do źródła MOSFETa, a nie do drenu?
    http://mikrokontrolery.blogspot.com/2011/03/tranzystor-mosfet-wiedza-tajemna.html

    4) To już woła o pomstę do nieba. Do czego służą timery i przerwania w mikrokontrolerach?

    Kod: c
    Zaloguj się, aby zobaczyć kod


    5) Używanie zmiennej zmiennoprzecinkowej 64-bitowej do obliczania PWM to overkill.

    1
  • #5 25 Cze 2018 10:55
    rafisoltys
    Poziom 9  

    Uprościłem trochę układ. Zrezygnowałem z transoptora i zastosowałem zwykły dzielnik rezystorowy.

    leonow32 napisał:
    1) Dokładność pomiaru jest słaba, bo masz w układzie silnik, który sieje zakłóceniami, a nie masz ani jednego kondensatora filtrującego zasilanie.
    http://mikrokontrolery.blogspot.com/2011/04/zasilanie-mikrokontrolera.html


    Poprawione. Czy tak może już zostać ?

    leonow32 napisał:
    3) Dlaczego silnik jest podłączony do źródła MOSFETa, a nie do drenu?


    Poprzedni schemat podłączenia wziąłem z forum atnela. Widocznie musze bardziej kontrolować jakość.
    Obecny schemat podłączenia MOSFET jest zgodny z tym, co znalazłem w notatkach z prowadzonego przez Ciebie kursu :)

    leonow32 napisał:
    ) To już woła o pomstę do nieba. Do czego służą timery i przerwania w mikrokontrolerach?

    Podchodziłem do timerów i obsługi przerwań kilkukrotnie. Zawsze pojawiają się jakieś pytania, na które nie mogę w rozsądnym czasie znaleźć odpowiedzi.
    Czy funkcja millis() nie jest oparta właśnie na Timer 1 ?
    Może będziesz mógł mi pomóc jakoś z tym kodem ?

    0