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

Jak dodać 30 wejść do mikrokontrolera? ATmega, multipleksery, expandery?

adamusx 08 Paź 2007 08:55 2631 13
REKLAMA
  • #1 4358513
    adamusx
    Poziom 27  
    Posty: 977
    Pomógł: 94
    Ocena: 28
    Witam.

    W jaki najprostrzy sposob zrealizowac 30 dodatkowych wejsc dla
    mikrokontrolera?. Myslalem nad jakimis multiplekserami, expanderami itp.. ale chyba
    najprosciej bedzie wykorzystac druga ATmege np 16, ktora posiada 4 porty, co dalo by mi 32 wejscia, z czego 2 wykorzystac do przesylanida danych przez RSa do
    drugiego mikrokontolera, badz przez SPI ( co prawda wowczas potrzeba 3linii, ale tez moglo by tak byc).

    Czy moze jest jeszcze jakis prostrzy i tanszy spsob??

    Drugie pytanko, jakie znacie przetworniki ADC 12 bitowe, ktory posiadaly by
    10 wejsc lub wiecej ??
  • REKLAMA
  • #2 4358581
    Jdsoul
    Poziom 23  
    Posty: 501
    Pomógł: 47
    Ocena: 10
    Wygląda to na kolejny układ "automatyki"

    1. 30 wejść do czego :) ?

    2. Mogą być multipleksowane , czy nie?

    3. Mają pracować z TTL, czy od razu z wyższymi napięciami niż VCC.

    4. Jak szybko potrzebujesz odczytywać te wejścia ;)

    5. Odczyt po kolei , czy asynchronicznie. ?

    6. Sterowanie wykryciem zmiany poziomu (przerwanie), czy tylko przemiatanie (pullowanie) okresowe wejść ?

    7. Co będzie procesorkiem podstawowym i co ma być efektem akwizycji danych.

    Podbnie z przetwornikiem AC + dodatkowe pytania.

    1. Jak zamierzasz zapewnić dopasowanie impedancyjne do mierzonej wielkości analogowej (wzmacniacz operacyjny, stała rezystancja etc).

    2. Jak zamierzasz uzyskać "czystość" sygnałów analogowych, tzn. oddzielenie od "cyfrowej" części toru i zasilania układów cyfrowych :)

    Mniej więcej tyle pytań wymaga odpowiedzi, każdy układ rozszerzeń wejść ma swoje ograniczenia, im większe wymagania tym bliżej oddzielnego procesora lub nawet kilku niezależnych procesorów i sieci :)

    Tak czy inaczej maszyna główna powinna już sporo umieć i mieć sporo zasobów.
  • REKLAMA
  • Pomocny post
    #3 4359279
    BoskiDialer
    Poziom 34  
    Posty: 1530
    Pomógł: 353
    Ocena: 42
    jeśli to mają być tylko wejścia ("30 dodatkowych wejsc") to poszukaj o rejestrach przesuwanych z ładowaniem... to chyba były 74x165.. 3 linie procka głównego i możesz rozszerzać sobie wejść do woli - jeden układ = 8 dodatkowych wejść, całość strobujesz jednym sygnałem a potem tylko zegarem przesuwasz wszysko do procesora - nawet można by wykorzystać SPI: sck+miso to transmisji samych danych, mosi do strobowania danych - wtedy zatrzaśnięcie danych polegało by na wysłaniu jednego bajtu z pierwszym (ostatnim, nie wiem jak by to wyglądało czasowo) bitem o przeciwnym stanie..
  • #4 4360551
    sq6ade
    Poziom 40  
    Posty: 6855
    Pomógł: 482
    Ocena: 286
    Proponuje:
    PCF8574 - 8 lini po I2C plus przerwanie przy zmianie stanu wejść
    CMOS 4094 jako 8 linii wy
    CMOS 4021 jako 8 linii we
  • REKLAMA
  • Pomocny post
    #5 4360822
    majekw
    Poziom 13  
    Posty: 40
    Pomógł: 5
    adamusx napisał:
    W jaki najprostrzy sposob zrealizowac 30 dodatkowych wejsc dla
    mikrokontrolera?.
    Drugie pytanko, jakie znacie przetworniki ADC 12 bitowe, ktory posiadaly by
    10 wejsc lub wiecej ??

    To mi brzmi jak ARM7 (ADuC702x) z Analoga :D
    12-16x ADC 12 bit, do 40 GPIO itp.
    Może po prostu inny procek do projektu?
  • #6 4361142
    adamusx
    Poziom 27  
    Posty: 977
    Pomógł: 94
    Ocena: 28
    30 wejsć cyfrowych, a do czego to ja już wiem :). Mogą być multipleksowane,moga byc odczytywane po kolei, odczyt wejsc około 100/s, czyli w cyklu 1/100 s wszystkie 30 wejsc ma byc odczytanych.Standard oczywiscie TTL. Pozostale pytania raczej nie są istotne.

    PCF8574 - tez myslalem o tym ekspanderze, ale po 1 jest dosc drogi, po 2 musialbym uzyc 4 takie układy.
    Rejestry przesuwne 74x165.. - tansze, ale takze trzeba uzyc 4 sztuki...

    Reasumując nadal chyba korzystniej wychodzi zastosować dodatkową ATmege16, jedna obudowa, cena podobna..jedyny minus to taki ze trzeba ja dodatkowo programowac. A może są jakies rejestry przesuwne na chociazby 16 wejsc?

    Co do przetworników A/C
    Cytat:

    1. Jak zamierzasz zapewnić dopasowanie impedancyjne do mierzonej wielkości analogowej (wzmacniacz operacyjny, stała rezystancja etc).

    2. Jak zamierzasz uzyskać "czystość" sygnałów analogowych, tzn. oddzielenie od "cyfrowej" części toru i zasilania układów cyfrowych Smile

    1) , 2) to już moja w tym głowa :) , ja się pytam tylko o jakiś sprawdzony przetworniki.
    ARM analoga jesty kuszącą propozycją, ale baza będzie zbudowana na sprawdzonym AVRku, wiec wolałbym sam przetwornik z wyjsciem I2C bądz SPI.

    W każdym bądz razie dzięki za sugestie :)
  • #7 4361218
    majekw
    Poziom 13  
    Posty: 40
    Pomógł: 5
    Co do wejść cyfrowych, to możesz też wziąć jakiegoś małego cpld i z niego zrobić rejestr przesuwny.
  • REKLAMA
  • Pomocny post
    #10 4361557
    Jdsoul
    Poziom 23  
    Posty: 501
    Pomógł: 47
    Ocena: 10
    Najtaniej [0,5 do 1 PLN] 8 osiem wejść analogowo-cyfrowych :) to oczywiście nieśmiertelny multiplekser CMOS cd 4051 co przy szybkości odczytu jaką chcesz uzyskać będzie cool :) Magistrala BCD i CS dla każdego z multiplekserów :)

    Jeśli chcesz częstsze przemiatanie to daj 4052 dwie sekcje po 4 wejścia :)

    Na wyjściu multipleksera możesz dać albo wejście TTL albo przetwornik AC - 0-5 V.

    Chyba taniej się już nieda - chociaż jeśli cię gabaryty kostki nie przerażają i może być TTL to jest kilka koderów 1 z n na BCD i temu podobnych :) np. 74151, 74154 :)

    Oczywiście będzie to odczyt dynamiczny bez zatrzasku :(

    Dodano po 7 [minuty]:

    Po za tym rejestr przesuwny ma tą wadę że "trzeba" go "przesunąć", a multiplexer, wymaga przemiecieńcia :)

    W pierwszym przypadku musisz zatrzymać przetważanie całego słowa do czasu obrotu rejestru - no bo jakoś musisz aktualizować słowo stanu wejść , a w drugim masz aktualizację stanów "dynamiczną" - jak w radarze :) :) :) z ciągłym pamiętaniem ostatniego stanu przed odczytem bit po bicie :) - prawie jak na oscyloskopie , stąd możliwość aproksymacji wyniku :) chociaż :( procedura obsługi zajmie więcej czasu , a jeszcze jedna zaleta mutileksera :) ten sam układ do wejść TTL i analog więc można zworkami sekcje przypisać itd itd :)

    No ale to żaden procek :(
  • #11 4362960
    adamusx
    Poziom 27  
    Posty: 977
    Pomógł: 94
    Ocena: 28
    ATmega2560 - układzik fajny, ale cena mimo wszystko ponad 4 razy wieksza niz Atmegi 16.

    Sposob z multiplekserem 4051 ok. z tym, że musiał bym dać 4 takie układy. Nie chodzi juz tyle o cene co o czas montazu itp.

    Cytat:

    Nad tym się zastanowie, tu już bym potrzebował tylko dwóch takich scalaków.

    Wszystkim dzieki za pomoc!
  • #12 4363138
    Batmanmen
    Poziom 15  
    Posty: 205
    Pomógł: 9
    Ocena: 4
    jak ktoś wyżej wspomiał porponuje CPLD. Np. XC9536, 34 I/O 10ns, koszt 9.99
  • #13 4363258
    adamusx
    Poziom 27  
    Posty: 977
    Pomógł: 94
    Ocena: 28
    Na predkosci mi nie zalezy, a za pare zl mam ATmege 16 ktora ma 32 piny, wiec rozwiazaniez CPLD odpada .
  • #14 4365876
    Jdsoul
    Poziom 23  
    Posty: 501
    Pomógł: 47
    Ocena: 10
    WIesz jeśli chcesz używać oddzielnego procesorka do akwizycji to właściwie twoje pytanie nie ma racji bytu :)

    Tak się składa że Atmegi są coraz tańsze :)

    Metod zwiększenia pinów jest zawsze kilka, zaczynając od wszelkich przetworników magistrali równoległej na szeregową (rejestry równoległe przesuwające, czy rozszeracze magistrali), poprzez multipleksacje linii, na kodowaniu 1z n do BCD nawet kończąc .

    Każda metoda odczytu takiej ilości wejść jest umowna i daje różne rezulataty. Mógłbyś np. zastosować jeszcze układ magistralny :)

    4 szt 74LS245 przypięte do jednego portu :)

    Jak dodać 30 wejść do mikrokontrolera? ATmega, multipleksery, expandery?

    i sterowane kolejnymi strobami wejść CS

    lub jeśli potrzebujesz Latcha- 74LS573 :)

    Metoda fajowa bo masz na 8-bitowym porcie odczyt całych słów :) a po każdym wyłączeniu układu 245 wejścia są w stanie wysokiej impedancji :)

    Naprawde dużo zależy od wyobraźni i nie zawsze oszczędność na druku i ścieżkach wychodzi na dobre :)

    Dodano po 1 [minuty]:

    i tylko 12 pinów z innego procka :)

    Dodano po 2 [minuty]:

    Fajne jest to że możesz dać płytkę główną z portem i sobie dalej rozbudowywać . No ale to wszystko już było - w końcu tak działała płyta główna z magistralą ISA :) :) :)

    Dodano po 1 [minuty]:

    CS tu G.

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy rozszerzenia liczby wejść cyfrowych do mikrokontrolera, w szczególności do 30 wejść TTL, z możliwością odczytu około 100 razy na sekundę. Rozważane rozwiązania obejmują użycie multiplekserów CMOS (np. CD4051, CD4052), rejestrów przesuwnych (74x165), ekspanderów I2C (PCF8574) oraz dodatkowego mikrokontrolera ATmega16 z komunikacją RS lub SPI. Zwrócono uwagę na zalety i wady poszczególnych metod, takie jak koszt, złożoność montażu, szybkość odczytu i konieczność programowania dodatkowego układu. Propozycje obejmują także zastosowanie CPLD (np. XC9536) jako rejestru przesuwnego, jednak ze względu na prostotę i koszt autor preferuje dodatkową ATmegę16. W kwestii przetworników ADC 12-bitowych z co najmniej 10 wejściami wskazano na mikrokontrolery ARM7 z wbudowanymi przetwornikami oraz preferencję dla układów z interfejsem I2C lub SPI, kompatybilnych z bazą AVR. Alternatywnie sugerowano multipleksację wejść analogowych za pomocą multiplekserów CD4051 lub CD4052. Wskazano również na możliwość użycia układów buforujących (74LS245, 74LS573) do rozszerzenia magistrali równoległej. Ostatecznie autor skłania się ku zastosowaniu dodatkowego mikrokontrolera ATmega16 ze względu na prostotę i koszt, pomimo konieczności programowania.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA