adc-current-monitor.ino
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);
}
}