eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaMały MCU z rozbudowanym PWM
Ilość wypowiedzi w tym wątku: 25

  • 1. Data: 2022-12-29 14:32:18
    Temat: Mały MCU z rozbudowanym PWM
    Od: M M <m...@g...com>

    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.


  • 2. Data: 2022-12-29 15:36:12
    Temat: Re: Mały MCU z rozbudowanym PWM
    Od: Dawid Rutkowski <d...@w...pl>

    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?


  • 3. Data: 2022-12-29 15:50:29
    Temat: Re: Mały MCU z rozbudowanym PWM
    Od: Janusz <j...@o...pl>

    W dniu 2022-12-29 o 14:32, M M pisze:
    > 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.
    Attiny861A
    "Peripheral Features
    - One 8/16-bit Timer/Counter with Prescaler
    - One 8/10-bit High Speed Timer/Counter with Prescaler
    o 3 High Frequency PWM Outputs with Separate Output Compare Registers
    o Programmable Dead Time Generator

    To ci wystarczy, sam na nim zrobiłem falownik 3F od 20 do 200Hz.

    --
    Janusz


  • 4. Data: 2022-12-29 16:05:15
    Temat: Re: Ma?y MCU z rozbudowanym PWM
    Od: a...@m...uni.wroc.pl

    M M <m...@g...com> wrote:
    > 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.

    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.

    --
    Waldek Hebisch


  • 5. Data: 2022-12-29 17:17:57
    Temat: Re: Mały MCU z rozbudowanym PWM
    Od: M M <m...@g...com>

    czwartek, 29 grudnia 2022 o 15:50:34 UTC+1 Janusz napisał(a):
    > Attiny861A
    > "Peripheral Features
    > - One 8/16-bit Timer/Counter with Prescaler
    > - One 8/10-bit High Speed Timer/Counter with Prescaler
    > o 3 High Frequency PWM Outputs with Separate Output Compare Registers
    > o Programmable Dead Time Generator
    >
    > To ci wystarczy, sam na nim zrobiłem falownik 3F od 20 do 200Hz.

    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ć.


  • 6. Data: 2022-12-29 17:51:16
    Temat: Re: Mały MCU z rozbudowanym PWM
    Od: Janusz <j...@o...pl>

    W dniu 2022-12-29 o 17:17, M M pisze:
    > czwartek, 29 grudnia 2022 o 15:50:34 UTC+1 Janusz napisał(a):
    >> Attiny861A
    >> "Peripheral Features
    >> - One 8/16-bit Timer/Counter with Prescaler
    >> - One 8/10-bit High Speed Timer/Counter with Prescaler
    >> o 3 High Frequency PWM Outputs with Separate Output Compare Registers
    >> o Programmable Dead Time Generator
    >>
    >> To ci wystarczy, sam na nim zrobiłem falownik 3F od 20 do 200Hz.
    >
    > 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.
    W czym widzisz problem? ustawiasz odpowiednio rejestry io masz bez
    przesunięcia.

    > 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ę.
    Cóż, ja ci podałem rozwiązanie a skoro sądzisz że toi zrobisz lepiej to rób.

    > Chyba że przeładowywać "w locie" w przerwaniach w każdym cyklu - ale tego wolę
    unikać, bo pewnie przy debugowaniu trochę kluczy zdążę spalić.
    Opowiadasz głupoty. Klucze spalisz z zupełnie innego powodu.

    --
    Janusz


  • 7. Data: 2022-12-29 18:07:09
    Temat: Re: Mały MCU z rozbudowanym PWM
    Od: M M <m...@g...com>

    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.
    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.

    > Cóż, ja ci podałem rozwiązanie a skoro sądzisz że toi zrobisz lepiej to rób.

    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.

    > Opowiadasz głupoty. Klucze spalisz z zupełnie innego powodu.

    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.


  • 8. Data: 2022-12-29 22:33:34
    Temat: Re: Mały MCU z rozbudowanym PWM
    Od: Janusz <j...@o...pl>

    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


  • 9. Data: 2022-12-29 22:34:50
    Temat: Re: Mały MCU z rozbudowanym PWM
    Od: 2m <m...@g...com>

    czwartek, 29 grudnia 2022 o 14:32:19 UTC+1 M M napisał(a):
    > 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 j
    .....

    Z tego chyba da się sklecić EFM8BB31F16
    o 4 Configurable Logic Units
    o Timers/Counters and PWM:
    o 6-channel programmable counter array (PCA) supporting
    PWM, capture/compare, and frequency output modes
    o 6 x 16-bit general-purpose timers


  • 10. Data: 2022-12-31 17:51:08
    Temat: Re: Mały MCU z rozbudowanym PWM
    Od: M M <m...@g...com>

    czwartek, 29 grudnia 2022 o 22:33:39 UTC+1 Janusz napisał(a):
    > Strasznie mieszasz, PWM z 'natury' sieje, dlatego na wyjściu falownika
    > są filtry 'odsiewające' PWM-a.

    Ale to ma być nie falownik tylko DC/DC "interleaved synchronous buck converter".
    Czyli 3 mniejsze stopnie mocy połączone równolegle, sterowane tym samym wypełnieniem
    ale przesuniętym w fazie.
    Dzięki temu częstotliwość tętnień rośnie x3 i łatwiej odfiltrować.
    Z drugiej strony przy małym obciążeniu można by się pokusić o pracę tylko na jednym z
    3 dla zmniejszenia strat przełączania.

    > 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

    Na jednym timerze nadal nośna wszystkich 3 kanałów jest zgodna w fazie (zależnie od
    trybu albo jedno zbocze albo środek). W falowniku przesunięte są sygnały modulujące.
    Można kombinować by timer sprzętowo zmieniał stan pinu i wywoływał przerwanie które
    ustawi kiedy ma być kolejna zmiana, ale czasu mało.
    Na 3 timerach (albo hipotetycznym jednym jeszcze nie znalezionym który to umie) raz
    się ustawia i potem samo się generuje bez udziału CPU.
    Chyba że w ogóle zrobić po staremu, zwykły licznik binarny + równoległy flash w
    podstawce :)

    > Marzyciel :)

    A jednak... EVAL-M1-IM818-A :)
    Nie jest tanio, ale po drobnych przeróbkach (usunięcie prostownika wejściowego i
    dużych kondensatorów) powinno się nadać do testów.
    Tylko dla bezpieczeństwa programatora i programisty przydałoby się wstawić
    optoizolację.

strony : [ 1 ] . 2 . 3


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: