Modifications

Sauter à la navigation Sauter à la recherche
579 octets supprimés ,  3 octobre 2018 à 21:09
Ligne 60 : Ligne 60 :  
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.
 
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.
   −
As the M0 does have an 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). This means that the accuracy of reading is 3.3 / 4095 = 0.000805 Volts, so 0.805 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).
 +
with 12bits we have an reading accuracy of 3.3 / 4095 = 0.000805 Volts, so 0.805 mV.
 
   
 
   
 
=== Low resolution reading ===
 
=== Low resolution reading ===
Ligne 67 : Ligne 68 :  
=== High resolution reading ===
 
=== High resolution reading ===
   −
/* ---------------------------------------------
+
<syntaxhighlight lang="c">
* | Code d'exemple du kit d'expérimentation
+
// where is wired the TMP36
* |    Arduino
+
const int temperaturePin = A3; // analogue input
* | CIRC-10 .: Température :.
  −
* ---------------------------------------------
  −
* Un programme simple qui affiche la température
  −
* actuelle dans la fenêtre de monitoring/débogage
  −
*/
  −
 
  −
// Variable pour broche du TMP36
  −
const int temperaturePin = A3; // entrée analogique
  −
  // sur laquelle la broche Vout du TMP36 est
  −
  // connectée. La résolution est 10mv/degré
  −
  // centigrade avec 500 mV de décalage/offset
  −
  // pour permettre la lecture de température
  −
  // négative.
      +
// Executed once when starting the microcontroler
 
void setup() {
 
void setup() {
   Serial.begin(9600); // Démarrer la connexion série avec l'ordinateur.
+
  // start serial connexion with the computer
      // Pour voir le le résultat, ouvrez le « moniteur série », le
+
   Serial.begin(9600);  
      // dernier bouton dans la barre d'outil.
+
  // Upgrade the ADC resolution from 10 to 12 bits.
      // (celui qui ressemble à une boite ayant une antenne).
   
   analogReadResolution( 12 );
 
   analogReadResolution( 12 );
 
}
 
}
   −
void loop() { // s'exécute encore et encore
+
// Executed again and again
   // Acquérir la tension lue sur le senseur de température.
+
void loop() {  
 +
   // read the voltage of TMP36
 
   float voltage = getVoltage(temperaturePin);  
 
   float voltage = getVoltage(temperaturePin);  
 
   Serial.print( "Voltage : " );
 
   Serial.print( "Voltage : " );
 
   Serial.print( voltage );
 
   Serial.print( voltage );
 
   Serial.println( " Volts" );  
 
   Serial.println( " Volts" );  
   // conversion de 10mV par degré avec un décalage (offset) de 500 mV.
+
   // convert voltage to temperature
   //  Degrés = ((tension - 500mV) fois 100)
+
   //  Degrees = (voltage - 500mV) multiplied by 100
 
   float temperature = (voltage - .5) *100;
 
   float temperature = (voltage - .5) *100;
 
   Serial.print( "Temperature: " );
 
   Serial.print( "Temperature: " );
   Serial.print(temperature); //affiche résultat
+
   Serial.print(temperature);  
 
   Serial.println( " °C" );
 
   Serial.println( " °C" );
 
   Serial.println( " " );
 
   Serial.println( " " );
   delay(1000); // Attendre une seconde.
+
   delay(1000); // wait 1 second
 
}
 
}
    
/*
 
/*
  * getVoltage() - retourne la tension d'une entrée analogique identifiée par 'pin'
+
  * getVoltage() - return the voltage of an analog pin  
 
  */
 
  */
 
float getVoltage(int pin){
 
float getVoltage(int pin){
   // Convertir valeur digital de 0 à 4095 vers une valeur entre 0 et 3.3 volts.
+
   // Convert digital value between 0 & 4095 to
   // (chaque unité lue vaut ~ 3.3 / 4095 = 0.805 millivolts
+
  //    voltage between 0 & 3.3 volts.
  Serial.println( analogRead(pin) );
+
   //   (each unit equal 3.3 / 4095 = 0.805 millivolts)
 
   return (analogRead(pin) * .000805);
 
   return (analogRead(pin) * .000805);
 
}
 
}
 +
</syntaxhighlight>
    
{{ENG-CANSAT-TRAILER}}
 
{{ENG-CANSAT-TRAILER}}
29 917

modifications

Menu de navigation