Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Atmega8A - Zewnętrzny pwm, a sprzętowy

LemuRR 11 08 Dec 2012 20:44 2163 14
  • #1
    LemuRR 11
    Level 26  
    Witam, w fazie uruchamiania układu, (ładowarki) napotkałem na kolejny problem.
    ATmega taktowana 14MHz, więc już wyciśnięte wszystko co się da. Sprzętowy pwm, pracuje max z "f", ok 39Khz. No i tu pojawia mi się problem. Aby przetwornica miała większą sprawność, potrzebny byłby potwornie duży dławik, który na pewno nie zmieści się na pcb . Pytanie takie, jak zwiększyć częstotliwość wbudowanego ?
    A może znacie jakieś zewnętrzne łatwe do sterowania np (i²c) ?
  • Helpful post
    #3
    GSM
    Level 25  
    Tak poza tym coś mi tu nie gra.
    - ATmega8A może być taktowana do 16 MHz a nie 14 MHz
    - nawet przy 14 MHz częstotliwość w FastPWM wyjdzie ~54 kHz.

    LordBlick wrote:
    Zmniejsz rozdzielczość, tworząc na przerwaniach programowy PWM.

    W przerwaniu przepełnienia Timer-a możesz ładować odpowiednią wartość, zmniejszając tym efektywnie jego rozdzielczość. Pamiętaj przy tym, że wartości ładowane do rejestru OCR będą musiały być odpowiednio przeskalowane. Mniejsze to obciążenie niż w pełni programowy PWM.

    Pozdrawiam,
    GSM
  • #4
    zumek
    Level 39  
    GSM wrote:
    ...W przerwaniu przepełnienia Timer-a ...

    W tym przypadku, od przerwań lepiej trzymać się z daleka. Użyj Timer1 w trybie fastPWM(Mode 14 lub 15) i zdecyduj się na kompromis, pomiędzy rozdzielczością, a częstotliwością.
  • #5
    GSM
    Level 25  
    zumek wrote:
    W tym przypadku, od przerwań lepiej trzymać się z daleka.

    Proszę o uzasadnienie.

    Pozdrawiam,
    GSM
  • #6
    zumek
    Level 39  
    GSM wrote:
    ...Proszę o uzasadnienie.

    Pozdrawiam,
    GSM

    A co tu uzasadniać :?;
    Po co programowo w przerwaniu zmieniać rejestr licznika, skoro można zrobić to samym sprzętem :?:
    Np.
    Zegar 14MHz, Timer1, mode 14, prescaler=1, ICR1=6
    Przy takich ustawieniach, częstotliwość przebiegu PWM=2MHz, przy 7-punktowej (właściwie 5-punktowej) regulacji wypełnienia.
    Jak by to wyglądało przy wykorzystaniu przerwań :?:
  • #7
    GSM
    Level 25  
    Ahh, już jasne - używając Timer-a 1.
    Jakoś oba zdania w poprzedniej twojej wypowiedzi przeczytałem rozdzielnie.
    Jednakże chcąc zaoszczędzić z jakiś powodów T1, używając T0/T2 można zastosować przerwanie. Skrócenie cyklu PWM-a przez ładowanie wartości początkowej w przerwaniu nie jest moim zdaniem złym rozwiązaniem o ile nie zbliżamy się zbytnio do za wysokich częstotliwości PWM-a. Co spowodowałoby zżeranie za dużych zasobów czasowych przez przerwanie przepełnienia.

    Pozdrawiam,
    GSM
  • Helpful post
    #8
    tmf
    Moderator of Microcontroller designs
    Skoro układ jest na etapie budowy to IMHO najlepszym rozwiązaniem jest dobrać właściwy procesor do zadania, a nie na siłę udowadniać, że M8 też da radę :) Są serie ATTiny dostosowane do takich zadań, czemu z nich nie skorzystać?
  • #9
    LemuRR 11
    Level 26  
    tmf wrote:
    Skoro układ jest na etapie budowy to IMHO najlepszym rozwiązaniem jest dobrać właściwy procesor do zadania, a nie na siłę udowadniać, że M8 też da radę :) Są serie ATTiny dostosowane do takich zadań, czemu z nich nie skorzystać?

    Chyba jednak to okazało by się najlepszym rozwiązaniem.
    Poprzedzanie odpowiedzi również okazały się pomocne, ale problem w tym, że rozdzielczość 8bit, jest idealna, i nie zamierzam jej zmniejszać. W końcu ładowanie lipo, wymaga dość stabilnej ładowarki (:
    Podobnie, w programie, mam już wykorzystane 2 pozostałe timery, i na jednym z nich programowy PWM.
    Jaki procesor byś polecił do tego celu (ADC, przynajmniej 2 kanałowe, wymagane) ?

    Dodano po 25 [minuty]:

    http://www.atmel.com/Images/doc2586.pdf
    Attiny42, wydaje się byś fajny do tego celu.
    Pytania mam 2.
    Jeden z dwóch kanałów ADC i XTAL, i CLK i OC1B.
    Nie rozumiem jak to przy programowani, i normalnym działaniu się nie pogryzie.
    Na 1 stronie PDF, piszą o Fast PWM, jak to uruchomić ?
  • Helpful post
    #10
    tmf
    Moderator of Microcontroller designs
    Atmel ma noty aplikacyjne poświęcone budowie ładowarki do aku z gotowymi kodami. Na stronie Atmela masz parametric table, można sobie to też wrzucić do excela i dowolnie filtrować. Zapewne najlepszym rozwiązaniem byłby ATTiny z PWM w nazwie, ale z ich zdobyciem może być problem. Każdy nowszy ATTiny ma tez poprawiony PWM i często PLL, tak, że timer może generować przebiegi wielokrotnie wyższe niż taktowanie CPU. Np. ATTiny261/461/861 ma możliwość taktowania timera do 64 MHz dzięki PLL. Napisz coś więcej o projekcie, bo byc może jest lepsze rozwiązanie.
  • #11
    LemuRR 11
    Level 26  
    Jest to praktycznie prezent na gwiazdkę, dla dziewczyny.
    Podstawka pod kulę grawerowaną laserowo. Założyłem sobie że będzie to ładowane przez USB. A jako że to prezent, ważne aby było bezpieczne.
    M8 przede wszystkim odpowiada za 16 diod led. do tego potrzebowałem programowego pwm. Jako drugie ważne zadanie, ładowanie akumulatorka.
    W fazie testów, okazało się że częstotliwość 40kHz jest o wiele za mała, przy małym dławiku.
  • Helpful post
    #12
    tmf
    Moderator of Microcontroller designs
    Aha, czyli tych PWM potrzebujesz naprawdę sporo. ATTiny będzie ok, PWM sprzetowy do ładowania, a programowy do sterowania diodami. Zaproponował bym ci XMEGę, która ma kanałów PWM więcej niż potrzebujesz, ale gwiazdka blisko :)
  • #13
    LemuRR 11
    Level 26  
    Zegar max 10Mhz, bo zasilanie z jednej celi Lipo.
    Więc w takim razie jak z PWM, jaka częstotliwość ? (przepraszam za niewiedzę, jeszcze tego nie łapię)
    Jeżeli chcę PWM z PLL (tzn ten szybki) to jak to skonfigurować w bascomie ? tak jak zwykły pwm ?
  • Helpful post
    #14
    GSM
    Level 25  
    A czemu do ładowania LiPo nie zaprząc specjalizowanego do tego celu układu?

    Pozdrawiam,
    GSM
  • #15
    LemuRR 11
    Level 26  
    Jeżeli, byłby dostępny w mojej okolicy, to z chęcią bym użył. Ale zdrowo myśląc, jeżeli w układzie jest mikrokontroler, to wstyd używać go tylko do migania diodami. Kolejne za, można samemu dobrać proces ładowania.