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

jaki układ do sterowania PWM z rozdzielczością 14bit

mototest 09 Cze 2006 11:01 2019 17
REKLAMA
  • #1 2712793
    mototest
    Poziom 19  
    Posty: 440
    Ocena: 4
    Witam kolegów

    czy mógły ktoś doradzić czy jest jakiś układ scalony do sterowania mosfetem PWM z czętotliwością 200Hz
    ale potrzebuję storować go z dużą precyzją 12 do 14 bit
    i układ musi być sterowany z procesora najlepiej przez SPI lub inny szeregowy

    dzięki
    Bogdan
  • REKLAMA
  • #2 2713270
    -RoMan-
    Poziom 42  
    Posty: 8779
    Pomógł: 766
    Ocena: 407
    Zrób to programowo - na wewnętrznym liczniku.
  • REKLAMA
  • #3 2713403
    mototest
    Poziom 19  
    Posty: 440
    Ocena: 4
    spróbuję, jeśli mi to nie obciąży zbyt mocno czasowo procesora

    B.
  • #4 2714405
    _jta_
    Specjalista elektronik
    Posty: 49148
    Pomógł: 3212
    Ocena: 4260
    No, jak 200kHz i nawet tylko 12 bitów, to wychodzi zegar 2^12*200kHz = 819.2MHz...
    Jak chcesz mieć taką rozdzielczość z wolniejszym zegarem, to widziałbym takie sposoby:
    (1) nierówna długość impulsów z PWM - tylko średnio ma być tyle, ile się ustawi;
    (2) część czasu (lub cały) odmierza się przez porównanie napięcia z generatura i DAC-a.
  • #5 2714434
    mototest
    Poziom 19  
    Posty: 440
    Ocena: 4
    ja potrzebuję 200Hz PWM nie 200kHz, ale potrzebuje bardzo szybką reakcję PWM który jest proporcjonalny do przetwornika ADC również 12 bitowego

    Dodano po 41 [minuty]:

    to może pomożecie mi w szczgółach,
    mam taki zawór regulujący przepływ cieczy i tym PWM musze sterować wychyłem tego zaworu ,ale z laboratoryjną dokładnością i potrzebuję zrobić stabilizację tego wychyłu, w zaworze jest sprężyna która go automatycznie zamyka ja popycham dźwignię sygnałem PWM żeby stała w miejscu, mam problem z dokładnością tego wychyłu, jak zrobiłem to PWM 10bit to zawór mi skakał co 1mm/bit zamiast płynnie ,stąd wnioskuję że miał za małą rozdzielczość z drugiej strony jest potencjometr regulujący ten wychył i przetwornik ADC 12 bit , bo jak dałem 10bit to było za mało ponieważ musi być odczyt w najgorszym przypadku co 1mV (żeby dokładnie wysterować mosfeta z PWM), problem w tym że zawór musi stać w miescu ani drgnąć, nie wiem czy te rozważania na temat 12bit mi pomogą,reakcja na przypadkowe ruchy dźwigni zaworu musi być w milisekundach, wychył dźwigni jest też "deformowany" przez ruch cieczy pod jakimś ciścnieniem i układ musi w ułamku sekundy skorygować tę zmianę do wartości jaką wskazuje gałka. Może trzeba zastosować jakieś inne rozwiązanie... ??
  • #6 2714685
    _jta_
    Specjalista elektronik
    Posty: 49148
    Pomógł: 3212
    Ocena: 4260
    Nie wiem, co to jest SPI. Skoro chodzi o 200Hz, i sterowanie z uP, to może układ 8253 lub 8254
    - to jest potrójny timer stosowany w PC, można mu ustawić tryb, w którym daje PWM.
    8253 zlicza do 2.6MHz, 8254 do 8MHz, obydwa dzielą przez 65536... no, to w tym trybie nawet 8254
    będzie za wolny - da na wyjściu 120Hz zamiast 200, chyba że teraz robią jakąś szybszą wersję.
    Albo ustawić go na liczenie dziesiętne, i dać na wejście 2MHz, albo ustawić jeden kanał na
    dzielenie np. przez 20000, na wejście dać 4MHz, na drugim zrobić generowanie impulsu
    o nastawianej długości za każdym razem, gdy pierwszy kanał zliczy te 20000...
    W sprzedaży znalazłem tylko 8253 (około 8zł) i 82C53 (13zł).
    Można z jednego takiego układu mieć sterowanie dwóch układów PWM.
    Kanał do podstawowego liczenia powinien być w trybie 2, do PWM-u w trybie 1.

    Inna możliwość to liczniki (ale powinny być synchroniczne) i komparatory (ale
    cyfrowe, takie co sprawdzają, czy liczba np. 4-bitowa jest mniejsza czy większa).
    Będzie chyba trochę tańsze, ale może wyjść sporo układów, za to nie będzie
    problemów z szybkością nawet jakbyś się zdecydował na 16 bitów.
  • #7 2714976
    irek2
    Poziom 40  
    Posty: 6141
    Pomógł: 435
    Ocena: 387
    owszem steruje sie zawory sygnalem PWM ale tam wcale nie wykozystyje sie pelnego zakresu od 0 do 100% wypelnienia bo zawor pracuje liniowo tylko w pewnym zakresie. To trzeba samemu zmierzyc w jakim zakresie zawor daje regulacje. Mozliwe tez ze masz nieodpowiedni typ zaworu.
  • #8 2715064
    tomeeh
    Poziom 24  
    Posty: 707
    Pomógł: 46
    Ocena: 92
    Panowie, nie kombinujcie z softwarem za bardzo (programowy licznik) ani z hardwarem (liczniki). No chyba, że macie za dużo czasu.
    Natomiast wszystko da się zrobić na jednej kostce, kwarcu i minimalnym softwarze - mianowicie bierzemy jeden z moich ulubionych µC, mianowicie ADuC842. Ma on sprzętowego 16-bitowego PWMa, który może pracować w jednym z 5 modów. Chyba już lepiej nie mogłoby być. Ponadto ten µC ma również sprzętową obsługę SPI, więc bez problemu można do niego gadać (ostatnio rozmawiam z zewnętrznym przetwornikiem AC, chodzi to pięknie na 4Mbit/s). Tak więc reasumując - jeden µC, fragmencik kodu i pozamiatane. Swoją drogą - w tym µC masz też kilka (8 lub 10 w zależności od obudowy) 12 bitowych AC, więc może drugi procesor odpada...
  • REKLAMA
  • #9 2715862
    mototest
    Poziom 19  
    Posty: 440
    Ocena: 4
    No ten ADUC wydaje się 100% dobry dla mnie, ale czym to programować ??
  • #10 2715888
    tomeeh
    Poziom 24  
    Posty: 707
    Pomógł: 46
    Ocena: 92
    Bez problemu zaprogramujesz go w C bądź w assemblerze w środowisku Keil µVision. Myślę, że wersja freeware'owa ci wystarczy. Jeśli jednak rozpiszesz się w C na ponad 2KB, daj znać na PW, to coś poradzimy. Co do programatora - nie potrzeba żadnego - wystarczy MAX232, 5 kondensatorów i port szeregowy komputera (jeśli masz laptopa, to budujesz konwerter USB<->RS232 na FT232 i programujesz sobie tak jak ja po USB). Natomiast program do wrzucania HEXa na ADuCa jest na stronie analoga, jest on darmowy bez ograniczeń.
  • #11 2715901
    mototest
    Poziom 19  
    Posty: 440
    Ocena: 4
    No ten ADUC wydaje się 100% dobry dla mnie, ale czym to programować ??
  • REKLAMA
  • #13 2716133
    mototest
    Poziom 19  
    Posty: 440
    Ocena: 4
    hardware, gdzieś na elektrodzie widziałem ten schemat ale teraz nie mogę znaleźć

    Dodano po 3 [minuty]:

    nie mogę się doszukać na analog.com tego programu do ładowania... ani żadnych informacji na temat programatora

    Dodano po 13 [minuty]:

    no soft chyba znalazłem, czy tego maxa podpinam do RXD i TXD w ADUC czy do innych pinów ?
  • #14 2716468
    tomeeh
    Poziom 24  
    Posty: 707
    Pomógł: 46
    Ocena: 92
    No dobrze, to poprowadzimy za rączkę.

    mototest napisał:

    nie mogę się doszukać na analog.com tego programu do ładowania... ani żadnych informacji na temat programatora


    Program ten nazywa się windows serial downloader, znajdziesz go tutaj na samym dole strony (wersja 6.7)

    mototest napisał:

    no soft chyba znalazłem, czy tego maxa podpinam do RXD i TXD w ADUC czy do innych pinów ?


    Tak, wyjścia MAX (lub pochodnego układu) podpinasz bezpośrednio do pinów w ADuCu. Wszystko masz pięknie narysowane w datasheecie od ADuC842 na stronie 76. Na tej stronie jest pokazany schemat połączeń wtyczki DB9 z MAXem. Tak na prawdę wystarczą tylko 3 połączenia: TxD i RxD (piny 2 i 3 wtyczki DB9) oraz masa (pin 5 wtyczki DB9). Resztę połączeń możesz sobie spokojnie darować bez uszczerbku dla układu (ja zawsze tak robię).
  • #15 2716527
    mototest
    Poziom 19  
    Posty: 440
    Ocena: 4
    OK dzieki ,pobawię się jak dojdzie próbka układu
  • #16 2716639
    tomeeh
    Poziom 24  
    Posty: 707
    Pomógł: 46
    Ocena: 92
    W porządku. Póki układ w drodze polecam ci przestudiowanie PDFa, zwłąszcza interesujących cię peryferiów i pisanie już programu na sucho w Keilu. W tym środowisku masz symulator, który doskonale symuluje wiele peryferiów jak port szeregowy, wszystkie porty I/O, przetworniki AC i CA. Wszystkie te bajery ukazują się po wciśnięciu przycisku debugging - polecam sprawdzanie programu w ten właśnie sposób - oszczędza wiele czasu.
  • #17 2716694
    mototest
    Poziom 19  
    Posty: 440
    Ocena: 4
    nie bawiłem się keilem jeszcze ,zamówiłem sobie książkę musze się podszkolić, ja na początek potrzebuję odczytać 12 bit ADC i wysłać 12bit 200Hz PWM reszta na razie mnie nie interesuje, chociaż w czasie prób dopiero wyjdzie co będę potrzebował...
  • #18 2716906
    tomeeh
    Poziom 24  
    Posty: 707
    Pomógł: 46
    Ocena: 92
    Co do ADC polecam przykłady, które są zarówno na stronie keila, jaki analoga - dzięki nim łatwo postawisz pierwsze kroki. Wystarczy je otworzyc w keilu skompilowac i cieszyc sie dzialaniem µC. Co do keila - jest intuicyjny - potrzebne ci na chwilę obecną funkcje programu rozszyfrujesz prawdopodobnie sam.

