Projeto

Geral

Perfil

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

Renan Pícoli, 01/05/2017 21:12 h

1 1 Carlos Gabriel Oliveira Freitas
h1. Controle pid da roda
2
3 2 Carlos Gabriel Oliveira Freitas
Tutorial - criando um modelo: https://www.mathworks.com/help/simulink/gs/create-a-simple-model.html
4
5 1 Carlos Gabriel Oliveira Freitas
Tutorial - modelando um motor: https://www.mathworks.com/videos/modeling-a-dc-motor-68852.html
6 3 Carlos Gabriel Oliveira Freitas
7 7 Onias Castelo Branco
Design PID: http://www.mathworks.com/help/control/pid-controller-design.html
8 4 Renan Pícoli
9
frequência do contador do pwm (amostragem do pwm)= 20MHz
10
período da onda do pwm é 1/20kHz
11 1 Carlos Gabriel Oliveira Freitas
12 10 Renan Pícoli
Cálculo da frequência de amostragem do pwm (TIM1 e TIM8): 20MHz = SYSCLK/AHB prescaler/APB2 prescaler/(1/APB2 presc)
13
Na prática, isso equivale a SYSCLK/AHB prescaler = 168MHz/1 (conforme tabela abaixo)
14 7 Onias Castelo Branco
15 1 Carlos Gabriel Oliveira Freitas
página 152 e 640 do reference manual (RM0090 - revisão 14?)
16 5 Gustavo Claudio Karl Couto
17 10 Renan Pícoli
pwm.cpp, contrutor de PWM:
18 5 Gustavo Claudio Karl Couto
19 1 Carlos Gabriel Oliveira Freitas
	TIM_TimeBaseStructure.TIM_Prescaler=(SystemCoreClock/20000000)-1;
20
	TIM_TimeBaseStructure.TIM_Period=168000000/168000;
21 10 Renan Pícoli
com isso, o contador do PWM conta até 1000 e o precaler é ajusta do para dar uma frequência de 20MHz
22
portanto, a onda que aciona o motor terá período de 20MHz/1000=20kHz
23 5 Gustavo Claudio Karl Couto
24 10 Renan Pícoli
/roboime-firmware/src/boot/system_stm32f4xx.c fornece valores default de SYSCLK e prescalers após inicialização
25 5 Gustavo Claudio Karl Couto
26
 System Clock source                    | PLL (HSE)
27
  *-----------------------------------------------------------------------------
28
  *        SYSCLK(Hz)                             | 168000000
29
  *-----------------------------------------------------------------------------
30
  *        HCLK(Hz)                               | 168000000
31
  *-----------------------------------------------------------------------------
32
  *        AHB Prescaler                          | 1
33
  *-----------------------------------------------------------------------------
34
  *        APB1 Prescaler                         | 4
35
  *-----------------------------------------------------------------------------
36
  *        APB2 Prescaler                         | 2 System Clock source                    | PLL (HSE)
37
  *-----------------------------------------------------------------------------
38
  *        SYSCLK(Hz)                             | 168000000
39
  *-----------------------------------------------------------------------------
40
  *        HCLK(Hz)                               | 168000000
41
  *-----------------------------------------------------------------------------
42
  *        AHB Prescaler                          | 1
43
  *-----------------------------------------------------------------------------
44
  *        APB1 Prescaler                         | 4
45
  *-----------------------------------------------------------------------------
46
  *        APB2 Prescaler                         | 2
47
48
Interrupção do timer de controle do motor a 1k
49
50
/roboime-firmware/src/control/TimerTime.cpp
51
52
	TIM_TimeBaseStructure.TIM_Prescaler=83;
53
	TIM_TimeBaseStructure.TIM_Period=1000;
54 6 Gustavo Claudio Karl Couto
55
56
resposta do motor de velocidade 2.5m/s
57
!roboime.PNG!