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

[LPC2378][C/KEIL] Błędy w przetwarzaniu ADC. Nie mogę znaleźć przyczyny.

Electix 25 Paź 2011 15:23 4924 36
  • #1 25 Paź 2011 15:23
    Electix
    Poziom 20  

    Witam serdecznie. Głowię się od jakiegoś czasu, nad następującym problemem.

    Do wejść przetwornika ADC0[4:0] µkontrolera podłączyłem 4 czujniki oświetlenia (fotorezyztor z rezystorem w układzie dzielnika napięcia) do kanałów ADC0[3:0], do kanału ADC0[4] podłączyłem czujnik temperatury LM35. Połączenia te są bezpośrednie, nie ma tam żadnych układów wtórników pomiędzy czujnikami a wejściami ADC. Do wejścia Vref µkontrolera podłączyłem źródło napięcia odniesienia o wartości 3069mV.

    Odpowiednio skonfigurowałem ADC i uruchomiłem w trybie burst z maksymalną częstotliwością pracy ADC (4,5MHz) i rozdzielczością próbkowania 10b. Na pierwszy rzut oka wszystko działa. Na ekranie wyświetlacza pojawiają się wyniki przetwarzania, ale okazuje się że wyniki te są obarczone błędem rzędu 20mV, na dodatek na najmniej znaczącej pozycji, strasznie fluktuują. Z fluktuacją poradziłem sobie, pisząc funkcję uśredniającą wynik przetwarzania. Z początku nawet myślałem że to ona jest niepoprawnie napisana i obarcza wynik przetwarzania błędem. Ale w momencie kiedy jej nie stosowałem ten błąd był tak samo duży. Stąd odrzuciłem domniemanie, że uśrednianie może być przyczyną błędu.

    Zrobiłem zatem eksperyment. Bezpośrednio przy wejściach ADC zmierzyłem multimetrem dobrej klasy (METEX) napięcie pochodzące z czujnika LM35. Okazuje się że miało ono poprawną wartość (porównywałem z termometrem) natomiast na wyświetlaczu wynik pomiaru wyświetlał się z błędem. Przełączałem czujnik pomiędzy wykorzystywane w programie kanały ADC i był ten sam efekt. Na dodatek napięcie wskazywane przez multimetr, było stabilne do 4 miejsca po przecinku, a na wyświetlaczu, strasznie fluktuowało. Nie mam pomysłu co może być przyczyną tych błędów..?

    Wydaje mi się że od strony programowej, wszystko jest ok, załączam kod do wglądu.

    Czy przyczyną tych błędów, może być fakt że na niewykorzystywanych pinach przez ADC, pracuje GPIO? Wydaje mi się że bezsensowne by było, gdyby fakt korzystania z ADC w µkontrolerze, wymagał nie używania reszty pinów współdzielonych przez ADC i GPIO jako GPIO.

    W nocie jest napisane, żeby przestrzegać zakresu napięć Vref , zasilania modułu ADC i napięć wejściowych na ADC. I to sprawdzałem wielokrotnie i jest w normie.

    Zastanawiam się też, czy funkcja sprintf() może przy przekształcaniu zmiennych na łańcuch znakowy nie wprowadza czasem jakichś błędów?

    A może to ja pomimo poprawnie kompilującego się kodu, porobiłem jakieś błędy w posługiwaniu się zmiennymi (operacje na różnych wielkościach typów), może coś skopałem w algorytmie?

    Zajrzyjcie proszę do tej mojej twórczości radosnej, może wypatrzycie coś, czego ja zauważyć nie mogę.

    Oto kod programu:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Oto kod funkcji konfigurującej ADC:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Oto kod funkcji obsługi przerwania od ADC0:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Z góry dziękuję za zainteresowanie i pomoc :)

    0 29
  • Sklep HeluKabel
  • #2 25 Paź 2011 15:36
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Przetwornik pracujący z dużą prędkością pobiera z wejść prąd impulsowy, który w niektórych przypadkach prowadzi do takich rozbieżności. Gdybyś obejrzał przebieg na oscyloskopie, to pewnie widziałbyś tam piękne zapady napięcia w momentach próbkowania. Gdybyś zmniejszył częstotliwość (znacznie!) to wyniki byłyby wielokrotnie bardziej stabilne.

    Sprawdziłeś wszystkie parametry i są w normie, ale jest tam też parametr o maksymalnej impedancji wyjściowej mierzonych sygnałów i właśnie to jest Twoim problemem - jest ona zbyt duża. Albo musisz zmniejszyć rezystory (nie zawsze się da), albo zbuforować sygnały wtórnikami napięcia. Ewentualnie zastosować źródła zapewniające niską impedancję wyjściową, ale to zupełna zmiana układu. Jak już go zmieniać, to można w ogóle zmienić metodę pomiaru, np konwertować rezystancję na częstotliwość i mierzyć okres...

    4\/3!!

    0
  • #3 25 Paź 2011 16:07
    Electix
    Poziom 20  

    Robiłem eksperyment ze zmniejszeniem prędkości działania ADC. Dałem maksymalną możliwą wielkość podziału częstotliwości dostarczanej z APB do ADC. Parametr CLKDIV z rejestru AD0CR ustawiałem na wartość 0xFF. Z moich obliczeń wynika że pomiar na każdym kanale następował z częstotliwością około 1,5kHz. Nie wpłynęło to na poprawę wyniku przetwarzania. Błąd był tak samo duży. Sam układ nie jest jeszcze zbudowany na "sztywno". Korzystam z modułu KrisTech KT-M-LPC2378 do którego podłączyłem czujniki przylutowane na płytce uniwersalnej.

    Spróbuję zastosować jakieś wtórniki napięcia na WO, ale wydaje mi się że to chyba nie to... Czyżby LM35 też wymagał buforowania? A to właśnie jego wyjście mierząc, wykryłem że mam ten błąd. Nie mam oscyloskopu w domu, ale spróbuję sobie zmotać jakiś działający na zasadzie karty dźwiękowej, może uda mi się podejrzeć te wejścia.

    0
  • #4 25 Paź 2011 16:18
    markosik20
    Poziom 33  

    Electix napisał:
    Nie mam pomysłu co może być przyczyną tych błędów..?



    Zmniejsz częstotliwość próbkowania (po co Ci do czujników oświetlenia , temp. tak wysoki zegar ADC ?).
    Wyłącz liczenie bitu LSB (bo żadne uśrednianie nic nie da). To że ADC ma 10bitów nie znaczy że będziesz miał stabilny i powtarzalny LSB (dochodzą szumy własne przetwornika i wejść). Zauważ że dobre przetworniki ADC kosztują tyle co połowa LPC2378.... :D

    0
  • #5 25 Paź 2011 17:26
    krru
    Poziom 32  

    Może pomogą kondensatory podłączone pomiędzy wejściami ADC a masą. Tylko jak najbliżej. Tak z 10nF.
    Powinno pomóc na impulsowy pobór prądu z wejścia ADC.

    0
  • #6 27 Paź 2011 14:25
    Jado_one
    Poziom 22  

    Przy takich wolnozmiennych przebiegach można dać i większe - ja z reguły daje 100nF na wejsciu przetwornika. A ostatnio miałem problem z sygnałem (nakładały sie szumy i przydźwięk sieci z kabla, którym był dostarczany sygnał), to i 10uF tantal dałem.
    I pomogło.
    Pamiętać tylko trzeba, że kondensator wygładza napięcie szumów (wariowanie wyników się wygładza), ale napięcie szumów dodaje się do sygnału uzytecznego i może go trochę zawyżać. Jeśli szumy są w miarę stałe, to można odjąć sobie stała liczbę od wyniku (offset).

    Zobacz tez jak masz zrealizowane prowadzenie masy od procesora, do układu LM - bo jeśli po drodze przez tą scieżkę płynie jeszcze jakiś inny prąd (jakiś inny element sobie coś ciągnie), to spadek napięcia na scieżce masy dodaje się do sygnału z LM'a i zafałszowuje pomiar.

    0
  • Sklep HeluKabel
  • #7 28 Paź 2011 14:41
    94075
    Użytkownik usunął konto  
  • #8 28 Paź 2011 16:51
    Electix
    Poziom 20  

    Rzeczywiście te przetworniki w LPC są strasznie rozhuśtane...

    Ale od początku:

    Poczytałem sobie Wasze podpowiedzi, pokombinowałem i poprawiłem co nieco sytuację.

    1. Błąd z LM35 - płytka prototypowa którą się posługuję, ma na swoim pokładzie kilka wbudowanych modułów. Są to między innymi interface USB, ETHERNET oraz RS232, kilka pinów µkontrolera jest zatem współdzielona. Przeoczyłem to na schemacie dołączonym do modułu. Okazało się, że kanał 5 przetwornika ADC jest na stałe połączony z masą przez rezystorowy dzielnik napięcia. Podczas kombinacji z przepinaniem kanałów ADC do źródła napięcia wzorcowego (LM385 nastawiane), zauważyłem że kanał 5 ADC po podłączeniu, powoduje dziwny spadek napięcia. Wtedy sięgnąłem po schemat i wszystko stało się jasne. Zrezygnowałem zatem z tego kanału i podpiąłem czujnik LM35 do innego. Nastąpiła zdecydowana poprawa, choć nie wiem jeszcze czemu, pomiar ADC wykazuje 10mV błędu systematycznego. Wykryłem to mierząc napięcie z LM35 jednocześnie multimetrem i ADC. Błąd ten skorygowałem programowo i teraz wszystko zgadza się ze wskazaniami multimetru. Zaznaczę tu że pomiaru porównawczego dokonywałem multimetrem (METEX 4660A) który na zakresie 2V mierzy z dokładnością do 100µV.

    Być może błąd jest spowodowany (jak pisał Freddie Chopin) dużymi spadkami napięć na wejściach ADC wywoływanych szybkim przełączaniem. Sam LM35 ma stosunkowo małą impedancję wyjściową. W każdym razie maksymalne obniżenie częstotliwości przetwarzania w trybie BURST nie przyniosły poprawy. Nie próbowałem jeszcze opcji z wtórnikiem napięcia na WO. Sprawdzę to, choć wolałbym uniknąć rozbudowy układu.

    2.Niestabilność pomiaru ADC - Tak jak wcześniej już prezentowałem napisałem sobie funkcję uśredniającą wyniki pomiarów ADC.
    oto ona:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    jest to bufor cykliczny, który oblicza średnią z 256 (wartość ukryta w kodzie pod nazwą OVS) ostatnich próbek. I nawet pomimo tak dużego uśredniania na najmłodszych pozycjach wyświetlany wynik strasznie fluktuował. Dopiero obcięcie najmłodszych 7 bitów ze średniej bufora, spowodowało stabilizację.
    linijka z obliczaniem średniej z pomiaru:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Przyznam się szczerze że trochę mi to nie pasuje, bo cztery pierwsze kanały będą służyły do pomiaru natężenia oświetlenia i na podstawie różnicy w pomiarach pomiędzy parami tych czujników, procesor ma wysterować silniki krokowe, tak aby maksymalnie zniwelować różnicę w pomiarach. Ma to być układ nadążny do optymalnego ustawiania ogniwa fotowoltaicznego względem słońca. Muszę mieć zatem precyzyjne i stabilne te pomiary...

    Nie mam już pomysłów jak nad tym zapanować, do tego zauważyłem że sąsiednie kanały ADC wzajemnie ze sobą interferują. Kanał 0 mam podłączony do napięcia 1230mV co bardzo ładnie zgadza się ze wskazaniem multimetru. Kolejne 3 kanały mam zwarte do masy, a i tak na 2 kanale co jakiś czas wskakują wartości rzędu 30mV... Czyżby aż tak bardzo były słabe te przetworniki w LPCkach?

    0
  • #9 28 Paź 2011 21:44
    94075
    Użytkownik usunął konto  
  • #10 30 Paź 2011 08:46
    Jado_one
    Poziom 22  

    Electix napisał:
    Nastąpiła zdecydowana poprawa, choć nie wiem jeszcze czemu, pomiar ADC wykazuje 10mV błędu systematycznego. Wykryłem to mierząc napięcie z LM35 jednocześnie multimetrem i ADC. Błąd ten skorygowałem programowo i teraz wszystko zgadza się ze wskazaniami multimetru. Zaznaczę tu że pomiaru porównawczego dokonywałem multimetrem (METEX 4660A) który na zakresie 2V mierzy z dokładnością do 100µV.

    Przetwornik A/D dokonuje pomiaru za pomocą kondensatora próbkująco-pamiętającego, który po dołączeniu do źródła napięcia mierzonego ładuje się do poziomu równego temu napięciu. Ponieważ jest to kondensator, to zanim nastąpi pełne naładowanie musi upłynąć pewien czas - zależny od jego pojemności, aby nastąpiło wyrównanie napięć. A zatem jest to minimalny czas przetwarzania przetwornika, jaki musi być ustawiony - inaczej będziesz mierzył niedoładowany w pełni kondensator - co objawia się własnie zaniżaniem wyniku pomiaru A/D.
    Nie wiem, czy w tym przypadku tak jest, ale warto to sprawdzić (producent w manualu musi podawać minimalny czas konwersji). Można też przejśc z trybu burst na wyzwalanie "ręczne", żeby sprawdzić jak to się odniesie do wyniku pomiaru. Jezeli masz jakieś transmisje na porcie czy ogólnie w procesorze, które są wyzwalane w znanych momentach, to może uda Ci się wyzwolić przetwarzanie A/D w okresach, kiedy te transmisje nie hulają po portach - wtedy mierzyłbyś w okresach ciszy, zmniejszając tym samym zakłócenia od procka czy innych układów.

    0
  • #11 15 Lis 2011 15:40
    Electix
    Poziom 20  

    Wracam do tematu po przerwie.

    W międzyczasie doznałem kontuzji, miałem operację itp... Ale już wszystko się goi i wróciłem do walki z ADC.

    Kombinowałem z różnymi formami oversamplingu i z filtrowaniem wyników przetwarzania przy pomocy średniej kroczącej. Udało mi się trochę zapanować nad tymi wynikami. Nadal jednak wynik przetwarzania różni się od wyniku pomiaru multimetrem o jakieś 10mV. Nadmienię że źródłem napięcia jest tu regulowany stabilizator, myślę że jego impedancja wyjściowa jest odpowiednio mała, więc nie powinienem tu mieć problemu z za dużą impedancją wyjściową źródła sygnału.

    Dopatrzyłem się na schemacie modułu z którego korzystam, że jego autor połączył wyprowadzenia zasilania części ADC µkontrolera, z resztą zasilania układu bez żadnej filtracji poprzez filtr LC.
    Pomyślałem sobie że może odłączę to i zrobię oddzielny stabilizator z porządną filtracją dla ADC. Tu pytanie, bo nie mam doświadczeń. Czy ten zabieg, w dużym stopniu przyczyni się do poprawy stabilności pomiarów?

    Spróbuję też wyzwalać ADC wolniej. Czyli będę wyzwalał przetwornik programowo w przerwaniu od timera. Czy opłaca się zrobić to tak, że po zgłoszeniu przerwania od timera, odpalam ADC w trybie burst w celu automatycznego przetworzenia wszystkich 8 kanałów i stop. Czy może lepiej w przerwaniu od timera (odpowiednio częściej generowane przerwania), za każdym razem odpalać ADC na pojedynczy pomiar z konkretnego kanału?

    Czy warto na czas pomiaru "usypiać" µkontroler? Jak ten problem rozwiązać?

    0
  • #12 15 Lis 2011 16:10
    Jado_one
    Poziom 22  

    Musisz po prostu wypróbować po kolei w/w sposoby i sprawdzić który zadziała (lub nie) - każdy przypadek ze względu na rózne projekty układowe i PCB jest inny.
    Jeżeli główny problem leży w zaniżaniu wyniku, to może warto tymczasem skupić się na jednym kanale i doprowadzić do jego poprawy, a potem dopiero rozszerzac pomiary na pozostale kanaly.

    0
  • #13 20 Gru 2011 23:37
    Electix
    Poziom 20  

    Powróciłem do odstawionej na czas jakiś walki z ADC. Kupiłem sobie w końcu oscyloskop (co prawda nie jest to górnolotny zakup, ale mój budżet puki co nie przewidywał takiej inwestycji, więc zwyciężyło "tańsze mniejsze zło" ;) ).

    Podpiąłem się z sondą do VDDA i VSSA mikrokontrolera i moim oczom ukazało się coś takiego.
    [LPC2378][C/KEIL] Błędy w przetwarzaniu ADC. Nie mogę znaleźć przyczyny. [LPC2378][C/KEIL] Błędy w przetwarzaniu ADC. Nie mogę znaleźć przyczyny.

    I to chyba wyjaśnia wszystkie moje wątpliwości związane ze stabilnością pomiarów jakich dokonywałem przy pomocy ADC mikrokontrolera.

    Zauważyłem że na płytce testowej, zasilanie części analogowej µkontrolera jest połączone z zasilaniem cyfrowym bezpośrednio, jest ono tylko odfiltrowane poprzez kondensator 100n. Odlutuję tą zworkę i zamiast niej wstawię jakiś dławik, zobaczymy co to da. Zastosuję też chyba inny zasilacz sieciowy, bo ten który mam jest chyba kiepskiej jakości zasilaczem impulsowym. Już na samych zaciskach wejściowych, przed stabilizatorami jest strasznie duży szum ze szpilami. Będę też musiał chyba coś zrobić z masami. Jak je podglądałem oscyloskopem, to nawet pomiędzy punktami masy, występują podobne zakłócenia, jak na obrazkach wyżej.

    Coś jeszcze tu mogę poradzić? :)

    0
  • #14 21 Gru 2011 07:54
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Możesz się zastanowić, czy to co widzisz nie jest zakłóceniem radiowym odbieranym przez długi kabel sondy oscyloskopu.

    4\/3!!

    0
  • #15 21 Gru 2011 12:29
    janbernat
    Poziom 38  

    Ustaw wyzwalanie na EXT, daj tam sygnał zegara z płytki i wtedy zobacz.

    0
  • #16 21 Gru 2011 14:07
    Electix
    Poziom 20  

    Zrobiłem ten pomiar z wyzwalaniem zewnętrznym. Podpiąłem się do kwarcu 12MHz i do wejścia zasilania ADC - AVDD. I wyszło coś takiego...
    [LPC2378][C/KEIL] Błędy w przetwarzaniu ADC. Nie mogę znaleźć przyczyny. [LPC2378][C/KEIL] Błędy w przetwarzaniu ADC. Nie mogę znaleźć przyczyny.

    Rdzeń śmiga z częstotliwością 72MHz, to już jest poza pasmem tego oscyloskopu, zatem nie bawiłem się już w wyprowadzanie tego sygnału na zewnątrz. A pasmo na 100MHz w oscyloskopie, zamierzam odblokować dopiero jak mi się gwarancja skończy ;)

    Nie do końca wiem, jak teraz zinterpretować ten pomiar. Chyba za mało ,mnie ma ten temat na studiach nauczyli... ;)

    0
  • #17 21 Gru 2011 15:39
    janbernat
    Poziom 38  

    Teraz masz tętnienia na zasilaniu ładnie zsynchronizowane z kwarcem.
    Czyli nie jest to zakłócenie zewnętrzne.
    Filtrowanie zasilania(kondensatory), szersze ścieżki doprowadzające zasilanie, masę itp. odczynianie.

    0
  • #18 21 Gru 2011 16:30
    Zbych_
    Poziom 24  

    Electix napisał:
    Powróciłem do odstawionej na czas jakiś walki z ADC. Kupiłem sobie w końcu oscyloskop (co prawda nie jest to górnolotny zakup, ale mój budżet puki co nie przewidywał takiej inwestycji, więc zwyciężyło "tańsze mniejsze zło" ;) )


    Czyżbyś kupił DS1052E?
    To w takim razie przyjrzyj się przebiegom po połączeniu masy sondy z płytką z uC i zwarciem końcówki sondy z krokodylkiem.
    Niestety ten oscyloskop bardzo lubi pokazywać to co mu płynie po masie kabla, zamiast tego co się dzieje w układzie.

    0
  • #19 21 Gru 2011 21:53
    markosik20
    Poziom 33  

    To nie błędy w przetwarzaniu ADC, ani tętnienia są powodem rozbieżności (~20mV jak piszesz). Zresztą o czym tu rozmawiać , tętnienia są na poziomie kilkudziesięciu mV, skok napięcia łapany na działce 50mV/100ns. Szukasz powodów różnicy 20mV....i się nie doszukasz, weźmiesz drugi uC i będzie na nim różnica 20mV (albo i więcej)...ale w drugą stronę. Zasil całość z baterii Li-Pol a będziesz miał prawdopodobnie takie same wyniki z ADC. Próbujesz wyciągnąć max z tego ADC ale on się poprostu do tego nie nadaje.

    0
  • #20 21 Gru 2011 21:58
    janbernat
    Poziom 38  

    To może ten "oscyloskop" ma zasilacz taki jak w komputerach?
    Popatrzyłem na tę płytkę:
    http://www.shop.kristech.eu/product_info.php?cPath=92_21_26&products_id=146&language=PL
    i może zrobić tak:
    Zasilać z oddzielnego zasilacza 5V a nie z USB.
    Może być zwykły wtyczkowy- ale nie impulsowy tylko taki "ciężki" ze zwykłym transformatorem.
    Najlepszy byłby zwykły laboratoryjny- ale nie "made in china" ale taki normalny- Kabid albo Unitra- takich używam.
    Wtedy po podłączeniu jest taki sam potencjał mas i nie płynie żaden prąd do "masy" oscyloskopu równej połowie zasilania- co z tego że przez jakieś megaomy.
    Tektronix tak brzydko się nie zachowuje.

    0
  • #21 21 Gru 2011 22:14
    markosik20
    Poziom 33  

    janbernat napisał:

    Tektronix tak brzydko się nie zachowuje.


    W sumie też mam Rigola ale nie narzekam jakoś bardzo na te jego szumy własne. Rozumiem że jak Tektonixa podepnie się np: pod aku 3V6 to będzie miał szumy na poziomie 0? Przed chwilą sprawdziłem swojego DS1062 , średnio szum Vppmax 20mV (1 działka) na Li-Pol 3V6 z sondą ustawioną na dzielnik 1/10.

    0
  • #22 21 Gru 2011 22:42
    Electix
    Poziom 20  

    To teraz mnie nastraszyliście z tym oscyloskopem... Wygląda na to że zapłaciłem 1600zł za g***o? Aż tak źle to chyba nie jest. Z tego co czytałem, to w tej cenie i swojej klasie jest to całkiem niezły sprzęt. Sugerowałem się też tym, że Rigol dla Agilenta robi...

    Ale nie o tym jest ten wątek.

    Odnośnie ADC, może rzeczywiście ja za dużo spodziewałem się po ADC wbudowanym w mikrokontroler? Z drugiej strony część układu znajduje się poza modułem z mikrokontrolerem, a to wszystko połączone jest na kabelki... Ale w istocie tego układu ma być tak, że pomiar będzie dokonywany w układach oddalonych od kontrolera o kilka, kilkadziesiąt cm.

    Tak jak wspominałem wcześniej, buduję mikroprocesorowy sterownik optymalnego położenia ogniwa fotowoltaicznego (temat mojego mgr). To jest stanowisko dydaktyczne do laboratorium podstaw automatyki... W małym module PV będą umieszczone 4 czujniki oświetlenia (do wykrywania kierunku padania światła), czujnik temperatury i układ pomiaru napięcia i prądu pochodzących z ogniwa PV.

    A skoro walczę z takimi zakłóceniami w odległości do 10 cm od procesora, to jakie one będą, jak ta odległość zwiększy się dwu lub trzykrotnie..?

    Sprawdzę układ ze stabilniejszym źródłem zasilania całości i spróbuję trochę odfiltrować te śmieci. Zrobiłem eksperyment na płytce stykowej budując taki filtr:
    +5V +10µF tantal + 100nF ceramik + dławik 100µH za dławikiem +4,7µF tantal +100nF ceramik. Za tym filtrem przebieg +5V wydaje się być gładszy, a analiza FFT wykazuje mniej harmonicznych.

    0
  • #23 21 Gru 2011 22:52
    janbernat
    Poziom 38  

    To nie chodzi o żadne szumy.
    Tu chodzi o przemyślane rozwiązania układowe.
    Nie mam Rigola- może kiedyś kupię bo z tego Tektronixa to muszę robić zdjecia a z Rigola wystarczy zapisać.
    To jest tak że takie urządzenie projektuje i robi zespół ludzi.
    Ktoś koordynuje projekt.
    Czasami jest to niestety ksiegowy.
    No i mamy takie coś- zasilacz ma dawać napięcia +12V, -12V, +5V itd.
    No i ma być tani.
    A to jakie naprawdę parametry ma mieć zasilacz- to księgowy nie ma pojęcia.
    Co z tego że wejście wytrzyma 1.5kV w stosunku do napiecia sieci jak gdzieś po drodze dadzą 5Mohm opornik i jakiś kondensator?
    Wytrzyma, nie zabije użytkownika- ale pomiar do d...

    0
  • #24 21 Gru 2011 23:42
    krru
    Poziom 32  

    A rozważałeś inne rozwiązania układowe (mechaniczne, optyczne i elektroniczne)?
    Po pierwsze - takie dokładne kierowania na Słońce nie jest krytyczne dla wydajności ogniwa - to zachowuje się jak cos x, w okolicy zera jest praktycznie jedynka, spadek mocy jest symboliczny.
    Po drugie. Może zastosować pewną przegrodę pomiędzy czujnikami, tak by na jeden z pary padał cień. Wtedy różnica oświetlenia jest duża. Tam wtedy nawet nie potrzeba uC - po prostu zwykła logika do sterowania silnikiem.

    Inny pomysł - pomiar różnicowy (na zasadzie mostka) - nie dokujemy pomiaru dwóch wielkości niewiele się różniących, tylko od razu ich różnicy.

    0
  • #25 23 Gru 2011 13:43
    Electix
    Poziom 20  

    Tak, rozważałem różne rozwiązania układowe i z pomiarem światła, postanowiłem zastosować przetwornik U/F i tu pomiar jest o wiele bardziej stabilny i w szerszym zakresie. Ale nie zmienia to faktu, że zależy mi tez na dokładności pomiaru poprzez ADC, Muszę pomierzyć tak jak wspominałem wcześniej, napięcia i prądy, temperaturę i dobrze by było żeby też i pomiar światła działał dobrze poprzez ADC. To ma być stanowisko dydaktyczne do nauki programowania mikrokontrolerów, zatem większy zakres możliwości różnego rodzaju sprzętu do oprogramowania jest jak najbardziej pożądany.

    Przyjrzałem się dokładniej zasilaniu i okazało się, że za te wszystkie zakłócenia których oscylogramy umieszczałem tu w wątku, odpowiedzialny jest moduł z procesorem. Gdy wyłączę zasilanie procesora, szumy na zasilaniu spadają do poziomu 2mV. Gdy procesor pracuje, nawet po odfiltrowaniu poprzez gigantyczne kondensatory i dławiki po całym zasilaniu zasuwają szpile po 50mV.

    Na samym module za wiele nie zrobię. Wspomnę że posługuję się modułem
    KT-M-LPC2387.

    Spróbuję poprawić co się da, w tym zasilaniu i zobaczę jaki będzie efekt, najwyżej pogodzę się z tymi niedoskonałościami i odpuszczę bo nie mam już siły i pomysłu na walkę z tym problemem...

    0
  • #26 23 Gru 2011 17:54
    markosik20
    Poziom 33  

    Electix napisał:
    Gdy procesor pracuje, nawet po odfiltrowaniu poprzez gigantyczne kondensatory i dławiki po całym zasilaniu zasuwają szpile po 50mV.


    U nie jest podobnie i raczej dużo się tego nie ograniczy.
    Electix napisał:

    Spróbuję poprawić co się da, w tym zasilaniu i zobaczę jaki będzie efekt, najwyżej pogodzę się z tymi niedoskonałościami i odpuszczę bo nie mam już siły i pomysłu na walkę z tym problemem...


    Ja bym nie nazwał tego problemem.... ten typ tak ma i tyle. Nie można mieć naraz super wydajnego rdzenia i dokładnego pomiaru wartości analogowych. Kiedyś szukałem ARM'a z przetwornikami ADC Sigma Delta 16-bit.....i nie znalazłem, widać jest to nieopłacalne dla producentów... albo ciężkie do zrealizowania.

    0
  • #27 14 Mar 2012 11:52
    poli444
    Poziom 10  

    Witam, no to ja się dołączę. W moim przypadku ADC 10 BIT w procesorze LPC2478 chodziło stabilnie do ostatniej cyfry, dopóki nie włączyłem obsługi wyświetlacza. Zrobiła się tragedia o której piszesz. Pozdrawiam.

    0
  • #28 14 Mar 2012 17:51
    Electix
    Poziom 20  

    No to jest ślad, którego do tej pory nie uwzględniłem w swoich rozważaniach.

    Będę musiał sprawdzić ten trop, zastanawiam się tylko jak? Bo nie mam ani RS w laptopie, ani żadnego konwertera, chyba będę musiał nabyć w drodze zakupu jakiś.

    Nasuwa się teraz kolejne pytanie, co jest przyczyną takiego działania? Czy pracujące porty GPIO tyle zakłóceń generują, a może sam LCD (T6963C 240x128)? Czy fakt, że LCD pracuje na 5V i spiąłem go z µkrokontrolerem bez translatorów generuje takie problemy?

    Jak ewentualnie rozwiązać ten problem, nadmienię że wyświetlacz musi zostać.

    0
  • #29 14 Mar 2012 20:59
    techkom
    Poziom 12  

    Electix napisał:
    No to jest ślad, którego do tej pory nie uwzględniłem w swoich rozważaniach.

    ...

    Jak ewentualnie rozwiązać ten problem, nadmienię że wyświetlacz musi zostać.


    Kupić jakiś przetwornik A/C na SPI i zaoszczędzić kupę czasu i nerwów ?

    0
  • #30 14 Mar 2012 21:06
    Electix
    Poziom 20  

    Takie rozwiązanie, jeżeli wchodziłoby w grę, zastosowałbym już dawno. Mimo wszystko chcę wyczerpać wszystkie możliwości jakie da się wyciągnąć z wewnętrznego ADC...

    0