John Errington’s Experiments with an Arduino
On noiembrie 28, 2021 by adminMăsurarea precisă a tensiunii cu placa Arduino.
Gama de microcontrolere Arduino oferă intrări analogice care pot fi folosite pentru a măsura tensiunea. Putem folosi acest lucru pentru a construi un voltmetru.
Funcția analogRead() citește tensiunea și o convertește într-un număr între 0 și 1023.
Tutorialul Arduino (1) http://arduino.cc/en/Tutorial/ReadAnalogVoltage are acest exemplu:
Acest lucru este GREȘIT! Pentru un rezultat mai bun folosiți (sensorValue + 0.5) * 5.0 / 1024.0 – vezi explicația aici
Acest lucru ne face să credem că o citire de 0 corespunde unei intrări de 0.000V; iar 1023 corespunde unei tensiuni de intrare de 5.000 volți. Acest lucru nu este în întregime adevărat. Să ne uităm la fișa tehnică și să vedem ce ne spune.
Cipul ATMEGA folosit pe Arduino are intrări analogice care pot fi folosite pentru a măsura cu precizie tensiunea
Microcontrolerul Arduino este prevăzut cu un convertor analog-numeric (ADC) de tip aproximare succesivă care are următoarele specificații. Referințele indicate între paranteze astfel (2: 26.1) se referă la secțiuni din fișa tehnică AtMega 2560.
(2: 26.1): ATMega328 și 32U4 au valori similare.
Aceste specificații ne spun că Arduino este capabil să măsoare tensiuni cu o precizie
de ± 2 LSB – deci eroarea maximă este de 2 biți (4 zecimale) în 10 biți (1024 zecimale)
Din acest motiv, cel mai rău caz de precizie a convertorului este de 4 / 1024 sau 1 parte din 256, adică 0,25%.
Dar limita preciziei de măsurare depinde de referința de tensiune utilizată.
Arduino are propriile sale referințe de tensiune – dar acestea nu sunt foarte precise
Cipul – în funcție de tip – este prevăzut cu UNELE dintre următoarele tensiuni de referință (6)
DEFAULT: referința analogică implicită de 5 volți (pe plăcile Arduino de 5V) sau 3.3 volți (pe plăcile Arduino de 3,3V)
INTERNAL: o referință încorporată, egală cu 1,1 volți pe plăcile cu cipuri ATmega168 sau ATmega328 și 2,56 volți pe plăcile cu cipuri ATmega8 și 32U4.
aceasta este produsă intern prin amplificarea referinței de 1,1V. 2,56V este doar o valoare „tipică”.
EXTERN: tensiunea aplicată la pinul AREF (numai de la 0 la 5V). (MicroPro 32U4, NodeMCU și ESP32 nu au un pin pentru o referință externă – a se vedea mai jos pentru mai multe informații.)
Precizia referinței față de care se măsoară tensiunea – folosind oricare dintre referințele de mai sus – este în cel mai bun caz de numai 5,25 – 5,0/5,0 * 100 = 5% – mult mai rău decât cei 0,25% pe care îi oferă ADC-ul. În mod clar, dacă dorim să măsurăm tensiuni cu acuratețea oferită de Arduino, referințele on-chip nu sunt suficient de bune. Diagrama de mai jos arată aceste erori în comparație cu o referință de 4,096V descrisă mai jos.
Lasă un răspuns