pwm-imu-heater.ino
Genera una señal PWM para controlar la calefacción integrada del LSM6DS3TR-C.
El sensor LSM6DS3TR-C tiene calefacción interna controlada por PWM. Este código configura un temporizador (p. ej., TIM3) para generar una señal PWM. La frecuencia y el ciclo de trabajo deben ajustarse según las especificaciones de la hoja de datos del sensor para evitar el sobrecalentamiento. El objetivo es mantener una temperatura constante para reducir la deriva.
pwm-imu-heater.ino
#include "stm32c5xx_hal.h"
TIM_HandleTypeDef htim3;
void MX_TIM3_Init(void) {
TIM_ClockConfigTypeDef sClockSourceConfig = {0};
TIM_MasterConfigTypeDef sMasterConfig = {0};
TIM_OC_InitTypeDef sConfigOC = {0};
htim3.Instance = TIM3;
htim3.Init.Prescaler = 144 - 1; // 144 MHz / 144 = 1 MHz
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
htim3.Init.Period = 1000 - 1; // 1 kHz PWM
HAL_TIM_PWM_Init(&htim3);
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 500; // 50% Duty Cycle
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
}
int main(void) {
HAL_Init();
MX_TIM3_Init();
while(1) {
// Ajuster la puissance de chauffe selon la température lue
// Ex: si Temp < 40C, Pulse = 800, sinon Pulse = 200
HAL_Delay(100);
}
}