01-29-2022, 06:11 AM
(12-17-2020, 08:14 PM)wilkxt napisał(a): sprawdzimy ten ujemny dzielnik
Znowu trochę czasu minęło i teraz testuję aktualny firmware 1.47a - jest postęp że da się wstawić wartość ujemną -23 jako mnożnik, jednak nadal nie działa to poprawnie z opisywanym pomiarem ujemnego napięcia przez dzielnik.
Wartość z ADC jest przesuwana o wartość wpisaną w polu "kalibracja" (u mnie ujemną około -3600 bo chcę uzyskać wskazania "zero" przy 0V przed dzielnikiem co daje około +4,4V podawane na LK) i niestety jeśli (ADC + kalibracja) jest ujemne, jest obcinane do zera co jest błędem. Jakby została tam wartość ujemna, po pomnożeniu przez mnożnik -23 dostałbym dobry odczyt napięcia (normalnie około 54V).
Jeszcze raz:
dzielnik: wejście - rezystor 100k - INPA1 - rezystor 4k75 - +5V
na wejściu dzielnika 0V, na wejściu INPA1 +4,4V co w 12-bitowym ADC o zakresie 0...+5V daje wynik około 3600
plus kalibracja -3600 by dostać 0 co bez względu na mnożnik daje odczyt 0V
na wejściu dzielnika -52V, na wejściu INPA1 +2,14V, z ADC 1750, plus kalibracja -3600 co daje -1850, *5/4096 daje około -2,25V razy mnożnik -23 co daje około 52V
ważne by wartość (ADC + kalibracja) traktować jako ze znakiem i nie obcinać do zera jeśli jest ujemna (choć sama wartość z ADC jest bez znaku 0...4095)
jak już jesteśmy przy matematyce to przyjrzałbym się zaokrągleniom wokół zera, dla WCS1800 zmieniając kalibrację co 1 widzę spore "skoki" tak jakby coś tam nie było zaokrąglane poprawnie (przeskok z -0,03 na 0 potem 0,01 i 0,03). Dzielenie liczb całkowitych w języku C ma to do siebie że zaokrągla w stronę zera a nie najbliższej wartości, przed dzieleniem trzeba skorygować dzielną o +/- pół dzielnika zależnie od jej znaku. Tyle zgaduję gdzie może być problem nie widząc kodu
<t></t>