adc-current-monitor.ino

BeagleConnect QuadESC: Controlador BLDC de 4 canales · Archivo : adc-current-monitor.ino · Lenguaje : C · Uso : Lire la tension d'une phase moteur via ADC pour surveiller le courant.

Lectura periódica de un canal ADC para estimar el voltaje de fase del motor.

Configura un canal ADC específico. El ejemplo asume resolución de 12 bits y referencia de 3.3V. Ajusta el factor de escala según el shunt de corriente y el amplificador operacional. Usa west build y flashea en la placa.

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);
    }
}

← Volver a la ficha