Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Работа с измерением температур
- void FOC_routine_25ms(void) {
- static uint32_t step = 0;
- switch(step++) {
- case 0:
- McKit.MCU_T = get_mcu_vdd_temp();
- thermoADCval = 0;
- Vrefint_n100 = 0;
- break;
- case 1:
- calcTemp(&fetThermo);
- fetThermo.ADCval = 0;
- break;
- case 2:
- calcTemp(&motThermo);
- motThermo.ADCval = 0;
- break;
- case 3:
- motParam.R = R20_to_Rt(mc_conf.mot_param_R20, *motParam.t);
- step = 0;
- break;
- }
- }
- void FOC_routine_distribution(void) {
- static uint32_t step = 0;
- switch(step++) {
- case 0:
- // Следим за состоянием привода
- FOC_state_control_routine_1ms();
- break;
- case 1: {
- // Обновить значение усиления наблюдателя.
- float gain = 0.5f * (0.001f * 1e6f) / SQ(mc_conf.mot_param_lambda);
- float proportion = utils_map(McKit.Vdq, 0.0, McKit.Vdcf, mc_conf.observer_gain_min, mc_conf.observer_gain_max);
- motParam.gamma = proportion * gain;
- break;
- }
- case 2:
- // Шаг контроля скорости ротора
- PID_speed_step(&pid_spd);
- break;
- case 3:
- // Температуры
- motThermo.ADCval += adc.Ext_NTC;
- fetThermo.ADCval += adc.T_PCB;
- thermoADCval += adc.Vtemp;
- Vrefint_n100 += adc.Vrefint;
- static int i = 0;
- if(++i == 25) {
- i = 0;
- FOC_routine_25ms();
- }
- step = 0;
- break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement