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.

Przełączanie generatorów dla mikrokontrolera

ADI-mistrzu 17 Maj 2012 00:08 1634 11
  • #1 17 Maj 2012 00:08
    ADI-mistrzu
    Poziom 30  

    Witam,

    Pojawiła się potrzeba przełączania częstotliwości z jaką pracuje mikrokontroler.
    Myślałem aby użyć przełącznika cyfrowego ADG1236, ale czy to dobry pomysł?

    Jest w ogóle jakiś sprawdzony sposób na przełączanie generator/rezonatora cyfrowo? Odpada tutaj przekaźnik, układ nie może posiadać elementów ruchomych.

    Pozdrawiam

    0 11
  • #2 17 Maj 2012 00:24
    pietrucha
    Poziom 16  

    Można użyć takiego przełącznika analogowego, ale lepszy i tańszy powinien być cyfrowy multiplekser, np. 74HC158 (oczywiście, jeśli tak, jak mówisz, masz dwa generatory a nie rezonatory). Ale mikroprocesory często mają możliwość wewnętrznej zmiany częstotliwości taktowania (dzielniki albo mnożniki oparte o PLL) - sprawdź czy nie masz czegoś takiego.

    0
  • #3 17 Maj 2012 07:40
    Mechanik PSC
    Poziom 12  

    Kolego ADI. Przełączanie częstotliwości taktowania podczas pracy mikroprocesora nie wydaje mi się dobrym pomysłem. Podaj więcej szczegółów nt. co to za procesor to na pewno rozwiązanie się znajdzie, bez zmiany częstotliwości taktowania, Tak jak kolega wyżej napisał, są programowe mozliwości zmiany tej częstotliwości, a nawet "uśpienie" procesora.

    0
  • #4 17 Maj 2012 08:36
    dondu
    Moderator Mikrokontrolery Projektowanie

    ADI-mistrzu napisał:
    Pojawiła się potrzeba przełączania częstotliwości z jaką pracuje mikrokontroler.

    W jakim celu - pytam ponieważ być może nie musisz tego robić.


    ADI-mistrzu napisał:
    Myślałem aby użyć przełącznika cyfrowego ADG1236, ale czy to dobry pomysł?
    Jest w ogóle jakiś sprawdzony sposób na przełączanie generator/rezonatora cyfrowo?

    Niektóre mikrokontrolery są tak zbudowane, że mają możliwość programowej zmiany źródła i/lub prędkości zegara. Wystarczy wybrać odpowiedni model i sprawa z głowy.


    ADI-mistrzu napisał:
    Odpada tutaj przekaźnik, układ nie może posiadać elementów ruchomych.

    Odpada nie tylko dlatego, ale przede wszystkim dlatego, że zakłócenia z cewki mogłyby uniemożliwić pracę zegara np. kwarcu.


    Mechanik PSC napisał:
    Przełączanie częstotliwości taktowania podczas pracy mikroprocesora nie wydaje mi się dobrym pomysłem.

    Wręcz przeciwnie, to bardzo przydatna funkcjonalność.

    0
  • #5 17 Maj 2012 08:50
    ADI-mistrzu
    Poziom 30  

    Kontroler to Atmega168.
    Normalnie potrzebuję aby pracował na 20MHz (do wykonywania pomiarów), ale czasem muszę się np. z nim skontaktować przez RS232 a na tej częstotliwości błąd jest dość duży jeśli chce się nadawać przy jakiejś standardowej prędkości (np. 9600).

    Ale chciałem też to zrobić dla eksperymentu, zobaczyć jak by się pracowało przy budowaniu takiego urządzenia.
    Mam zamiar tego użyć także do zmiany zegara generatora DDS aby uzyskać jak najmniejszy skok.
    Też myślałem nad multiplekserem analogowym, ale wydawało mi się to za proste.

    Więc podsumowując generator DDS miał by przełączany generator co raczej było by mniejszym problemem), ale Atmega168 raczej już rezonator.

    0
  • #6 17 Maj 2012 11:10
    Mechanik PSC
    Poziom 12  

    Kolego dondu. Ja pisałem o zmianie częstotliwości taktowania z zewnątrz. Pierwszy raz spotkałbym się z takim rozwiązaniem, że ktoś zmienia rezonatory kwarcowe "w locie" (lub źródło zegara). Napisałem, że są na to metody czysto programowe, nie sprzętowe. Jeżeli kolega uważa inaczej to może przy okazji robiąc niewielki OT wspomiałby w jakim celu trzebaby zmieniać częstotliwość taktowania z zewnątrz? Poza tym taktując Atmega zegarem 20MHz błąd USARTA wynosi 0,2% z czym sobie znakomicie terminal np. Windowsa radzi.

    0
  • #7 17 Maj 2012 11:17
    ADI-mistrzu
    Poziom 30  

    Wyżej dałem przykład na generatorze DDS, można uzyskać mniejszy skok przestrajania i wyższą dokładność.

    0
  • #8 17 Maj 2012 11:46
    dondu
    Moderator Mikrokontrolery Projektowanie

    Mechanik PSC napisał:
    Kolego dondu. Ja pisałem o zmianie częstotliwości taktowania z zewnątrz.

    OK, faktycznie niewłaściwie zrozumiałem Twój post.

    Mechanik PSC napisał:
    Pierwszy raz spotkałbym się z takim rozwiązaniem, że ktoś zmienia rezonatory kwarcowe "w locie" (lub źródło zegara).

    Oj, na pewno są lub były w przeszłości takie rozwiązania tylko na nie nie trafiłeś.
    W końcu po to właśnie istnieją możliwości wybrania zewnętrznego źródła sygnału zegarowego w prawie każdym mikrokontrolerze.

    ADI-mistrzu napisał:
    Kontroler to Atmega168.

    Normalnie potrzebuję aby pracował na 20MHz (do wykonywania pomiarów), ale czasem muszę się np. z nim skontaktować przez RS232 a na tej częstotliwości błąd jest dość duży jeśli chce się nadawać przy jakiejś standardowej prędkości (np. 9600).

    Ale chciałem też to zrobić dla eksperymentu, zobaczyć jak by się pracowało przy budowaniu takiego urządzenia.

    Przy takich założeniach, to można pokombinować z np. dwoma generatorami na bramkach + kwarce + przełącznikiem z jakichś bramek logicznych czy przerzutników (lub multiplekser) sterowany jednym pinem mikrokontrolera i sprawa załatwiona.

    0
  • #9 22 Maj 2012 21:14
    ADI-mistrzu
    Poziom 30  

    Przełączanie generatorów dla mikrokontrolera
    Takie coś ma rację bytu? Buforami przełączany był by sygnał z rezonatora.
    Chciałem to za symulować w programie Proteus, ale ma on chyba jakiś bug związany z kwarcem ponieważ za nim nie mogę go tam wzbudzić.

    Czy przydał by się jeszcze tranzystor na każdym kwarcu aby wzmocnić przebieg?

    0
  • #10 22 Maj 2012 23:06
    jarek_lnx
    Poziom 43  

    Cytat:
    Takie coś ma rację bytu? Buforami przełączany był by sygnał z rezonatora.

    A skąd miał by się tam wziąć ten sygnał? to są rezonatory, a nie generatory.

    0
  • #11 23 Maj 2012 00:16
    ADI-mistrzu
    Poziom 30  

    Przełączanie generatorów dla mikrokontrolera

    Próbowałem za symulować obydwa te układy i nic, w programie martwe więc będzie trzeba na rzeczywistych modelach próbować.

    Pytanie czy można zbudować 3 sztuki tego drugiego schematu z różnicą częstotliwości rezonatorów i ich wyjścia połączyć przez buffory jak to zrobiłem na poprzednim schemacie?
    Chodzi mi także o energooszczędność więc pierwszy układ raczej był by gorszy, ponieważ przy ciągłej pracy generatorów scalak by pobierał większą ilość energii niż 3 sztuki zbudowane na tranzystorze.

    0
  • #12 24 Maj 2012 23:06
    ADI-mistrzu
    Poziom 30  

    Ogółem da się to zrobić, ja testowałem to w takim układzie:
    Przełączanie generatorów dla mikrokontrolera

    Na wyjściu jest piękny przebieg prostokątny o amplitudzie nieco ponad 4V (zasilanie 5V). Trzeba pamiętać o dobrej filtracji napięcia zasilającego układy, przy częstotliwości 20MHz potrafiły mi się buntować.

    Niestety jest jedna wada... nie nadaje się to gdzie energooszczędność jest wymagana.
    Na początku próbowałem z układami TTL, niestety łączny pobór prądu to ponad 35mA.
    Zastąpiłem inwerter na wersję CMOS (buffora już takowego nie znalazłem) i prąd spadł do niecałych 20mA.
    16.5mA pobiera bramka TTL, 3.5mA bramka CMOS.

    Podsumowując, nie zaoszczędzi się w ten sposób energii, ponieważ układ pobiera dodatkowe 20mA a zyskamy na obniżeniu częstotliwości w Atmega168 (z 20MHz do 1MHz) około 10mA.

    Pozdrawiam

    0