Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Multimetr FlukeMultimetr Fluke
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

ADC w Atmega8 zczytuje dziwne wartości z czujnika Sharp GP

15 Oct 2006 21:04 3664 22
  • Level 19  
    Witam,
    Mam czujnik odległości firmy Sharp. Ma on analogowe wyjście przyjmujące napięcie od 0V do 2.5V.
    Wyjście czujnika podłączam bezpośrednio do przetwornika ADC mikrokontrolera Atmega8 firmy Atmel.
    AVCC i AGND (zasilanie przetwornika) uC są podłaczone do zasilania poprzez filtr złożony z kondensatora 100nF i dławika 100uH. Między VCC i GND uC włączony jest kondensator 100nF.

    Problem jest taki, że czasem ADC bezpodstawnie odczytuje spore napięcie na wyjściu czujnika pomimo, że Sharp nie "widzi" żadnego przedmiotu na swojej drodze.

    Przeczytałem, że należy włączyć kondensator 4,7uF między wyjście Sharpa a masę - zrobiłem tak, może i trochę to poprawiło sytuację ale nie wyeliminowało problemu.

    Zastanawiam się czy to Sharp jest "winny" i czasem bezpodstawnie daje wysokie napięcie na wyjście czy to może coś źle z moją płytką drukowaną i ADC w uC nie pracuje prawidłwo.

    Głowię się nad tą kwestią dlatego byłbym wdzięczny za Wasze rady.

    Pozdrawiam
    Takaba
  • Multimetr FlukeMultimetr Fluke
  • Helpful post
    VIP Meritorious for electroda.pl
    jak masz możliwość, podłącz go do oscyloskopu i jeśli problem pozostanie, spróbuj odnaleźć jego źródło (refleksy, brud, wstrząsy - jednym słowem wszystko co może spowodować zakłócenia) na drugim kanale oscyloskopu badaj napięcie zasilania, może znajdziesz winowajcę.
  • Multimetr FlukeMultimetr Fluke
  • Helpful post
    Level 39  
    spróbuj bardzo prostą rzecz , skoro czujnik daje napięcie w przedziale 0-2,5V to podaj je na stałe do wejścia przetwornika tzn najpierw 0 V potem prosty dzielnik i napięcie 2,5V , niech układ trochę popracuje i zobaczysz efekty w ten sposób będziesz pewny co do uC i jego przetwornika A/C
    możesz to sprawdzić dla kilku napięć powyżej 0V stosując potencjometr
    jeszcze jedno nie podałeś konkretnego modelu czujnika jeżeli ma tylko dwa stany 0V i 2,5V to nie ma sensu stosować przetwornika A/C do tego wystarczy wykrycie stanu na danym pinie lub wykorzystanie przerwania , inna sprawa jeżeli ma on wyjście analogowe i chcesz mierzyć dokładnie odległość od przedmiotu
  • Level 19  
    McRancor: Oscyloskopu niestety nie mam... Podłaczałem wyjście Sharpa do multimetru i nie widziałem niczego podejrzanego - więc albo te napięcie na jego wyjściu pojawia się na którki czas (że multimetr tego nie widzi) albo dopiero w pracującym układzie (zasilanie bateryjne więc może się wachać w zależności od obciązenia).
    Chyba robiłes jakieś roboty z czujnikami Sharpa, coś "cudowałeś" by to dobrze działało, czy po prostu uC zasilany przez L7805 a Sharp bezpośrednio do ADC?

    bogdan_p: mogę przeprowadzić taki test. Dzięki.

    Macie jeszcze jakieś sugestie, czy coś można poprawić w płytce, jakieś kondsatory filtrujące, wejście ADC lekko podciągnąć do masy?
  • Level 39  
    na temat zasilania było dużo na forum , podstawowa zasada to oddzielne zasilania dla części analogowo - cyfrowej , osobne dla stopnia mocy sterującej silnikami
    oczywiście to było by idealne , najczęściej stosuje się większe napięcie i stabilizator LM7805 , możesz spróbować dodać jak najbliżej uC zestaw 100nF + 47 - 100µF na zasilaniu , podobnie w pobliżu LM 7805 taki sam zestaw zobaczysz czy pomogło
    napisz co to za czujnik
  • Helpful post
    VIP Meritorious for electroda.pl
    Sam nie stosowałem takiego czujnika ale mam w rękach działający sonar oparty o taki czujnik i działa niezawodnie, tylko jest bardzo wolny. Może dokonujesz pomiaru w nieodpowiednich momentach?

    http://www.konar.iiar.pwr.wroc.pl/articles.php?id=5
    Dokumentacja "po naszemu"
  • Level 19  
    McRancor: Dokonuje pomiaru z taką częstotliwością ile wyciskam z ADC. A to ja mam jeszcze jakoś wybierać momenty do pomiaru? Jak to robić?
  • Level 29  
    Dokonuj pomiaru z przerwania.
  • Level 19  
    daniel93: MacRancor sugerował, że trzeba odczytywać wartość ze Sharpa we właściwych momentach, raczej nie miał na myśli wywoływania odczytu z ADC podczas przerwania...
  • VIP Meritorious for electroda.pl
    Na 3 stronie przytoczonej dokumentacji jest przebieg ilustrujący sposób pomiaru, nie ma sensu robić tego z częstotliwością tak dużą, bo czujnik działa dość wolno, a mierząc tak gęsto możesz trafiać na stany nieokreślone.
  • Level 19  
    Zdawałem sobie sprawę, że czujnik wyrabia tylko 25 pomiarów/s ale wydawałomi się, że prócz okresu czasu przed pierwszym pomiarem jego wyjście nie ma stanów nieokreślonych. No nic, mogę robić odstępy po 40ms między pomiarami.
  • Level 18  
    takaba wrote:
    Zdawałem sobie sprawę, że czujnik wyrabia tylko 25 pomiarów/s ale wydawałomi się, że prócz okresu czasu przed pierwszym pomiarem jego wyjście nie ma stanów nieokreślonych. No nic, mogę robić odstępy po 40ms między pomiarami.



    Też mi się wydaje że czujnik/miernik nie ma stanów nieokreślonych, w nocie katalogowej nic o tym nie piszą. Więc jak to jest? Czy trzeba uśredniać wynik pomiaru czujnika?
  • Level 19  
    Aktualnie jako napięcie odniesienia mam ustawione AVV a pin AREF wisi w powietrzu. Może trzeba go kondensatorem do masy? Albo leprzym napięciem będzie wewnętrzne 2,56V.

    Swoją drogą silniki elektryczne sterowane przez uC mogą nieźle "siać" na zasilanie. Wprawdzie są zasilane z wyższego napięcia a uC jest zasilane przez stabilizator.
    Pozatym nie wiem jak powinienm odzielić masę cyfrową od analogowej. Sharpy zasilać tą samą ścierzką na płytce co AVCC i AGND?
  • Level 10  
    gdzies sie kiedys doczytalem, ze w atmegach 8 wyprowadzenie AVcc przez pomylke jest zwarte przez mala rezystancje do Vcc. jesli to prawda (nie sprawdzalem) to uniemozliwia to filtrowanie na AVcc. moze wiec sprobuj z inna atmega? ja lubie 16-tki. nie mialem z nimi wiekszych problemow
  • Helpful post
    Level 26  
    takaba wrote:
    Aktualnie jako napięcie odniesienia mam ustawione AVV a pin AREF wisi w powietrzu.

    Żle - pin nie może "wisieć". Podłącz kondensator 100nF między pin a masę.

    Co do zasilania czujnika - zastosuj filtr złożony z indukcyjności i kondensatora. Tak samo można filtrować AVcc...


    Cessar wrote:
    gdzies sie kiedys doczytalem, ze w atmegach 8 wyprowadzenie AVcc przez pomylke jest zwarte przez mala rezystancje do Vcc.

    To należałoby podać źródło - bo to bzdura.
    Jedyne, co jest to dioda...
  • Level 19  
    AREF podłączę kondensaterem do masy.
    Do zasilania czujników zrobić oddzielny filtr czy zasilać je z tego samego co AVcc?

    I jak poprowadzić te masy?
  • Helpful post
    VIP Meritorious for electroda.pl
    Przeprowadziłem właśnie odpowiednie pomiary i mam sprawdzone dane na temat odczytów z czujnika, opracuje raport i wrzuce dane do przytoczonego wyżej dokumentu.

    Na szybko mogę powiedzieć tyle że błąd jest w Twoim układzie pomiarowym, wyjście sharpa stabilizuje się bardzo szybko i nie zaobserwowałem na nim stanów które opisywałeś i których istnienie podejżewałem wyżej. czujnik przechodzi z wartości do wartości bez stanów nieokreślonych. Czujniki są wysokiej jakości i dają przyjemny dla pomiarów, jednolity sygnał.

    Szkoda tylko że pomiar jest mocno nieliniowy i odległość niejednoznaczna, wymaga dodatkowych sensorów w przypadku kiedy chcemy wykorzystać zakres od kilku cm.

    Przy tej technologii każdy kto marzył o pomiarze odległości na TSOPach, fotorezystorach i diodach nadawczych wydaje się niepoważny ;)
  • Level 10  
    max_gg wrote:
    To należałoby podać źródło - bo to bzdura.
    Jedyne, co jest to dioda...


    Zrodlo: Baranski, Mikrokontrolery ATMega w praktyce
    nawet znalezlem, gdzie sie z tym spotkalem. ale spoko. nie sprawdzalem, wiec sie nie upieram
    pzdr:-)
  • Level 19  
    Ok, podłączyłem uC do PC przez RS232 i stąd wnioski są takie - problem występuje gdy elektornika steruje silnikami. Stąd wniosek, że przyczyną problemu jest wachanie napięcia zasilania. Więc rozumiem, że muszę walnąc na płytkę jak najwięcej kondensatorów i filtrów LC.
    Jeszcze jakieś sugestie, bo chcę zaprojektować nową płytkę.
  • Level 18  
    znalazlem ciekawą stronkę gp2d12

    http://www.gorobotics.net/index.php?option=com_content&task=view&id=54&Itemid=46

    Mam zamiar mierzyć dokladnie napięcia na wyjściu czujnika za pomocą zewnętrznego przetwornika i mam pewne wątpliwości:

    Czy w celu eliminacji zaklóceń, szumów wystraczy kondensator 4.7µF między wyjście a GND?

    Czy warto zastosować filtr antyaliasingowy dolnoprzepustowy,
    zrobić więcej pomiarów w szasie 40ms odrzucać skrajne i uśrednić wynik?
  • Level 35  
    Takaba:
    Moze wrzuc swoj obecny schemat to na ten temat pogadamy. Ogolnie to na forum troche juz o tym bylo.
    Poza tym pytanie jakie uzywasz silniki, jakie masz zasilanie, w ktorym dokladnie momencie sa bledne odczyty (zawsze jak dziala silnik czy tylko przy wlaczeniu/wylaczeniu obrotow)...

    Paw789:
    Tak, kondensator dziala w ten sposob i na tym bym poprzestal.
    Pytanie tylko jak dokladnie chcesz te napiecia mierzyc? Przy dokladnosci gp2d12 uzywanie cos wiecej niz 8bitowego przetwornika mija sie z celem, bo te czujniki nie grzesza dokladnoscia.
  • Level 18  
    Mierzylem napięcie na wyjściu czujnika gp2d120 ( mierzy 4 - 30cm) za pomocą multimetru cyfrowego, okazalo się że chyba posiadam dość dokladny czujnik, który z latwością mierzyl odleglości do 45cm.
    Za pomocą przetwornika 8bit przy Vref=4.096 mogę mierzyć z max dokladnością 0.016V, to dla mnie za malo.
    Mam zamiar mierzyć za pomocą przetwornika MCP3201 12bit -1LSB z Vref=4.096

    Z jaką częstotliwością próbkowania mierzycie napięcie czujnika?