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

ATmega32 - Jak zwiększyć liczbę linii I/O za pomocą multiplekserów?

demoh 10 Wrz 2007 22:47 2441 14
REKLAMA
  • #1 4270882
    demoh
    Poziom 19  
    Posty: 448
    Pomógł: 5
    Ocena: 11
    Elementy odpowiedzialne za zwiekszanie lini wejscia/wyjscia to multipleksery? Dobrze wyczytalem i zrozumialem?

    Wiem ze sa troche zakrecone bo jest duzo typow.

    Chcial bym zwiekszyc ilosc wejsci I/O, 8 dodatkowych linii wejscia i 8 dodatkowych linii wyjscia czesci cyfrowej. W jakims temacie widzialem nawet nawe ukladu ale nie moge go od godziny znalec :/ nie pamietam nawet tytulu :(

    Chcial bym tez do jednego ADC podlaczyc dwa termistory gdzie bym je miedzy soba przelaczal.


    Bym byl wdzieczny za jakies nazwy lub rodziny tych elementow bo jestem zielony w tym :/ a niechcial bym zrobic jakiejs glupoty :(

    Z gorzy dziekuje za odpowiedzi!
  • REKLAMA
  • #2 4271006
    Warhard
    Poziom 12  
    Posty: 109
    Pomógł: 1
    Ocena: 1
    Witam kolego.

    Ciebie chyba interesuje układ PCF8574 - z szyny i2c na szyne 8bit wte i wewte :)

    Philips posiada całą gamę ciekawych układów opartych na szynie i2c
    Szukać ogólnie układów PCF

    pozdrawiam
  • #3 4271041
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    Polecam PCF8574 na I2C. Jest to 8bitowy port I/O lub na wejście dać np: 74HCT251 a na wyście 74HCT259, no oczywiście do tego potrzebny odpowiedni program i dodatkowo potrzebujesz 6pinów żeby obsłużyć te dwa układy.
    A tak nawiasem co masz podłączone do Atmegi32 że Ci pinów zabrakło??
  • #4 4271217
    owurac
    Poziom 15  
    Posty: 95
    Pomógł: 10
    Ocena: 2
    Zamiast pcf'ów na i2c mogę zaproponować ds2408 1-Wire 8-Channel Addressable Switch. Jest to 8 bitowy port i/o na magistralę 1-wire. Wykorzystujesz więc tylko jeden pin uC, a możesz tego podłączyć ile tylko chcesz.
  • REKLAMA
  • #5 4271504
    Ch.M.
    Poziom 27  
    Posty: 1009
    Pomógł: 62
    Ocena: 15
    Witaj
    Po pierwsze dlaczego termistory? zakres? cena?
    Swój problem możesz rozwiązać stosując ADC na szynie i2c- zabierasz 2 wyprowadzenia procka a zyskujesz duzo wiecej I/O.
    Termistor to na prawde niezbyt elegancki i trudny pomiar temperatury, a dodatkowo niedokładny.
    Właśnie rozpracowałem ta magistralę po sporych perypetiach i juz mi się zaczyna podobać :)

    Prosisz o nazwy:
    PCF8574P
    UKŁAD SCALONY PCF8574P PORT I/O I2C
    Ekspander magistrali I2C
    Cena brutto
    6.00 PLN (AVT)

    MCP9800
    2-Wire High-Accuracy Temperature Sensor
    • Temperature-to-Digital Converter
    • Accuracy with 12-bit Resolution:
    - ±0.5°C (typ.) at +25°C
    - ±1°C (max.) from -10°C to +85°C
    - ±2°C (max.) from -10°C to +125°C
    - ±3°C (max.) from -55°C to +125°C
    • User-selectable Resolution: 9 – 12 bit
    • Operating Voltage Range: 2.7V to 5.5V



    Pozdrawiam
  • REKLAMA
  • #6 4271641
    pgp
    Poziom 19  
    Posty: 412
    Pomógł: 6
    Ocena: 17
    Opisz dokładnie swój układ - co ma robić i jak masz wszystko popodpinane. Zawsze można dac jakies bufory z chip selectami.
  • #7 4271856
    Konto nie istnieje
    Konto nie istnieje  
  • #8 4272564
    demoh
    Poziom 19  
    Posty: 448
    Pomógł: 5
    Ocena: 11
    Chce miec 2 termometry a najlepiej trzy do pomiaru temperatury na radiatorach od mostka H i stabilizatorow napiecia od tego mostka i stabilizatorow dla czesci logicznej.

    Zabraknie mi poprostu pare pinow w tej ATmega32 a ona mi najlepiej pasuje :) bo nie ma az tyle nozek do lutowania jak wieksze modele a chce ja wykozystac w wersji smd.

    Pinami chce wlaczac czujnik podczerwieni i wylaczac. Potrzebne sa dwa piny na pare by moc wlaczac i pobierac stan logiczny. Mozna zrobic by zawsze byly wlaczone ale beda za duze zaklocenia od innych par czujnikow i w dodatku chce zminimalizowac pobor pradu.

    Czujnikow IR ma byc 16 par czyli 32 piny.

    Maja to byc czujniki odleglosci typu jest cos lub nie ma niczego oraz czujniki czarnej linii. Chce zeby pojazd nie mail rozroznialnego tylu i przodu :)

    Chyba juz wiecie o co mi chodzi :) Moj wymog to to by szybko dzialalo i potrzebowalo malo nozek :)


    Dziekuje za odpowiedzi :)
  • #9 4273098
    Konto nie istnieje
    Konto nie istnieje  
  • #10 4274086
    demoh
    Poziom 19  
    Posty: 448
    Pomógł: 5
    Ocena: 11
    Czytam PDF od PCF8574 i natrafilem na 2 rzeczy:

    DC output current 25mA << max obciazenie na nozke?

    Supply current 100mA << max obciazenie ukladu?

    Bo 100mA to jakos duzo jak na zwykly pobor :/ ale jak to max to jest ok.
    I nie potrafie rozszyfrowac skrotu DC :(
  • #11 4274122
    Jdsoul
    Poziom 23  
    Posty: 501
    Pomógł: 47
    Ocena: 10
    Jak zrozumiałem dopuszczasz tryb multipleksowy analizy czujników, czyli omiatanie po kolei :) wiec nic nie stoi na przeszkodzie, żeby wykorzystac dwa multipleksery 4051 analiza 16 czujników zajmie ci w sumie 8 linii procesora. BCD, CS1 ,CS2, OUT1 i OUT2

    Zaimplementuj licznik BCD i możesz przemiatać najpierw pierwszy potem drugi multiplekser, multipleksery wybierasz CS-ami , a analizujesz wyjścia zgodnie ze stanem licznika. Dość proste w działaniu i oszczędza energię baterii, prawie radar podczerwieniowy i mało angażuje procesor, no chyba że będzie działał w sposób ciągły.

    Co do pomiaru temperatury to Atmega ma kilka przetworników AC, więc zamiast termistora zastosuj złącze kiepskiego tranzystora p-n w kierunku zaporowym lub jakiś termometr temperatura-napięcie z typoszeregu LM, znów duża oszczędność energii w baterii.

    Podsumowując masz procesor Atmege32 , masz do "przylutowania dwa scalaki CMOS 4051 i masz "klasyczny" termometr półprzewodnikowy.

    Jak mniemam robisz coś w rodzaju robota więc każdy WAT energi w baterii akumulatorów, jest na wagę złota i dobrze byłoby stosować elementy energooszczedne i możliwie bezawaryjne, dodatkowo możesz "usypiać" procesorek.

    Dodano po 6 [minuty]:

    Do pawelwiniarski0

    Co do dążenia do minimalizacji. To rzeczywiście upakowuje się coraz więcej ukłądów w jednym chipie , ale to nie zawsze sprzyja lepszej jakości. Patrz jak skomplikowane jest zasilanie części analogowej przetwornika analogowo-cyfrowego wbudowanego w uprocesor . Właściwie uzyskanie pełnej rozdzielczości jest możliwe tylko przy potraktowaniu tej części jako odrębnego układu dodaniu filtrów itd. itd.

    Czy nie byłoby jednak łatwiej poprostu odsunąć część analogową od części cyfrowej :) :) :) nawet ocipinkę dalej niż w jednym chipie :) :) :)
  • #12 4275018
    PiotrPitucha
    Poziom 34  
    Posty: 2658
    Pomógł: 201
    Ocena: 423
    Witam
    Trochę przesadzasz z tymi liniami, do 16 czujek potrzebujesz 4 lini do sterowania i 4 lini do odbioru sygnału, np. 74154 do sterowania, w drugą stronę musisz poszukać bo mi nic do głowy nie wpada :) , a co do przepinania termistorów to jestem sceptyczny, nie ma kluczy o zerowej rezystancji, najbliższe ideały byłyby kontaktrony, ale to się kłóci z Twoim założenim zmniejszania poboru prądu, jeśli już miałbyś przepinać to zrób kilka gałęzi termistor + rezystor lub źródło prądowe i przepinaj mierzone napięcie, ale jak uwolnisz się z pomysłu bezpośredniego strowania czujek IR to i tak zostaną Ci wolne wejścia ADC
    Piotr
  • REKLAMA
  • #13 4276136
    demoh
    Poziom 19  
    Posty: 448
    Pomógł: 5
    Ocena: 11
    W 74HC4051 moze byc tylko zalczony jeden pin naraz czy jak to jest zrobione?

    I napotkalem maly problem :/ Bo jak wejscie ENABLE jest zalaczone na stan niski to wejscie 0 przy We1 = 0, We2 = 0, We3 = 0.

    Ale chyba to juz nie bedzie wikszym problem, bardziej mi chodzi jak sie steruje ? Mozna niezaleznie wlaczac i wylaczac bo za Chiny Ludowe nie czaje :/

    Atmega jak startuje to ma wszystkie piny ustawione jako wejscia bez podciagania do Vcc. Chcial bym by muliplekser przy takich stanach na pinach mikroukladu mial wszystkie wyprowadzenia w stanie niskim by mi nie wysadzilo stabilizatora. Dlatego chce wlaczac pokoleji czujniki :)

    Dziekuje za odpowiedzi :)
  • #14 4276297
    Jdsoul
    Poziom 23  
    Posty: 501
    Pomógł: 47
    Ocena: 10
    Ta zabawka jest niczym innym jak przeźroczystym multiplekserem[przełącznikem] :) tzn. przełącza wejście/wyjście Y na jedno z 8 Wyjść / Wejść, pozostałe są nie związane z wyjściem do czasu przełączenia - izolacja. co do ich stanu to zależy od INH (bodajrze to ty masz schemat)

    Sterowanie wykonujesz kodami w systemie BCD na wejścia ABCD układu 4051. TZn.
    jeśli podasz 001 na CBA to przyłączasz wejście nr 1 z wyjściem Y i taki stan jaki podasz na wejscie taki masz na wyjściu 1, oczywiście dwukierunkowo. co do pozostałych wyjść to masz zera lub jedynki twój wybór pullupy.

    Potem bierzesz Atmegę pół portu np. A i liczysz 0,1,2,3,4,5,6,7 i znów od 0 a z tego liczenia wychodzą liczby 001, 010, 011, 100, 101,110,111, co się objawia stanami na połówce portu przyłączonego do wejść CBA 4051.

    Jak doliczysz do 7 to kasujesz i znów liczysz do 7. W tym czasie ustwiasz stany na nadajnikach podczerwieni.

    W drugą stronę wykorzystujesz 4051 jako 8 wejść przełączalnych na 1 wyjście i możesz korzystać z tej samej magistrali CBA, ale zabierasz jeszcze pin dla podłączenia CS lub EA (nie pamiętam :) )

    i tak na raz masz włączony jeden nadajnik i jeden odbiornik :) jak odbiornik odbierze wystarczajacą ilość podczerwieni od przeszkody to poda stan wysoki jak za małą to niski masz dwuwymiarową promieniową analizę otoczenia :) [kąt odbioru zależy od zastosowanego fototranzystora i okładu optyki]

    Pamiętaj na raz działa tylko jedna ta sama para więc nie powinno być zakłóceń od innych nadajników, a omiatanie warto zrobić możliwie szybkie, tyle tylko czasu na jeden tor, ile potrzebujesz na pewne zadziałanie czujnika podczerwieni :) oczywiście podaje rozważania teoretyczne, warto to zbadać doświadczalnie.

    Co ciekawe tor przełączający przepuści również sygnał modulowany więc możesz się pokusić o pomiar dopplerowski :)

    Fajne jest to że masz jedno wejście do próbk
    owania - ta sama procedura i osiem wejść do zaanalizowania.

    Jak rozwiąrzesz czujnik to twoja sprawa :)

    Dajesz na obsługę każdego czujnika odpowiednią ramkę czasową, a jak stwierdzisz że masz jeszcze miejsce to możesz zostawić wolne ramki na zabawę atmegi samą sobą :)

    Dodano po 2 [minuty]:

    Jak 4051 dostanie 7 czyli 111 to poprostu włączy ci wejście nr 8 i masz włączoną jedną parę nadajnik i odbiornik na początku, więc stabilizator będzie bezpieczny :).
  • #15 4276969
    demoh
    Poziom 19  
    Posty: 448
    Pomógł: 5
    Ocena: 11
    Dzieki za pomoc :)

    Troche te zakrecona jest obsluga multipleksera :P Ale z czasem sie przyzwyczaje bo tak chlodnym okiem to trudne nie jest lecz takie niestandardowe jak na moj rozum lecz czesto wykorzystywane :)

    Chyba sie pokusze o zmiane ATmega32 na ATmega128 i bede miec 32 porty :)

    Chce czujnik rozwiazac tak:
    -Wlaczam nadawcza IR kiedy chce, jedna noga dla niej
    -Fototranzystor na 940nm jest caly czas wlaczony i wpiety do pinu, druga noga

    A pomiar chce rozwiazac tak:
    -Przy wylaczonej diodzie nadawczej sprawdzam stan na fototranzystorze czy nie ma jakis zaklocen ktore wywoluja stan wysoki
    -Jesli nie ma zaklocen to wlaczamy diode nadawcza IR

    0 - nic nie ma
    1 - stan niekreslony, zaklocenia, uznajemy ze cos tam moze byc
    2 - stan wysoki na wejsciu z czujnika, cos jest przed nami


    Ile taki fototranzystor zjada pradu? Pewnie mniej niz 1mA ? Ale to musze chyba sprawdzic dla konkretnego modelu. Fototranzystor chce podlaczyc przez wzmacniacz operacyjny ale ile on bedzie pobierac pradu?

    Wlasnie ide szukac tych 2 informacji ale jak by ktos wiedzial juz teraz to prosze o mala pomoc :)

Podsumowanie tematu

✨ Dyskusja dotyczy zwiększenia liczby linii wejścia/wyjścia (I/O) w mikrokontrolerze ATmega32 za pomocą multiplekserów i ekspanderów portów. Zalecane są układy PCF8574 (I2C, 8-bitowy port I/O) oraz alternatywnie DS2408 (1-Wire, 8-kanałowy przełącznik adresowalny), które pozwalają na rozszerzenie liczby linii przy minimalnym wykorzystaniu pinów mikrokontrolera. Wskazano także na możliwość zastosowania multiplekserów analogowych 74HC4051 do przełączania sygnałów z czujników, co umożliwia pomiar wielu termistorów na jednym wejściu ADC poprzez sekwencyjne przełączanie. Omówiono sterowanie multiplekserami za pomocą kodów BCD i sygnałów CS, a także kwestie prądów obciążenia i stanów wejść/wyjść układów. Poruszono temat pomiaru temperatury, sugerując zamiast termistorów użycie półprzewodnikowych czujników temperatury lub przetworników ADC na magistrali I2C, co zwiększa dokładność i ułatwia pomiary. W dyskusji pojawiła się sugestia rozważenia użycia mikrokontrolerów z większą liczbą pinów, takich jak ATmega128, ATmega1280 lub ATmega2560, aby uniknąć komplikacji związanych z rozbudową I/O. Autor planuje sterować 16 parami czujników podczerwieni (IR) do detekcji przeszkód i linii, wykorzystując multipleksery do oszczędności pinów i energii. Omówiono również sposób działania multipleksera 74HC4051, jego sterowanie i izolację sygnałów. Dyskusja zawiera praktyczne porady dotyczące implementacji, ograniczeń prądowych oraz sposobów minimalizacji zakłóceń i poboru mocy w systemie.
Wygenerowane przez model językowy.
REKLAMA