With our Arduino’s ADC range of 0~1023 – we have 1024 possible values – or 2 to the power of 10. If the input voltage falls between 0 and 1.25, the ADC returns numerical 0 if the voltage falls between 1.25 and 2.5, the ADC returns a numerical value of 1. So with our example ADC with 2-bit resolution, it can only represent the voltage with four possible resulting values. It is easier to imagine this with the following image: If we tried to measure a five volt range with a two-bit resolution, and the measured voltage was four volts, our ADC would return a numerical value of 3 – as four volts falls between 3.75 and 5V. A 2-bit resolution would allow four (two to the power of two) values – zero, one, two and three. The higher the resolution, the greater accuracy with which something can be represented. We measure resolution in the terms of the number of bits of resolution.įor example, a 1-bit resolution would only allow two (two to the power of one) values – zero and one. The resolution (for this article) is the degree to which something can be represented numerically. This is due to the resolution of the ADC. Why does analogRead() return a value between ? So in the interests of accuracy, use an external power supply. the TMP36 temperature sensor) – the calculated value will be wrong. This may sound trivial, however if you’re using a sensor that returns a value as a voltage (e.g. For example, if your voltage is 4.8V – the analogRead() range of 0~1023 will relate to 0~4.8V and not 0~5V. If you don’t have any option, you can use some maths in your sketch to compensate for the drop in voltage. This is important as the accuracy of any analogRead() values will be affected by not having a true 5 V. Then after that goes through the power regulator circuit you’ll have a nice 5V, for example: So if you’re gunning for accuracy, power your board from an external power supply via the DC socket or Vin pin – such as 9V DC. Some boards will return as low as 4.8 V, some higher but still below 5V. This can easily be demonstrated by connecting an Arduino Uno to USB and putting a multimeter set to measure voltage across the 5V and GND pins. For example, if you have a typical Arduino Uno board and run it from the USB socket – sure, there is 5V available to the board from the USB socket on your computer or hub – but the voltage is reduced slightly as the current winds around the circuit to the microcontroller – or the USB source just isn’t up to scratch. The value returned from analogRead() would be between zero an 1023, with zero representing zero volts and 1023 representing the operating voltage of the Arduino board in use.Īnd when we say the operating voltage – this is the voltage available to the Arduino afterthe power supply circuitry. You may recall from the first few chapters in our series that we used the analogRead() function to measure the voltage of an electrical current from sensors and so on using one of the analogue input pins. Please read this post entirely before working with AREF the first time. However first we’ll do some revision to get you up to speed. In this tutorial we’ll look at how you can measure smaller voltages with greater accuracy using the analogue input pins on your Arduino or compatible board in conjunction with the AREF pin. Learn how to measure smaller voltages with greater accuracy using your Arduino.
0 Comments
Leave a Reply. |
Details
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |