logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak wygenerować PWM 12bit 1MHz na AVR

crashbit 07 Lut 2014 01:15 2019 12
  • #1 13271470
    crashbit
    Poziom 15  
    Witam.
    Potrzebuje zrobić PWM o rozdzielczości 12 bit i pracujący na 1 MHz, mam tu na myśli okres trwający 1 us.
    I teraz zaczynam wątpić bym mógł do tego wykorzystać jakiegoś AVR-a od atmela.
    Jeśli dobrze analizuje to standardowo używając FAST PWM (dla przykładu) musiał bym mieć przy dokładności 12 bitowej możliwość ustawiania wypełnienia w 4096 stopniach czyli musiał bym mieć zegar PWM-a pracujący hmmmm... 4096*1MHz czyli 4 GHz?
    Wygląda to wprost nie do uwierzenia. Próbowałem zabawić się na 10 bitach i przykładowej atmedze 8A z oscylatorem 16MHz no i efekt - 16 kHz :( co jest logiczne.
    W takim razie nasuwa mi się pytanie... Jak mogę sprawę obejść ?
    Z góry dziękuje za pomoc.
  • #3 13271751
    el2010tmp
    Poziom 25  
    crashbit napisał:
    Jeśli dobrze analizuje to standardowo używając FAST PWM (dla przykładu) musiał bym mieć przy dokładności 12 bitowej możliwość ustawiania wypełnienia w 4096 stopniach czyli musiał bym mieć zegar PWM-a pracujący hmmmm... 4096*1MHz czyli 4 GHz?


    Sam odpowiedzałeś na swoje pytanie :)
  • #4 13271875
    tmf
    VIP Zasłużony dla elektroda
    crashbit napisał:
    Witam.
    Potrzebuje zrobić PWM o rozdzielczości 12 bit i pracujący na 1 MHz, mam tu na myśli okres trwający 1 us.
    I teraz zaczynam wątpić bym mógł do tego wykorzystać jakiegoś AVR-a od atmela.
    Jeśli dobrze analizuje to standardowo używając FAST PWM (dla przykładu) musiał bym mieć przy dokładności 12 bitowej możliwość ustawiania wypełnienia w 4096 stopniach czyli musiał bym mieć zegar PWM-a pracujący hmmmm... 4096*1MHz czyli 4 GHz?
    Wygląda to wprost nie do uwierzenia. Próbowałem zabawić się na 10 bitach i przykładowej atmedze 8A z oscylatorem 16MHz no i efekt - 16 kHz :( co jest logiczne.
    W takim razie nasuwa mi się pytanie... Jak mogę sprawę obejść ?
    Z góry dziękuje za pomoc.


    Twoje obliczenia są poprawne, jak widzisz nie tylko na AVR, ale można zaryzykować stwierdzenie, że na żadnym mikrokontrolerze tego nie da się zrobić. Pytanie więc co chcesz osiągnąć? Jeśli potrzebujesz PWM do wygenerowania przebiegu analogowego z odpowiednią rozdzielczością to użyj DAC - np. z AVR XMEGA ma 12-bitowy DAC z 1 Msps. Inna możliwość to poskłądać np. dwa kanały PWM po 6 bitów i nadać im odpowiednią wagę przy pomocy dzielnika rezystorowego (w tym przypadku 1:64).
  • #5 13271996
    Konto nie istnieje
    Konto nie istnieje  
  • #6 13272265
    crashbit
    Poziom 15  
    dondu napisał:
    Witam.
    Mnie nasuwa się pytanie, do czego Ci aż takie parametry PWM?

    Bałem się tego pytania ;) ale może i dobrze że padło. Już jakiś czas temu myślałem nad budową wzmacniacza klasy D o bardzo dużej mocy 5-10 kW.
    Udało mi się wpaść na filmik gdzie facet z firmy PEAVEY opowiada na jakiś targach o ich wzmacniaczach IPR2. I wspomina że wzmacniacz pracuje na częstotliwości 1MHz o ile dobrze zrozumiałem angielski w tym zgiełku. Technicznie w źródłach znalazłem że pracują od 250kHz do 1.5 MHz więc nawet i szybciej.
    Jakość dźwięku "CD" (tak to się nazywa w windowsie ;) ) wiąże się z zapisem 12 bitowym.
    To też teraz myślę jak oni to zrobili?!
    Kolega albertb zapytał o stromość zboczy. No właśnie. przecież mówimy tu o tranzystorach mocy które zdecydowanie nie będą chciały pracować na GHz-ach.

    Mam nadzieje że teraz ktoś mnie oświeci gdzie mój błąd w rozumowaniu.. :)

    Patrząc na propozycje z dwoma pwm-ami 6 bitowymi to już prędzej bo 32 MHz można osiągnać... ale hmmm, nie do końca rozumiem jakbym miał tego użyć :/
  • #7 13272459
    tmf
    VIP Zasłużony dla elektroda
    Te 1-1,5 MHz to częstotliwość podstawowa PWM. W mikrokontrolerze PWM realizowane jest poprzez dzielenie zegara doprowadzonego do timera, stąd też jego częstotliwość musi być większa od częstotliwości uzyskanego PWM o co najmniej FPWM*2^(rozdzielczość PWM) razy. Natomiast we wzmacniaczu PWM można uzyskać inaczej niż przez podział zegara timera, w efekcie GHz nie są potrzebne. Jednak nie jest to rozwiązanie dostępne bezpośrednio w mikrokontrolerze. Jeśli budujesz wzmacniacz, to jaka jetu tu rola PWM generowanego przez MCU?
  • #8 13275186
    crashbit
    Poziom 15  
    tmf napisał:
    Te 1-1,5 MHz to częstotliwość podstawowa PWM. W mikrokontrolerze PWM realizowane jest poprzez dzielenie zegara doprowadzonego do timera, stąd też jego częstotliwość musi być większa od częstotliwości uzyskanego PWM o co najmniej FPWM*2^(rozdzielczość PWM) razy. Natomiast we wzmacniaczu PWM można uzyskać inaczej niż przez podział zegara timera, w efekcie GHz nie są potrzebne. Jednak nie jest to rozwiązanie dostępne bezpośrednio w mikrokontrolerze. Jeśli budujesz wzmacniacz, to jaka jetu tu rola PWM generowanego przez MCU?

    Jeśli dobrze Cię zrozumiałem to pytasz mnie do czego miał być pwm. No chodziło mi o sterowanie tranzystorami w stopniu mocy.
    Jak widzę masz inny pomysł na to. Bardzo chętnie posłucham :)
  • #9 13275285
    felekfala
    Poziom 19  
    Witam zapoznaj się z rodziną TMS320x2834x Delfino. Nie wnikałem za bardzo w jego możliwości ale z tego co pamiętam producent pisał o zachowaniu dużej rozdzielczości PWMa przy dużej częstotliwości pracy. Może spróbuj z FPGA ?
    Budujesz może jakąś przetwornice rezonansową ?
  • #10 13275423
    Electro_FOX
    Poziom 12  
    Jeśli chodzi o budowę przetwornicy np: 1MHz to pomyśl nad wykorzystaniem elementów analogowych. Są szybkie i niezawodne, a to jest najważniejsze jeżeli mowa o przetwornicach.
  • #11 13277181
    crashbit
    Poziom 15  
    Electro_FOX napisał:
    Jeśli chodzi o budowę przetwornicy np: 1MHz to pomyśl nad wykorzystaniem elementów analogowych. Są szybkie i niezawodne, a to jest najważniejsze jeżeli mowa o przetwornicach.

    To nie ma byc przetwornica. To ma być estradowy wzmacniacz muzyczny w klasie D. PWM miał sterować tranzystorami mocy, najpewniej mosfetami.
  • #12 13277333
    michalko12
    Specjalista - Mikrokontrolery
    Rozwiązaniem może być para tranzystorów, na których bramki podawane są przebiegi o wypełnieniu 50%, ale faza tych przebiegów zmienia się od 0 do 180 stopni z rozdzielczością 12 bitów.
  • #13 13280893
    crashbit
    Poziom 15  
    michalko12 napisał:
    Rozwiązaniem może być para tranzystorów, na których bramki podawane są przebiegi o wypełnieniu 50%, ale faza tych przebiegów zmienia się od 0 do 180 stopni z rozdzielczością 12 bitów.

    No, brzmi nieźle. A możesz podpowiedzieć, jak najłatwiej można by to zrobić(to przesunięcie)?


    Posiedziałem pomyślałem i wymyśliłem jedną wersje jedynie.
    Opierając się dwa tranzystory (nazwijmy je A i B) połączone każdy pracujący z wypełnieniem 50% i przesuwając w fazie jednego z nich (powiedzmy że stały jest A przesuwamy B) można uzyskać wypełnienie od 0 do 50% (pierwsze 6bitów).
    By uzyskać ponad 50% trzeba by użyć trzeciego tranzystora (nazwijmy go C) pracującego równolegle do tranzystorów A i B, przesuwając jego fazę uzyskał bym wypełnienia od 50% do 100%.
    Proszę o jakąś informacje czy dobrze myślę.
    Zakładamy oczywiście że wszystkie 3 pracują na 1 MHz i wypełnieniu 50%
REKLAMA