Projeto

Geral

Perfil

Controle pid da roda » Histórico » Revisão 10

Revisão 9 (Renan Pícoli, 01/05/2017 16:30 h) → Revisão 10/12 (Renan Pícoli, 01/05/2017 21:12 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 (TIM1 e (para TIM8): 20MHz = SYSCLK/AHB prescaler/APB2 prescaler/(1/APB2 presc) 
 Na prática, isso equivale a SYSCLK/AHB prescaler = 168MHz/1 (conforme tabela abaixo) SYSCLK/AHB/APB1/APB2*picoli/renan 

 página 152 e 640 do reference manual (RM0090 - revisão 14?) 

 pwm.cpp, contrutor de PWM: pwm.cpp 

	 TIM_TimeBaseStructure.TIM_Prescaler=(SystemCoreClock/20000000)-1; 
	 TIM_TimeBaseStructure.TIM_Period=168000000/168000; 
 com isso, o contador do PWM conta até 1000 e o precaler é ajusta do para dar uma frequência de 20MHz 
 portanto, a onda que aciona o motor terá período de 20MHz/1000=20kHz 

 /roboime-firmware/src/boot/system_stm32f4xx.c fornece valores default de SYSCLK e prescalers após inicialização 

  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!