这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 如何让电机在空隙回路中工作?

共2条 1/1 1 跳转至

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

工程师
2024-02-26 20:03:28     打赏

我有带 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);
休息;

}

}




关键词: 电机     BLDC    

助工
2024-02-26 20:03:49     打赏
2楼

要让电机在空隙回路中工作,您需要执行以下操作:

1. 确保您的电机和电机扩展板与Arduino连接正确,并已正确设置和配置电机扩展板的参数。

2. 在代码中使用tle9879库的相关函数来控制电机。您可以使用tle9879库中的函数来启动、停止、修改电机的速度和方向等。

3. 确保您的按钮引脚正确连接,并在代码中正确读取按钮的状态。

4. 使用digitalWrite()函数来控制LED的闪烁。确保LED的引脚正确连接,并在程序中正确控制LED的亮灭状态。

下面是一个参考代码示例,用于在空隙回路中启动和停止电机:

```
#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;

void setup() {
  pinMode(buttonPin1, INPUT);
  pinMode(buttonPin2, INPUT);
  pinMode(buttonPin3, INPUT);
}

void loop() {
  buttonState1 = digitalRead(buttonPin1);
  buttonState2 = digitalRead(buttonPin2);
  buttonState3 = digitalRead(buttonPin3);

  if (buttonState1 == HIGH) {
    startMotor();
  }

  if (buttonState2 == HIGH) {
    stopMotor();
  }

  if (buttonState3 == HIGH) {
    changeMotorSpeed();
  }
}

void startMotor() {
  // Set motor parameters if required
  // Set speed and direction if required
  // Call motor start function from tle9879 library
  // Example: motorStart(speed, direction);
}

void stopMotor() {
  // Call motor stop function from tle9879 library
  // Example: motorStop();
}

void changeMotorSpeed() {
  // Read new speed from input
  // Set new speed using tle9879 library functions
  // Example: setMotorSpeed(speed);
}
```

请替换代码示例中的 `startMotor()`、`stopMotor()` 和 `changeMotorSpeed()` 函数,使其使用tle9879库中的相应函数来控制电机。


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]