Skocz do zawartości

Schemat lf Nowy/Sprawdzenie/Poprawa


BlackSkill

Pomocna odpowiedź

Cześć. Robię kolejnego lf. Moglibyście rzucić okiem na schemat ? Co poprawić ?

1. Radiatorek z lm1117 mogę zostawić niepodłączony do niczego ? Znalazłem dwa ds'y i w jednym z nich jest to wyjście vout a w drugim nie oznaczone.

2.Pin Pen w procku. Podłączać go gdzieś ? Czytałem że nie którzy podłączają go przez rezystor do vcc , a inni zostawiają wiszący. Ci z nim zrobić ? Programuje przez usbasp.

*W schemacie poprawiony już kondesator 100uf na 47uf na wyjściu stabilizatora.

@edit

Mam jeszcze schemat płytki czujników , ale dodawanie obrazków się zepsuło.

Link do komentarza
Share on other sites

Nie wiem w jakiej obudowie masz tego 1117, ale jeśli SOT223 (mniejsza od DPAK ale większa od SOT89) to cechą wszystkich tego rodzaju obudów (a nie konkretnego scalaka) jest połączenie środkowej nóżki z radiatorem - to wynika z technologii produkcji. Jeżeli na środku masz Vout, radiator ma to samo.

  • Lubię! 1
Link do komentarza
Share on other sites

Wejście PEN ma wewnętrzny podciąg do Vcc więc nie musisz nic z nim robić. Programowanie przez SPI działa normalnie wykorzystując wejście RST i SPI.

Dla zaspokojenia ciekawości: stan wejścia PEN zatrzaskiwany jest w wewnętrznym przerzutniku procesora tylko po włączeniu zasilania tzn. gdy zakończy się wewnętrzny sygnał zerowania pochodzący z bloku Power_On_Reset. Jeżeli na PEN podano stan niski w trakcie włączania Vcc, cały system stoi zamrożony w stanie RESET niezależnie od wejścia RST i można do woli programować np. przez SPI. Żeby powrócić sprawność procesora trzeba wtedy wyłączyć zasilanie i włączyć ponownie już z PEN=1. Żaden znany mi programator z tej funkcji nie korzysta, choć jestem w stanie sobie wyobrazić system w którym np. jeden centralny procesor programuje inne przez i tak rozprowadzony SPI właśnie poprzez zamrażanie ich w stanie RESET za pomocą PEN. Trochę pokrętne, ale da się.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Schemat tak typowy, jak śnieg na Święta. Chociaż w tym roku..

Płytka procesora:

Ponieważ większość sygnałów to proste we/wy bez żadnego odniesienia do wewnętrznych peryferiów, to warto, żebyś w czasie robienia płytki dopasował ich położenie (numery pinów procka) do położenia elementów na PCB. Wyjątkiem są oczywiście linie PWM, ale je także można w razie potrzeby przenieść na Timer 3. No i RC5 - wypadałoby mieć od tego przerwanie lub InputCapture (ICx) innego timera niż ten od PWM.

O ile pamiętam mega64 i 128 mają programowanie ISP przez linie PDI, PDO a nie przez MISO, MOSI. Sprawdź to w danych katalogowych.

C14 jest po złej stronie opornika R9.

Wypominanie braku histerezy w komparatorach i ich wymagany zakres napięć wejściowych mniejszy niż Vcc to już nudziarstwo.

Może chociaż jakaś regulacja napięcia progowego komparatorów z PWM a nie z potencjometru?

Może jakiś UART (w końcu są dwa) do debugowania kodu?

Płytka czujników:

Jak zwykle każda diodka KTIRa podłączona do osobnego opornika. Połącz chociaż po dwie (lub nawet trzy?) szeregowo. Zaoszczędzisz dużo prądu i ciepła na stabilizatorze.

Szczerze mówiąc jakoś mi nie pasuje ta szeroka taśma do czujników. Tyle KTIRów plus LEDy i to wszystko równolegle? Dlaczego tak na łatwiznę? Mając w procesorze SPI położyłbym tutaj ze dwa rejestry przesuwające, napełniał je szeregowo i mógł sterować nawet i 16 diodek. A do KTIRów dospawałbym multiplekser analogowy i puścił je po jednym drucie wprost do przetwornika ADC lub (nawet) komparatora w procesorze. Przynajmniej czegoś się nauczysz, bo wczytywanie stanu kilkunastu linii z portu równoległego jest jednak trywialne, przyznasz.

Link do komentarza
Share on other sites

Marek. Na "łatwiznę" nie idę , bo cały czas się uczę. Dopiero zaczynam z elektroniką. Jest do mój drugi "poważniejszy" projekt. Muszę dopiero zrozumieć regulator PID....

Jestem dopiero w 1 technikum.

1.Kondensator przestawię. Linie to programowania faktycznie się gdzie indziej piny PE0 i PE1.

2.Co do RC5 nie wiem czy będę to potrafił wykorzystać. Przestawić go na jeden z pinów (ICx) ?

3.Nie mam pojęcia co to jest histereza w komparatorach.

Wiem tylko że mogę komparatorem " prze-konwertować '' sygnał analogowy na cyfrowy.

4.Do UART'a nie mam zadnego modułu czy czegoś żeby komunikować się z kompem.

Masz jakąś stronkę o UART gdzie jest to łatwo wytłumaczone ?

5. Rejestry i multipleksery coś tam już miałem w szkole , lecz tylko w teorii i nie mam pojęcia jak to wykorzystać. Nie chcę sobie tego zbytnio utrudniać. Nie mam też gdzie kupić tego musiałbym zamawiać a przesyłka tez kosztuje.

Link do komentarza
Share on other sites

"Wynalazłem" w internetach ostatnio wyświetlacze 3D LED.

Chyba użyję ten multiplekser tylko muszę o tym więcej poczytać.

Masz jakiś fajny artykuł o multiplekserach ?

@edit

Chyba rozumiem. Zajrzalem do ds'a . Jeśli nie to mnie poprawcie.

Mam piny A B C w multiplekserze i nimi wybieram wyjście multipleksera za pomocą liczb binarnych.

W pseudokodzie będzie to wyglądało tak że gdy np:

Gdy Czujnik1 widzi linie to A=0 B=0 C=1 a na pinie com multipleksera daje stan wysoki by zapalić diode.

Dobrze to rozumiem ?

@edit

Zostały jeszcze rejestry.Coś mniej więcej rozumiem.

Ale nie wiem w jaki sposób mam sterować na jakim pinie co ma się pojawić.

Link do komentarza
Share on other sites

Jak już pisałem na PM bardzo się cieszę, że temat Cię wciągnął i zacząłeś coś o tym czytać. Przepraszam za słowo łatwizna, bo absolutnie moją intencją nie było umniejszanie tego co już zrobiłeś a raczej doping do pójścia krok lub dwa dalej. Staram się w każdym moim projekcie dodawać jakiś nowe rzeczy z którymi jeszcze nie miałem do czynienia lub też doprowadzać znane mi już układy do optimum funkcjonowania lub szczytów możliwości danej technologii. Zabawa tym bardziej fajna, że zwykle opłacana przez Zamawiającego 🙂 (i oczywiście ograniczona przez założenia, czas wykonania, budżet ba bla bla...) Jeżeli więc zdecydowałeś się na skonstruowanie nowego robota, to moim zdaniem szkoda byłoby zmarnować szansę nauczenia się tak wiele jak tylko można. No i stąd te multipleksery, rejestry i takie tam. Ja wiem, że z łatwością można obalić takie rady bo przecież procesor z 64 nóżkami bez problemu wciągnie sygnał z kilkunastodrutowej tasiemki przy okazji sterując mnóstwem LEDów. Tylko, że wstawienie na schemat wielu czujników i LEDów oraz podłączenie ich wprost do procka wcale nie jest większym osiągnięciem niż jeden czujnik i jeden LED. Decydując się na nowe rozwiązania układowe, rozumiejąc ich działanie i pisząc kod do ich obsługi mamy kolejny punkcik choćby w naszym hobbystycznym CV. Nigdy nie wiadomo, kiedy to zaprocentuje 🙂 a nagle po latach okazuje się, że jesteśmy uważani za jakiegoś guru i sami możemy służyć radą.

Tak więc do pomysłu transmisji szeregowej natchnęła mnie ta szerokaśna tasiemka łącząca Twoją płytę główną z czujnikami. O ile jeszcze 6-10 drutów jakoś wygląda, o tyle 20 tu już lekkie przegięcie. Zamiast więc przesyłać każdy sygnał osobnym kabelkiem można by przesłać część lub wszystko po jednym wspólnym drucie. Tak robi choćby UART - obie strony umawiają się z jaką prędkością nadają bity i jak wygląda ramka jednego znaku. To wystarczy by po dwóch drutach przesyłać całkiem sporo informacji i to w dwie strony jednocześnie. UART wymaga jednak sporo sprzętu po każdej stronie: generatora wzorcowego, dzielnika częstotliwości, układu rozpoznającego początek ramki, rejestru przesuwającego no i sterowania tym wszystkim. Dużo prostszy jest protokół SPI - tu od tej "głupszej" strony wymagana jest tylko zdolność zbierania lub nadawania bitów w takt dostarczanego zegara. Rolę UARTowych bitów startu i stopu ramki przejęły na siebie dodatkowe sygnały a więc kabelki. Ponieważ większość AVRów ma wbudowany sprzętowy interfejs SPI, można z niego skorzystać. Zakładając, że procesor jest urządzeniem Master czyli tym który zarządza transmisją i generuje sygnał zegara masz tu:

MOSI - wyjście danych nadawanych (Master Out),
MISO - wejście danych odbieranych (Master In) ,
SCK - zegar transmisji (Serial ClocK).

Gdybyś kiedyś chciał użyć procesora jako tej "głupszej" strony, byłby wtedy urządzeniem Slave i usiałbyś zmienić kierunek wszystkich linii zgodnie z drugą połową oznaczeń:

MOSI - wejście danych odbieranych (Slave In),
MISO - wyjście danych nadawanych (Slave Out),
SCK - tym razem to wejście sygnału zegara.

Zauważ, że w trakcie programowania procesor jest właśnie urządzeniem Slave i to programator wysyła dane i zegar jako Master.

No to skoro masz już Master'a, to zajmijmy się drugą stroną. Żeby odebrać dane nadawane po SPI wystarczy tzw. rejestr przesuwający. W najprostszym przypadku jest to zestaw kilku (najczęściej 8) przerzutników połączonych w łańcuszek. Pierwszy z nich wciąga dane wprost z linii MOSI, drugi z pierwszego, trzeci z drugiego itd. Ponieważ wszystkie taktowane są wspólnym zegarem SCK, zawartość każdego przepisywana jest do następnego jednocześnie. Można powiedzieć, że stan linii MOSI trafia najpierw do pierwszego przerzutnika, potem do drugiego, trzeciego itd. Po 8 impulsach zegara SCK cały rejestr napełniony jest 8 bitami jakie na MOSI wysłał Master. Super, jeżeli do wyjść podłączysz diodki, masz już 8 wyjść sterowanych tylko dwoma liniami.

Taki rejestr przesuwający to np. 74HC164:

http://www.nxp.com/documents/data_sheet/74HC_HCT164.pdf

Układzik jest tak prosty, że nie kosztuje więcej jak 1zł:

http://www.tme.eu/pl/katalog/#search=74hc164&s_field=accuracy&s_order=DESC&id_category=100313&page=1&products_with_stock=on

Oczywiście nic nie stoi na przeszkodzie, by do wyjścia ostatniego przerzutnika (Q7, pin 13) podłączyć wejście następnego rejestru i tak dalej aż osiągniemy potrzebną liczbę wyjść. Od strony procesora musimy po prostu nadać przez SPI tyle bajtów danych ile rejestrów podłączyliśmy szeregowo. Pierwszy nadawany bajt trafi do rejestru będącego na końcu łańcuszka a ostatni do tego najbliżej linii MOSI. Fajne, prawda?

Układ 74HC164 ma dwa wejścia danych (DSA i DSB, piny 1 i 2) , ale trzeba je zewrzeć razem (lub jedno podłączyć do Vcc), bo są to wejścia bramki AND. Wejście zerowania rejestru /MR (pin 9) podłączamy do Vcc i gotowe.

Układ jest trywialny, ale ma dwie podstawowe wady:

- W czasie transmisji danych na wyjściach wszystkich rejestrów widać śmieci, bo wielobitowe słowo musi przejść przez każdy przerzutnik wypychając wszystko co było tam wcześniej. Czasem to nie przeszkadza, ale w większości przypadków jest to problem. Nawet sterując LEDy nasze oko widzi podczas zmiany zawartości rejestru krótkie mignięcia tych, które powinny być akurat zgaszone. Być może przy transmisji z zegarem 10MHz (SPI może być naprawdę szybkie) efekt migotania można pominąć, ale "sztuka cierpi".

- Wsuwanie danych do rejestru jest ciągle aktywne i jakikolwiek impuls zakłócający na linii SCK wpisze coś do pierwszego przerzutnika bezpowrotnie niszcząc (przesuwając) zawartość wszystkich innych o 1 pozycję. Zauważ, że programator na złączu KANDA programując procesor także generuje SCK a więc dane przez niego wysyłane do procesora na linię MOSI będą wpisywać się także do rejestru. W przypadku LEDów można takie disco przeżyć, ale już przekaźniki czy jakieś inne odbiorniki mocy mogłyby tego nie polubić.

Dlatego powstały trochę bardziej rozbudowane układy 74HC594:

http://www.nxp.com/documents/data_sheet/74HC_HCT594.pdf

Takie coś, oprócz 8-bitowego rejestru przesuwającego zawiera też rejestr równoległy, służący do zapamiętywania informacji z tego pierwszego. Tak więc teraz mamy możliwość bezkarnego wsuwania danych do rejestru przesuwającego a potem, po skończonej transmisji przepisania jednym impulsem wszystkich 8 bitów na raz na wyjścia. Jeżeli podłączysz SHCP (SHift Clock Pulse) do SCK a DS do MOSI to masz gotowy odbiór danych szeregowych z SPI. Jeżeli puścisz trzeci, dodatkowy kabelek obok i podłączysz go do STCP (STorage Clock Pulse) to produkując tam programowo jeden krótki impuls 0-1-0 (po zakończeniu całej transmisji SPI) dane pojawią się na wyjściach od razu w poprawnej formie 🙂 I znów możesz połączyć dowolnie dużo takich rejestrów szeregowo i mieć np. 64 LEDy sterowane 3 liniami. Wszystkie SHCP łączysz razem do SCK, to samo z STCP - do jednego, dowolnego wyjścia portu procesora a same dane szeregowo: MOSI na wejście DS pierwszego, jego Q7S (pin 9) na wejście DS następnego itd... Niewykorzystane wejścia /SHR (Shift Reset) i /STR (Storage Reset) w najprostszym przypadku podczepiasz do Vcc.

Co ciekawe oprócz takich typowych układów rodziny 74HC mających swoje normalne ograniczenia technologiczne (głownie małe prądy wyjściowe, kilka mA) powstały też układy bliźniaczo podobne, ale przystosowane specjalnie do sterowania "cięższymi" rzeczami. Przykładowo taki TPIC6C595:

