Witam, chciałbym się zapytać, czy taki sposób implementacji/algorytmu sterowania mikrokontrolerem falownika do silnika indukcyjnego 3 fazowego, przy najprostszym sterowaniu skalarnym U/f = const., bez prędkościowego sprzężenia zwrotnego jest poprawny?
Założenia:
- Wykorzystuje STM32F103
- Częstotliwość falownika będzie zmieniana w zakresie od 1 Hz do 50 Hz.
- Wykorzystuje timer zaawansowany (TIM1/8) z trzema wyjściami komplementarnymi, wraz z czasami martwymi. Komparacyjna metoda PWM (zrealizowana oczywiście w sposób programowy), czyli PWM (licznik) liczy symetrycznie w górę i w dół. Częstotliwość fali nośnej, czyli częstotliwość PWM równa się 6 kHz i jest stała. Wartości dodatnie odtwarzanego napięcia fazowego, są dla wypełnienia od 51 % do 100%, wartości ujemne napięcia fazowego są dla wypełnienia od 0 % do 49 %, a wypełnienie 50 % równa się wartości zero napięcia fazowego. Wartość wypełnienia, odpowiadająca niejako chwilowemu napięciu fazowemu jest obliczana, jako stosunek wartości chwilowej zadanego napięcia fazowego (fala modulująca), do wartości napięcia zasilającego falownik i odpowiednio przeskalowana.
- W tablicy definiuje wartości sinusa (samego sinusa) np. dla częstotliwości 50 Hz. PWM chodzi z stałą częstotliwością. Kolejne elementy sinusa podawane są w przerwaniu (np. od jakiegoś timera) i mnożone przez wartość szczytową napięcia fazowego. Zmieniając okres tych przerwań zmieniam częstotliwość pierwszej harmonicznej napięcia. Czyli gdy zmniejszam częstotliwość poniżej 50 Hz, to okres przerwań wydłużam. Czy w tych przerwaniach można zrealizować algorytm regulacji u/f = const i może on wyglądać tak jak poniżej?
1. WEJŚCIE W PRZERWANIE TIMERA
2. Odczytywana jest częstotliwość zadana i przeliczana na odpowiedni okres przerwań tego timera.
3. Następnie wyliczana jest wartość skuteczna napięcia, dla zapewnienia stałego strumienia, tak żeby stosunek u/f był stały.
4. Mając wymaganą wartość napięcia skutecznego do utrzymania stałego strumienia, obliczana jest jej wartość szczytowa. Pobierana jest kolejna wartość sinusa, z zadeklarowanej wcześniej tablicy (w każdym przerwaniu pobierana jest tylko jedna wartość sinusa i następnie numer tablicy jest inkrementowany o jeden). Pobrana wartość sinusa jest mnożona, przez napięcie szczytowe, w wyniku czego otrzymujemy wartość chwilową potrzebnego napięcia fazowego (fali modulującej).
5. Wyliczone napięcie chwilowe dzielę, przez napięcie zasilające i następnie, przez przeskalowanie ustalany jest współczynnik wypełnienia, tak jak wyżej zostało napisane czyli: Wartości dodatnie odtwarzanego napięcia fazowego, są dla wypełnienia od 51 % do 100%, wartości ujemne napięcia, są dla wypełnienia od 0 % do 49 %, a wypełnienie 50 % równa się wartości zero napięcia.
6. Dla sinusów przesuniętych o 120 oraz -120 stopni również wyliczam, tak jak wyżej współczynnik wypełnienia
7. Przeliczone, przeskalowane współczynniki wypełnienia są wpisywane do rejestrów CCRx
8. KONIEC PRZERWANIA
Czy taki algorytm/implementacja jest poprawna, a może można to zrealizować w lepszy sposób?
![[STM32] Algorytm sterowania mikrokontrolerem silnika indukcyjnego 3 fazowego [STM32] Algorytm sterowania mikrokontrolerem silnika indukcyjnego 3 fazowego](https://obrazki.elektroda.pl/1341149300_1515934434_thumb.jpg)
Założenia:
- Wykorzystuje STM32F103
- Częstotliwość falownika będzie zmieniana w zakresie od 1 Hz do 50 Hz.
- Wykorzystuje timer zaawansowany (TIM1/8) z trzema wyjściami komplementarnymi, wraz z czasami martwymi. Komparacyjna metoda PWM (zrealizowana oczywiście w sposób programowy), czyli PWM (licznik) liczy symetrycznie w górę i w dół. Częstotliwość fali nośnej, czyli częstotliwość PWM równa się 6 kHz i jest stała. Wartości dodatnie odtwarzanego napięcia fazowego, są dla wypełnienia od 51 % do 100%, wartości ujemne napięcia fazowego są dla wypełnienia od 0 % do 49 %, a wypełnienie 50 % równa się wartości zero napięcia fazowego. Wartość wypełnienia, odpowiadająca niejako chwilowemu napięciu fazowemu jest obliczana, jako stosunek wartości chwilowej zadanego napięcia fazowego (fala modulująca), do wartości napięcia zasilającego falownik i odpowiednio przeskalowana.
- W tablicy definiuje wartości sinusa (samego sinusa) np. dla częstotliwości 50 Hz. PWM chodzi z stałą częstotliwością. Kolejne elementy sinusa podawane są w przerwaniu (np. od jakiegoś timera) i mnożone przez wartość szczytową napięcia fazowego. Zmieniając okres tych przerwań zmieniam częstotliwość pierwszej harmonicznej napięcia. Czyli gdy zmniejszam częstotliwość poniżej 50 Hz, to okres przerwań wydłużam. Czy w tych przerwaniach można zrealizować algorytm regulacji u/f = const i może on wyglądać tak jak poniżej?
1. WEJŚCIE W PRZERWANIE TIMERA
2. Odczytywana jest częstotliwość zadana i przeliczana na odpowiedni okres przerwań tego timera.
3. Następnie wyliczana jest wartość skuteczna napięcia, dla zapewnienia stałego strumienia, tak żeby stosunek u/f był stały.
4. Mając wymaganą wartość napięcia skutecznego do utrzymania stałego strumienia, obliczana jest jej wartość szczytowa. Pobierana jest kolejna wartość sinusa, z zadeklarowanej wcześniej tablicy (w każdym przerwaniu pobierana jest tylko jedna wartość sinusa i następnie numer tablicy jest inkrementowany o jeden). Pobrana wartość sinusa jest mnożona, przez napięcie szczytowe, w wyniku czego otrzymujemy wartość chwilową potrzebnego napięcia fazowego (fali modulującej).
5. Wyliczone napięcie chwilowe dzielę, przez napięcie zasilające i następnie, przez przeskalowanie ustalany jest współczynnik wypełnienia, tak jak wyżej zostało napisane czyli: Wartości dodatnie odtwarzanego napięcia fazowego, są dla wypełnienia od 51 % do 100%, wartości ujemne napięcia, są dla wypełnienia od 0 % do 49 %, a wypełnienie 50 % równa się wartości zero napięcia.
6. Dla sinusów przesuniętych o 120 oraz -120 stopni również wyliczam, tak jak wyżej współczynnik wypełnienia
7. Przeliczone, przeskalowane współczynniki wypełnienia są wpisywane do rejestrów CCRx
8. KONIEC PRZERWANIA
Czy taki algorytm/implementacja jest poprawna, a może można to zrealizować w lepszy sposób?