Elektroda.pl
Elektroda.pl
X
BotlandBotland
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

ATmega328 SMPS - Regulowana przetwornica buck step-down.

14 Lis 2013 10:09 4443 25
  • Poziom 15  
    Witajcie.
    Od miesiąca po godzinach szukam informacji jak dobrze zrobić kontroler obrotów pomp i wentylatorów DC na silnikach bezszczotkowych o dużej mocy(2,5-3A) oparty o Atmege.
    Czemu Atmega? Chciałbym móc sterować kontrolerem z poziomu Windows po USB.

    W ciągu miesiąca zbieram wiedzę co chcę i jak wykonać, z kontroli stabilizatorem, napięciem PWM, czy filtracją RC/LC tego napięcia PWM dotarłem już pod drzwi przetwornic typu buck step-down i myślę, że to będzie najlepszy wybór.

    Nie wiem tylko:
    1. Czy budować przetwornicę opartą na Atmedze i z niej wykorzystać sygnał PWM do sterowania kluczem...
    2. Czy na jakimś dedykowanym scalaku przetwornicy jak LM2596 (i podobne) ewentualnie jakoś na timerze ne555 i tymi scalakami sterować jakimś sygnałem z Atmegi...
    3. Coś innego lepszego?

    Zależy mi na płynnej regulacji napięcia na wyjściu np w 20 lub 40 krokach w zakresie 5-12V. Napięcie wejściowe z zasilacza ATX - trochę większe niż 12V.
    Nie musi być to dokładne napięcie, nie musi być idealnie stabilne pod dużym obciążeniem, wystarczy procentowa wartość Vin.

    Niestety atmega na wyjściu ma trochę małą częstotliwość PWM i kolejnym pomysłem oderwanym od poprzednich jest zbudować właśnie jakiś timer jak NE555 o częstotliwości np 150kHz, ale by wypełnienie miał takie samo jak podane z Atmegi - tego w ogóle nie wiem jak zrobić, czego można by wykorzystać oraz czy by to działało i czy takie coś istnieje (coś jak zwiększacz częstotliwości o tym samym wypełnieniu w czasie). :D

    Niestety na forum nie znalazłem nic co mogło by przypominać oraz odpowiadać na moje pytania.
    Może macie inne propozycje? Czy to w ogóle będzie działać czy potrzebuję może jeszcze sygnał feedback?

    Pozdrawiam.
  • BotlandBotland
  • Poziom 15  
    Tak, są to typowe wentylatory komputerowe oraz pompy do chłodzenia cieczą, posiadają w sobie już jakąś elektronikę i chce je zasilać napięciem stałym.
    Nie chcę zasilać ich sygnałem PWM (wady: piszczenie cewek, szkodzenie elektronice odbiorników, problemy z sygnałem tacho), są to standardowe 3 pinowe odbiorniki, gdzie sterować można je napięciem, bez możliwości podania sygnału PWM na dodatkowy czwarty pin.
    Jeżeli coś to zmienia to obciążalność może być w zakresie 2-3A przy 12V, ale im więcej tym lepiej oczywiście.
  • BotlandBotland
  • Poziom 20  
    morozaw napisał:
    Od miesiąca po godzinach szukam informacji jak dobrze zrobić kontroler obrotów pomp i wentylatorów DC na silnikach bezszczotkowych o dużej mocy(2,5-3A) oparty o Atmege.
    Czemu Atmega? Chciałbym móc sterować kontrolerem z poziomu Windows po USB.


    Atmega i USB to niejest idealne połączenie. Fakt nowe atmegi mają moduł usb ale jak dla mnie to trochę na siłę nogą wepchane. Polecałbym jednak coś mocniejszego szczególnie że później piszesz że potrzebujesz większej częstotliwości. U mnie na uczelni napędowcy stosują i lubią stm32f4. Zalety : częstotliwości do 180 MHz. Pełne sprzętowe USB (FS także) i wiele innych

    morozaw napisał:
    Niestety atmega na wyjściu ma trochę małą częstotliwość PWM i kolejnym pomysłem oderwanym od poprzednich jest zbudować właśnie jakiś timer jak NE555 o częstotliwości np 150kHz, ale by wypełnienie miał takie samo jak podane z Atmegi - tego w ogóle nie wiem jak zrobić, czego można by wykorzystać oraz czy by to działało i czy takie coś istnieje (coś jak zwiększacz częstotliwości o tym samym wypełnieniu w czasie).


    No ale 180kHz to dla atmegi żaden problem. A jeśli wracając do STMa spokojnie kręciłem timery(PWM) do 80MHz

    Dodano po 4 [minuty]:

    morozaw napisał:
    Zależy mi na płynnej regulacji napięcia na wyjściu np w 20 lub 40 krokach w zakresie 5-12V. Napięcie wejściowe z zasilacza ATX - trochę większe niż 12V.
    Nie musi być to dokładne napięcie, nie musi być idealnie stabilne pod dużym obciążeniem, wystarczy procentowa wartość Vin.
    prosty buck konwerter musisz poszukać gdzieś wzorów jaki musisz dobrać kondensator i cewke oraz wypełnienie dla poszczególnych napięć. Sterujesz tutaj jednym tranzystorem MHz nie potrzebujesz ani deadtimów więc spokojnie.
  • Poziom 15  
    Dzięki za odpowiedź, ale jednak myślę, że Atmega to już przerost formy nad treścią, a stm32f4 to już jak strzelanie z armaty do muchy :)

    //BTW
    Atmaga ma też jedną ważną zaletę, jest tania, a układ chcę oprzeć o tanie Arduino z Allegro / Ebay - pewnie się skończy na Atmega32u4, ale to raczej nic nie zmienia w projekcie. :)
    Nie wiem tylko jak obsłużyć sygnał z Atmegi, by móc kontrolować tymi obrotami i czy to ma prawo działać. :)

    //PS
    Pomyślę nad zmianą procka, ale to raczej jw wspomniałem, myślę, że nic nie zmienia w "topologi" układu. ;)
  • Poziom 20  
    Jeśli napięcie te od 5-12V steruje obrotami. To liczysz jakie wypełnienie dla buck potrzebujesz dla 5 i dla 12 V I znasz swoje maksymalne i minimalne wypełnienie. W PWM ustawiasz te wyliczone przez siebie wypełnienie w zależności jakie obroty potrzebujesz.
  • Poziom 15  
    Dzięki, rozumiem, że zakres napięcia nic nie zmienia w projekcie, a mogę spokojnie tylko z poziomu PWM nim regulować?
    Podałem go głównie jakby miało to coś zmienić przy samej przetwornicy i wartościach konda i cewki.

    Czyli na razie najlepszym pomysłem jest wykorzystanie sygnału PWM z Atmegi do sterowania kluczem?
    Jeśli tak to rodzi się kilka pytań, których też nie znalazłem w sieci.

    1. Czy wartości cewki i kondensatora muszą być dobrane idealnie na tyle ile wyliczono, czy może wartości wyliczone są wartościami minimalnymi, a każda większa cewka czy kondensator to tylko lepiej - mniejsze tętnienia? Niestety nie znalazłem tak trywialnej odpowiedzi.

    2. Jeśli tak, to czy to nie wpływa na działanie przetwornicy i jej rozdzielczości?
    Pamiętam jak jeszcze szukałem o filtrowaniu sygnału PWM i podobnież za duży kondensator zmniejszał tętnienia, ale drastycznie zmniejszył też możliwość regulacji i przy kilku procentowym wypełnieniu sygnału wentylatory pracowały z pełną mocą. - przykład wyczytany z sieci.

    3. Czy Atmega da sobie radę bez problemu z dużą częstotliwością PWM? Rozumiem, że wystarczy tylko zmienić prescaller? Tutaj podobne pytanie jak wyżej, czy zmiana prescallera ma jakieś wady, które mogą się odbić w projekcie? O zmianach w delay() i milis() wiem, ale czy zmienia się też rozdzielczość? Gdzieś wyczytałem, że spada ilość możliwych kroków możliwych do ustawienia.

    Pozdro!
  • Specjalista - Mikrokontrolery
    Oczywiście potrzebujesz PWM i oczywiście popełniasz zasadniczy błąd w procesie projektowania, zaczynając od wyboru mikrokontrolera zamoast od określenia wymagań. Określ liczbę wyjść PWM i parametry przebiegów - częstotliwość, liczbę kroków, a potem dopiero wybieraj mikrokontroler. Ja przyjrzałbym się np. STM32F030 - znacznie tańsze, mądrzejsze i wydajniejsze od ATmega, z wieloma wyjściami PWM.
  • Poziom 20  
    morozaw napisał:
    1. Czy wartości cewki i kondensatora muszą być dobrane idealnie na tyle ile wyliczono, czy może wartości wyliczone są wartościami minimalnymi, a każda większa cewka czy kondensator to tylko lepiej - mniejsze tętnienia? Niestety nie znalazłem tak trywialnej odpowiedzi.


    Jak pamiętam to obliczasz wartości minimalne. Ale nie należy też przesadzać.

    morozaw napisał:
    2. Jeśli tak, to czy to nie wpływa na działanie przetwornicy i jej rozdzielczości?
    Pamiętam jak jeszcze szukałem o filtrowaniu sygnału PWM i podobnież za duży kondensator zmniejszał tętnienia, ale drastycznie zmniejszył też możliwość regulacji i przy kilku procentowym wypełnieniu sygnału wentylatory pracowały z pełną mocą. - przykład wyczytany z sieci.

    Nie wiem co to za przykład. Przy dużym kondensatorze po prostu zmiany napięcia będą wolniejsze czyli będzie wolniej przyśpieszał i zwalniał. Najlepiej wyliczyć ze wzoru i dać trochę mocniejszy

    morozaw napisał:
    3. Czy Atmega da sobie radę bez problemu z dużą częstotliwością PWM? Rozumiem, że wystarczy tylko zmienić prescaller? Tutaj podobne pytanie jak wyżej, czy zmiana prescallera ma jakieś wady, które mogą się odbić w projekcie? O zmianach w delay() i milis() wiem, ale czy zmienia się też rozdzielczość? Gdzieś wyczytałem, że spada ilość możliwych kroków możliwych do ustawienia.


    Używa się PWM sprzętowy a nie delay. Rozdzielczość zależy od rozdzielczości timera i wartości max i min wypełnienia. Jak wypełnieniem masz sterowac od 50% do 100% np a timer jest 16 bitowy to rozdzielczość masz 8 bitów (połowa) przy zakresie wypełnienia 75% 100& przy tym samym timerze rozdzielczość masz już tylko 4 bity (pracujesz na 1/4 całego zakresu)

    Dodano po 1 [minuty]:

    BlueDraco napisał:
    np. STM32F030 - znacznie tańsze, mądrzejsze i wydajniejsze od ATmega, z wieloma wyjściami PWM.
    Dla autora zależy na USB więc M3 dopiero się nadaje.
  • Poziom 15  
    Dzięki za odpowiedzi, nie przesadzajmy, myślę, że Atmega jest w zupełności wystarczająca i pod nią na razie chciałbym to zbudować. 4 - 6 wyjść PWM w zupełności mi wystarczy, czyli praktycznie tyle ile ma Atmega, dużej rozdzielczości nie potrzebuję, prawdę mówiąc skok co 5% byłby w zupełności wystarczający, a częstotliwość pracy o ile nie wpływa na nic i można sobie od tak ją zmienić na wyższą będzie w zupełności wystarczająca.
    SeerKaza wspomniał o 180 kHz, gdzie niektóre dedykowane scalaki jak LM2596 mają chyba 150kHz.

    Seerkaza, nie zrozumiałeś mnie, nie chcę generować PWMa przez delay(), tylko normalnie poprzed analogWrite() o ile dobrze pamiętam i wartość wypełnienia 0-255.

    Wspomniałem tylko o tym, że jedynym sposobem jaki znam na zwiększenie częstotliwości PWM z 490Hz i 1 kHz w zależności od pinu jest zmiana prescalera, a jego zmiana ma wpływ na funkcję delay() o czym wiem i to akurat mi nie przeszkadza - po prostu wystarczy to uwzględnić w kodzie.
    Pytałem raczej czy ogólnie wpływa na coś co może mieć zły wpływ np na sterowanie napięciem na wyjściu, np poprzez zawężenie regulacji czy coś, czy zmianę np wartości podanego wypełnienia z 0-255 na 0-127 itd.

    Dodano po 2 [minuty]:

    SeerKaza napisał:
    Nie wiem co to za przykład. Przy dużym kondensatorze po prostu zmiany napięcia będą wolniejsze czyli będzie wolniej przyśpieszał i zwalniał. Najlepiej wyliczyć ze wzoru i dać trochę mocniejszy

    Faktycznie, taki przykład znalazłem przy filtrze RC i obawiam się go tutaj.
    Na czasie reakcji mi nie zależy, to tylko sterowanie wentylatorami, więc opóźnienie o ile nie jest w minutach może występować :)
  • Poziom 43  
    morozaw napisał:
    Seerkaza, nie zrozumiałeś mnie, nie chcę generować PWMa przez delay(), tylko normalnie poprzed analogWrite() o ile dobrze pamiętam i wartość wypełnienia 0-255.

    Wspomniałem tylko o tym, że jedynym sposobem jaki znam na zwiększenie częstotliwości PWM z 490Hz i 1 kHz w zależności od pinu jest zmiana prescalera, a jego zmiana ma wpływ na funkcję delay() o czym wiem i to akurat mi nie przeszkadza - po prostu wystarczy to uwzględnić w kodzie.

    AnalogWrite() i PWM o częstotliwości tak niskiej jak 1kHz, i do tego wpływający na działanie funkcji delay(), to chyba jakieś cuda Arduino o którym powinieneś jak najszybciej zapomnieć.
    Napisz to normalnie w C. Szczególnie że biblioteka USB na AVR, czyli VUSB, jest napisania w C.
  • Poziom 15  
    atom1477, spokojnie, przecież to podobno tylko kwestia konfiguracji i wybrania odpowiedniej częstotliwości. :)

    Chciałbym zrobić coś podobnego jak tutaj:
    ATmega328 SMPS - Regulowana przetwornica buck step-down.
    Zmieniając tylko pewnie trochę wartości L i C oraz zastępując Attiny wyjściem PWM z Arduino.

    Niestety nie wiem jak to jest z tą częstotliwością i ile bez problemu mogę wyciągnąć.
    Myślę, że dam sobie radę z tym, to tylko 4 elementy na krzyż.

    Wiem, że częstotliwość jest uzależniona od zegara bazowego, prescalera oraz ICR1, ale nie miałem nigdy wcześniej z tym nic wspólnego i się gubię w tym, nie wiem jak dobrać odpowiednie wartości, by uzyskać max co potrafi Atmega oraz nie tracąc rozdzielczości itp.

    SeerKaza wspominał coś o 180kHz, ktoś inny z innego forum o "lajtowym" 1MHz. Jak dobrać tą najlepszą oraz jakie negatywne skutki niesie ze sobą jej zwiększenie? Czy może ktoś to w jakiś w miarę łopatologiczny sposób wytłumaczyć oraz wskazać najlepszą częstotliwość? Z pozytywnych to mniejszy ripple oraz mniejsze wartości dla filtra - lepsze filtrowanie.

    Trochę za bardzo zawiłe jest to wszystko z tymi zegarami, ale czy mogę kogoś poprosić o wskazanie sugerowanej najlepszej max prędkości PWM dla Arduino Nano 3 z Atmegą 328, ewentualnie Atmegą 32u4 na pokładzie. Oba korzystają z zewnętrznego kwarca 16MHz.

    Jaki tryb wybrać do przetwornicy? Fast PWM czy Phase Correct PWM?
    Potrzebuję minimum 4 wyjścia PWM, ewentualnie jeśli to możliwe pozostałe 2 także wykorzystać jeśli to w niczym nie przeszkadza. Potrzebuję także znać częstotliwość, by móc policzyć wartości L i C.

    Dzięki wszystkim za zainteresowanie tematem.

    PS Znajomy jarux z forum PCLab już dziś przetestował ten układ, mówił, że przetworniczka działa, ale trzeba policzyć odpowiednie wartości LC i dobrać częstotliwość.
    Powiedział też, że wraz ze wzrostem częstotliwości zawężało mu się pole do manewru z napięciem na wyjściu, tylko on to robił na Atmega8 i wbudowanym w niego zegarze.

    Dodano po 17 [minuty]:

    Czy sugerując się tym obrazkiem z tej stronki mogę wywnioskować, że ustawiając prescaler na 1 oraz zmieniając counter na 100, mogę uzyskać 160kHz, które powinno być zadowalające do mojego projektu?
    ATmega328 SMPS - Regulowana przetwornica buck step-down.

    Logika mi podpowiada, że po zmianie countera na 100, wypełnienie od 0 do 100 % będzie w zakresie 0-99 przy wpisywaniu analogWrite()?
    Praktycznie idealnie by to pasowało, 100 kroków co 1% wypełnienia było by w zupełności zadowalające, a pewnie nawet wystarczyłby zakres od 0 do 49.
    Wtedy skok napięcia na wyjściu byłby w zależności od countera co 1% albo co 2%?
  • Poziom 43  
    morozaw napisał:
    atom1477, spokojnie, przecież to podobno tylko kwestia konfiguracji i wybrania odpowiedniej częstotliwości. :)

    Wcale nie. Jeżeli PWM jest generowane programowo to nie można wybrać zbyt wysokich wartości częstotliwości.
    Poza tym nie będzie to za dobrze działało bo programowe USB wymaga pełnego dostępu do procesora. Żadne przerwanie nie może tego blokować nawet na 1 cykl.
    Tak więc nie możesz z tego skorzystać. I musisz użyć sprzętowego PWMa.

    morozaw napisał:
    Jaki tryb wybrać do przetwornicy? Fast PWM czy Phase Correct PWM?
    Potrzebuję minimum 4 wyjścia PWM, ewentualnie jeśli to możliwe pozostałe 2 także wykorzystać jeśli to w niczym nie przeszkadza. Potrzebuję także znać częstotliwość, by móc policzyć wartości L i C.

    Na szczęście już sam chyba doszedłeś do sprzętowego PWMa.

    morozaw napisał:
    SeerKaza wspominał coś o 180kHz, ktoś inny z innego forum o "lajtowym" 1MHz. Jak dobrać tą najlepszą oraz jakie negatywne skutki niesie ze sobą jej zwiększenie? Czy może ktoś to w jakiś w miarę łopatologiczny sposób wytłumaczyć oraz wskazać najlepszą częstotliwość? Z pozytywnych to mniejszy ripple oraz mniejsze wartości dla filtra - lepsze filtrowanie.

    Ja bym się nie pchał w przesadnie wysokie częstotliwości.
    Przy zbyt dużych pojawiają się problemy z filtrowaniem.
    Kondensatory muszą być dobrej jakości. Cewki muszą mieć małe pojemności. I być nawijane licą.
    Są też problemy z kluczami.
    Ja bym dał częstotliwość od 20 do 100kHz.
    Powiedzmy z 62,5kHz co uzyskasz w trybie Fast PWM przy kwarcu 16MHz i 8-mio bitowej rozdzielczości.
    Moc Twojego obciążenia jest na tyle mała że filtr będzie mały i tani nawet przy tak "niskich" częstotliwościach.
    Phase Correct PWM nie jest tutaj do niczego potrzebny i nic tutaj nie daje. On się przydaje w przypadkach jak kilka PWMów pracuje na jedno obciążenie (silniki 3-fazowe ACIM albo BLDC).
    Tutaj nic takiego nie ma więc wystarczy Fast PWM.
  • Poziom 15  
    atom1477, dokładnie o to mi chodziło.
    Trochę boli mnie to, że piszesz do mnie jak do kompletnego laika, nie startowałbym z tematem jak większość osób nie wiedząc nic na ten temat.
    Spędziłem na prawdę kilkaset godzin na zbieranie wiedzy i przygotowanie do tematu.
    Wbrew pozorom nie mam problemu z trudnymi rzeczami, a z najprostszymi, dlatego założyłem ten temat by podpytać o konkrety, których nie mogę sam znaleźć, albo które się mi zlewają ze sprzecznych źródeł.
    Zależy mi na konkretach tak jak wspomniałeś przy okazji FAST PWM, aż tak głupi nie jestem, czy też całkowitym laikiem by startować z projektem o którym nie mam żadnego pojęcia.
    Staram się mimo wszystko liczyć siły na zamiary.

    Oczywiście chcę skorzystać z sprzętowego PWM.
    Jest ktoś w stanie polecić jakiś w miarę dobry kalkulator dla LC, gdyż znalezione dwa w sieci podają różne wartości. Czy muszę wszystko na piechotę liczyć?

    Jedno z elementarnych pytań, co ma wspólnego counter i rozdzielczość ? :)
    Czy jest tak jak napisałem powyżej? Wybierając counter przykładowo 100 i prescaler 1 otrzymuję 160kHz i obsługuję wyjście PWM poprzez analogWrite() z wypełnieniem 0-99, 0-63, czy bez zmian od 0-255?
    Kolega na innym forum podesłał informację, że przy counterze 100 mam tylko 6 bit rozdzielczości, czyli praktycznie na jedno wychodzi gdybym ustawił counter na 64?
    Czyli lepiej już ustawić counter na 64 i mieć jeszcze wyższą częstotliwość?
    Ewentualnie counter na 128 i mieć 7 bit rozdzielczości w zakresie od 0 do 127?
    Jak to działa łopatologicznie? :)

    Jednak skłaniałbym się na opcję 160kHz, czy to już za dużo?
  • Poziom 20  
    Proponuje 50kHz przełączanie to jest jeśli dobrze pamiętam standardowa wartość.

    180kHz to ja mówiłem że pójdzie bez problemu a nie że jest to górna granica. Powiem że nie pamiętam już do końca jak jest z konfiguracją PWM w atmedze bo ja teraz stm32 się zajmuje ale myśle że 1/10 częstotliwości zegara wyciągniesz czyli przy 20 MHz PWM do MHz ale nie potrzebujesz aż tak wysokich częstotliwości. Wiem że minimum to jakieś 30kHz (niżej to układ będzie grał bo praca na częstotliwościach akustycznych do 20kHz ) i wyżej niż 100kHz też nie warto lecieć bo to wymaga lepszych elementów. Trzeba pamiętać że prostokąt ma wiele harmonicznych nie tylko główną (np 100kHz tylko jeszcze 300 500 itd)

    Dodano po 6 [minuty]:

    ATmega328 SMPS - Regulowana przetwornica buck step-down.

    Slajd z wykładu.
  • Poziom 15  
    W takim razie wychodzi na to, że najlepiej zmienić tylko prescaler na 1 i uzyskać 62,5kHz z 8 bitową rozdzielczością - sugerując się podaną wyżej tabelką i poradnikiem na stronie?

    Oczywiście wszystko wyjdzie w praniu po zmontowaniu układu.
    Jeśli to możliwe, to chętnie usłyszałbym odpowiedź na moje poprzednie pytanie odnośnie łopatologicznego wytłumaczenia wpływu rozdzielczości na częstotliwość i odwrotnie :)

    PS SeerKaza trza było już cały wykład wysłać :D
  • Poziom 20  
    Rozdzielczość zalezy od tego do ilu counter dolicza przez okres PWMa. Czyli musisz dązyć do jak najmniejszego prescalera by timier musiał jak nawięcej liczyć. Np zegar 16MHz prescaler 16 to jedna liczba to 1 us okres PWMa chce mieć 10us (100kHz) czyli nasz prescaler liczy tylko do 10 a wartość a wypełnienie zawiera się od 1 do 10 przyjmując wypełnienie użyteczne to od 50 do 100% zmieniamy wartośc tylko 0d 5 do 10 czyli mamy tylko 5 kroków krok co 10% dając prescaler 8 mamy tych kroków 2 razy więcej
  • Poziom 43  
    morozaw napisał:
    atom1477, dokładnie o to mi chodziło.
    Trochę boli mnie to, że piszesz do mnie jak do kompletnego laika, nie startowałbym z tematem jak większość osób nie wiedząc nic na ten temat.

    Szkoda że tak to odebrałeś.
    Bo było raczej odwrotnie. Tzn. ja to pisałem jako laik. Bo się nie zajmuję Arduino. Ale wydało mi się że skoro PWM w Arduino jest taki wolny i wpływa na działanie funkcji delay to raczej najlepszy nie jest. I dlatego go odradzałem.

    morozaw napisał:
    Jedno z elementarnych pytań, co ma wspólnego counter i rozdzielczość ? Smile
    Czy jest tak jak napisałem powyżej? Wybierając counter przykładowo 100 i prescaler 1 otrzymuję 160kHz i obsługuję wyjście PWM poprzez analogWrite() z wypełnieniem 0-99, 0-63, czy bez zmian od 0-255?

    Counter wyznacza maksymalną liczbę do której doliczy Timer. Więc wpływa na rozdzielczość.
    Przy 7-miu bitach doliczy do 127. Więc 7-mio bitowa rozdzielczość to counter 127.
    Albo jak założysz counter 127 to masz rozdzielczość 7 bitów.
    Counter 100 to ktoś tak w uproszczeniu napisał że ma 6 bitów.
    Bo to jest trochę więcej. 6 bitów to właśnie counter 64 czyli 64 poziomy PWMa.
    Ale lepiej zaokrąglić w dół i dlatego ktoś napisał że 100 to jest 6 bitów. W rzeczywistości to jest jakieś 6.7 bita.
  • Poziom 15  
    Dzięki Wam ślicznie, dokładnie o to mi chodziło, czyli przy np counterze 100, przy funkcji analogWrite(pin, dutycycle) podaję dutycycle 0-99 czy 0-255, a atmega już się tam martwi jak to przeliczyć na mniejszą rozdzielczość? - jedno z pytań teoretycznych.

    Pytanie do osób bardziej zaznajomionych z Atmegą 328 / 32u4, ile kanałów wyjściowych w sumie mogę uzyskać? Wszystkie 6 czy tylko 4? Mam na myśli kanały z tą samą częstotliwością, tą samą rozdzielczością, różnym wypełnieniem.
    Trochę znów mi znajomy namieszał, że mimo 6 wyjść PWM z Atmegi, mogą się nie wszystkie nadawać, że niby nie można ustawić wyższej prędkości PWM dla wszystkich kanałów itp.

    Zabieram się za wyliczenie wartości L i C, pamiętając o tym, że mogę dowolnie większe wartości wybrać niż wyliczone bez negatywnych skutków? Wcześniej nie znalazłem odpowiedzi na to, a kolega SeerKaza chyba nie jest do końca pewny. Czy ktoś może jeszcze to potwierdzić?

    Pozdrawiam
  • Poziom 43  
    morozaw napisał:
    Dzięki Wam ślicznie, dokładnie o to mi chodziło, czyli przy np counterze 100, przy funkcji analogWrite(pin, dutycycle) podaję dutycycle 0-99 czy 0-255, a atmega już się tam martwi jak to przeliczyć na mniejszą rozdzielczość? - jedno z pytań teoretycznych.

    Nie chcesz żeby to Ciebie pisać jak do laika ale się nie da :D
    Chciałeś użyć sprzętowego PWMa a teraz mówisz o analogWrite które jest najprawdopodobniej programowe.
    Odpowiem więc o sprzętowym PWMie. Przy counterze 100 podajesz liczby od 0 do 99.

    Na ATMega328 uzyskasz 6 PWMów. Częstotliwość niektórych będzie musiała być taka sama ale każdy będzie mógł mieć inne wypełnienie.
  • Poziom 15  
    atom, dzięki za odpowiedź, oj tam, wydaje Ci się tylko. :)
    atom1477 napisał:
    Częstotliwość niektórych bezie musiała być taka sama

    No właśnie o to chodzi, wszystkie by miały np te 62,5kHz, ale różne wypełnienie i tą samą rozdzielczość np 7 albo 8 bit :)

    "The analogWrite function provides a simple interface to the hardware PWM, but doesn't provide any control over frequency. " - spokojna głowa, to metoda do generowania hardwarewego PWMa :)

    Z wstępnych wyliczeń cewka powinna mieć 150uH, a kondensator trochę ponad 120uF. :)
  • Poziom 15  
    Pozwólcie, że wrócę do tematu, przez chwilowy brak czasu musiałem projekt odłożyć na bok, ale już do niego wracam.
    Szukam w sieci prostego wytłumaczenia ew wskazówki dla jakich wartości napięcia i obciążenia obliczyć elementy LC dla mojej regulowanej przetwornicy oraz jaki I ripple powinienem wybrać? Wybrałem I ripple na poziomie 5% z 3A czyli 250mA, ale może to przesada?
    Największa cewka z tego co zauważyłem w Excelu wychodzi dla 50% duty cycle.

    Jakieś porady?
  • Poziom 15  
    Czeski błąd, faktycznie 150mA, myślałem o czymś innym pisząc posta, ale chodziło mi o 150mA.
    W niektórych artykułach sugerują I ripple na poziomie 30% nawet.

    To dla jakich wartości napięcia obliczyć ten dławik?
    Dla I ripple 30% i 50% wypełnienia PWM?
    Jakie natężenie dobrać do obliczeń, maksymalne czy minimalne?

    Czy nie będzie problemu przy projektowaniu przetwornicy dla max 3A, a podłączając tylko jeden wentylator 150mA?
    Czy może mam liczyć cewkę dla minimalnego obciążenia, gdyż wtedy wychodzi większa?
    Niestety czasami lub nawet zazwyczaj przetwornica może być obciążona tylko prądem 150mA. Jak to dobrze rozwiązać?