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

Atmega 8535 - Generator zmienna częstotliwość i czas trwania impulsu

prociomen007 23 Paź 2013 12:58 3165 9
  • #1 12872566
    prociomen007
    Poziom 18  
    Witam, szukam sposobu na wykonanie stabilnego generatora ( zmienna częstotliwość i wypełnienie ) w oparciu o procesor atmega 8535. Generator ma mieć dwa pokrętła ( potencjometry) służące do regulacji częstotliwości i długości impulsu. Wiem że atmega ma wbudowany generator PMW ale do moich potrzeb jego działanie jest błędne. Chcę aby po ustaleniu długości impulsu nie zmieniał się on przy zmianie częstotliwości. Jak wiadomo dla generatora PMW można ustawić wypełnienie ale kiedy zmienimy częstotliwość to ( fizyczna ) długość impulsu również się zmiani ( i to w moim przypadku jest błąd ). Wykombinowałem sobie pewien program w oparciu o dwa timery. Martwi mnie niestety czy obsługa potencjometrów i wyświetlacza LCD nie wprowadzi do programu opóźnień zaburzających pracę. Zastanawiam się czy takie rozwiązanie jest stabilne ( bo na tym ogromnie mi zależy )

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


    Atmega 8535 - Generator zmienna częstotliwość i czas trwania impulsu
  • #2 12872705
    BlueDraco
    Specjalista - Mikrokontrolery
    Nic podobnego. Możesz zmienić okres nie zmieniając szerokości impulsu. Możesz zmienić szerokość impulsu nie zmieniając okresu. Możesz zmienić jedno i drugie.
  • #3 12872721
    prociomen007
    Poziom 18  
    W takim przypadku możesz mi powiedzieć jak tego dokonać?
  • #4 12872954
    BlueDraco
    Specjalista - Mikrokontrolery
    Przeczytać rozdział o timerach w dokumentacji procesora - potem już będzie łatwo. Okres w ICR1, wypełnienia w OCRn.
  • #5 12872971
    prociomen007
    Poziom 18  
    No właśnie i czy przypadkiem nie będzie tak że ustawię sobie częstotliwość 100Hz i powiedzmy wypełnienie 50%. Kiedy zmienię częstotliwość nagle na 1kHz to wypełnienie zostanie mi 50% a to zmieni szerokość impulsu ( * 10 ) dla tej częstotliwości. A z założenia chciałem aby było to stałe.
  • #6 12873051
    BlueDraco
    Specjalista - Mikrokontrolery
    Zamiast zadawać pytania, poszukaj na nie odpowiedzi w dokumentacji - przeczytaj, jak działa timer w trybie PWM z limitem w ICR1.
    Ani okresu, ani wypełnienia nie ustawiasz w procentach, a w cyklach zegara. Zmiana jednego nie ma wpływu na drugie.
  • #7 12875166
    Konto nie istnieje
    Poziom 1  
  • #8 12876514
    prociomen007
    Poziom 18  
    No więc idąc za waszymi poradami skonstruowałem program który generuje sygnał w oparciu o PMW. Na symulacjach wszystko jest ok. Niestety kiedy programuję prawdziwy mikrokontroler pojawia się pewien kłopot. Wypełnienie działa prawidłowo mogę sobie je regulować odpowiednim potencjometrem. Problemem jest częstotliwość. Kiedy potencjometr wykręcony jest na maksa a co za tym idzie do rejestru ICR1 wpisana jest wartość 1000 generowany przebieg jest prawidłowy. Niestety kiedy choćby delikatnie ruszę potencjometr i wpisze do rejestu ICR1 wartość mniejszą niż 1000, generowany przebieg zaczyna znikać. Znaczy się znika i pojawia ( wariuje ) poza tym szarpie i nie jest stabilny. Wygląda to jak by mikrokontroler się resetował cały czas ( chodź nie sądzę bo nie widać tego oznak na LCD ) albo wyłączał co chwilę generację PMW. Poniżej kod:

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


    Z tego co zauważyłem to zanikanie przebiegu jest raczej nieregularne i nie zachodzi z jakąś konkretną częstotliwością. Procesor taktowany jest wewnętrznie 4Mhz.
  • #9 12876576
    BlueDraco
    Specjalista - Mikrokontrolery
    Szukałbym przyczyny najpierw w potencjometrach. Co się dzieje, kiedy zmieniasz np. stopniowo wypełnienie lub częstotliwość co jakiś czas, a nie na podstawie odczytu ADC?

    Ponadto prawdopodobieństwo, że dwa razy pod rząd dostaniesz z pomiarów ADC tę samą wartość jest niewielkie.
  • #10 12876615
    prociomen007
    Poziom 18  
    Chym, jedyną rzeczą jaką jeszcze zauważyłem to że wyświetlacz lekko przygasa kiedy potencjometry znajdują się w innym położeniu niż skrajnie lewo bądź skrajne prawo. Co świadczy że goni przez nie duży prąd.

    Dodano po 3 [godziny] 16 [minuty]:

    Wychodzi jednak na to że kiedy odłączę wyświetlacz układ zaczyna pracować normalnie. Czy możliwe jest że posiadam uszkodzony wyświetlacz ?
REKLAMA