Elektroda.pl
Elektroda.pl
X

Search our partners

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

Zadajnik napięciowy z pomiarem: ESEM

trol.six 01 Apr 2020 19:49 2391 2
  • Zadajnik napięciowy z pomiarem: ESEM

    Zrobiłem sobie zadajnik napięciowy z pomiarem.

    Możliwości:
    - ustawialne 2 kanały PWM w zakresie 0-4095
    - jeden kanał wyjściowy z zakresem ok -2V5 - 2V5
    - jeden kanał wyjściowy z zakresem ok 0V1 - 2V5
    - pomiar na 3 wejściach: 2V5 25V 100V
    - możliwość ustawienia trybu przetwornika
    - max szybkości pomiaru: 50,25,10,5 smps (12,14,15,16 bit)
    - komunikacja UART ustawiona na 57600, ale można w plikach zmienić


    Polecenia są w formacie "#A opcje":

    #A - nic nie rób
    #B - ustaw PWM dla kanału: kanał, PWM
    #D - ustaw przetwornik ADC: wzmocnienie, bit
    #E - zmierz: kanal_U
    #F - mierz i wysyłaj: kanal_U czas(ds)
    #G - ustaw kolejne PWM z krokiem i mierz
    #I - kalibracja: co kanal_U
    #V - wersja

    Szczegóły opcji oraz kalibracji w katalogu doc

    Fotki:
    Zadajnik napięciowy z pomiarem: ESEM Zadajnik napięciowy z pomiarem: ESEM

    Przykładowe użycie z konsoli:
    (PWM 2 , pomiar 1, zakres pwm 0-4000 z krokiem 1000 w odstępie 500ms )

    Code:
    echo "#G 2 1 0 4000 1000 50" >> /dev/ttyS0 && cat /dev/ttyS0
    
    2 0000 +0000586
    2 1000 +0000586
    2 2000 +0000586
    2 3000 +0000586
    2 4000 +0000586


    Na końcu wysyłany jest znak końca transmisji.


    Zadajnik działa w oparciu o mikrokontroler ATmega8.
    Dwa wyjścia PWM po przefiltrowaniu podawane są na wzmacniacze operacyjne.
    Natomiast pomiar odbywa się na przetworniku ADS1100.
    Wprawdzie są to przetworniki 16 bitowe ale konstrukcja umożliwia korzystanie z zakresu o 1 bit mniej ze względu na podpięcie jednego wejścia na stałe do masy.

    Stabilizacja w oparciu o LM385 lub LM336. Który przez stabilizator (npn i lm358) daje zasilanie na atmege i plus na wzmacniacze operacyjne.

    Istnieje możliwość ustawienia innego zakresu bitowego przetwornika i uzyskanie szybszych wyników pomiaru. Możliwa też jest zmiana wzmocnienia, ale tutaj uwaga, standardowo działa on na wzmocnieniu 2, ponieważ zakres mierzonego napięcia jest od 0-2V5, natomiast przetwornik mierzy w zakresie ok 0-5V. Dla wzmocnienia 1 nie będzie wykorzystywał całego zakresu, a dla 4 i 8 zmocnienie będzie za duże.


    Pomiar wyjścia PWM2. Różnice pomiędzy kolejnymi pomiarami:

    Zadajnik napięciowy z pomiarem: ESEM

    Nie do końca rozumiem skąd bierze się błąd wynikający z opóźnienia ustalenia napięcia. Tzn podczas pomiaru w trybie 16 bitowym jest wolniejszy niż 12 bitowym. Zmiejszyłem stałe czasowe ale stabilizacja wyniku jakby się nie zmieniła.

    Zadajnik napięciowy z pomiarem: ESEM Zadajnik napięciowy z pomiarem: ESEM

    Wady:
    Niestety elektronika wejściowa jest nieprzemyślana do końca, miałem jakąś pomroczność podczas robienia układu wejściowego. I mogłoby to być lepiej zrobione. Niestety zrobiłem konfiguracje odwracającą, co sprawia że na wejście trzeba podać sygnał małej impedancji, inaczej dostaniemy błąd. Ja się początkowo tym nie przejmowałem ponieważ układ miał służyć tylko do ściągania charakterystyk i tam drobny błąd nie był istotny, ale można to zrobić lepiej stosując normalne konfiguracje dodatnią wzmacniacza.

    W planach może zrobie automatyczne wykrywanie szybkości transmisji, oraz sposób prezentowania wyniku. Może poprawie kod na nieblokujący dla przetwornika adc.


    Kod będzie dostępny na gitlabie: https://gitlab.com/trolsix/esem.git

    Wrzucam schemat, pcb nie wrzucam ze względu na błędy.
    W załączniku (zip lub gz) są także program w wersji 0.1.0 ze zródłami.
    Fusebity ustawić na oscylator kwarcowy, boden i bodlevel.
    low: 0x3f
    high: 0xc9
    --------------

    Cool! Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    trol.six
    Level 31  
    Offline 
  • #2
    trol.six
    Level 31  
    trol.six wrote:
    Nie do końca rozumiem skąd bierze się błąd wynikający z opóźnienia ustalenia napięcia. Tzn podczas pomiaru w trybie 16 bitowym jest wolniejszy niż 12 bitowym.

    Już wiem skąd ta różnica w czasie, w końcu pomiar 12 bitowy jest szybszy o ok 150ms, a więc i więcej czasu na ustawienie PWM. :)

    Napisałem ten nieblokujący program transmisji na iic, w razie błędu nie blokuje reszty. Oraz, choć nie planowałem, na buforową wysyłke przez UART. Jeśli ktoś chce aby wysyłka była między pomiarami, co się może zdarzyć przy szybkich pomiarach, to opcje w pliku uarttx.c ustawić na zero:

    Code: text
    Log in, to see the code


    Poprawiłem tam też kilka błędów. I wrzucam wersje 0.1.1

    I jeszcze jedna rzecz mi przyszła do głowy, którą jak znajde czas przetestuje. Można przecież na jedno wejście przetwornika ADC podać przez dzielnik napięcia 1,2V z ref (teraz jest zwarte do masy) i ustawić wzmocnienie na x4. Dzięki czemu uzyskałoby się pełnobitowy pomiar. :)
    .
  • #3
    trol.six
    Level 31  
    Zrobiłem przeróbkę na napięcie 1V25 dla ujemnego wejścia ADS1100. W pliku iiadc.h jest opcja UCOMM1V2 ustawiona na 1. W takim przypadku kod jest do wersji z tym napięciem. Po ustawieniu wzmocnienia x4 mamy pełne 16-bitów.

    Zadajnik napięciowy z pomiarem: ESEM

    Wrzucam błędy nieliniowości dla PWM -2V5 do 2V5

    Zadajnik napięciowy z pomiarem: ESEM

    I źródła: