公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

我有带 TLE9879QXA40 的 BLDC 电机扩展板,用于 Arduino。 我已经更新了固件以使 setParameter () 正常工作

当我在设置空隙中启动电动机时,电动机可以工作,但是当启动电机处于空隙回路中时,它无法开启。 LED 在空隙回路中可以正常闪烁,但电机什么也没做。

 

如何让电机在空隙回路中工作?

 
//将 Shield 库添加到你的 Arduino 项目中
#include " tle9879_group.h "
 
int buttonPin1 =2;
int buttonPin2 = 3;
int buttonPin3 = 5;
int OnTime = 500;
int buttonState1 = 0;
int buttonState2 = 0;
int buttonState3 = 0;
 
//声明 Shield 群组对象
tle9879_group *盾牌;
 
 
枚举状态
{
//未按下按钮 1
NoButton,
 
//按钮 1 被按下
第一个按钮,
 
};
 
州 _state;
 
无效设置 ()
{
_state = NoButton;
   
//使用 Shield 群组对象初始化
//堆栈中护盾的数量
shields = 全新 tle9879_group (1);
 
                     
//将盾牌组初始化为棋盘 1 的对象。
  
盾牌-> 设置模式 (BEMF);
//在主板 1 上将模式设置为 BEMF。
  
盾牌-> 设置马达速度 (-900);
//在 1 上设置电机速度。
  
shield > s-setParameter (BEMF_POLE_PAIRS,6、BOARD1);
//分配极点对的数量。
shield > s-setParameter(BEMF_SPEED_TEST_ENABLE,1,BOARD1);
  
//启用 LED 并将其设置为绿色,启动电机让它运行 15 秒,
//然后停止电机
shield > s-setLED(LED_ON,BOARD1);
shiel > ds-setLEDColor(COLOR_BLUE,BOARD1);
盾牌-> 设置电动机模式(启动电机);
  
延迟 (1000);
shiel > ds-setLEDColor(COLOR_BLACK,BOARD1);
shield > s-setLED(LED_OFF,BOARD1);
盾牌-> 设置马达模式(STOP_MOTOR);
}
 
 
空洞循环 ()
{
开关(_state)
{
手机壳 noButton:
if (digitalRead (buttonPin1) == HIGH)
{
_state = firstButton;
shiel > ds-setLEDColor(COLOR_BLACK,BOARD1);
盾牌-> 设置马达模式(STOP_MOTOR);
      
}
否则如果 (digitalRead (buttonPin2) == HIGH)
{
盾牌-> 设置马达速度 (1000);
盾牌-> 设置电动机模式(启动电机);
shield > s-setLED(LED_ON,BOARD1);
shiel > ds-setLEDColor(COLOR_BLUE,BOARD1);
}
其他
{
shiel > ds-setLEDColor(COLOR_BLACK,BOARD1);
盾牌-> 设置马达模式(STOP_MOTOR);
}
休息;
 
案例第一按钮:
if (digitalRead (buttonPin1) == 低)
{
_state = NoButton;
shiel > ds-setLEDColor(COLOR_BLACK,BOARD1);
盾牌-> 设置马达模式(STOP_MOTOR);
}
否则如果 (digitalRead (buttonPin3) == HIGH)
{
盾牌-> 设置马达速度 (-1000);
盾牌-> 设置电动机模式(启动电机);
shield > s-setLED(LED_ON,BOARD1);
shiel > ds-setLEDColor(COLOR_GREEN,BOARD1);
}
其他
{
shiel > ds-setLEDColor(COLOR_BLACK,BOARD1);
盾牌-> 设置马达模式(STOP_MOTOR);
}
休息;
 
默认:
//其他州,非法。
shiel > ds-setLEDColor(COLOR_BLACK,BOARD1);
盾牌-> 设置马达模式(STOP_MOTOR);
休息;
}
}
0 点赞
1 解答
Translation_Bot
Community Manager
Community Manager
Community Manager

@grabnj

如果防护罩—— > setMotorMode (START_MOTOR);持续开启,则会进入空回路,它将无法运行电机

你可能需要添加一个条件,即如果已发送过一次电动机启动命令,则在停止电动机命令执行一次之前不要再次执行启动电动机命令。

如果您还有其他问题,请告诉我们。 请告诉我们您的系统的流程图(例如 按钮将连续按下或一瞬间按下)。

 

谢谢

最好的问候

Raj Chaudhari

在原帖中查看解决方案

0 点赞
3 回复数
Translation_Bot
Community Manager
Community Manager
Community Manager

@grabnj

如果防护罩—— > setMotorMode (START_MOTOR);持续开启,则会进入空回路,它将无法运行电机

你可能需要添加一个条件,即如果已发送过一次电动机启动命令,则在停止电动机命令执行一次之前不要再次执行启动电动机命令。

如果您还有其他问题,请告诉我们。 请告诉我们您的系统的流程图(例如 按钮将连续按下或一瞬间按下)。

 

谢谢

最好的问候

Raj Chaudhari

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨 Raj,

谢谢你的提示。

 

我现在删除了寻找按下按钮的循环。

我试着在空隙回路中单独开启电机,它似乎起作用了,但是当我在设置回路中取消注释电机启动但仍能启动空回路电机时,电机只有在我重置 Arduino 时才开启一次。

 

//将 Shield 库添加到你的 Arduino 项目中
#include " tle9879_group.h "
 
int buttonPin1 =2;
int buttonPin2 = 3;
int buttonPin3 = 5;
int OnTime = 500;
int buttonState1 = 0;
int buttonState2 = 0;
int buttonState3 = 0;
 
//声明 Shield 群组对象
tle9879_group *盾牌;
 
 
枚举状态
{
//未按下按钮 1
NoButton,
 
//按钮 1 被按下
第一个按钮,
 
};
 
州 _state;
 
无效设置 ()
{
_state = NoButton;
   
//使用 Shield 群组对象初始化
//堆栈中护盾的数量
shields = 全新 tle9879_group (1);
 
                     
//将盾牌组初始化为棋盘 1 的对象。
  
盾牌-> 设置模式 (BEMF);
//在主板 1 上将模式设置为 BEMF。
  
盾牌-> 设置马达速度 (-900);
//在 1 上设置电机速度。
  
shield > s-setParameter (BEMF_POLE_PAIRS,6、BOARD1);
//分配极点对的数量。
shield > s-setParameter(BEMF_SPEED_TEST_ENABLE,1,BOARD1);
  
//启用 LED 并将其设置为绿色,启动电机让它运行 15 秒,
//然后停止电机
shield > s-setLED(LED_ON,BOARD1);
shiel > ds-setLEDColor(COLOR_BLUE,BOARD1);
盾牌-> 设置电动机模式(启动电机);
  
延迟 (1000);
shiel > ds-setLEDColor(COLOR_BLACK,BOARD1);
shield > s-setLED(LED_OFF,BOARD1);
盾牌-> 设置马达模式(STOP_MOTOR);
延迟 (1000);
}
 
 
空洞循环 ()
{
shield > s-setLED(LED_ON,BOARD1);
shiel > ds-setLEDColor(COLOR_BLUE,BOARD1);
盾牌-> 设置马达速度 (900);
盾牌-> 设置电动机模式(启动电机);
  
延迟 (1000);
shiel > ds-setLEDColor(COLOR_BLACK,BOARD1);
shield > s-setLED(LED_OFF,BOARD1);
盾牌-> 设置马达模式(STOP_MOTOR);
延迟 (1000);
}
0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

@grabnj

当你停止电动机时,系统有可能进入故障状态。 调试这个问题并不容易。

我建议你试试 FOC 示例,它比 BEMF 示例相对稳定。

对于 FOC 示例,使用上面的相同建议。

 

谢谢

最好的问候

Raj Chaudhari

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/MOTIX-MCU/BLDC-motor-shield-with-TLE9879QXA40-for-Arduino/m-p/644522

0 点赞