Konwersja stanów 5V TTL - 15V CMOS

Tutaj mozesz poruszać tematy ogólne powiązane z elektroniką, np. dyskusje na temat podzespołów, układów, zasad ich działania. Czyli można pisać o wszystkim czego nie da się przyporządkować do innych działów.
ODPOWIEDZ
Awatar użytkownika
M@ciej
Użytkownik
Posty: 736
Rejestracja: 13 sie 2005, 21:38
Lokalizacja: Szczecin

Konwersja stanów 5V TTL - 15V CMOS

Post autor: M@ciej » 04 sie 2007, 20:06

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.
Załączniki
Schem.jpg
Schem.jpg (9.82 KiB) Przejrzano 3774 razy

GAVRON
Użytkownik
Posty: 552
Rejestracja: 26 maja 2006, 8:44
Lokalizacja: Łaziska Górne

Post autor: GAVRON » 04 sie 2007, 21:21

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... :smile:

Awatar użytkownika
M@ciej
Użytkownik
Posty: 736
Rejestracja: 13 sie 2005, 21:38
Lokalizacja: Szczecin

Post autor: M@ciej » 04 sie 2007, 22:35

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ść.

Awatar użytkownika
Sagittarius
Użytkownik
Posty: 130
Rejestracja: 29 maja 2007, 9:29
Lokalizacja: Kujawsko-pomorskie
Kontakt:

Post autor: Sagittarius » 08 sie 2007, 7:09

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.

Awatar użytkownika
M@ciej
Użytkownik
Posty: 736
Rejestracja: 13 sie 2005, 21:38
Lokalizacja: Szczecin

Post autor: M@ciej » 08 sie 2007, 11:23

Już sobie z tym poradziłem. Zrobiłem 4 inwertery na tranzystorach, jak zaproponował jeden z Kolegów powyżej i działa!

Nie wiem za to jak za pomocą instrukcji AND zmieniać tylko 4 najmłodsze bity, pozostawiając 4 najstarsze.

ODPOWIEDZ