http://www.tme.eu/pl/details/tpic6c595dg4/uklady-logiczne-rodziny-cmos/texas-instruments/#

kosztuje podobnie a ma 8 wyjść open-drain po 30V/100mA każde 🙂

Podłączenie go do SPI jest równie trywialne co 74HC594 a dwa rejestry zabezpieczają przed śmieciami na wyjściach. Gdyby ktoś miał ochotę, to:

- SRCK do SCK

- SERIN do MOSI

- RCK do linii portu generującej impuls "zapisu" po zakończonej transmisji SPI

- /G do GND (stan 1 tutaj blokuje - wyłącza wszystkie wyjścia niezależnie od zawartości rejestru pamiętającego)

- /CLR do Vcc (stan 0 tutaj zeruje oba rejestry - można podłączyć do RESETu procesora)

- SEROUT do wejścia SERIN następnego rejestru gdy potrzeba więcej jak 8 bitów.

Na razie tyle o wyciąganiu danych z SPI. Jakby co, to pytaj.

Następnym razem o transmisjach w drugą stronę, a potem o multiplekserach.

  • Lubię! 1
Link do komentarza
Share on other sites

Przeczytałem to raz ale większości nie zrozumiałem 😃 Przeczytam jeszcze z kilka razy 😃

1.

Ponieważ wszystkie taktowane są wspólnym zegarem SCK, zawartość każdego przepisywana jest do następnego jednocześnie. Można powiedzieć, że stan linii MOSI trafia najpierw do pierwszego przerzutnika, potem do drugiego, trzeciego itd. Po 8 impulsach zegara SCK cały rejestr napełniony jest 8 bitami jakie na MOSI wysłał Master. Super, jeżeli do wyjść podłączysz diodki, masz już 8 wyjść sterowanych tylko dwoma liniami.

Taki rejestr przesuwający to np. 74HC164:

A co się stanie gdy napełnię już cały rejestr ? Dane na ostatnim przerzutniku znikają tak ?

@edit

Po drugim przeczytaniu praktycznie wszystko stało się trywialne jak mówisz 😃

Muszę tylko poczytać o tym SPI bo nie wiem co to jest i jak działa oraz jak wysyłać dane przez mosi.

Jeszcze pytanko:

W przypadku drugiego układu tj. 74HC594

Na "spokojnie" mogę wysłać dane np. do zaświecenia 8 diod , a po tym wysłać sygnał który wypuszcza te wszystkie 8 sygnałów na raz tak 😉 ?

Ps. Załatwiłbyś kawałek kodu takiego do rejestru ?

Link do komentarza
Share on other sites

Wiesz, wystarczy zajrzeć do danych katalogowych procesora. O ile pamiętam jest tam prosta funkcja nadająca coś przez SPI, ale proszę:

void spi_byte_send(uint8_t n)
{
SPDR = n;
   while(!(SPSR & (1<<SPIF)));
}

Takie coś wysyła jeden otrzymany bajt (n) poprzez zapis do rejestru interfejsu SPI oraz czeka na jego wysłanie. Na początku kodu dobrze jest gdzieś umieścić inicjalizację tego interfejsu. Wystarczy jeden zapis do rejestru sterującego:

SPCR = _BV(SPE) + _BV(MSTR) + _BV(SPR0);

Byłoby lepiej gdybyś poczytał o znaczeniu poszczególnych bitów. Użyte przeze mnie to:

SPE - włącza całe SPI

MSTR - ustawia procesor jako Master

SPR0 - wraz z SPR1 odpowiadają za szybkość generowanego zegara SCK.

Po ustawieniu trybu pracy możesz już wysyłać dane. Jeżeli podłączysz układ 74HC594, musisz po wysłaniu danych wygenerować impuls przepisania tych danych na wyjścia, np:

spi_byte_send(stan_diodek);
PORTB |= _BV(0);
PORTB &= ~_BV(0);

Pierwsza linia to wysłanie przykładowej zmiennej "stan_diodek" szeregowo przez SPI a dwie pozostałe to ustawienie i wyzerowanie linii PB0.

Jeśli podłączysz więcej rejestrów jeden za drugim, musisz wysyłać informacje od razu do wszystkich a potem jednym impulsem "pokazywać" to na wyjściach:

spi_byte_send(ledy[0]);
spi_byte_send(ledy[1]);
spi_byte_send(ledy[2]);
spi_byte_send(ledy[3]);
PORTA |= _BV(5);
PORTA &= ~_BV(5);

Tym razem mamy 4-bajtową tablicę ledy[] (a więc 32 diodki LED na 3 liniach procesora!), którą po kolei wysyłamy przez SPI. Na końcu - jak zwykle - przepisanie zgromadzonych w rejestrach danych na ich wyjścia za pomocą impulsu na wyjściu - tym razem - portu PA5.

Czy to jakoś rozjaśnia temat?

  • Lubię! 1
Link do komentarza
Share on other sites

Tak dzięki 😉 Poczytałem jeszcze o SPI o jego ustawianiu, częstotliwości i w teorii dość to rozumiem 😉 Zobaczymy jak będzie w praktyce 😃 Będę musiał zamówić kilka układów ;D

A taśma chyba zostanie 20 pin, albo ją przytnę jakoś bo szkoda mi dychy na taśmę i gniazdka ;/

Jeśli możesz i będziesz miał trochę czasu napisz o multiplekserach będę ci bardzo wdzięczny 😃

Link do komentarza
Share on other sites

OK, to teraz o multiplekserach. Temat był już na Forum poruszany przy okazji projektów innych robotów, ale ponieważ zupełnie nie pamiętam gdzie to było i o czym dokładnie, wrzucę kilka podstawowych informacji.

Multiplekser to inaczej "zwielokrotniacz" - to taki mój autorski pomysł 🙂 To dość dobrze opisuje jego funkcję, ponieważ ten element umożliwia wpuszczenie informacji z wielu wejść na jedną linię. Jego mechanicznym odpowiednikiem jest zwykły przełącznik. Jak łatwo się domyślić przełączniki bywają proste, np. takie mające trzy wyprowadzenia i dwa (lub trzy) stany stabilne:

http://www.tme.eu/pl/details/5fs1s102m2qe/przelaczniki-suwakowe/#

oraz skomplikowane - wtedy najczęściej obrotowe, gdzie jedna linia łączona jest z innymi w zależności od położenia gałki:

http://www.tme.eu/pl/details/ck1029/przelaczniki-obrotowe/lorlin/#

Tak, to są multipleksery mechaniczne. Łączą pewne specjalne wyprowadzenie z jednym z pozostałych dwóch, trzech, dwunastu czy ile tam potrzeba.

Zarówno proste wyłączniki on-off jak i przełączniki wielopozycyjne mają swoje odpowiedniki w scalakach, jednak odwzorowanie takie proste nie jest. Należy bowiem wyróżnić dwie podstawowe klasy multiplekserów scalonych: analogowe i cyfrowe.

Te pierwsze są zestawem kluczy analogowych prawie dokładnie kopiujących zachowanie przełączników mechanicznych. Mają jedno wyprowadzenie specjalne (nazwijmy je Z) oraz dwa lub więcej pinów (niech będzie Y) dołączanych do Z w zależności od stanu tzw. wejść adresowych. Tak więc multiplekser "2 na 1" będzie odpowiadał przełącznikowi dwustanowemu a jeden pin Z będzie na zmianę dołączany do pinów Y0 lub Y1 w zależności od stanu jednego wejścia adresowego S. Wejść adresowych musi być oczywiście tyle, by dało się "wskazać" każde wejście Y0..n. Dla multipleksera mającego 4 piny Y0..Y3 będą to zatem 2 wejścia S1..S2 a dla Y0..Y7 musimy mieć aż trzy adresy S1..S3. Czasem wejścia adresowe nazywane są A, B i C albo A0, A1 i A2, ale to niczego nie zmienia.

