🛠 Lire l'ADC 12 bits sans griller le SoC : la règle des 1,8 V

BeagleBone Black (TI Sitara AM3358) · intermediaire · Schéma : IMG-beaglebone-black-intermediaire-1-adc-1-8v-lecture-iio.svg — pont diviseur de résistance sur la BeagleBone Black : signal 3,3 V entrant, deux résistances, point milieu vers P9_33 (AIN4), P9_32 VDD_ADC 1,8 V et P9_34 AGND repérés, badge « 1,8 V MAX ».

Objetivos

Utilizar el ADC de 8 canales y 12 bits del AM335x a través del subsistema IIO de mainline, y sobre todo integrar la trampa n.º 1 de la BeagleBone Black en el lado analógico: las entradas AIN aceptan 1,8 V COMO MÁXIMO (alimentación analógica VDD_ADC = 1,8 V en P9_32), mientras que el resto de la placa funciona a 3,3 V. Por encima de 1,8 V, se daña el SoC.

Material

Código completo

# Repérer le device IIO et les canaux activés
ls /sys/bus/iio/devices/iio:device0/
cat /sys/bus/iio/devices/iio:device0/in_voltage0_label   # vérifier quel AIN
#!/usr/bin/env python3
"""Lit AIN4 (P9_33) sur une BBB mainline. Entrée MAX : 1,8 V !"""
import glob, time

dev = glob.glob("/sys/bus/iio/devices/iio:device*")[0]  # "ti_am335x_adc"
# L'index N dépend des canaux activés dans le DT : vérifier les labels !
CHAN = "in_voltage0_raw"

while True:
    raw = int(open(f"{dev}/{CHAN}").read)     # code 12 bits : 0..4095
    mv  = raw * 1800 / 4095                       # référence pleine échelle 1,8 V
    print(f"raw={raw}  {mv:.0f} mV (entrée directe ; diviseur ?)")
    time.sleep(0.2)

Verificación esperada

Con el cursor del potenciómetro entre P9_32 (1,8 V) y P9_34 (AGND) hacia AIN4, el valor bruto sigue de 0 a 4095 y los milivoltios calculados siguen de 0 a 1800. Al tocar el pin con el dedo: el valor deriva (entrada flotante) — prueba de que la medición está activa.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales