Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 10 lip 2025, o 10:11


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 
    Autor Wiadomość
    PostNapisane: 1 lis 2019, o 00:26 
    Offline
    Użytkownik

    Dołączył(a): 06 lut 2018
    Posty: 58
    Pomógł: 0

    Panowie, piszę do Was bo za chwilę szlag mnie trafi.
    Problem - projektuję woltomierz, z którego dane będą wyświetlane zdalnie w aplikacji (przez bluetooth).
    Wszystko było ok, dopóki mierzyłem napięcia z zakresu od 0 do 5 V. Problem zaczął się wówczas, gdy chciałem zwiększyć zakres pomiarowy: od 0 do 12 V. W tym celu zastosowałem dzielnik napięcia (wartości rezystorów zgodne z poniższym rysunkiem).

    Informacje:
    - napięcie referencyjne 1.1 V
    - pin AREF podpięty przez kondensator 100 nF do masy
    - masy układów połączone
    - pobieram wartość ADC z mikrokontrolera i wysłam ją przez USART
    - w aplikacji wyliczam wartość napięcia ze wzoru: ADC * (1.1 / 1024) * 11
    - 11 to współczynnik dzielnika napięcia

    Uzyskuję następujące, bezsensowne wyniki (w Voltach):
    Wartość rzeczywista podanego napięcia na dzielnik - wartość wyświetlana (pobrana z ADC):

    2.0 - 4.00
    3.0 - 5.0
    4.0 - 5.92
    5.0 - 6.85
    6.0 - 7.69
    7.0 - 8.7
    8.0 - 9.6
    9.0 - 10.6
    10.0 - 11.5

    Obrazek

    Proszę o pomoc.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lis 2019, o 01:41 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 sty 2016
    Posty: 1174
    Lokalizacja: Kraków
    Pomógł: 94

    A nie powinieneś dzielić przez 1023?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lis 2019, o 01:47 
    Offline
    Użytkownik

    Dołączył(a): 06 lut 2018
    Posty: 58
    Pomógł: 0

    Marhef napisał(a):
    A nie powinieneś dzielić przez 1023?


    Też tak początkowo przyjąłem (w końcu zakres ADC to od 0 do 1023), ale zasugerowałem się wzorem w MkAVRCalculator (który to wzór jest też zresztą w nocie katalogowej procka). Tak czy inaczej, wartości wychodzą błędne. Zarówno gdy dzielę przez 1024 jak i 1023.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lis 2019, o 07:10 
    Offline
    Użytkownik

    Dołączył(a): 29 paź 2017
    Posty: 232
    Pomógł: 26

    Na początek zrób tabelkę z wartościami mierzonymi woltomierzem i wartościami czytanymi z ADC
    Gdzieś może zrobiłeś literówkę we wzorze.
    Tak sobie gdybam.
    Bo skoro działa to dobrze bez dzielnika to czemu miało by działać źle z dzielnikiem

    _________________
    Jestem na GG 31324
    Nowy soft, nowa nadzieja.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lis 2019, o 08:41 
    Offline
    Użytkownik

    Dołączył(a): 28 wrz 2016
    Posty: 215
    Pomógł: 14

    JarekB napisał(a):
    Na początek zrób tabelkę z wartościami mierzonymi woltomierzem i wartościami czytanymi z ADC

    Dokładnie, z tym, że dodaj wartość odczytaną z ADC dla napięcia 0V i 12V
    Wtedy będzie można rozstrzygnąć czy błąd jest w przetworniku, czy w przeliczaniu
    Zauważ, że masz dużą nieliniowość w odczycie napięcia, co sugeruje błąd w sposobie pomiaru

    _________________
    de gustibus non est disputandum



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lis 2019, o 10:19 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 15 lip 2014
    Posty: 37
    Pomógł: 2

    Tu jednak jest chyba problem w offsecie
    Obrazek
    bo wygląda to na dość liniowo...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lis 2019, o 10:24 
    Offline
    Użytkownik

    Dołączył(a): 05 wrz 2017
    Posty: 169
    Pomógł: 31

    Jeśli poprawnie mierzyłeś napięcia w zakresie 0-5V to znaczy, że problemem prawdopodobnie jest Twój dzielnik - na to wskazują wyniki im niższe napięcie tym większy błąd (choć zmiana błędu jest niewielka od2 V do 1.5V).
    Przy 12V prąd jaki może popłynąć to coś w okolicy 1mA, później jest tylko gorzej. Przetwornik ADC przełącza pojemność i ją ładuje przez dzielnik wiec czas jaki potrzebujesz to t = RC, nie wiem jaka jest ładowana pojemność wewnętrzna ale pewnie dużo poniżej 1nF. Jeśli zmniejszysz szybkość próbkowania jednocześnie dając kondensatorowi się naładować wyniki powinny się poprawić, pomóc powinno też zmniejszenie wartości rezystorów. Możesz też podłączyć oscyloskop do wyjścia dzielnika i zobaczyć jak to tam wygląda (ustaw pomiar RMS dla kanału bo przebieg powinien być pocięty w rytm próbkowania przetwornika).



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lis 2019, o 15:01 
    Offline
    Użytkownik

    Dołączył(a): 06 lut 2018
    Posty: 58
    Pomógł: 0

    Dziękuję wszystkim za podpowiedzi.

    Zmieniłem płytkę, na której testuję rozwiązanie i co za tym idzie, zmieniłem też uC.

    Stan obecny wygląda następująco:
    - wszystko jest zasilane z jednego zasilacza (masy połączone)
    - napięcie podaję z regulowanego mini zasilacza (LM2596)
    - założony zakres mierzonych napięć: 0 - 16 V
    - napięcie referencyjne: 5 V (oczywiście wybrane programowo)
    - pin AREF podpięty przez kondensator 100 nF do masy
    - obniżyłem wartości rezystorów (z pary 10 k i 1 k , na 2,2 k i 1 k) - zgodnie z sugestią kolegi abel11
    - częstotliwość próbkowania mam możliwie najniższą przy obecnej konfiguracji (współczynnik podziału - 128, co daje 144 kHz)
    - wykonałem tabelkę pomiarów (napięcie i wartość ADC)
    - mini zasilacz pozwala mi na podawanie napięć z zakresu od 1.2 do 11 V i takie wartości też zaprezentowałem

    Poniżej załączam screen'a z programu MkAvrCalculator.

    Tabela pomiarów.
    Współczynnik k = 3.2 (sugerowany), ale zmieniłem go na k = 3.11 by uzyskać nieco lepsze, choć wciąż dalekie od ideału pomiary.

    Woltomierz ->ADC-> Woltomierz (na podstawie odczytu ADC)
    1.2 V-> 120-> 1.67 V
    2 V -> 157 -> 2.38 V
    3 V -> 220 ->3.37 V
    4 V -> 284 ->4.30 V
    5 V ->340 ->5.16 V
    6 V ->397 ->6.04 V
    7 V ->457 ->6.92 V
    8 V ->520 ->7.88 V
    9 V ->579 ->8.79 V
    10 V ->639 ->9.70 V
    11 V ->701 ->10.67 V


    Jak widać, zaprezentowane wartości są najbardziej rozbieżne przy niskich wartościach napięcia. Najlepiej prezentuje się z kolei środek i wyższe zakresy.

    Czym jeszcze może być to spowodowane? Biorę oczywiście pod uwagę tolerancję rezystorów. Tylko pytanie, co mogę jeszcze zrobić, żeby ten pomiar poprawić? Kalibracja za pomocą potencjometru w dzielniku, zamiast rezystora? Tylko to przychodzi mi do głowy, ale niestety nie mam pod ręką żadnego potencjometru.

    Z góry dziękuję za wszelkie sugestie i podpowiedzi.


    Obrazek



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lis 2019, o 16:09 
    Offline
    Użytkownik

    Dołączył(a): 21 gru 2018
    Posty: 74
    Pomógł: 0

    A jak z dokładnością rezystorów i jakie prądy płyną faktycznie w dzielniku?

    Tutaj zagłębisz temat : http://elektroniczny.eu/dzielnik-napiec ... przyklad/#



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lis 2019, o 17:36 
    Offline
    Użytkownik

    Dołączył(a): 29 paź 2017
    Posty: 232
    Pomógł: 26

    1. Zasilanie procesora z jakiegoś stabilnego źródła + kondensatory 100nF do każdego pinu VCC (warto zobaczyć oscyloskopem co biega na VCC)
    2. Zasilanie AVCC przez dławik i kondensator
    (AVCC is the supply voltage pin for Port F and the A/D Converter. It should be externally connected
    to VCC, even if the ADC is not used. If the ADC is used, it should be connected to VCC
    through a low-pass filter)

    3. Unikaj używania wejść ADC do innych celów (oczywiście z pominięciem tego który używasz do pomiaru)
    4. W ekstremalnych przypadkach na czas pomiaru zastopuj wszystkie funkcje życiowe procka oprócz ADC
    5 Użyj wewnętrznego źródła 2,56 nie używaj VCC. (tym bardziej że mogą być tam śmieci)

    _________________
    Jestem na GG 31324
    Nowy soft, nowa nadzieja.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lis 2019, o 18:44 
    Offline
    Użytkownik

    Dołączył(a): 28 wrz 2016
    Posty: 215
    Pomógł: 14

    wzagra napisał(a):
    bo wygląda to na dość liniowo...

    tu się nie zgodzę, offset jest oczywiście, ale różnica 25% nachylenia to dużo za dużo, to już nie jest miernik, a wskaźnik
    błąd nieliniowości nie powinien być większy niż 2bity (to z pamięci), czyli o rząd wielkości mniejszy
    mtbchn napisał(a):
    Biorę oczywiście pod uwagę tolerancję rezystorów.
    BŁĄD! Zauważ, że za każdym razem, za każdym pomiarem wartość rezystorów się nie zmienia, nie zmienia się też współczynnik konwersji. Nie spowoduje też offsetu. A u Ciebie pojawia się i offset i nieliniowość. Tego nie spowoduje nawet największy rozrzut rezystancji rezystorów dzielnika.
    mtbchn napisał(a):
    mini zasilacz pozwala mi na podawanie napięć z zakresu od 1.2 do 11 V
    0V uzyskasz po prostu zwierając wejście ADC do masy. Wartość dla odczytana ze zwartym ADC powinna być 0, ewentualnie bardzo bliska 0. Jeśli nie będzie, to będzie to pierwszy problem do rozwiązania.
    Bardzo pomocne będzie jeżeli do tabelki dodasz jeszcze wartość napięcia na wejściu ADC względem masy.
    Zapomniałem o najważniejszym, czy odczyty sa powtarzalne? Wykonaj kilka pomiarów i sprawdź, czy dla np. 5V zawsze pokazuje tyle samo.

    _________________
    de gustibus non est disputandum



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lis 2019, o 19:23 
    Offline
    Użytkownik

    Dołączył(a): 05 wrz 2017
    Posty: 169
    Pomógł: 31

    Jeśli to ma być woltomierz, a nie wskaźnik, to na wejściu powinieneś zmontować wzmacniacz pomiarowy, np. na 3 wzmacniaczach operacyjnych albo zastosować specjalizowany układ scalony. Wtedy masz pewność, że sprzętowo sygnał do przetwornika dochodzi jak należy i ewentualny problem leży po stronie programowej.
    Możesz też na próbę, do wyjścia dzielnika podłączyć wzmacniacz operacyjny (w konfiguracji wtórnika) wyjście wzmacniacza bezpośrednio podłącz do nogi uC z której wykonujesz pomiar konwersje A/C. Całość polega na tym, że z strony dzielnika napięcia podłączenie wzmacniacza nie wprowadza obciążenia ponieważ rezystancja wejściowa wzmacniacza powinna być nieskończenie duża, w rzeczywistym układzie jest zaniedbywalnie duża. Natomiast impedancja wyjściowa wzmacniacza jest równa zero dla idealnego, dla rzeczywistego jest wystarczająco mała żeby ją zaniedbać. Taki układ powinien z dużą dozą prawdopodobieństwa rozwiać wątpliwości w kwestii sprzętowej - żeby rozwiązać problem najpierw trzeba go zidentyfikować i tu metoda (skrajne wartości napięć wejściowych) którą zaproponował kolega Alef2 powinna bardzo pomóc.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 lis 2019, o 20:06 
    Offline
    Użytkownik

    Dołączył(a): 19 lip 2013
    Posty: 774
    Pomógł: 40

    A ja się kiedyś tak tydzień męczyłem ,a na koniec okazało sie ze to avr z chin i wystarczyło go wymienić :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 7 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO