Popularny post Alvedro Napisano Kwiecień 24, 2017 Popularny post Udostępnij Napisano Kwiecień 24, 2017 Cześć, przygotowałem sobie stanowisko z silnikiem bezszczotkowym, które ma mi posłużyć do zapoznania się i zrozumienia metod wykorzystywanych do sterowania tymi silnikami, przede wszystkim przy bardzo niskich obrotach z zastosowaniem w gimbalach. Stanowisko to składa się z płytki z stm32f103, 3 mosfetów tc4452 oraz enkodera as5048 oraz silnika bldc przystosowanego do pracy przy niskich obrotach. Obsługę timerów, enkodera itp. mam już zrobioną w kodzie, pozostały same algorytmy, nad którymi pracuję. Na początek zacząłem od metody sinusoidalnej, ją rozumiem, nie ma tu nic skomplikowanego. Kod wygląda w ten sposób, jedyna zmienna, która wpływa na kontrolę to angle, która jest cały czas inkrementowana, wielkość tej zmiennej wpływa na prędkość. PWM_PERIODE_MOTOR = 1000; power = 250; //const 0-500 ph1 = (sin(angle) * power) + (PWM_PERIODE_MOTOR / 2); ph2 = (sin(angle + 2.0943951) * power) + (PWM_PERIODE_MOTOR / 2); ph3 = (sin(angle + 4.1887902) * power) + (PWM_PERIODE_MOTOR / 2); To mi działa, metoda ta sprawdza się gdy trzeba sterować silnikiem przy niskich obrotach, lecz nie jest zbyt dobra, sprawność silnika nie jest w pełni wykorzystywana. Metoda, nad którą teraz pracuję to FOC, a raczej Simplified FOC. Bazuję tutaj na informacjach z z tej strony. Tak wygląda schemat tego sterowania. I tutaj jest kilka niewiadomych dla mnie. Przygotowałem sobie kod, który pokazuje jak ja to rozumiem: PWM_PERIODE_MOTOR = 1000; angle = 0.5 * PI + encoderInRadians; ph1_simp_foc = (sin(angle) * power) + (PWM_PERIODE_MOTOR / 2); ph2_simp_foc = (sin(angle + 2.0943951) * power) + (PWM_PERIODE_MOTOR / 2); ph3_simp_foc = (sin(angle + 4.1887902) * power) + (PWM_PERIODE_MOTOR / 2); Czyli tutaj nie wpływamy już na naszą zmienną angle, tylko tym razem wpływ na kontrolę nad silnikiem mamy za pomocą zmiennej power, czyli amplitudy, jeżeli to dobrze rozumiem. Tylko co dalej? Jak regulować tą zmienną, by osiągnąć obrót? Czy w ogóle jest jakiś sens w moim rozumowaniu? W chwili obecnej chciałbym uniknąć metod, gdzie konieczny jest pomiar prądów, bo na razie nie dysponuje jeszcze taką możliwością, lecz taką możliwość będę miał już pod koniec tygodnia, dlatego na razie chcę wykorzystać do tego sam enkoder o ile w ogóle on sam może wystarczyć. __________ Komentarz dodany przez: Treker 3
Boszek Kwiecień 18, 2020 Udostępnij Kwiecień 18, 2020 Witam, także jestem właśnie w trakcie próby zastosowania algorytmu FOC do sterowania silnikiem BLDC i dosłownie przed chwilą natrafiłem na wspomnianą wyżej przez Ciebie "uproszczoną" wersję czegoś takiego. Czy z perspektywy czasu jesteś w stanie stwierdzić czy to rozwiązanie doprowadziło Cie do oczekiwanych rezultatów? Czy pomiar natężeń okazał się nieunikniony? Zdradzę, że pracuję nad wyciśnięciem maksymalnego momentu obrotowego z silnika,. Na razie projekt zakłada użycie enkoderów, jednak dodanie układów mierzących natężenie zwiększy zajmowaną przestrzeń.
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »