Wiking18 napisał:
Moje następne pytanie z kolei jak ustawić sobie zmianę per aby przekładało się to na liniową zmianę częstotliwości.
np 3200 mam około 50 Hz 6400 około 25Hz, PER na 14883 daje jakieś 11Hz, a PER 64745 daje 2.14Hz..
częstotliwość maleje 2 razy po zwiększeniu per razy 2 jak by to zapisać dla jakiegoś progu wyrażonego w x HZ lub 0.x HZ abym można było zwiększać częstotliwość liniowo.
No to dość proste:
PER = 32000 / f[Hz]
albo:
PER = 320000 / f[dHz]
Wiking18 napisał:
No i jeżeli chodzi o amplitudę to mam taki pomysł ale nie wiem czy dobry.
Aby zmienić sobie zmienna odpowiedzialna za częstotliwość ale zanim zmienna ta zostanie wysłana do PER przeliczyć tablice wzorcową pomnożyć lub podzielić i zapisać do tablicy buforowej z której jest odczyt DMA dopiero po przeliczeniu tablicy ustawić per. Nie wiem czy tak to powinno wyglądać. Chodzi o to aby DMA nie wysłało innej tablicy do innej częstotliwości w przypadku zmian 1 hz nie będzie to miało pewnie znaczenia ale w przypadku różnicy 20-30 hz mogło by to uszkodzić silnik. Pozdrawiam
No i tutaj postanowiłem się jednak wtrącić.
Wcześniej
tmf wspomniał że nie ma sensu liczyć tych samych wartości w kółko. Niby racja, choć mi jakoś by nie przeszkadzało że procesor to liczy. A niech liczy skoro nie ma nic innego do roboty. No ale to by nic nie wnosiło do tematu to nic nie pisałem.
Ale teraz pomyślałem że ma to jednak pewne zalety praktyczne (to poprzednie liczenie w kółko, bo to już teraz nie będzie liczenie w kółko).
No bo jak chcesz zmieniać amplitudę płynnie, i w dodatku małymi kroczkami (czyli będzie ich dużo skoro są małe) to się robi problem.
Bo w wersji z przeliczeniem tablicy jest fajnie jak amplituda jest stała. Raz przeliczysz tablicę i działa.
A tu przy każdej zmianie amplitudy musisz na nowo przeliczać całą tablicę.
A jak zmian amplitudy będzie dużo (więcej niż próbek na okres sinusa) to się okazuje że liczenia jest więcej niż przy niezależnym liczeniu każdej próbki w przerwaniu.
Ale to nie wszystko.
Jest jeszcze coś takiego jak algorytm Bus Ripple Canceler. W falownikach zasilanych z sieci się to stosuje. Ale w falowniku na napięcie stałe jak z jednego źródła są zasilane dwa falowniki to też się przydaje.
I to działa tak że się mierzy chwilowe napięcie zasilania i mnoży zakładaną wartość PWMa przez odwrotność tego napięcia. I dopiero wynik wystawia do rejestru PWMa.
I tu zupełnie nie ma sensu za każdym razem przeliczać tablicy.
Bo dana próbka napięcia obowiązuje tylko dla danej próbki PWMa. Dla nowej próbki PWMa będzie i tak nowa próbka napięcia więc i tak trzeba nowe przeliczenie.
Po drugie wynik trzeba znać od razu, nie można więc czekać aż program znowu trafi na dane miejsce w tablicy.
Więc siłą rzeczy nie można do tego użyć tablicy tylko trzeba liczyć na bieżąco.
Różne inne algorytmy też wymagają liczenia na bieżąco (np. FOC).
Ale zrobisz jak zechcesz.