Podsumowanie tematu

LABEL_AI_GENERATED
Poszukiwano układu scalonego do sterowania MOSFET-em sygnałem PWM o częstotliwości 200 Hz z rozdzielczością 12-14 bitów, sterowanego z procesora przez SPI lub inny interfejs szeregowy. Dyskusja wyjaśniła, że programowa implementacja PWM na wewnętrznym liczniku procesora jest możliwa, ale może obciążać CPU. Przy częstotliwości 200 Hz i wysokiej rozdzielczości wymagany jest precyzyjny i stabilny sygnał PWM, co jest istotne dla sterowania zaworem regulującym przepływ cieczy z laboratoryjną dokładnością. Zasugerowano użycie mikrokontrolera ADuC842 firmy Analog Devices, który posiada sprzętowy 16-bitowy PWM i wbudowany 12-bitowy przetwornik ADC, a także obsługę SPI, co umożliwia łatwe sterowanie i integrację. Omówiono również programowanie ADuC842 w języku C lub assemblerze w środowisku Keil µVision oraz sposób programowania układu za pomocą interfejsu szeregowego z wykorzystaniem układu MAX232. Wskazano na dostępność symulatora w Keilu do testowania kodu przed implementacją. Alternatywne rozwiązania sprzętowe, takie jak układy 8253/8254, zostały ocenione jako mniej odpowiednie ze względu na ograniczenia częstotliwości i rozdzielczości. Podkreślono, że dokładność sterowania zaworem wymaga odpowiedniego zakresu liniowej pracy zaworu oraz wysokiej rozdzielczości PWM, aby uniknąć skoków w położeniu zaworu.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA