➤ Programa
/* Mayo de 2021
Tarjeta: NUCLEO
Microcontrolador: STM32F446RET6U
(Frecuencia de reloj empleada: 16 MHz)
IDE: mikroC PRO for ARM v.6.2.0
Programa que genera una secuencia cíclica de avance y frenado de un motor CC, utilizando
una tarjeta EV-VNH7100AS. Se emplean los pines PC5 (INA), PC6 (INB), PC8 (SEL0)
y PB7 (PWM) de la tarjeta NUCLEO:
- Avance dextrógiro: INA=1, INB=0, SEL0=1
- Avance levógiro: INA=0, INB=1, SEL0=0
- Frenado del motor: INA=1, INB=1, SEL0=0
La señal SEL0 no influye en el avance, sirve para poder medir la corriente que circula por
el puente. La señal PWM se genera en el pin PB7 de la tarjeta NUCLEO.
*/
//--------------------------- Constantes y variables globales
#define av_dextrogiro 0x00000120;
#define av_levogiro 0x00000040;
#define frenado 0x00000060;
int x = 1; // Permite modificar el ciclo de trabajo del PWM
//--------------------------- Función para PWM
void pwm_PB7(int i){
unsigned int periodo_pwm;
periodo_pwm = PWM_TIM4_Init(5000); // Frecuencia: 5 KHz
PWM_TIM4_Start(_PWM_CHANNEL2, &_GPIO_MODULE_TIM4_PB7);
Delay_ms(1);
PWM_TIM4_Set_Duty(periodo_pwm/i, _PWM_NON_INVERTED, _PWM_CHANNEL2);
}
//--------------------------- Función principal
void main (void) {
RCC_AHB1ENR |= 0x00000004; // Habilita el reloj para el puerto C
GPIOC_MODER |= 0x00011400; // Configura PC5, PC6 y PC8 como salidas
pwm_PB7(x); // Genera una señal PWM en PB7
while (1) {
GPIOC_ODR = av_dextrogiro; // Escribe en el puerto C
delay_ms(5000);
GPIOC_ODR = frenado;
delay_ms(2000);
GPIOC_ODR = av_levogiro;
delay_ms(5000);
GPIOC_ODR = frenado;
delay_ms(2000);
}
}
➤ Circuito
- Una tarjeta EV-VNH7100AS
- Una tarjeta NUCLEO-F446RE
- Un motor de corriente continua
- Una batería de 12 V o una fuente de alimentación
➤ Observaciones
- La siguiente tabla detalla el patillaje del circuito integrado VNH7100AS, que es el que emplea la tarjeta EV-VNH7100AS.
- Rojo: frenado del motor
- Azul: avance dextrógiro
- Verde: avance levógiro
- El programa realizado está basado en la tabla anterior. La secuencia de avance y de frenado del motor se efectúa utilizando comandos que escriben directamente en el puerto C del microcontrolador los valores de INA, INB y SEL0. La señal PWM, en cambio, se genera empleando órdenes propias de mikroC for ARM.
- La siguiente imagen corresponde al esquema electrónico de la tarjeta EV-VNH7100AS.
- El pin CS del circuito integrado VNH7100AS entrega una corriente proporcional a la del motor. Mediante el circuito de la imagen anterior se consigue una tensión a partir de esta corriente. La tensión obtenida podría medirse mediante una de las entradas analógicas de la tarjeta NUCLEO, pero el programa descrito arriba no efectúa esta lectura.
- El pin SEL0, en combinación con INA e INB, selecciona la información obtenida de CS, de acuerdo con la tabla de verdad anterior.