Ligne 56 : |
Ligne 56 : |
| | | |
| == Testing the sensor == | | == Testing the sensor == |
− | In the both case, the measured would be identical. | + | In the both case show here under, the measured temperature would be identical. |
| | | |
− | However, by default, the Arduino's {{fname|analogRead()}} use a 10 bit coding. So the range of possible value return by {{fname|analogRead()}} is 0 to 1024 (for 0 to 3.3v). This means that the accuracy of reading is 3.3 / 1024 = 0.0032 Volts, so 3.2 mV. | + | {{ambox|text=However, if your project does need a high resolution analog reads then it may be appropriate to explore the "High Resolution Reading" example.}} |
| + | |
| + | By default, the Arduino's {{fname|analogRead()}} use a 10 bit coding. So the range of possible value return by {{fname|analogRead()}} is 0 to 1024 (for 0 to 3.3v). This means that the accuracy of reading is 3.3 / 1024 = 0.0032 Volts, so 3.2 mV. |
| | | |
| As the M0 does have an ADC (''Analog-to-Digital Converter'') with a precision of 12 bits, we could also use the {{fname|analogReadResolution( 12 )}} to upgrade the {{fname|analogRead()}} resolution to 12 bits. In such case, the range of possible value return by {{fname|analogRead()}} is 0 to 4095 (for 0 to 3.3v). As we have a real 12bit ADC, we can rely on that accuracy (it is not a 10 bits ADC storing the data into a 12 bits integer). | | As the M0 does have an ADC (''Analog-to-Digital Converter'') with a precision of 12 bits, we could also use the {{fname|analogReadResolution( 12 )}} to upgrade the {{fname|analogRead()}} resolution to 12 bits. In such case, the range of possible value return by {{fname|analogRead()}} is 0 to 4095 (for 0 to 3.3v). As we have a real 12bit ADC, we can rely on that accuracy (it is not a 10 bits ADC storing the data into a 12 bits integer). |
Ligne 96 : |
Ligne 98 : |
| */ | | */ |
| float getVoltage(int pin){ | | float getVoltage(int pin){ |
− | | + | // AS the sketch does not call the analogReadResolution() |
− | // Convert digital value between 0 & 4095 to | + | // function to change the analog reading resolution |
| + | // THEN Arduino use the defaut 12 bits resolution! |
| + | // Under 12 bits resolution, the analogRead() returns |
| + | // a value between 0 & 1024. |
| + | // |
| + | // Convert digital value between 0 & 1024 to |
| // voltage between 0 & 3.3 volts. | | // voltage between 0 & 3.3 volts. |
− | // (each unit equal 3.3 / 4095 = 0.805 millivolts) | + | // (each unit equal 3.3 / 1024 = 3.2 millivolts) |
− | return (analogRead(pin) * .000805); | + | return (analogRead(pin) * .0032); |
| } | | } |
| </syntaxhighlight> | | </syntaxhighlight> |
Ligne 110 : |
Ligne 117 : |
| Which produce the following result on the Serial Monitor | | Which produce the following result on the Serial Monitor |
| | | |
− | [[Fichier:ENG-CANSAT-TMP36-70.png]] | + | [[Fichier:ENG-CANSAT-TMP36-60.png|640px]] |
| | | |
| {{ENG-CANSAT-TRAILER}} | | {{ENG-CANSAT-TRAILER}} |
Ligne 162 : |
Ligne 169 : |
| Which produce the following result on the Serial Monitor | | Which produce the following result on the Serial Monitor |
| | | |
− | [[Fichier:ENG-CANSAT-TMP36-70.png]] | + | [[Fichier:ENG-CANSAT-TMP36-70.png|640px]] |
| | | |
| {{ENG-CANSAT-TRAILER}} | | {{ENG-CANSAT-TRAILER}} |