Elektroda.pl
Elektroda.pl
X

Search our partners

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

Woltomierz Attiny85 + ina219 +ssd1306

jox1 23 May 2020 17:15 669 7
  • #1
    jox1
    Level 13  
    Witam.
    Nie jestem pewien czy dobry dział forum ale do "programowania" urzyem arduino IDE.
    Zracji tego że w ostatnich kilku tygodniach miałem wiecej wolnego czsu i mnustwo gratów w szufladzie postanowiłem zrobić woltomierz oparty o.

    V1.
    attiny85
    ssd1306
    dzielniki napiecia ADC
    //pcb zamówione nigdy nie zmontowany

    Woltomierz Attiny85 + ina219 +ssd1306

    V2.
    attiny85
    ssd1306
    ina219
    dzielniki napiecia ADC
    //zmontowany dziala.. nie na 100%

    Woltomierz Attiny85 + ina219 +ssd1306 Woltomierz Attiny85 + ina219 +ssd1306 Woltomierz Attiny85 + ina219 +ssd1306

    V3
    attiny85
    ssd1306
    ina219
    dzielniki napiecia ADC
    D18B20
    //pcb gotowe do zamowienia

    Woltomierz Attiny85 + ina219 +ssd1306

    schemat.. V3


    Woltomierz Attiny85 + ina219 +ssd1306













    Kod. Brak D18B20

    Code: c
    Log in, to see the code


    A więc tak.

    Na pinie PB5
    wszystko działa OK ( R5 1M) (R6 opcja)

    Na pinie PB3

    Wszystko dziala OK (R4 220K R3 220K) na schemacie sa inne

    Na pinie PB4 ( R1 1M R2 200K) na schemacie sa inne

    i tu jest problem na tym pinie napiecie max to 30 V
    jednak nie ważne co zrobie z kodem wskazania sa nie własiciwe +- 1V

    Dlatego dodałem kondensatory C1 C2 C3 jednak to nic nie dało.

    Pytanie 1 czy te kondensatory maja jakis sęs w tym miejscu ???
    Pytanie 2 czy zmaina rezystorów R1 i R2 na miejsze z zachowaniem srosunku 1 do 5 może poprawić dokladnośc wskazań.

    Dzieki za pomoc.
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
  • Multimetr Fluke
  • Helpful post
    #2
    trol.six
    Level 31  
    Przetestuj C1 C2 C3 - 100pf do 100nF albo nawet do testu 1uF

    Ad.1 czasem mają

    Ad.2 Ogólnie tak (200kom to całkiem sporo), ale w tym przypadku (jeśli dasz kondensatory o większej pojemności) nie koniecznie, sprawdź sam.

    A sprawdzałeś kod tylko z pomiarem na PB4? I przy zerze też masz błąd +-1V ?
    .
  • Multimetr Fluke
  • #3
    krzysiek_krm
    Level 40  
    jox1 wrote:
    Pytanie 1 czy te kondensatory maja jakis sęs w tym miejscu ???

    Mają sens, żeby nie robić tutaj wykładów z przetwarzania A/D, poczytaj może coś na temat zjawiska "aliasingu" przy przetwarzaniu A->D.
    jox1 wrote:
    Pytanie 2 czy zmaina rezystorów R1 i R2 na miejsze z zachowaniem srosunku 1 do 5 może poprawić dokladnośc wskazań.

    Z dokumentacji AtTiny wynika, że dla przetwornika ADC maksymalna impedancja źródła to 10 kΩ, u Ciebie jest jednak "trochę" więcej,
    trol.six wrote:
    ale w tym przypadku (jeśli dasz kondensatory o większej pojemności) nie koniecznie, sprawdź sam.

    chyba że faktycznie użyjesz kondensatorów o dużej pojemności.
    Nawisem mówiąc, przy stosunku 1 do 5 masz dzielnik 1/6, dla 30 V będzie 5 V, trochę "na granicy" zakresu przetwornika.
  • #4
    trol.six
    Level 31  
    krzysiek_krm wrote:
    Z dokumentacji AtTiny wynika, że dla przetwornika ADC maksymalna impedancja źródła to 10 kΩ,

    A to zależy od założeń ;) Jednak problemy przy stosowaniu większych rezystancji to m.in. prądy upływu, które nie wiadomo dokładnie ile wynoszą, chyba że uznać, że parametr rezystancji wejściowej 100Mom za wystarczający.
  • #5
    jox1
    Level 13  
    Witam Panowie
    Bardzo dziękuje za wasze podpowiedzi.

    //A sprawdzałeś kod tylko z pomiarem na PB4? I przy zerze też masz błąd +-1V ? //

    Tak sprawdziłem
    na zdjęciach widać ten błąd

    Ina219, PB4 i PB3 są podłączone do tego samego źródła zasilania 5.03V
    i błąd na PB4 wynosi 0.3V
    Lecz przy pomiarze np. 12V to już 0.7V

    Napięcie max mierzone na PB4 ma być w założeniu 20V dlatego dzielnik jest do 30V
    Ustawie dzielnik na max 24V i zmienię wartości rezystorów na mniejsze.

    Zobaczę jakie efekty da podmianka kondensatorów.

    Jeżeli ktoś by potrzebował bibliotek z tego projektu.

    TinyOzoled
    https://github.com/SensorsIot/TinyOzOled

    tinyWireM
    https://github.com/adafruit/TinyWireM

    ina219 oraz (Sdd1306 nie użyte w tym projekcie)
    https://github.com/moononournation/ATtinyPowerMeter
  • #6
    krzysiek_krm
    Level 40  
    trol.six wrote:
    Jednak problemy przy stosowaniu większych rezystancji to m.in. prądy upływu, które nie wiadomo dokładnie ile wynoszą, chyba że uznać, że parametr rezystancji wejściowej 100Mom za wystarczający.

    Nie chodzi o prądy upływu ale o czas ładowania kondensatora pamiętającego w przetworniku podczas fazy próbkowania.
  • #7
    trol.six
    Level 31  
    krzysiek_krm wrote:
    trol.six wrote:
    Jednak problemy przy stosowaniu większych rezystancji to m.in. prądy upływu, które nie wiadomo dokładnie ile wynoszą, chyba że uznać, że parametr rezystancji wejściowej 100Mom za wystarczający.

    Nie chodzi o prądy upływu ale o czas ładowania kondensatora pamiętającego w przetworniku podczas fazy próbkowania.

    No tak, jak w przysłowiu: "idzie mi o to, o co mi chodzi" :)

    Przecież nawet w nocie jest napisane że można wydłużyć ten czas. Chociaż niestety to chyba w stylu "nie arduino". Nie wiem co oferuje biblioteka w tym zakresie, jak czytam to raczej nic nadzwyczajnego. Więc albo własny kod, albo minimalizacja rezystancji. W pewnym stopniu można zaradzić temu poprzez pojemności, czego może nie dać się zrobić z prądami upływu.
    .
  • #8
    jox1
    Level 13  
    Ok . Udało mi się rozwiązać problem błędnych wskazani (odczytów).
    Teraz dokładność wynosi ≈ 0,05V
    Code: c
    Log in, to see the code


    vin * 0.004912 * 5.66;

    To info wziąłem z mkAVRCalkulator

    Vout=ADC*(vRef/1024)*K

    Jak rozumiem

    ADC-- odczyt z pinu X

    vRef-- napięcie odniesienia w moim przypadku napięcie zasilania

    1024-- 10bit przetwornik

    K -- wynik równania (R1 + R2) / R2 = K


    Woltomierz Attiny85 + ina219 +ssd1306


    Teraz pozostało dobrać rezystory tak aby napięcie nie przekraczało 5V na pinach ADC


    Woltomierz Attiny85 + ina219 +ssd1306 Woltomierz Attiny85 + ina219 +ssd1306 Woltomierz Attiny85 + ina219 +ssd1306