🛠 Entrées analogiques et capteur de température interne : le ADC et ses limites
Objetivos
Aprovechar las 14 entradas analógicas y los 2 convertidores ADC del Teensy 4.0, conociendo sus limitaciones reales: rango fijo de 0–3,3 V, ningún pin AREF (analogReference NO tiene NINGÚN efecto), resolución de hardware hasta 12 bits pero —citando a Paul Stoffregen— «el número efectivo de bits es de aproximadamente 10» debido al ruido. También añadirás el sensor de temperatura integrado en el chip, útil para vigilar el calentamiento durante el overclocking.
Material
- 1 Teensy 4.0 + cable USB
- 1 potenciómetro de 10 kΩ: pata 1 en 3,3 V (¡no 5 V!), pata 3 en GND, cursor en A0
- Protoboard + cables
- Biblioteca InternalTemperature (https://github.com/LAtimes2/InternalTemperature) mediante el gestor de la IDE o copiándola en la carpeta libraries
Código completo
// 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);
}
Verificación esperada
Gira el potenciómetro: el valor sigue entre 0 y 1023 y los voltajes permanecen por debajo de 3,30 V. Frota el chip con el dedo o sopla sobre él: la temperatura del die cambia unos décimos de grado. Pista de calibración casera: registra la temperatura en reposo (tarjeta fría) y luego tras unos minutos de cálculo intensivo — el M7 a 600 MHz se calienta visiblemente, lo cual se vuelve crítico en overclocking (≥912 MHz requiere refrigeración según las pruebas de la comunidad).
Errores frecuentes
- Aplicar más de 3,3 V a una entrada analógica: rango fijo de 0–3,3 V, ninguna protección para 5 V — es necesario un divisor de tensión para medir, por ejemplo, una pila de litio.
- Llamar a analogReference heredada de código Arduino de 8 bits: sin efecto en Teensy 4.0 (no hay pin AREF) — la referencia es la interna de 3,3 V.
- Reclamar 12 bits útiles: el hardware puede hacerlo, el ruido no; quédate en 10 bits efectivos, o promedia varias lecturas (sobremuestreo) para ganar una fracción de bit.
- Comparar tensiones con 5.0f en código portado de Arduino: el Teensy 4.0 es un mundo de 3,3 V, revisa cada conversión bruto → voltios.
- Olvidar que no hay DAC, ni PGA, ni táctil capacitivo en el 4.0 (presentes en los 3.5/3.6): para una salida de audio analógica limpia, sal por I2S hacia un DAC externo o usa la salida MQS.
- Los 4 comparadores analógicos existen pero requieren la programación directa de los registros IMXRT — fuera del alcance para principiantes.
Otros tutoriales para esta placa
- 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
Ejemplos de código para esta placa
clignotante.inoArduinotouche-capacitive.inoArduinoanalogique-12-bits.inoArduinomidi-piano.inoArduinopwm-respiration.inoArduinoservo-angle.inoArduino