Ponieważ obudowy scalaków są zwykle większe niż kilka nóżek, w jednej mieści się często więcej multiplekserów. Najbardziej popularną i chyba najtańszą rodziną multiplekserów analogowych są układy tzw. serii 4000. Mamy tutaj pojedynczy "1 na 8":

http://www.tme.eu/pl/details/hef4051bp/uklady-logiczne-rodziny-cmos/nxp/hef4051bp652/#

podwójny "1 na 4":

http://www.tme.eu/pl/details/hef4052bp/uklady-logiczne-rodziny-cmos/nxp/#

oraz potrójny "1 na 2":

http://www.tme.eu/pl/details/hef4053bp.652/uklady-logiczne-rodziny-cmos/nxp/#

Warto otworzyć sobie dokumenty pdf związane z tymi scalakami i chociaż przyjrzeć się wyprowadzeniom i podstawowym parametrom.

Ten pierwszy układ ma jeden "wspólny" pin nazwany Z oraz 8 pinów Y0..Y7. Numer podłączonego do Z pinu Yn wybieramy liczbą binarną podaną na S1..S3. Do tego mamy jeszcze wejście /E które blokuje cały multiplekser odłączając (przy stanie 1) wszystkie Yn od Z niezależnie od adresu. Vdd i Vss to odpowiednio zasilanie i masa. Należy pamiętać, że scalaki - oprócz naprawdę wyjątkowych i dobrze opisanych sytuacji - nie lubią na swoich pinach napięć wyższych niż własne zasilanie i niższych niż poziom GND. A co zrobić, gdybyśmy chcieli użyć takiego multipleksera w prawdziwie analogowym układzie np. ze wzmacniaczami operacyjnymi zasilanymi z napięć dodatnich i ujemnych? Należy wtedy wykorzystać pin Vee i podłączyć go do ujemnego źródła zasilania. Na szczęście w prostych układach zwieramy Vee z Vss i to dajemy do GND systemu.

Analogicznie układ 4052 zawiera dwa multipleksery "1 na 4" adresowane tymi samymi wejściami. Ma też /E i trzy piny zasilania.

Troszkę inny pomysł zastosowano w przypadku 4053. Mamy tutaj trzy zupełnie niezależne multipleksery "1 na 2". Niezależne, bo każdy z nich ma swoje wejście adresowe S i może być niezależnie od pozostałych przełączany. Mają za to jedno wspólne wejście /E, wyłączające wszystko po podaniu stanu 1.

Seria 4000 ma swoje zalety i wady.

Do zalet można zaliczyć możliwość zasilania napięciem do 15V - to się naprawdę czasem przydaje, bo wiele precyzyjnych układów analogowych potrzebuje wysokich napięć zasilania. Wadą jest to, że przy zasilaniu > 5V sygnały cyfrowe podawane na wejścia adresowe nie mogą już pochodzić np. wprost z procesora, bo muszą mieć bardzo wysokie poziomy w stanie 1. Np. dla zasilania 15V trzeba zrobić jedynki na poziomie 11V 🙁 Kolejną wadą są dość wysokie rezystancje przejścia. Warto spojrzeć do odpowiednich tabelek lub wykresów, ale klucze analogowe to nie są zestyki przekaźników i wprowadzane rezystancje szeregowe załączonych kanałów są dość duże. Co więcej - zależą od poziomu zasilania. I tak dla 5V mamy typowo 350Ω a firma gwarantuje, że na pewno nie więcej jak 2.5kΩ. Dla 10V i 15V jest dużo mniej, ale i tak wciąż sporo.

Tak więc układy serii 4000 nie nadają się do włączania w tory gdzie płynie prąd. Sygnały napięciowe - np. podłączanie analogowych napięć do wysokomowego wejścia ADC - jak najbardziej, ale już np. dołączanie kondensatorów w przestrajanych filtrach RC lub sprzężenia zwrotne wzmacniaczy operacyjnych - tu już trzeba uważać.

