UNI-T UT71: problemy z sigrok

Podczas testowania kondensatorów, zauważyłem nieciekawą właściwość sigrok’a.

utc71_100nfWartości wysyłane do komputera przy pomiarach pojemności były dziwnie… zerowe. Patrząc na listing zobaczyłem, że w terminalu wyświetlają się dane w pełnych jednostkach SI z dokładnością do 6 zer po przecinku. W przypadku pojemności są to Farady. Ponieważ jednak:
1F = 1 000mF = 1 000 000uF
czyli:
1uF = 0.000001 F
Mierząc kondensator 22 uF, miernik pokazał wartość: 21.178 [uF]. Niestety zamiast tego, na konsoli zobaczyłem:

P1: 0.000021 F AUTO
Zmiana zakresu nic nie dała, zniknął tylko napis auto.
P1: 0.000021 F
P1: 0.000021 F
P1: 0.000021 F

Oznacza to, że dla aplikacji wartości pojemności rzędu setek nF,  będą widoczne jako „0.000001”. Umówmy się, w elektronice 100 nF to raczej… dużo. C’mon?!

Przyjrzyjmy się jeszce raz wydrukowi, tym razem z większym poziomem logowania (parametr „-l 4”):

sigrok-cli --driver=uni-t-ut71c:conn=1a86.e008 --continuous -l 4
...
sr: [00:19.679655] uni-t-dmm: DMM packet:   32 31 31 39 33 34 35 30 32 0d 0a 00 00 00
sr: [00:19.679714] ut71x: Applying factor 0.000000, new value is 0.000021.
sr: [00:19.679739] session: bus: Received SR_DF_ANALOG packet (1 samples).
cli: Received SR_DF_ANALOG (1 samples).
P1: 0.000021 F
sr: [00:20.411691] uni-t-dmm: DMM packet:   32 31 31 39 32 34 35 30 32 0d 0a 00 00 00
sr: [00:20.411740] ut71x: Applying factor 0.000000, new value is 0.000021.
sr: [00:20.411760] session: bus: Received SR_DF_ANALOG packet (1 samples).
cli: Received SR_DF_ANALOG (1 samples).
P1: 0.000021 F
sr: [00:21.195606] uni-t-dmm: DMM packet:   32 31 31 39 33 34 35 30 32 0d 0a 00 00 00
sr: [00:21.195647] ut71x: Applying factor 0.000000, new value is 0.000021.
sr: [00:21.195664] session: bus: Received SR_DF_ANALOG packet (1 samples).
cli: Received SR_DF_ANALOG (1 samples).

Przeanalizujmy ramkę:

bajt 0 1 2 3 4 5 6 7 8 9 10
Ramka (int) 32 31 31 39 33 34 35 30 32 0d 0a
Ramka (chr) 2 1 1 9 3 4 5 0 2 \r \n
Znaczenie Wyświetlacz Zakres Funkcja AC/DC AUTO \r \n

Zwróćcie uwagę na bajt 6: funkcja. Zgodnie z instrukcją, wartość=5 oznacza to pomiar pojemności. Dla tej liczby, zakres (bajt 5): 1:40n 2:400n 3:4u 4:40u 5:400u 6: 4m 7:40m. Wynika z tego,  że sam miernik wysyła poprawne dane a sigrok je poprawnie odbiera.

Spróbujmy teraz podłączyć kondensator o pojemności 100nF.

$sigrok-cli --driver=uni-t-ut71c:conn=1a86.e008 --continuous
...
P1: 0.000000

Z podwyższonym poziomem logowania:
$sigrok-cli --driver=uni-t-ut71c:conn=1a86.e008 --continuous -l 4
...
cli: Received SR_DF_ANALOG (1 samples).
P1: 0.000000 F AUTO
sr: [01:26.748079] uni-t-dmm: DMM packet: 31 31 32 36 32 32 35 30 31 0d 0a 00 00 00
sr: [01:26.748108] ut71x: Applying factor 0.000000, new value is 0.000000.
sr: [01:26.748121] session: bus: Received SR_DF_ANALOG packet (1 samples).

Przechwyconą ramkę można zdekodować jako:

bajt 0 1 2 3 4 5 6 7 8 9 10
Ramka (int) 31 31 32 36 32 32 35 30 31 0d 0a
Ramka (chr) 1 1 2 6 2 2 5 0 1 \r \n
Znaczenie Wyświetlacz Zakres Funkcja AC/DC AUTO \r \n

utc71_100nfZnowu:  dane odbierane są identyczne z tym, co jest aktualnie wyświetlane na ekranie miernika: liczby 11262, funkcja pomiaru pojemności (5); zakres też jest poprawny (bajt 5: 2:400n), „Auto” – działa (bajt 8 ustawiony na 1) – jedynie sigrok dziwnie interpretuje poprawne dane i zwraca same zera. Oczywiście jest to zgodne z przyjętym zaokrągleniem do 0.000000F. Sprawia jednak, że takie wyniki są bezużyteczne.

Co dalej?

Zgłosiłem błąd 700 do bugzilli projektu, opis możecie znaleźć tutaj.

Źródło

Dodaj komentarz