martes, 25 de mayo de 2021

Manejo de un motor CC con una tarjeta EV-VNH7100AS

 ➤ 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

Se utiliza:
- 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.



- La tabla anterior también se obtiene de la hoja de datos del VNH7100AS e indica sus modos de funcionamiento:
  • 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. 

miércoles, 31 de marzo de 2021

Bibliotecas de componentes electrónicos

He aquí algunos sitios de Internet que permiten la descarga de símbolos y huellas de componentes electrónicos para programas como OrCAD, Eagle, Altium, etc.: