🛠 Entrées analogiques et capteur de température interne : le ADC et ses limites
Objectifs
Exploiter les 14 entrées analogiques et les 2 convertisseurs ADC du Teensy 4.0, tout en connaissant leurs limites réelles : plage figée 0–3,3 V, pas de broche AREF (analogReference n'a AUCUN effet), résolution matérielle jusqu'à 12 bits mais — citation de Paul Stoffregen — « effective number of bits is about 10 » à cause du bruit. Vous ajouterez aussi le capteur de température sur la puce, pratique pour surveiller l'échauffement en overclocking.
Matériel
- 1 Teensy 4.0 + câble USB
- 1 potentiomètre 10 kΩ : patte 1 sur 3,3 V (pas 5 V !), patte 3 sur GND, curseur sur A0
- Breadboard + fils
- Bibliothèque InternalTemperature (https://github.com/LAtimes2/InternalTemperature) via le gestionnaire de l'IDE ou copie dans le dossier libraries
Code complet
// Lecture A0 + température du die.
#include <InternalTemperature.h>
void setup {
Serial.begin(9600);
analogReadResolution(10); // 0..1023 ; au-delà, du bruit sur T4
}
void loop {
int raw = analogRead(A0); // 0..1023
float volts = raw * (3.3f / 1023.0f); // référence fixe 3,3 V
float degC = InternalTemperature.readTemperatureC;
Serial.printf("A0 = %d (%.2f V) die = %.1f C\n", raw, volts, degC);
delay(500);
}
Vérification attendue
Tournez le potentiomètre : la valeur suit entre 0 et 1023 et les volts restent sous 3,30 V. Frottez la puce du doigt ou soufflez dessus : la température du die bouge de quelques dixièmes de degré. Piste de calibration maison : relevez la température au repos (carte froide) puis après quelques minutes de calcul intensif — le M7 à 600 MHz chauffe visiblement, ce qui devient critique en overclocking (≥912 MHz exige un refroidissement selon les tests communautaires).
Erreurs fréquentes
- Appliquer plus de 3,3 V sur une entrée analogique : plage figée 0–3,3 V, aucune protection 5 V — un diviseur de tension s'impose pour mesurer une pile lithium par exemple.
- Appeler analogReference héritée d'un code Arduino 8 bits : sans effet sur Teensy 4.0 (pas de broche AREF) — la référence est le 3,3 V interne.
- Réclamer 12 bits utiles : le matériel sait faire, le bruit non ; restez en 10 bits effectifs, ou moyennez plusieurs lectures (suréchantillonnage) pour gagner une fraction de bit.
- Comparer les tensions avec 5.0f dans un code porté d'Arduino : le Teensy 4.0 est un monde 3,3 V, revérifiez chaque conversion brut → volts.
- Oublier qu'il n'y a ni DAC, ni PGA, ni tactile capacitif sur le 4.0 (présents sur les 3.5/3.6) : pour une sortie audio analogique propre, sortez par I2S vers un DAC externe ou utilisez la sortie MQS.
- Les 4 comparateurs analogiques existent mais demandent la programmation directe des registres IMXRT — hors du périmètre débutant.
Autres tutoriels pour cette carte
- Premiers pas sur le Teensy 4.0 : Teensyduino, Loader et premier Blink
- GPIO et PWM sous 3,3 V : les règles d'or du Teensy 4.0
- Piloter un ruban WS2812 sans bloquer le CPU : WS2812Serial et OctoWS2811
- Contrôleur MIDI USB : un potard qui joue du piano (MIDIx4/MIDIx16)
- Comprendre la mémoire : 2 Mo de flash, 1 Mo de RAM TCM/DMA, EEPROM émulée et LittleFS
- Deux ports USB simultanés : périphérique 480 Mbit/s ET hôte USB sur les pastilles
Exemples de code pour cette carte
clignotante.inoArduinotouche-capacitive.inoArduinoanalogique-12-bits.inoArduinomidi-piano.inoArduinopwm-respiration.inoArduinoservo-angle.inoArduino