Controle pid da roda » Histórico » Revisão 8
Revisão 7 (Onias Castelo Branco, 30/04/2017 02:23 h) → Revisão 8/12 (Renan Pícoli, 01/05/2017 16:13 h)
h1. Controle pid da roda
Tutorial - criando um modelo: https://www.mathworks.com/help/simulink/gs/create-a-simple-model.html
Tutorial - modelando um motor: https://www.mathworks.com/videos/modeling-a-dc-motor-68852.html
Design PID: http://www.mathworks.com/help/control/pid-controller-design.html
frequência do contador do pwm (amostragem do pwm)= 20MHz
período da onda do pwm é 1/20kHz
Cálculo da frequência de amostragem do pwm: 20MHz = SYSCLK/AHB/APB1/APB2*picoli/renan
página 152 e 640 do reference manual (RM0090 - revisão 11)
pwm.cpp
TIM_TimeBaseStructure.TIM_Prescaler=(SystemCoreClock/20000000)-1;
TIM_TimeBaseStructure.TIM_Period=168000000/168000;
/roboime-firmware/src/boot/system_stm32f4xx.c
System Clock source | PLL (HSE)
*-----------------------------------------------------------------------------
* SYSCLK(Hz) | 168000000
*-----------------------------------------------------------------------------
* HCLK(Hz) | 168000000
*-----------------------------------------------------------------------------
* AHB Prescaler | 1
*-----------------------------------------------------------------------------
* APB1 Prescaler | 4
*-----------------------------------------------------------------------------
* APB2 Prescaler | 2 System Clock source | PLL (HSE)
*-----------------------------------------------------------------------------
* SYSCLK(Hz) | 168000000
*-----------------------------------------------------------------------------
* HCLK(Hz) | 168000000
*-----------------------------------------------------------------------------
* AHB Prescaler | 1
*-----------------------------------------------------------------------------
* APB1 Prescaler | 4
*-----------------------------------------------------------------------------
* APB2 Prescaler | 2
Interrupção do timer de controle do motor a 1k
/roboime-firmware/src/control/TimerTime.cpp
TIM_TimeBaseStructure.TIM_Prescaler=83;
TIM_TimeBaseStructure.TIM_Period=1000;
resposta do motor de velocidade 2.5m/s
!roboime.PNG!