Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Za mało wejść ADC w Atmega 32

inspire1 25 Sty 2014 15:09 1560 14
  • #1 25 Sty 2014 15:09
    inspire1
    Poziom 12  

    Witam,
    Buduję urządzenie opartę o Atmega32a i jest w niej 8 przetworników ADC, które mam już zajęte.. A potrzebuję dodatkowo 3-4 kolejne, z racji że zmiana uC odpada to nie wiem jak to rozwiązać, mam wolne większość pinów poza RX/TX(PD0-1) i PD4-5 i 6 dowolnymi pinami które służą jako wyjścia.
    Jakieś porady? Myślałem o jakimś dodatkowym przetworniku? Ale się nie znam :(

    0 14
  • Pomocny post
    #2 25 Sty 2014 15:18
    Skwantowany
    Poziom 19  

    Cokolwiek na 1-Wire albo I2C i po sprawie, potrzeba dowolnych 2 pinów uC.

    0
  • #4 25 Sty 2014 15:59
    inspire1
    Poziom 12  

    Potrzeba mi 4 piny które będą "brać" dane z fototranzystora. To co by było najlepsze?
    Robię prowizoryczny czujnik odległości.
    Niby nie muszę dokładnie wiedzieć dokładnie jaka jest odległość, ale też nie mogę zastosować komparatora bo dostanę wtedy albo 1 albo 0, a tego nie mogę porównać pomiędzy czujnikami...

    0
  • #5 25 Sty 2014 17:04
    perlon
    Poziom 19  

    Sporo przetworników z serii MCP3xxx ma TME można sobie dobrać jaki potrzebujesz albo ew. popularny 4-kanałowy PCF8591

    0
  • Pomocny post
    #7 25 Sty 2014 17:22
    BlueDraco
    Specjalista - Mikrokontrolery

    Najlepsza będzie zmiana uC, bo i tak musisz robić nową płytkę. Następne w kolejności rozwiązanie pod względem łatwości - to użycie multipleksera 4051.

    0
  • #8 25 Sty 2014 17:35
    inspire1
    Poziom 12  

    dondu napisał:
    Pokaż schemat, bo może okazać się, że masz inne możliwości.
    Schematu nie mam... Gdzieś mi się zapodział... Ale porta A jest zajęty i nie ma możliwości zmiany. Linię RX i TX są na module BTM, 2 kanały PWM zajęte (PD4-PD5) a reszta jest wolna, tzn. wyprowadzona na goldpinach więc mogę dowolnie przepinać.
    BlueDraco napisał:
    Najlepsza będzie zmiana uC, bo i tak musisz robić nową płytkę. Następne w kolejności rozwiązanie pod względem łatwości - to użycie multipleksera 4051.

    Zmiana uC odpada bo chcę dorobić "moduł" wpinany, tzn. tylko wtedy gdy będę go potrzebował, myślałem żeby dać jakiś mały uC i przesyłać dane do "głównego" uC ale... myślałem o użyciu multipleksera ale o ile dobrze myślę to wraz będę potrzebował 1 kanał ADC, racja? którego nie mam...

    0
  • #10 25 Sty 2014 18:26
    dondu
    Moderator Mikrokontrolery Projektowanie

    inspire1 napisał:
    ... myślałem o użyciu multipleksera ale o ile dobrze myślę to wraz będę potrzebował 1 kanał ADC, racja? którego nie mam...

    Skoro nie masz nawet jednego wolnego kanału ADC, to musisz wykorzystać zewnętrzny ADC i tyle w temacie.
    Pozostaje ustalenie jakim interfejsem go podłączysz, ale nie znamy schematu ... sam musisz ustalić, a później poszukać odpowiedni ADC w sklepach.

    0
  • #11 25 Sty 2014 18:56
    inspire1
    Poziom 12  

    Jeszcze wpadłem na pomysł żeby zamiast ir wykorzystać ultradźwięki. Ale mam pytanie, mianowicie chciałbym użyć HC-SR04 tzn. 3 sztuki.. Wyjściem tego czujnika jest sygnał częstotliwościowy.
    Przypominam że mam zamiar używać 2 kanałów PWM do sterowania mostkiem H, myślę o pinach OC1B i A (pd4-pd5).
    Jeżeli dobrze kombinuję to do tych czujników muszę wykorzysztać licznik, tzn. pin INT2, INT1 i INT0, zgadza się?
    Jeżeli tak to problem rozwiązany :P

    0
  • #12 26 Sty 2014 11:49
    deus.ex.machina
    Poziom 31  

    Po pierwsze ATMega ma 1 przetwornik ADC i 8 wejść - to ważna różnica bo w danej chwili konwersja odbywa się na jednym z wejść co wyklucza wszystkie zastosowania które wymagają tzw jednoczesnego próbkowania.

    Po drugie zawsze możesz rozbudować wejścia - dodać multiplekser analogowy, nie znam charakterystyki sygnałów które mierzysz wiec trudno mi powiedzieć czy to będzie ok, częściowo wady multipleksera możesz rozwiązać stosując układy Próbkujące Pamiętające (np LF398) lub coś kombinowanego - jeden kanał zrobiony na 4066 będący połączeniem układu PP i multipleksera (wzmacniacz-bufor z wyborem wyjścia).

    Po trzecie z tych mało szczegółowych danych wynika ze robisz robot autonomiczny - moim zdaniem zabierasz się od złej strony skoro próbujesz mierzyć dystans przy pomocy ADC z uC - niejednoczesność pomiaru, czas przetwarzania, dokładność - wszystko nie tak.

    Po czwarte oczywiście możesz dodać ADC stosując programowa konwersje np PWM lub Delta Sigma, stosowne przykłady dostępne są w sieci.

    0
  • #13 26 Sty 2014 11:56
    inspire1
    Poziom 12  

    Tak robię robota :P dokładniej, mam 8 szt. CNY70 na przetworniku atmegi i dodatkowo potrzebuję czujniki do tego żeby w np. tunelu/labiryncie jechał środkiem a nie odbijał się od ścian, dodatkowo jak będzie miał przed sobą przeszkodę to ją ominie/zatrzyma się a nie uderzy.
    Jakieś propozycje?

    Myślałem o tych HC-SR04, nie potrzebuję do nich ADC tylko liczniki, więc powinno być łatwiej.

    0
  • #14 26 Sty 2014 12:37
    tmf
    Moderator Mikrokontrolery Projektowanie

    Jeśli liczba ADC jest krytyczna, to dodatkowe łatwo dodać wykorzystując drugi procesor, łącząc oba np. przez SPI, I2C, USART, czy jak chcesz. Oczywiście zakładając, że masz ochotę naprawiać coś co lepiej by było zaprojektować od nowa poprawnie - tym bardziej, że nie masz póki co za wiele, więc za wiele nie tracisz.
    No i zamiast jednak archaicznej M32, lepiej wykorzystać coś nowszego. Skoro budujesz robota to naturalnym rozszerzeniem AVR są XMEGA - masz tam 2 ADC, każdy z 16-krotnym multiplekserem, co na dzień dobry załatwia ci liczbę kanałów ADC, w dodatku na ADC możesz zakłądać sprzętowe warunki typu zgłoś przerwanie (zdarzenie) jeśli wartość ADC jest większa (mniejsza) niż zadana, masz też wbudowany układ sterowania silnikami krokowymi/BLDC i czym tam chcesz, co też ułatwia zadanie. No i masz dwukrotnie większą moc obliczeniową, za niższą cenę...
    IMHO jeśli na początku projektu natrafiasz na tak poważne błędy, to pomyśl co będzie dalej? Może zamiast od razu budować prototyp warto jeszcze raz przemyśleć konstrukcję i zacząć od wypisania założeń, rozpisania potrzebnych czujników i chociaż zgrubnego nakreślenia algorytmu?

    0
  • #15 26 Sty 2014 13:20
    inspire1
    Poziom 12  

    Mam być to Linefollower, początkowo zakładałem 5szt. CNy70 do pilnowania lini, ale po rozmowie z kilkoma osobami stwierdziłem, jednak będzie 8, aby zyskać na płynności ruchu.
    Płytka i tak była przygotowana na 8 (w sumie to na 9) więc to żaden problem :P
    Dodatkowo chciałem pobawić się omijaniem przeszkód, stąd pomysł na diodę ir i fototranzystor, ale do tego potrzeba ADC. Dlatego też pomysł na ultradźwięk który rozwiąże problem braku tych wejść.
    A reszta to już standardowo L239D, sterowanany 2 kanałami PWM i dodatkowo BTM-222 do "podglądu" danych z czujników na PC.

    Algorytm pod CNY70 już mam wstępny, tzn. muszę skalibrować jeszcze, ale powinno być ok :P Sterowanie silnikami DC zależnie od danych z CNY70 też jest. Teraz tylko kwestia omijania itd.

    Jest to moja pierwsza tego typu konstrukcja, stąd takie pytania, ale prototyp chcę zbudować że tak powiem na byle jakiej płytce bo znając moje szczęście zniszczy się podczas testów (uderzenia itp.). Finalnie zaprojektuję płytkę i wytrawię.

    0