Wydawało się to takie proste, ale bardzo mnie zaskoczyło!
Chciałem dokonać konwersji stanów 5V TTL (z mikrokontrolera Atmega16) na 15V CMOS. Schemat pokazany jest poniżej.
Niby proste: port mikrokontrolera steruje poprzez opornik tranzystorem a ten w stanie aktywnym (1 logiczna) zaczyna przewodzić 15V i sterować wejściami sterującymi układu CMOS. Opornik 10k ściąga do masy wejścia układu 4067 w stanie nieaktywnym.
W rzeczywistości nie wiem dlaczego na emiterze tranzystora występuje napięcie 4,95V zamiast 15. Skąd się to napięcie bierze? Przez to układ CMOS nie widzi tego jako 1 logiczną.
Wolałbym pozostawić napięcie zasilania kostki CMOS na poziomie 15V, bo zależy mi na jak najmniejszej rezystancji w stanie przewodzenia wyjść aktywnych.
Konwersja stanów 5V TTL - 15V CMOS
Konwersja stanów 5V TTL - 15V CMOS
- Załączniki
-
- Schem.jpg (9.82 KiB) Przejrzano 3779 razy
Tu akurat nie ma nic dziwnego, układ ma objawy prawidłowe. Proponuję przeczytać, co nieco o zasadzie działania tranzystora bipolarnego (odszukaj w Elportalu), a na razie:
Port Atmegi16 rezystory 4k7 i 10k oraz złącze BE tranzystora tworzą oczko obwodu elektrycznego, w którym rolę źródełka napięciowego przejmuję wyjście mikrokontrolera, z napięciowego prawa Kirchoffa można wysadzić, że napięcie na rezystorze 10k będzie około tyle samo duże co napięcie na wyjściu portu uK pomniejszone o spadek napięcia na złączu BE i spadek na 4k7. Tranzystor tak wpięty jak na rysunku tworzy układ OC (wspólny kolektor).
Taką konwersję na tranzystorze można wykonać poprzez włączenie rezystora 10k pomiędzy +15V i kolektor tranzystora, emiter włączyć do masy. Wejście kostki CMOS podłączyć do kolektora tranzystora, mamy wtedy najprostszy inwerter (bramkę negującą).
Spróbuj, może akurat...
Port Atmegi16 rezystory 4k7 i 10k oraz złącze BE tranzystora tworzą oczko obwodu elektrycznego, w którym rolę źródełka napięciowego przejmuję wyjście mikrokontrolera, z napięciowego prawa Kirchoffa można wysadzić, że napięcie na rezystorze 10k będzie około tyle samo duże co napięcie na wyjściu portu uK pomniejszone o spadek napięcia na złączu BE i spadek na 4k7. Tranzystor tak wpięty jak na rysunku tworzy układ OC (wspólny kolektor).
Taką konwersję na tranzystorze można wykonać poprzez włączenie rezystora 10k pomiędzy +15V i kolektor tranzystora, emiter włączyć do masy. Wejście kostki CMOS podłączyć do kolektora tranzystora, mamy wtedy najprostszy inwerter (bramkę negującą).
Spróbuj, może akurat...
No tak!Takie rozwiązanie znam jako pewniejsze i z rozpędu dałem takie, jak na schemacie,choć negator komplikuje nieco sprawę. Najprościej więc oprócz drobnych przeróbek układu zmienić nieco program. Niech stan aktywny będzie "0" logiczne.
Dzięki za rade,nie pomyślałem.
[ Dodano: 2007-08-05, 12:52 ]
Pociąłem ścieżki i zmieniłem na negatory.W programie zmieniłem zera na jedynki i ruszyło!
Chociaż układ i program działają już prawidłowo, sprawa programowa wykonana jest zbyt amatorsko:
Portc.0=1
portc.1=0
portc.2=0
portc.3=0
Dobrze byłoby zmieniać stan 4 najmłodszych bitów portu w jednej linii, nie ruszając 4 najstarszych, gdyż pełnią inne funkcje. Wiem, że robi się to poprzez instrukcję AND, coś jak:
portc = portc and &B00001110,
ale niestety nie do końca rozumiem, jak to się robi? Podstawy systemu binarnego znam i operatory logiczne też. Czy jest może gdzieś to w miarę prosto wyjaśnione, albo któryś z Kolegów będzie tak miły i wyjaśni krótko na Forum? Na pewno przyda się też innym.
Pozdrawiam
PS. Jeśli temat nie pasuje, proszę go przenieść.
Dzięki za rade,nie pomyślałem.
[ Dodano: 2007-08-05, 12:52 ]
Pociąłem ścieżki i zmieniłem na negatory.W programie zmieniłem zera na jedynki i ruszyło!
Chociaż układ i program działają już prawidłowo, sprawa programowa wykonana jest zbyt amatorsko:
Portc.0=1
portc.1=0
portc.2=0
portc.3=0
Dobrze byłoby zmieniać stan 4 najmłodszych bitów portu w jednej linii, nie ruszając 4 najstarszych, gdyż pełnią inne funkcje. Wiem, że robi się to poprzez instrukcję AND, coś jak:
portc = portc and &B00001110,
ale niestety nie do końca rozumiem, jak to się robi? Podstawy systemu binarnego znam i operatory logiczne też. Czy jest może gdzieś to w miarę prosto wyjaśnione, albo któryś z Kolegów będzie tak miły i wyjaśni krótko na Forum? Na pewno przyda się też innym.
Pozdrawiam
PS. Jeśli temat nie pasuje, proszę go przenieść.
- Sagittarius
- Użytkownik
- Posty: 130
- Rejestracja: 29 maja 2007, 9:29
- Lokalizacja: Kujawsko-pomorskie
- Kontakt:
By dopasować poziomy logiczne między CMOS/TTL polecam dwa układy 4009 (inwertery) i 4010 (bufory). tutaj znajdziesz kartę katalogową buforów. Może nie jest to najprostsze rozwiązanie, ale ekonomiczne i skuteczne.