-
Data: 2022-12-29 22:33:34
Temat: Re: Mały MCU z rozbudowanym PWM
Od: Janusz <j...@o...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu 2022-12-29 o 18:07, M M pisze:
> czwartek, 29 grudnia 2022 o 17:51:20 UTC+1 Janusz napisał(a):
>> W czym widzisz problem? ustawiasz odpowiednio rejestry io masz bez
>> przesunięcia.
> W tym że z przesunięciem miałbym mniejsze tętnienia bo częściowo się znoszą. 2
kanały co 180 stopni da się zrobić na jednym timerze (bo dalej wszystkie 4 są
wycentrowane tak samo) ale 3 co 120 nie widzę jak.
Więcej timerów maja atxmegi i nowe atmegi 3208, 3209 (3+1) czy 4809 czy
4809 (4+1)
> Bez przesunięcia to mogę po prostu sterować wszystkie razem, ale wtedy tętnienia
nośnej do odfiltrowania będą sporo większe, nie chcę za mocno siać zakłóceniami po
okolicy, a instalacja PV to spora antena.
Strasznie mieszasz, PWM z 'natury' sieje, dlatego na wyjściu falownika
są filtry 'odsiewające' PWM-a.
Co do przesunięcia, możesz to próbować robić bezpośrednio na timerach w
przerwaniach ale to bez sensu, bo nie jesteś w stanie przerwań odbierać
w tym samym czasie, dlatego do timerów są dodane rejestry compare, w tym
procku 3, i one sprzętowo ci machają nogami a ty w przerwaniu od
przepełnienia timera karmisz je danymi, tu mój falownik
ISR(TIMER1_OVF_vect)
{static U16 faza_R=0, faza_S=21845, faza_T=43690;
U16 tmp16;
//generacja 3pwm-ow na wyjsciach PB1,PB3,PB5
faza_R+=krok;
if (faza_R>32768) faza_R=faza_R-32768;
tmp16=pgm_read_byte(&sin256[faza_R>>7]);//*nap;
OCR1A=tmp16;
faza_S+=krok;
if (faza_S>32768) faza_S=faza_S-32768;
tmp16=pgm_read_byte(&sin256[faza_S>>7]);//*nap;
OCR1B=tmp16;
faza_T+=krok;
if (faza_T>32768) faza_T=faza_T-32768;
tmp16=pgm_read_byte(&sin256[faza_T>>7]);//*nap;
OCR1D=tmp16;
BIT->Bit_ADC_start=1;
}
'krok' to zmiana częstotliwości u mnie to od 20 do 255;
'faza_x' to akumulatory fazy, starszą częścią jest adresowana baza
sinusów 'sin256', tablica jest 'dodatnia' czyli od 0-255, i obejmuje
pełny okres czyli 360 st.
Inicjację ich masz w nagłówku w static, wpisując tam inne wartości
dosttaniesz inne przesunięcie. Akumulatory specjalnie 'skróciłem' do
32768 żeby uzyskać odpowiedznie częstotliwości i nie przekroczyć czasu
wykonania przerwania.
OCR1X to są rejestry compare które generują pwm-y
>
>> Opowiadasz głupoty. Klucze spalisz z zupełnie innego powodu.
>
> Chętnie się dowiem na co jeszcze uważać.
W innych musisz sam zadbać o deadtime-y tu masz jes ustawione, ja dałem
1uS i wejście szybkiego resetu które wyłącza wszystko. Masz przykład
mój, główny timer na 64Mhz, procek na 16
// HF PLL Clock dla I/O =64Mhz, Fcpu=16Mhz
PLLCSR=(1<<PLLE);
_delay_us(200);
if (TEST(PLL_test)) //PLLCSR,PLOCK
{PLLCSR=(1<<PCKE); }
// 64Mhz/8=8Mhz
TCCR1A=(1<<PWM1A) | (1<<PWM1B) | (1<<COM1A0) | (1<<COM1B0);
// Fclk=8Mhz /256 = fpwm=31 746
OCR1C=255;
// DEAD TIME prescaler /8 = 1uS
TCCR1B=(1<<DTPS11) | (1<<DTPS10) | (1<<CS12);// | (1<<CS10) ;
TCCR1C=(1<<COM1D0)|(1<<PWM1D) | (1<<COM1A1S)|(1<<COM1B1S);
TCCR1D=0;//(1<<WGM10);
//liczba impulsow
DT1=0x11; //1 impuls naprostym, 1 na zanegowanym
TIMSK=(1<<TOIE1);
Robiłem już wcześniej przetwornice ale jednak sporo mniejszej mocy.
Jakby był jakiś gotowiec (choćby gotowa płytka mostka IGBT do której
dorabiam tylko sterowanie) to bym skorzystał zamiast rzeźbić samodzielnie.
Marzyciel :)
--
Janusz
Następne wpisy z tego wątku
- 29.12.22 22:34 2m
- 31.12.22 17:51 M M
- 01.01.23 01:28 Jacek Radzikowski
- 01.01.23 11:17 Janusz
- 01.01.23 18:14 M M
- 01.01.23 18:34 Piotr Wyderski
- 01.01.23 18:37 Piotr Wyderski
- 01.01.23 18:44 m
- 01.01.23 19:05 Mirek
- 01.01.23 19:34 Piotr Wyderski
- 01.01.23 20:39 Janusz
- 02.01.23 01:03 M M
- 02.01.23 12:54 Dawid Rutkowski
- 02.01.23 21:47 alojzy nieborak
- 03.01.23 09:08 Janusz
Najnowsze wątki z tej grupy
- Czy cos fi przechodzi przez trafo separujące?
- śrubka masy
- Ciekawostka na dziś lock bity
- [OT] napisy w YT
- Było 83V
- Stare komputery
- Odbiornik ADS-B i wzmacniacze
- Thunderbird i dysk...
- opornosc falowa
- Bateria 9V 6F22, alkaliczna v cynkowa, samorozładowanie, bateria wysokiej trwałości do miernika
- Tani zakup z ali?
- w czasach LED komary mają ciężko
- walizka z kodami
- Rejestrator temperatur - termopara, siec
- Router LTE z możliwością zmian MTU
Najnowsze wątki
- 2025-08-06 Gdynia => Konsultant wdrożeniowy (systemy controlingowe) <=
- 2025-08-06 Białystok => Inżynier oprogramowania .Net <=
- 2025-08-06 "[...] sejmowe wystąpienie posłanki Klaudii Jachiry, która zakończyła je słowami ,,Sława Ukrainie"."
- 2025-08-05 "Chiny przekraczają w wydobyciu 4 mld ton węgla, Indie i USA ponad 1 mld, a Rosja 500 mln ton [...]"
- 2025-08-05 Panuje się 181 159,42 zł./mies. na posła w 2026r.
- 2025-08-05 "Chiny przekraczają w wydobyciu 4 mld ton węgla, Indie i USA ponad 1 mld, a Rosja 500 mln ton [...]"
- 2025-08-05 Czy cos fi przechodzi przez trafo separujące?
- 2025-08-05 kajaki i promile
- 2025-08-05 Re: Tesla jest bezpieczna, wczoraj spaliła się doszczętnie na Ursynowie i nikomu się nic nie stało
- 2025-08-05 Gdynia => Przedstawiciel handlowy / KAM (branża TSL) <=
- 2025-08-05 Re: Atak na lekarza w Oławie. Policja zatrzymała sprawcę na lotnisku Polska Agencja Prasowa 4 sierpnia 2025, 12:16 FACEBOOK X E-MAIL KOPIUJ LINK W szpitalu w Oławie 37-letni pacjent zaatakował lekarza, po tym, jak ten odmówił mu wypisania długoterminowego
- 2025-08-05 B2B i książka przychodów i rozchodów
- 2025-08-04 Re: Atak na lekarza w Oławie. Policja zatrzymała sprawcę na lotnisku Polska Agencja Prasowa 4 sierpnia 2025, 12:16 FACEBOOK X E-MAIL KOPIUJ LINK W szpitalu w Oławie 37-letni pacjent zaatakował lekarza, po tym, jak ten odmówił mu wypisania długoterminowego
- 2025-08-04 Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- 2025-08-04 Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML