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

scalony kontroler PWM

foofoo 04 Paź 2004 16:33 1820 10
  • #1 04 Paź 2004 16:33
    foofoo
    Poziom 9  

    Witam,

    poszukuję cyfrowego układu scalonego TTL/CMOS, który miałby w sobie kilka wyjść sterujących modulacją PWM. Najlepiej osiem ;-).

    pozdrawiam,
    F

    0 10
  • #2 04 Paź 2004 16:57
    MMarek17
    Poziom 19  

    Programowalne przez i2c PWMy np. http://para.maxim-ic.com/Default_ProgrammablePulseWidthModulators.htm
    Dostępne "tylko" 1-kanałowe, ale za to bardzo proste w aplikacji. Wymagają one mikrokontrolera do sterowania/zmiany parametrów impulsów PWM.
    Można by też wykonać PWMy w oparciu o nieco starawy Intelowski 8253 lub 8254 (programowalny timer/licznik/dzielnik) - zawiera 3 bloki więc będziesz potrzebował 3 szt. Wymaga mikrokontrolera sterującego (ustawiającego).
    Jakiekolwiek by to nie było rozwiązanie to z reguły wymaga mikrokontrolera. Odpowiednio szybki mikrokontroler poradzi sobie bez peryferiów w postaci układów scalonych i sam będzie w stanie obsłużyć 8 PWM.
    Napisz coś więcej o zastosowaniu tego 8-kanałowego PWMa, częstotliwość, zakres regulacji itd.

    0
  • #3 04 Paź 2004 17:41
    elektryk
    Poziom 42  

    Procesor siemensa, chyba się nazywa SAB80C515 (chyba inny model 535) posiada sporo kanałów PWM oraz rdzeń 8051.

    0
  • #4 05 Paź 2004 09:52
    foofoo
    Poziom 9  

    MMarek17 napisał:
    Odpowiednio szybki mikrokontroler poradzi sobie bez peryferiów w postaci układów scalonych i sam będzie w stanie obsłużyć 8 PWM. Napisz coś więcej o zastosowaniu tego 8-kanałowego PWMa, częstotliwość, zakres regulacji itd.


    Robie wielokanałowy odbiornik zdalnego sterowania. Założyłem,
    że z odbiornika będzie osiem wyjść PWM, 6 sterujących serwa, 2 sterujące
    regulację obrotów silnika elektrycznego. W związku z tym
    mikrokontroler musi obsłużyć "równolegle" odbiór ramki danych i sterowanie PWM z dwoma okresami (jeden dla serw i jeden dla silników).
    Przy czym dla silników szerokość impulsu może wynieść 100%,
    dla serw od 5 do 10%. To trochę dużo roboty jak na jeden mikroprocesor
    i pomyślałem o tym, żeby użyć zewnętrznego kontrolera PWM.
    Wygląda na to, że jednak, będę musiał "wycisnać" to programowo.

    0
  • #5 05 Paź 2004 11:20
    Onufry
    Poziom 13  

    elektryk napisał:
    Procesor siemensa, chyba się nazywa SAB80C515 (chyba inny model 535) posiada sporo kanałów PWM oraz rdzeń 8051.

    inny procesor z tej rodziny 80c552 też posiada 8 wyjść PWM.

    0
  • #6 05 Paź 2004 18:25
    MMarek17
    Poziom 19  

    Faktycznie jeśli w grę wchodzi również dekodowanie poleceń to może być problem z równoległym, programowym obsłużeniem PWMa i to 8 kanałów.
    W tym przypadku skłaniałbym się ku mikrokontrolerowi z wbudowanymi PWM. Conajmniej odbiór i dekodowanie poleceń będzie na przerwaniach a to już może powodować zakłócenia PWMa. Jeśli natomiast priorytet ustawić na PWMa to będą problemy z dekodowaniem. Coś trzeba zrobić sprzętowo.
    Być może to tylko tak strasznie wygląda i jakby zastosować szybki, 1-cyklowy uC oraz dobrze przemyśleć zasady transmisji to by się dało wycisnąć...
    Zastosowanie 1 uC jest lepsze niż uC i peryferiów - mniejszy układ, pobór mocy, masa itd. co przecież nie jest bez znaczenia w modelu.

    0
  • #7 05 Paź 2004 19:31
    MMarek17
    Poziom 19  

    Onufry napisał:
    elektryk napisał:
    Procesor siemensa, chyba się nazywa SAB80C515 (chyba inny model 535) posiada sporo kanałów PWM oraz rdzeń 8051.

    inny procesor z tej rodziny 80c552 też posiada 8 wyjść PWM.


    Niestety 80c552 posiada jedynie dwa 8-bitowe PWM.

    uPSD3234A - http://www.st.com/psm ma cztery 8-bitowe PWMy

    może coś Winbonda np. W78E378
    http://www.marthel.pl/table.php?grupa=1

    albo z TI np. MSP430
    http://focus.ti.com/mcu/docs/generalcontent.t...ath=templatedata/cm/mcugen/data/msp430_getstd

    0
  • #8 06 Paź 2004 10:31
    foofoo
    Poziom 9  

    MMarek17 napisał:

    Być może to tylko tak strasznie wygląda i jakby zastosować szybki, 1-cyklowy uC oraz dobrze przemyśleć zasady transmisji to by się dało wycisnąć...


    Pracuję na tym... Ramka danych jest zakodowana kodem Manchester,
    gdyby sterowanie PWM zmieścić w czasie "opóźnienia" pomiędzy kolejnymi próbkami wejścia danych, to nie byłoby chyba problemu.
    Niestety narzuca to wielkość czasu trwania 1 bita PWM i w związku z tym
    całego okresu PWM. Po prostu będę musiał przyjąć jakieś "realne"
    ograniczenia dokładności, aby to wszystko dało się zrealizować
    programowo.

    0
  • #9 06 Paź 2004 17:23
    MMarek17
    Poziom 19  

    Zmieścić obsługę przerwania od transmisji przed obsłużeniem PWMa nie sposób.
    Jedyne rozwiązanie to szybki uC oraz długi okres PWMa w stosunku do sumarycznego czasu obsługi przerwania od transmisji. Wtedy błąd długości impulsu PWMa spowodowany opóźnieniem wywołanym od obługi przerwania od transmisji będzie pomijalnie mały.
    Nie jest to zatem niemożliwe do wykonania.
    Znacznie prościej byłoby gdyby uC miał sprzętowy PWM lub sprzętowy dekoder transmisji wtedy bez problemu i szybko można stworzyć odpowiedni programik nie martwąc się o szarpanie.

    A tak z ciekawości, na jaki uC się zdecydowałeś?

    0
  • #10 07 Paź 2004 11:28
    foofoo
    Poziom 9  

    MMarek17 napisał:
    Nie jest to zatem niemożliwe do wykonania.
    A tak z ciekawości, na jaki uC się zdecydowałeś?


    Na razie zatrzymałem się przy takim rozwiązaniu:
    1. długi okres PWM (4 ms) powtarzany pięciokrotnie
    aby odpowiednio sterować serwa (okres 20 ms)
    2. w przerwania od przepełnienia timera (raz na 4 ms) króciutka
    procedurka inicjacji PWM i licznia cykli do pięciu.
    3. W głownej pętli odbiór i dekodowanie wartości sterujących
    PWM-ami. Transmisja stosunkowo wolna (ok. 2,4 kbps) w
    procedurze jako opóżnienie przy samplowaniu wejścia
    stosowanie procedurki o stałym czasie wykonania, która steruje wyłączanie wyjść realizujących PWM.

    Gdyby wynik nie zadowalał mnie co do dokładności sterowania,
    zamierzam użyć dwóch uC jeden od odbioru, drugi do sterowania PWM.

    Używam PIC16, Xtal 16MHz. Nie mam doświadczenia z innymi
    uC, a z PICami zrobiłem już pomyślnie kilka projektów.
    Poza tym mam tylko programator do PIC-ów (JDM) ;-).

    0
  • #11 07 Paź 2004 17:03
    MMarek17
    Poziom 19  

    Widzę że prace zaawansowane.
    PIC - ok. Każdy ma jakieś ulubione uC.
    Co do zastosowania 2 procków to należy zauważyć że trzeba będzie rozwiązać transmisje danych pomiędzy nimi. Kolejny protokół - może niezbyt skomplikowany ale ...
    A co powiesz na układy PWM z Maxima? http://para.maxim-ic.com/Default_ProgrammablePulseWidthModulators.htm - sterowane przez i2c i można ich połączyć max 8 na wspólnej szynie i2c (wejścia adresowe A0 do A2)

    0