上期研究了L99H92 的开发板AEK-MOT-WINH92 与STM32NUCLEO-G474RE 的板载资源,今天分享了STM32 NUCLEO-G474RE Arduino 驱动L99H92 以全桥模式驱动DC 直流电机做相关测试;
一、硬件连接:
应用原理图上可以知道,全桥的DC 驱动电路图如下:
其中EN, DIAGN,DIR,PWM.FSINB 为输入输出控制与反馈脚, SPI(CS,CLK,SDI,SDO)为输入输出控制通讯,5V和GND 供电;
采用12V DC 输入,驱动12V DC 直流电机;
本程序主要采用Arduino 来驱动L99H92, STM32NUCLEO-G474RE 已经支持Arduino ,具体引脚如下:
选中管脚与硬件连接如下所示:
CS
|
CN5-3
|
PWM/CS/D10
|
需要配置为CPOL = 0 and CPHA = 0,且MSB 高优先
|
CLK
|
CN5-6
|
SCK/D13
|
SDI/MISO
|
CN5-5
|
MISO/D12
|
SDO/MOSI
|
CN5-4
|
PWM/MOSI/D11
|
EN
|
CN9-3
|
输出/D2
|
L99H92 使能,高有效
|
DIAGN
|
CN9-4
|
主控芯片输入/D3
|
诊断输出引脚
|
DIR/IN2
|
CN9-5
|
输出/D4
|
全桥模式下方向控制
|
PWM/IN1
|
CN9-6
|
PWM/D5
|
占空比控制
|
FSINB
|
CN9-7
|
D6
|
|
VDD
|
CN6-5
|
5V
|
|
GND
|
CN6-6
|
GND
|
|
以上就是硬件的全部连接,具体采用杜邦线与开发板相连;
12V 直流电源输入, 逻辑分析仪检测输入波形,万用表测试DC 电机两端电压;
二、软件初步:
采用基于STM32NUCLEO-G474RE Arduino 的软件架构, Arduino 中选择STM32 NUCLEO-64 的板子;
选择对应开发板;
选择对应COM 口;
编写初步的程序:
#include <SPI.h>
//L99H92 控制口
const int EN_PIN = D2; //D2
const int DIAGN_PIN = D3;
const int DIR_PIN = D4;
const int MTPWM_PIN = D5;
const int FSINB_PIN = D6;
//CS 片选
const int CS_PIN = D10;
void setup() {
SPI.begin();
//串口配置
Serial.begin(115200);
Serial.println("UART Start");
// 设置输入和输出方式
pinMode(CS_PIN,OUTPUT);
pinMode(EN_PIN,OUTPUT);
pinMode(DIAGN_PIN,INPUT);
pinMode(DIR_PIN,OUTPUT);
pinMode(MTPWM_PIN,OUTPUT);
pinMode(FSINB_PIN,OUTPUT);
//设置初始化状态
digitalWrite(CS_PIN,HIGH);
digitalWrite(EN_PIN,LOW);
digitalWrite(FSINB_PIN, LOW);
int Vst = digitalRead(DIAGN_PIN);
//analogWrite(MTPWM_PIN,100);
//启用L99H992
enableL99H92();
digitalWrite(FSINB_PIN, HIGH);
}
void loop() {
digitalWrite(CS_PIN,LOW);
SPI.transfer(0x03);
SPI.transfer(0x55);
SPI.transfer(0x88);
digitalWrite(CS_PIN,HIGH);
delay(500);
}
void enableL99H92()
{
digitalWrite(EN_PIN,HIGH);
}
void disableL99H92()
{
digitalWrite(EN_PIN,LOW);
}
以上初步完成了软件和硬件环境的搭建,下一步正式驱动L99H92;