adc-current-monitor.ino

BeagleConnect QuadESC : Contrôleur BLDC 4 canaux · Fichier : adc-current-monitor.ino · Langage : C · Usage : Lire la tension d'une phase moteur via ADC pour surveiller le courant.

Lecture périodique d'un canal ADC pour estimer la tension de phase moteur.

Configure un canal ADC spécifique. L'exemple suppose une résolution de 12 bits et une référence de 3.3V. Ajuste le facteur d'échelle selon ton shunt de courant et ton amplificateur opérationnel. Utilise west build et flashe sur la carte.

adc-current-monitor.ino

#include <zephyr/kernel.h>
#include <zephyr/drivers/adc.h>

#define ADC_NODE DT_ALIAS(adc0)
#define ADC_CHANNEL 0
static const struct adc_dt_spec adc_channel = ADC_DT_SPEC_CHANNEL_GET(ADC_NODE, ADC_CHANNEL);

void main(void) {
    int16_t buf;
    struct adc_sequence sequence = { .channels = 1, .buffer = &buf, .buffer_size = sizeof(buf) };
    if (adc_channel_setup_dt(&adc_channel)) return;
    while (1) {
        if (!adc_read_dt(&adc_channel, &sequence)) {
            float voltage = buf * 3.3f / 4095.0f; // Exemple 12-bit
            printk("Phase Voltage: %.3f V\n", voltage);
        }
        k_msleep(100);
    }
}

← Retour à la fiche