- Muchas notas - Fran Acién

20210224 - Primer Lab de SECO

Estoy usando esta guia para instalar el programa

La placa que usamos es la STM32F446RETx.

Libro que me ha recomendado el profesor de STM32

Doc de getting started

Se me ha instalado el programa en esta ruta: /opt/st/stm32cubeide_1.5.0/stm32cubeide

El shield utiliza este componente.

No he tenido éxito instalando el componente.

El componente del puente en H es este.

Del puente en H la tabla de la verdad es la siguiente:

9595131a1115be47d3bc0875591e76d9.png

8f79faafcb39cb101f78e8a8f4c390e1.png

Para poder controlar el motor los pines en el shield están en:

Para saber que preescaler tengo que poner, tengo que coger el reloj del sistema y ponerle el valor. Resulta que necesito el pwm con más de 20 KHz.

El reloj de la placa es de 84 MHz.

Para calcular la frecuencia del PWM he seguido esto: $$ \text{Square wave de } 40 \ KHz \quad \text{50% duty cycle} \\ \frac{84 \ MHz}{40 \ KHz} = 2100 \ \text{cycles} \\ \text{prescaler } \cdot \text{ overflow } = \text{ period cycles} \\ \frac{2100}{2100} = 1 $$

Siguiendo el link de la docu random el preescaler se hace así: $$ f_{PWM} = \frac{84 \ MHz}{\text{Prescaler}} \cdot \text{Counter Period}\\ 20 KHz \Rightarrow \text{Counter Period} = 100 \qquad \text{Prescaler} = 42 \\ 30 KHz \Rightarrow \text{Counter Period} = 100 \qquad \text{Prescaler} = 28 $$

CORRECCIÓN

$$ f_{PWM} = \frac{FreqClock}{(CounterPeriod+1)(Prescaler+1)} $$

$$ f_{PWM} = \frac{84 \cdot 10^6}{(2)(2101)} \approx 20 \ KHz $$

$$ f_{PWM} = \frac{84 \cdot 10^6}{(2)(42000) = 1000} \\ T = 1 \ ms $$

$$ \text{Función error} \Rightarrow e(t) = r(t) - y(t) \\ \text{Función tensión realimentación} \Rightarrow u(t) = K_p \cdot e(t) $$

$$ y(t) = \frac{2 \cdot \pi \cdot npulsos}{CPR} $$

$$ CPR = 48 \cdot 75 = 3600 $$

De esta forma estos serán los valores de los timers en nuestra placa.

  • Timer2 -> Muestreo del encoder:
    • T_PWM = 1 ms -> 1 KHz
    • Prescaler = 1
    • CounterPeriod = 41999

Cada lectura 10 veces. Desde 0 a 12V por cada voltio. Y 1200 valores.