Elektroda.pl
Elektroda.pl
X
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Optymalizacja parametrów sterowania BLDC

30 Lis 2011 12:42 3436 14
  • Poziom 14  
    Zbudowałem prototyp drivera dla silnika BLDC z czujnikami Halla. Mikrokontroler steruje potrójnym półmostkiem H. Dolne "zawory" półmostka są sterowane przez PWM w celu regulacji prądu uzwojeń, górne są natomiast jedynie włączane i wyłączane.
    Zmiana fazy odbywa się na podstawie przerwania pochodzącego od czujników położenia wirnika. Zauważyłem, że dopiero opóźnienia zmiany fazy względem sygnału o około 0,5ms powodują spadek mocy.
    Nowe komercyjne ESC podobno posiadają strojenie opóźnienia sensora. Czy ma to praktyczne znaczenie?
    Problem mam z ustaleniem częstotliwości PWM. Z jednej strony dobrze, żeby nie gwizdało, z drugiej MOSFET'y wykonawcze nie lubią zbyt wysokich częstotliwości, z trzeciej chciałbym mieć jak najlepszą sprawność.
    Czy ktoś mi potrafi doradzić co i jak pomierzyć, żeby dobrać częstotliwość PWM do tego konkretnego zestawu?
  • PCBway
  • Poziom 37  
    Jak chcesz rzeczowej pomocy to musisz podać więcej szczegółów tego co robisz.
    Przy doborze kluczowania PWM weź pod uwagę, że wraz ze wzrostem częstotliwości PWM rośnie zapotrzebowanie MOSFETów na prąd sterujący bramkami a nie wiem jaki typ drivera zastosowałeś? Może stać się tak, że za mały ładunek podany na bramkę nieco tylko otworzy kanał tranzystora i ten będzie się grzał.
    Z opóźnieniem sensora to jest tak, że ważny jest czas po między wartością przy jakiej czujnik Halla zadziała a wartością maksymalną wirującego pola magnetycznego od wirnika. Bowiem ta ostatnia ma znaczenie jeśli chodzi o moment wysterowania kluczy tak by na wirnik oddziaływał maksymalnie duży moment od wzbudzenia.
  • PCBway
  • Poziom 14  
    Podaję więcej szczegółów. Dolny zawór nMOS IRF7455, górny pMOS Si4497. Oba sterowane przez TC4428. Procesor AVR pracuje na 3.3V natomiast końcówka wykonawcza zasilana jest napięciem 6V-8.4V (2 LiPo). Schemat musiałbym narysować.
    RitterX - Pole magnetyczne o którym wspominasz wysterowuje właśnie czujnik. Czujnika nie mogę przesunąć na osi - ograniczenie konstrukcyjne. Mogę jedynie opóźnić komutację względem sygnału z Hall'a programowo. "Ma znaczenie" - zdecydowanie tak. Ale jak to zoptymalizować?
  • Poziom 37  
    Fizyczne przesunięcie czujnika zamontowanego najczęściej między nabiegunnikami to ten sam problem co wartość pola magnetycznego od magnesu trwałego przy, której zadziała czujnik. Oba te czynniki wpływają na moment wysterowania, który jest determinowany przez geometryczną zależność po między polem wirnika z magnesem stałym a polem magneśnicy czyli biegunów z nawiniętymi cewkami. Musisz sobie odpowiedzieć na pytanie jaki moment mechaniczny będzie wytwarzany przez oddziaływanie obu pól gdy kąt po między polami wyniesie 0deg, 45deg, 90deg? Dodam, że warto przyjrzeć się wzorowi Lorenza :F=B*I*l*sin(alpha).
    Zmieniając kąt będziesz regulował moment podobnie jak zmieniając prąd. Co do prądu to przebiegi PWM o małym wypełnieniu mają dużo harmonicznych czyli bedzie "gwizdało".

    Co do wyliczeń drivera dla MOSFETów w funkcji częstotliwości i nie tylko przeczytaj to:
    http://ww1.microchip.com/downloads/en/AppNotes/00799b.pdf

    Najgorzej wygląda górna gałąź mostka z PMOSami. Gdyż te mają prawie 10nF pojemności wejściowej.
  • Poziom 14  
    RitterX
    Ale driver do MOSFETów już wybrałem. Interesuje mnie optymalna częstotliwość uwzględniające zarówno kluczowanie MOSFETów jak i charakterystykę silnika. W proponowanej nocie nie ma ani słowa o obciążeniu tranzystora, zwłaszcza gdy nie jest ono rezystancyjne :(
    Zastosowałem pMOS'a aby uprościć driver, pMOS jak wspomniałem nie jest sterowany PWM więc jego kluczowanie nie jest tu krytycznym problemem.
  • Poziom 37  
    Wiem, że wybrałeś drivery. Jak się wczytasz dokładniej to będziesz mógł obliczyć do jakiej częstotliwości wydolą drivery sterujące tranzystorami. Obciążenie tranzystorów od strony silnika jest pochodną takich czynników jak obciążenie mechaniczne a dokładniej moment obciążenia w funkcji prędkości obrotowej, silnika. Tak więc silnik nieobciążony będzie pobierał mało mocy - mały prąd kluczy a w przypadku zatrzymania silnika przez obciążenie mechaniczne, klucze lekko miały nie będą, pracując w warunkach praktycznie zwarcia w obciążeniu.
    Od góry częstotliwość kluczowania jest ograniczona poprzez wydajność driverów i szybkość załączania/wyłączania tranzystorów, uwzględniając konieczny dead-time dla kluczy mostka, a od dołu maksymalną konieczną prędkością obrotową uzyskiwaną przez silnik w danej aplikacji.
    Nie wiem czy chcesz się "wgłębiać w temat" czy też zbudować określoną rzecz by działała?
  • Poziom 14  
    Zbudowałem już rzecz, która działa. Chce teraz zoptymalizować parametry.
    Postawię trochę inaczej pytanie:załóżmy idealny driver / półmostek, tzn. dwa stany (on/off) przy dowolnej częstotliwości kluczowania, żadnych strat.
    Chcę przy tym założeniu dobrać częstotliwość PWM do sterowania silnikiem. Warunki skraje to
    1) bardzo wysoka częstotliwość, dla której indukcyjność uzwojeń stanowi główny element stratny
    2) bardzo niska częstotliwość - bez strat na indukcyjności ale przy wypełnieniu PWM mniejszym od 100% silnik będzie szarpał czy też dygotał w każdej fazie.
    A co pomiędzy 1) i 2), jak znaleźć rozsądne optimum?
  • Poziom 37  
    Optymalizacja, tak z grubsza, polega na tym, że znamy choćby w przybliżeniu parametr optymalny, który możemy wyliczyć/zmierzyć. Różnica między parametrem optymalnym a tym co dostajemy w rzeczywistości to uchyb albo jak kto woli błąd. Dla silnika w zależności od zastosowania może być to sprawność, poślizg, oscylacje prędkości obrotowej itd.
    Jak byś napisał bardzo uproszczone równanie gałęzi twojego silnika to miałbyś nie tylko indukcyjność a układ RL czyli rezystancję i indukcyjność. Dlatego przy dostatecznie wysokiej częstotliwości PWM prąd zasilający uzwojenia zostaje w nich wygładzony. Przy skandalicznie niskiej częstotliwości PWM może dojść do sytuacji gdy wolno zmieniający się PWM wpłynie na tyle na oscylacje strumienia, że silnik będzie nie tyle się kręcił co drgał. Jak już pisałem od góry częstotliwością PWM oganiczony jesteś przez wydajność procesora, sprawność energetyczną układu sterującego kluczami jak i parametrami kluczy, zjawisko naskórkowości, prądy wirowe (koszty). A od dołu np. akceptowalnym poziomem oscylacji momentu silnika (oczekiwania).
    Czyli bardziej po ludzku. To aplikacja mechaniczna determinuje jakie wymagania stawiamy układowi napędowemu. Jak znasz wymagania to możesz optymalizować bo jest co. Inne wymogi są dla silnika modelu latającego a inne dla rolki napędzającej papier w drukarce.
    Wejdź na stronę Atmela. W aplikacjach dla AVR jest całkiem sporo do przeczytania na ten temat.
  • Poziom 14  
    Witam.
    Zastosowane drivery są wystarczająco wydajne tak aby sterować mosfetami przy częstotliwościach ponadakustycznych z pomijalnymi stratami. O ile nie mówimy tu o częstotliwościach powyżej 100kHz to o zjawisku naskórkowości proponuję zapomnieć. Im wyższa częstotliwość PWM tym lepsza jakość sterowania silnika i mniej efektów akustycznych. Ja proponuję ustawić częstotliwość na wyższą niż 20kHz, standardowo przy 8MHz i 8bit PWM będzie to 31,25kHz i ta częstotliwość w zupełności wystarczy do wyjścia poza pasmo aktustyczne i płynnej jazdy silnika. Jeżeli kolega boi się o duże straty w tranzystorach to proponuje sprawdzić oscyloskopem jak szybko tranzystory się włączają i wyłączają, jeżeli czasy te będą poniżej 100ns (a na pewno będą bo stosowane przez kolegę tranzystory nie mają wygórowanej pojemności wejściowej) to straty w tranystorach można pominąć bo 100ns do 32us okresu ma się ni jak.
    pozdraviam
  • Poziom 37  
    Zjawisko naskórkowości, i to nie przy 100kHz a częstotliwościach znacznie niższych, jest na tyle istotne w małych silnikach gdzie ciężko pogodzić dostępną wielkość żłobków z wyznaczoną liczbą zwojów, że bardzo istotne jest wymuszone chłodzenie jak i radiator na korpusie. Kilkadziesiąt amperów robi swoje.
    Te 100ns czasu wyłączenia dla obciążenia indukcyjnego i przepływającego prądu kilkadziesiąt amperów brzmi nader optymistycznie.
  • Poziom 14  
    Ofszem zjawisko naskórkowości występuje zawsze, ale przy małych silnikach są na tyle małe prądy że nie ma to praktycznego znaczenia. Natomiast nie rozumiem dlaczego 100ns jest optymistyczne.
  • Poziom 37  
    Uzwojenie silnika nie jest nawinięte w powietrzu tylko w rdzeniu. Przepychając tamtędy prąd "ładujesz" energią magnetyczną rdzeń i pomijając dodatkoe oddziaływanie wirujących magnesów stałych na owe cewki, musisz gdzieś tę energię rozładować/przekazać w czym ci indukcyjność nie pomoże. Właśnie dlatego czym innym jest przrywanie przepływu prądu w obwodzie z obciążeniem indukcyjnym a czym innym z obciążeniem rezystancyjnym.
    Jak dokładnie wczytasz się w parametry czasowe to zauważysz, że są podane dla pewnej wartości prądu i to znacznie niższego od maksymalnego oraz obciążenia rezystancyjnego. A jak masz większy prąd to tranzystor będzie się dłużej wyłączał. Na dodatek indukcyjne obciążenie nie będzie temu procesowi sprzyjało. A warto by tranzystory w danej gałęzi przestały przewodzić zanim włączą się od następnej.
    Pisząc o naskórkowości miałem na myśli np. silnik modelarski średniej mocy czyli o prądzie pracy rzędu 20A.
  • Poziom 14  
    W moim układzie silnik pobiera 10A. Jak pomierzyłem oscyloskopem czas otwarcia P-MOS'a wynosi około 200us natomiast N-MOS'a 100us. Dlatego właśnie N-MOS pozostaje sterowany PWM'ką.
    Wydaje mi się, że przy takich parametrach nie powinienem przekraczać 8kHz żeby przy minimalnym wypełnieniu 1/256 cyklu tranzystor miał szansę na pełne otwarcie.
    Uwaga! Czas otwierania tranzystora wydłuża się wraz ze spadkiem napięcia zasilania (zużycie baterii) co jest spowodowane spadkiem wydajności prądowej drivera.
  • Poziom 14  
    100us to albo jest kolegi przejęzyczenie albo jakiś koszmarny błąd w projekcie. Nie chce mi się wierzyć żeby czas ten mógł przekroczyć w najgorszym wypadku 1us. Jeżeli u kolegi czas otwarcia tranzystora wynosi 100us to tak dla przykładu policzmy przy fPWM = 10kHz okres = 100us zatem jeżeli kolega zaprogramuje wypełnienie na 10% to okres załączenia tranzystora będzie wynosił 10us, a jeżeli kolegi tranzystor potrzebuje 100us na załączenie to przez te 10us się nie zdąży nawet załączyć lub załączy się niecałkowicie przez co będzie się mocno grzał. Opisz jak wyznaczałeś te czasy lub prześlij pełny schemat stopnia mocy.
  • Poziom 14  
    Oczywiście 100ns zamiast 100us - popełniłem błąd w przekazie.
    A oto i schemat mojego półmostka. Opornika R54 nie montuję. Wyprowadzenie "shunt" jest połączone z masą, potencjalnie można na nim zrealizować pomiar prądu.
    Optymalizacja parametrów sterowania BLDC
    Driver jest sterowany przez sygnały 3.3V. Pwr to zasilanie z 2x LiIon czyli 7.4V
    Czas otwarcia / zamknięcia tranzystora to czas narastania poziomu napięcia na bramce od (początkowego +10%) do (końcowego - 10%). To 10% oczywiście na oko. Pomierzone oscyloskopem analogowym, dlatego "na oko".