am13e23019-adc-current-read.ino

BeagleConnect QuadESC : Contrôleur BLDC 4 canaux · Fichier : am13e23019-adc-current-read.ino · Langage : C · Usage : Lire les valeurs brutes du convertisseur ADC pour la mesure du courant moteur.

Acquisition de données analogiques via l'ADC interne pour surveiller les 12 canaux de courant de la carte.

Le TI AM13E23019 possède un ADC haute résolution. Cette lecture doit être synchronisée avec la PWM des moteurs pour éviter le bruit. Utilisez les filtres numériques pour stabiliser les mesures de courant des drivers DRV8323S.

am13e23019-adc-current-read.ino

#include <ti/devices/am13e2x/inc/am13e2x.h>
#include <ti/drv/adc/adc.h>
#include <ti/drv/adc/soc/adc_soc.h>
#include <ti/drv/uart/UART_stdio.h>

ADC_Handle adcHandle;
ADC_Params adcParams;
uint16_t adcValue;

void init_adc(void) {
    ADC_Params_init(&adcParams);
    adcParams.channel = ADC_CHANNEL_0; // Supposons le canal courant moteur 1
    adcParams.resolution = ADC_RESOLUTION_12BIT;
    
    adcHandle = ADC_open(ADC_INSTANCE_0, &adcParams);
    if (adcHandle == NULL) {
        UART_printf("Erreur ADC\n");
    }
}

void read_current(void) {
    if (ADC_read(adcHandle, &adcValue) == ADC_STATUS_SUCCESS) {
        // Conversion en Ampères (exemple théorique, nécessite calibration)
        float voltage = (adcValue / 4095.0f) * 3.3f;
        float current = (voltage - 1.65f) * 10.0f; // Offset 1.65V, gain 10V/A
        UART_printf("Courant: %.2f A\n", current);
    }
}

← Retour à la fiche