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

Jak zbudować generator impulsów prostokątnych na ATmega z regulacją 30-80kHz?

arek944 15 Maj 2011 15:58 6673 8
REKLAMA
  • #1 9508402
    arek944
    Poziom 11  
    Posty: 59
    Pomógł: 2
    Ocena: 3
    Witam szanownych forumowiczów.
    Chcę postawić na mikrokontrolerze ATmega (np 16) generator impulsów prostokątnych, który to zapewni mi:
    1) regulację szerokości impulsu,
    2) regulację częstotliwości w zakresie 30-80kHz.

    A) Pierwsze, takie dosyć luźne wyobrażenie przedstawione jest na rysunku
    Jak zbudować generator impulsów prostokątnych na ATmega z regulacją 30-80kHz?
    Sygnał PWM służyłby jako sterowanie napięciowe do generowania częstotliwości (im większa szerokość impulsu tym wyższa częstotliwość na wyjściu), zaś przetwornik DAC służyłby jako sygnał odniesienia (im wyższe napięcie na wyjściu DAC, tym "dłuższy" czas trwania stanu wysokiego).
    B) Myślałem także, aby spróbować scalaka ICL8038, gdzie mógłbym regulować wypełnienie i częstotliwość niemalże wprost, ale zważywszy na cenę układu szukam tańszego rozwiązania.
    C) Zastanawiałem się też, czy dałoby radę wykorzystać starą dobrą 555?

    Zastanawiam się, czy ktoś z Was miał kiedyś podobny problem? Być może istnieje jakiś osobny scalak, który zrealizowałby funkcję 1 i 2?

    Będę wdzięczny za jakiekolwiek podpowiedzi w rozwiązaniu problemu
  • REKLAMA
  • #2 9508422
    tadzik85
    Poziom 38  
    Posty: 3404
    Pomógł: 415
    Ocena: 16
    szerokość regulowana z zakresie 0-100%? częstotliwość z jaką dokładnością?
  • #3 9508461
    jan1996
    Poziom 24  
    Posty: 396
    Pomógł: 90
    Ocena: 15
    przecież wystarczy jeden port najlepiej z razem z tranzystorami i program w oparciu timer16 bit 80kHz to nie aż tak dużo
  • REKLAMA
  • Pomocny post
    #4 9508495
    tadzik85
    Poziom 38  
    Posty: 3404
    Pomógł: 415
    Ocena: 16
    Wystarczyło by wykorzystać licznik tryb CTC z dodatkowym przerwaniem od OCRB.

    OCRA odpowiada z f
    OCRB za wypełnienie.
  • #5 9510699
    arek944
    Poziom 11  
    Posty: 59
    Pomógł: 2
    Ocena: 3
    Cytat:
    tadzik85
    szerokość regulowana z zakresie 0-100%? częstotliwość z jaką dokładnością?

    Chciałbym, aby to gadało z monitorem LCD po D-SUB, więc tam aż takich rygorystycznych wymagań nie ma co do HSync i VSync..
    Chociaż jak tak patrzę na oscylogramy zdjęte podczas testu TVBOXa, to tak na oko ta długość impulsu jest mniej więcej stała...
    Jak zbudować generator impulsów prostokątnych na ATmega z regulacją 30-80kHz?

    Tryb CTC, o którym wspomniałeś brzmi bardzo ciekawie, ale chyba będzie lipa z częstotliwością...
  • REKLAMA
  • #6 9513234
    arek944
    Poziom 11  
    Posty: 59
    Pomógł: 2
    Ocena: 3
    Pomyślałem i wyszło mi takie coś (schemat jest zrobiony na szybkiego, więc jeszcze wiele brakuje do doskonałości)
    Jak zbudować generator impulsów prostokątnych na ATmega z regulacją 30-80kHz?
    Sygnał PWM z OC2 będzie sterował częstotliwością, zaś PWM z OC1A - wypełnieniem. Na podstawie sygnału wyjściowego z ICL8038 (HSync) generowany jest z PA2 sygnał VSync.
    Co o tym myślicie, ujdzie takie "cuś" i dogada się z monitorem LCD? Bo szczerze powiem na chwilę obecną nie mam pomysłu na rozwiązanie tej zagwozdki...
  • Pomocny post
    #7 9513679
    Mat_91
    Poziom 25  
    Posty: 908
    Pomógł: 77
    Ocena: 16
    Chcesz generować sygnał synchronizacji poziomej i pionowej a kombinujesz coś z generatorem funkcyjnym? Eeee no trochę przegięcie chyba.

    Zobacz chociażby tu: Link

    Może to Cię naprowadzi.
  • REKLAMA
  • #8 9513884
    arek944
    Poziom 11  
    Posty: 59
    Pomógł: 2
    Ocena: 3
    Wiem, że to mega przegięcie wręcz, ale sęk w tym, że to urządzonko musi obsłużyć wszystko najbardziej chodliwe rozdzielczości - od VGA do HD, czyli:
    Jak zbudować generator impulsów prostokątnych na ATmega z regulacją 30-80kHz?
    A szczerze się przyznam, nie wiem, czy AVRka poradzi sobie z taką różnorodnością częstotliwości, dlatego kombinuję, jak tylko mogę... najlepsze jest to, że to nie musi być "po bożemu" i możliwie minimalistyczne (wręcz nie powinno być), to może być dowolnie udziwnione :)
  • #9 9730881
    arek944
    Poziom 11  
    Posty: 59
    Pomógł: 2
    Ocena: 3
    Trochę nad tym posiedziałem (dużo czasu minęło od ostatniego postu, ale jakośtak nie było czasu) i mam nowe pytanie, otóż: chcę uzyskać taki przebieg (dla rozdzielczości 1024x768):
    Jak zbudować generator impulsów prostokątnych na ATmega z regulacją 30-80kHz?
    a wyskakuje mi coś takiego:
    Jak zbudować generator impulsów prostokątnych na ATmega z regulacją 30-80kHz?

    I chciałbym się dowiedziec, jak walczyć z tym dodatkowym impulsem?
    Urywki programu wyglądają następująco:


    Konfiguracja rejestru licznika:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Wektor przerwań od Caompare/Match obsługuje zmianę ładowanych wartości OCR2 dla timera, tak aby uzyskać rządany czas trwania impulsu H i L

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Funkcja, która odpowiada za pobranie i przepisanie wartości dla generowania rządanej czestotliwości ze zmiennych wprowadzanych w trakcie programu do zmiennych globalnych

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    I tutaj ta sama funkcja wywoływana gdzieś tam w main, kiedy jest potrzebna

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Oczywiście zdjęcia są przykładowe, bo przy prescalerze =1 dostaję prawie wszędzie dodatkowy impuls, natomiast przy prescalerze =8 już tylko przy kilku rozdzielczościach...
    Być może wybrałem niewłaściwy licznik do generowania tych przebiegów? Może powinienem zrobić tak, jak padła tu sugestia, na liczniku 1 z przerwaniem od OCRA i OCRB?

Podsumowanie tematu

✨ Użytkownik poszukuje sposobu na zbudowanie generatora impulsów prostokątnych na mikrokontrolerze ATmega (np. ATmega16) z regulacją szerokości impulsu oraz częstotliwości w zakresie 30-80 kHz. Proponowane rozwiązania obejmują wykorzystanie trybu CTC w timerze, co pozwala na regulację częstotliwości i wypełnienia impulsu. Użytkownik rozważa również zastosowanie układu ICL8038 oraz klasycznego układu 555, jednak poszukuje tańszych alternatyw. W dyskusji poruszane są również kwestie synchronizacji sygnałów HSync i VSync dla monitorów LCD oraz problemy z uzyskaniem pożądanych przebiegów sygnału.
REKLAMA