Pytanie:
Odczyt analogowego napięcia wejściowego UNO nie jest dokładny
user30878
2015-03-16 18:50:55 UTC
view on stackexchange narkive permalink

Mój kod pętli jest taki:

  // odczytaj wejście na pinie analogowym 0: int sensorValue = analogRead (A0); // wydrukuj odczytaną wartość: Serial.println ( float (sensorValue * 5000.0 / 1023)); delay (1); // opóźnienie między odczytami dla stabilności  

Kiedy czytam 5V, daje to 5000 mV. Gdy odczytam pin 3,3V to daje 3211 mV. Gdy odczytam akumulator 1442 mV, to daje 1392. Co sądzisz o tej sytuacji?

UWAGA: Nie ma żadnego obwodu dodatkowego. Tylko przewody.

Skąd wiesz, że bateria 1442 mV ma faktycznie 1442 mV? Używasz woltomierza? Ponadto, jeśli mierzysz pin 3,3 V, zwykle jest on trochę wyłączony i nie zdziwiłbym się, widząc 3211 mV (lub 3400 mV) z regulatora 3300 mV
Przy okazji nie jest konieczne użycie float (...) do wypisania numeru przez linię szeregową, przyjmie on dowolny typ danych :)
Zarówno twój pomiar (np. Za pomocą woltomierza), jak i ADC Arduino mają ograniczoną dokładność (por. Tabela 28.7 w arkuszu danych ATmega328). Dlatego nigdy nie powinieneś oczekiwać, że zgodzą się na wszystkie podane cyfry.
Wszystkie komentarze są prawdziwe, ale poprawnie podaje 5V, dlaczego? A mój woltomierz nie jest uszkodzony. Odczytałem też wyjście z układu scalonego napięcia refence, nadal jest błąd 40-50 mV.
Dwa odpowiedzi:
Milliways
2015-03-17 11:08:20 UTC
view on stackexchange narkive permalink

Twoje pytanie zawiera wiele błędów i nieporozumień.

Po pierwsze, maksymalna moc wyjściowa kolejnego przybliżenia ADC (tutaj 0x3ff) odpowiada Vref - 1 LSB Napięcie będzie zatem sensorValue * 5000.0 / 1024 . Zwróć uwagę, że ten błąd jest mniejszy niż błąd ± 2 LSB.

Pomiar 5V jest daremny, ponieważ jest to domyślne odniesienie analogowe, więc wynik musi wynosić 0x3ff.

Pomiar 3,3 Pin V poda względną wartość do odniesienia 5V. Oba są produkowane z dostępnych w handlu regulatorów o dokładności ± 5%.

Mylisz również precyzję odczytu (10 bitów) z dokładnością, która jest najlepsza ± 5% ± 2 LSB.

Jeśli naprawdę chcesz zmierzyć napięcie, powinieneś użyć wewnętrznego odniesienia pasma wzbronionego 1,1 V. Oczywiście musiałbyś zmniejszyć napięcie 5 V i 3,3 V do mniej niż 1,1 V. Wprowadza to kolejny potencjalny błąd (nawet jeśli używasz rezystorów 1%), ale daje dokładniejsze wyniki, które są bezpośrednio porównywalne.

Czy jest 1,1V ref. istnieje w UNO?
Czy na pewno nie jest to 1023, ale 1024?
I zauważ, że pin 5V nie jest na 5V, jego 5,15 V. Myślę, że problem jest taki.
@user30878 dla 1.1V, patrz http://arduino.cc/en/Reference/AnalogReference re 1024 patrz http://arduino.cc/en/Reference/AnalogRead (lub przeczytaj arkusz danych Atmega)
Tak, jeśli pin 5 V ma wartość 5,15, napięcie odniesienia będzie wysokie. Zatem aby poprawić wyniki, musisz pomnożyć przez „5 / 5,15 = 0,97”. Daje to dane, które z grubsza zgadzają się z tym, co masz. (3,20 zamiast 3,3 i 1398 zamiast 1442). Plus to, co inni powiedzieli o dokładności.
fuenfundachtzig
2015-03-17 00:15:42 UTC
view on stackexchange narkive permalink

Zarówno pomiary (np. woltomierz), jak i ADC Arduino mają ograniczoną dokładność (por. tabela 28.7 w arkuszu danych ATmega328). Dlatego nigdy nie powinieneś oczekiwać, że zgodzą się na wszystkie podane cyfry.

Odnośnie kwestii poruszonych w Twoim komentarzu:

Wszystkie komentarze są prawdziwe, ale daje 5V poprawnie, dlaczego?

analogRead zwraca wartość z przedziału od 0 do 1023. Dla wszystkich napięć powyżej (nieznanego) progu zbliżonego do 5 V nasyca się i zawsze zwraca 1023, nie ważne, jakie jest rzeczywiste napięcie wejściowe. Ta wartość jest następnie konwertowana w kodzie na 5.000 V. To, co prawdopodobnie widzisz, to tylko maksymalna wartość, jaką może zwrócić kod, a nie dokładny pomiar napięcia wejściowego 5 V.

A mój woltomierz nie jest uszkodzony.

Nie musi być uszkodzony. Nadal będzie wyłączony. Zajrzyj do instrukcji, aby znaleźć nominalną dokładność. (Należy również pamiętać, że dokładność i precyzja to dwie różne rzeczy i różnią się od liczby cyfr na wyświetlaczu, zakładając, że woltomierz jest cyfrowy).

Dzięki za oczyszczenie mojego umysłu na maksymalne napięcie. Już to wiem, ale byłem trochę zdezorientowany.
Mam na myśli woltomierz działa poprawnie.


To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...