平衡车轮子控制器使用

平衡车轮子控制器使用

说明

在使用中遇到了很多问题,所以特将问题记录下来。

主要参考bilibili上大佬的视频解决的。

视频链接:【摇杆控制电动车制作 开源无刷电机驱动板使用第3节 ADC摇杆模块使用】 https://www.bilibili.com/video/BV1ca411m79C/?share_source=copy_web&vd_source=baa315d6f81a7f052fe265ce26dac4d3

平衡车控制板固件链接:固件:https://github.com/enbesy/hoverboard-firmware-hack-FOC

固件下载后直接使用KEIL打开即可。

ADC摇杆

1.在下拉栏里选中ADC部分
在这里插入图片描述

2.在config.h里取消#define VARIANT_ADC 的注释
在这里插入图片描述

3.在config.h里,更改电池满电电压,和18650电池串联数量

用的是36V~42V的10串18650电池,测得满电电压大概在41.2V(充电部分有个二极管,所以不会充到42V, 正常满电在4.2V X 10 = 42V),41.2 X 100 = 4120,用10个18650电池串联.

在这里插入图片描述

4.在config.h里,如果只使用一个电机,需要将另一个注释掉,否则不能正常工作

只使用左边驱动电路驱动单电机,所以将右电机使能注释掉
在这里插入图片描述

5.在config.h里,电机反转,蜂鸣器会报警,将1改为0,电机反转就不会报警。
在这里插入图片描述

6.在config.h里,电机转速限制,刚开始测试时,建议将转速改为100,测试后可改成其他。

在这里插入图片描述

7.更改完成后编译下载即可

下载接口如图所示,下载前需注意,首先将电容的电放掉。拔掉电池,Power Button连通启动,即可以放掉电容里的电。

注意如果使用电池供电,不要接下载器的3.3V,否则会烧掉板子。

在这里插入图片描述

8.硬件连接

注意电机线按颜色对应连接即可。有些电机的霍尔线顺序是不对的,需按颜色对应调整一下。

连接好的效果,基本如下图所示:

在这里插入图片描述

9.接上ADC摇杆

摇杆VCC接3.3V ,GND和ADC引脚接左边的串口的那里。

连接好的效果,基本如下图所示:
在这里插入图片描述

10.接上电池,开始测试

使用ADC摇杆需要先进行一下校准。

注意:Power Button开关用类似按键那种,按下接通,松开断开

接上电池,按一下Power Button开关,开机。然后长按Power Button开关6秒,直到听到蜂鸣器响的时候松开开关,ADC摇杆,推动,依次,上,下,左,右。然后松开ADC摇杆,等蜂鸣器再次响起,即校准完毕。然后按一下Power Button开关,关机。再按一下Power Button开关,开机。

,ADC摇杆,推动,依次,上,下,左,右。然后松开ADC摇杆,等蜂鸣器再次响起,即校准完毕。然后按一下Power Button开关,关机。再按一下Power Button开关,开机。

好了,可以开始使用了,推动ADC摇杆向上,两个电机正转。推动ADC摇杆向下,两个电机正转。推动ADC摇杆向左,左转。推动ADC摇杆向右,右转。

  • 9
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,这里给您提供一段简单的 C 语言代码,用于控制平衡车的轮子。这段代码假设您已经连接好了电机驱动模块,并且使用PWM信号控制电机转速。同时,该代码使用了PID控制算法,用于使车辆保持平衡: ```c // 定义PID控制器的参数 #define KP 2.0 #define KI 0.5 #define KD 1.0 // 定义轮子的转速范围 #define MAX_SPEED 100 #define MIN_SPEED -100 // 定义控制器的状态 enum State { BALANCE, TILT_FORWARD, TILT_BACKWARD, }; // 初始化控制器状态为平衡状态 enum State state = BALANCE; // 定义PID控制器的变量 float error = 0; float last_error = 0; float integral = 0; float derivative = 0; // 控制车辆转向的函数 void control_motor(int speed) { if (speed > MAX_SPEED) { speed = MAX_SPEED; } else if (speed < MIN_SPEED) { speed = MIN_SPEED; } // 使用PWM信号控制电机转速 // ... } // 读取陀螺仪数据的函数 float read_gyro() { // ... } // PID控制器的函数 void pid_controller() { float gyro = read_gyro(); error = gyro; // 计算误差值 // 计算积分项 integral += error; if (integral > MAX_SPEED) { integral = MAX_SPEED; } else if (integral < MIN_SPEED) { integral = MIN_SPEED; } // 计算微分项 derivative = error - last_error; // 计算PID控制器的输出值 float output = KP * error + KI * integral + KD * derivative; // 根据控制器状态,控制车辆转向 switch (state) { case BALANCE: control_motor(output); if (gyro > 10) { // 车辆向前倾斜 state = TILT_FORWARD; } else if (gyro < -10) { // 车辆向后倾斜 state = TILT_BACKWARD; } break; case TILT_FORWARD: control_motor(MAX_SPEED); if (gyro <= 5) { // 车辆回到平衡状态 state = BALANCE; } break; case TILT_BACKWARD: control_motor(MIN_SPEED); if (gyro >= -5) { // 车辆回到平衡状态 state = BALANCE; } break; } // 保存当前误差值 last_error = error; } // 主函数 int main() { // 初始化控制器 // ... // 循环读取陀螺仪数据,执行PID控制器 while (1) { pid_controller(); } return 0; } ``` 希望这段代码能够对您有所帮助,如果有问题欢迎随时提出。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值