Znacie coś mniejszego niż ATmega2560 i w miarę dostępnego, co wygeneruje 6 sygnałów PWM dla modułu 3-fazowego mostka IGBT (wstępnie IM818SCC bo w TME mają) użytego jako 3 równolegle połączone step-down? Parami po 2 sygnały dla dolnego i górnego klucza z dead-time, 3 takie pary (ustawione to samo wypełnienie) przesunięte w fazie o 120 stopni względem siebie. ATmega2560 powinien dać radę za pomocą 3 timerów (3, 4, 5) ustawionych na różne wartości początkowe i uruchomionych w jednej chwili. Prototyp więc mile widziane coś łatwo montowanego w DIP. Dostępne mniejsze płytki Arduino z tego co widzę są robione na starszym ATmega328P a nie nowszym PB który ma więcej timerów.
A jaka częstotliwość tego PWM? Bo ATmega324 ma 6 kanałów PWM, ale 2*2 są z timerów 8-bit, a tylko jedna para z 16-bit. W TME ostatnio jeszcze sporo w DILu było (jako nieliczny wyjątek). Hmm, były też chyba ATmega88, ale SMD, one chyba też takie PWMy mają. A może łatwiej poprzesuwać fazy?
Attiny861A "Peripheral Features – One 8/16-bit Timer/Counter with Prescaler – One 8/10-bit High Speed Timer/Counter with Prescaler • 3 High Frequency PWM Outputs with Separate Output Compare Registers • Programmable Dead Time Generator
To ci wystarczy, sam na nim zrobiłem falownik 3F od 20 do 200Hz.
Jak szukasz plytki to pierwsze co przychodzi na mysl to "Blue Pill", popularna plytka z STM32F103. Masz Timer 1 ktory na 3 kanaly z wyjsciami komplementarnymi i "dead time". Do tego wejscie "break", ktore blokuje prace timera (do tego wejscia wypadaloby podlaczyc zewnetrzny komparator robiacy zabezpieczenie pradowe).
Plytka jest nieco wieksza niz Arduino Pro Mini czy Nano, tzn. Blue Pill ma pady do 20 nozek z kazdej strony (+ zlacze SWD z jednego krotkiego boku i USB z drugiego). Teraz jest sporo wariantow tych plytek, najtansze na Aliexpress rzedu 1.4 dolara.
Jak szukasz chipow, to STM32F030K6 w LQFP32 powinien wystarczyc. Sa podobne nowsze chipy, ktorys z nich powinien byc dostepny.
czwartek, 29 grudnia 2022 o 15:50:34 UTC+1 Janusz napisał(a):
Ale tu mam DC/DC - wszystkie 3 kanały mają generować to samo wypełnienie, ale nośna ~15 kHz (a nie sygnał modulujący) przesunięta w fazie co 120 stopni. Podobnie jak robią np. step-down do zasilania CPU na płytach głównych, by podzielić obciążenie na więcej mniejszych elementów mocy. Chcąc to zrobić jednym timerem trzeba by mieć niezależnie programowane przy jakich różnych stanach licznika wyjście zmienia stan na 1 i 0 - a tego tam nie widzę. Chyba że przeładowywać "w locie" w przerwaniach w każdym cyklu - ale tego wolę unikać, bo pewnie przy debugowaniu trochę kluczy zdążę spalić.
czwartek, 29 grudnia 2022 o 17:51:20 UTC+1 Janusz napisał(a):
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. 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.
Ja tylko pytam jak na tym ATtiny861A zrobić przesunięcie *nośnej* na 3 kanałach PWM co 120 stopni, bo może faktycznie się da ale na szybko przeglądając nie widzę. Albo pozycja jednego zbocza jest stała (licznik zlicza do MAX i się zeruje) albo oba są przy tym samym stanie licznika (jedno gdy liczy w górę a drugie w dół). Na ATmega2560 mogę 3 timery ustawić tak samo poza różnymi wartościami początkowymi (0, 1/3 i 2/3 okresu w cyklach) i jednocześnie wszystkie wystartować, jak nic lepszego się nie uda wymyślić to tak trzeba będzie.
Chętnie się dowiem na co jeszcze uważać. 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.
Więcej timerów maja atxmegi i nowe atmegi 3208, 3209 (3+1) czy 4809 czy
4809 (4+1)
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
//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
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
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 :)
czwartek, 29 grudnia 2022 o 14:32:19 UTC+1 M M napisał(a):
.....
Z tego chyba da się sklecić EFM8BB31F16 • 4 Configurable Logic Units • Timers/Counters and PWM: • 6-channel programmable counter array (PCA) supporting PWM, capture/compare, and frequency output modes • 6 x 16-bit general-purpose timers
Jeśli nie straszna Ci przesiadka na nowy procesor, zerknij na serię C2000 od TI. To są procesory zaprojektowane do takich zastosowań i nawet najtańszy powinien mieć więcej kanałów PWM niz potrzeba do sterowania jednym silnikiem. Jeśli nie potrzebujesz tysięcy sztuk, to są dostępne w Mouserze, i są tańsze niż 2560. To nie jest zbytnio popularna rodzina w aplikacjach hobbystycznych, ale dość miło się w nich rzeźbi.
niedziela, 1 stycznia 2023 o 11:17:37 UTC+1 Janusz napisał(a):
Chodzi właśnie o tę dużą - małą dorobić własną. Najlepiej na AVR bo w tym sporo rzeźbiłem (choć w starszych - w nowszych widzę peryferia się mocno pozmieniały, no i trzeba nowy inny programator z UPDI). Wszystkie 3 wyjścia falownika przez 3 dławiki i drugie końce dławików połączone razem to wyjście.
Ale mniejszego fizycznie, czy prostszego? Boja się ostatnio zachwycam RP2040. Kosztuje dolara, jest silnym ARMem i NIE MA flash, a więc i problemów flash. Mogę program trzymać w MRAM.
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.