Na szczęście wymyślono dużo więcej rodzin układów i dużo więcej typów kluczy analogowych i każdy znajdzie tu coś dla siebie.

Acha, warto jeszcze wspomnieć o popularnym scalaku 4066 także należącym do rodziny 4000:

http://www.tme.eu/pl/details/hef4066bt/uklady-logiczne-rodziny-cmos/nxp/hef4066bt652/#

Jak już pewnie się zorientowaliście są to 4 niezależne, zwykłe wyłączniki analogowe. Każdy ma dwa piny które ze sobą "zwiera" gdy na jego wejście sterujące podamy stan wysoki. Słowo "zwiera" jest w cudzysłowiu, bo wciąż trzeba pamiętać o stosunkowo wysokiej rezystancji przejścia.

Wspólną cechą multiplekserów i przełączników analogowych jest brak wyróżnionego kierunku sygnału. Możemy zatem podłączać kilka źródeł do jednego odbiornika (np. kilka czujników do jednego ADC) ale też można sygnał z jednego źródła wypuszczać na jedno wybrane wyjście. Pozostałe wyjścia są wtedy w stanie wysokiej impedancji i z punktu widzenia układu jest tak jakby nie były podłączone.

Jeżeli miałbyś multipleksować sygnały z wielu czujników na jedną linię, to przełącznik warto umieścić już na płytce TSOPów, co nadaje sens tej operacji. Powstają wtedy dwa pytania: jak dostarczyć do multipleksera adres (a przy kilkunastu wejściach będą to już 4 bity) no i czy istnieje analogowy przełącznik np. 16-wejściowy?

Pierwsza odpowiedź może być trywialna: dodać kilka drutów "cyfrowych" albo sprytniejsza: bity adresu przesłać po SPI. Skoro i tak będzie tam jakiś rejestr np. diodek LED, wstawić jeszcze jeden i 4 bity z niego wykorzystać do adresowania multipleksera. Na drugie pytanie odpowiadam: oczywiście, 4067. Może jest trochę mniej typowy niż te już wymienione wyżej, ale można go spokojnie kupić i działa.

Szukając w sieci informacji o rodzinie 4000 warto poprzedzać ich numerki literami CD lub HEF, np. CD4067 bo tak nazywają się typowe produkty dużych firm. Żeby nie było niejasności - rodzina 4000 to głównie układy cyfrowe: bramki logiczne, liczniki, rejestry itp. Układy analogowe znalazły się w niej trochę przypadkiem, tylko dzięki zaskakującym możliwościom (nowej na ówczesne czasy) technologii CMOS.

Dużo nowszymi odpowiednikami scalaków 4000 jest rodzina 74HC(T)4000. Tutaj mamy już specyfikację od 2 do 10V zasilania i konstrukcję zoptymalizowaną właśnie na niższe napięcia. Przykładowo 74HC4067 ma rezystancje przejścia już tylko 110Ω (max 180Ω) przy 4.5V:

http://www.tme.eu/pl/details/74hc4067d/uklady-logiczne-rodziny-ttl/nxp/#

Ech, dużo tego wychodzi a i tak kropla w morzu, może warto kiedyś jakiś artykuł napisać..?

  • Lubię! 1
Link do komentarza
Share on other sites

Wszystko jest w tabelce Truth Table na stronie 2/13:

http://electropark.pl/attachment.php?id_attachment=68

W 74HC595 na pinie 13 (/G) zrobiono wejście wprowadzające wszystkie wyjścia w stan wysokiej impedancji. Żeby na wyjściach pojawiły się stany rejestru, musisz podłączyć tu 0 czyli GND.

Z kolei pin 10 (/SCLR) trzyma cały rejestr przesuwający w stanie zerowania gdy zapodasz mu 0. Tak więc do normalnej pracy potrzebujesz 1, czyli Vcc.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.