RIKIBOT-FOC使用系列-FOC无刷轮毂电机控制使用教程
一、简介
RIKIBOT-FOC无刷轮毂电机驱动板,是一款兼容市面上大数据3相8线500W以内霍尔轮毂电机,宽电压驱动:24-36V,最大电流15A,系统默认电机极对数为15,控制简单通过串口即可控制轮毂电机,轮毂电机的优势很明显,工作安静、扭力大、平稳、速度与负载可以兼得,像一般轮毂电机的单个负载都是150KG起,一改有刷电机有速度没负载,有负载没速度的尴尬情况,因此可广泛应用于ROS移动机器人、小型AGV、服务机器人领域。
二、控制板接口介绍
1、电机线
黄绿蓝三相电机线,为UVW三相电机线
2、电源接口
市面上常用的24-36V锂电池T型接口
3、开机按钮
为触发式自复位按钮信号,也就是按一下按钮可复位按钮即可,切记不要接自锁式按钮
4、左右侧电机霍尔线
从下图看,从左到右的接口顺序为GND-绿-蓝-黄-5V信号,每家电机对UVW线色可能不一样,所以在这里接线时,绿-蓝-黄不一定与板上一样,这个自己尝试后才能确认下来,如果接上去控制异常,自己需要调整这三个的线序
5、串口控制线
从下图看,从左到右的接口顺序为开机信号-TX(数据发送IO)-RX(数据接收IO)-GND,这里的开机信号与上面的开机按钮一样,如果不接开机按钮只需要给一个1秒左右高电平信号即可。都可以实现驱动板的开机。
三、控制协议
这里以stm32控制板为例,发送数据一个结构体与接收数据一个结构体,按下面的格式进行数据填充即可
typedef struct{ //接收数据结构体uint16_t start; //帧ID --0xABCDint16_t rpmR; //右轮转速int16_t rpmL; //左轮转速int16_t batVoltage; //驱动板电压int16_t boardTemp; //驱动板温度int16_t curL_DC; //左轮电流int16_t curR_DC; //右轮电流uint16_t checksum; //校验和
} RikibotFeedback;typedef struct{ //发送结构体uint16_t start; //帧ID 0xABCDint16_t mSpeedR; //右轮速度(驱动板速度映射为0-1000,然后转速为0-366,也就是0-366RPM通过map映射成0-1000的PWM值)int16_t mSpeedL; //左轮速度uint16_t checksum; //校验和
} RikibotCommand;
接收校验和的计算为接收结构体内数据进行异或运算:
checksum = (uint16_t)(FrontFeedback.start ^ FrontFeedback.rpmR ^ FrontFeedback.rpmL^ FrontFeedback.batVoltage ^ FrontFeedback.boardTemp ^ FrontFeedback.curL_DC ^ FrontFeedback.curR_DC);
发送数据校验和的计算为发送结构体内的数据进行异或运算:
FrontCommand.checksum = (uint16_t)(FrontCommand.start ^ FrontCommand.mSpeedR ^ FrontCommand.mSpeedL);
开机信号,这里直接给一个1秒左右的高电平即可,关于开机信号,像树莓派或者jetson nano上的GPIO驱动电流过小不可以直接控制,需要通过信号隔离进行控制。
GPIO_SetBits(RIKI_MOTOR_EN1_GPIO_PORT, RIKI_MOTOR_EN1_PIN);
delay(1000);
GPIO_ResetBits(RIKI_MOTOR_EN1_GPIO_PORT, RIKI_MOTOR_EN1_PIN);
四、工程示例
代码放在了gitee上,工程提供了arduino、stm32、ros1、ros2、liunx等相关示例,相关的用户可以根据自己需要构建相关的环境,构建时请参考示例的README文件来构建,代码连接:
rikibot-foc控制板代码连接
1、stm32示例工程建
用户只需要安装好keil,这里工程示例是基于stm32f103RC芯片构建,如果是其它芯片用户选择相关的芯片即可,然后编译烧写即可,下面是指导视频。
RIKIBOT-FOC使用系列-无刷轮毂电机驱动板介绍与基于STM32的控制示例
2、基于ROS的示例构建
安装依赖环境
sudo apt-get install ros-melodic-serial
如何构建
1、建立ros工作空间
mkdir ~/foc_ws/src -p
2、拷贝ros1目录下的源码包到工作空间
copy rikibot_foc_driver riki_msgs ~/foc_ws/src -rf
3、编译相关的工作环境
cd ~/foc_ws
catkin_make -j1
如何使用
1、首先接好开关按钮,或者信号触发上电驱动板,并接好电机线与控制串口
2、使用前修改rikibot_foc_driver/config/rikibot_params.yaml文件的串口设备好,系统默认是jetson nano的串口名称“/dev/ttyTHS1”
3、初始化工作空间,并启动
source ~/foc_ws/devel/setup.bash
roslaunch rikibot_foc_driver rikibot_driver.launch
4、键盘控制电机
rosrun teleop_twis t_keyboard teleop_twist_keyboard.py
5、查看相关数据,里面反馈了battery(控制板电量)与raw_vel(实时速度)话题
rostopic list
RIKIBOT-FOC使用系列-无刷(轮毂)电机驱动板基于ROS1接口控制示例包的使用
3、基于ROS2的示例构建
如何构建
1、建立ros2工作空间
mkdir ~/foc_ws/src -p
2、拷贝ros2目录下的源码包到工作空间
copy ros2/* ~/foc_ws/src -rf
3、编译串口包
cd serial-ros2/
mkdir build && cd build
cmake …
make && sudo make install
3、编译相关的工作环境
cd ~/foc_ws
colcon build
如何使用
1、首先接好开关按钮,或者信号触发上电驱动板,并接好电机线与控制串口
2、初始化ROS2环境
source ~/foc_ws/install/setup.bash
3、启动驱动包
ros2 launch rikibot_foc_driver rikibot_foc_driver.launch.py
4、启动键盘控制
ros2 run teleop_twist_keyboard teleop_twist_keyboard
5、查看相关的话题,驱动包产生了battery(驱动板电量)与raw_vel(电机速度)
ros2 topic list
RIKIBOT-FOC使用系列-无刷轮毂电机驱动板基于ROS2接口控制示例包的使用
4、基于Liunx的控制示例
如何构建
mkdir build
cd build
cmake … && make
如何使用
./rikibot_foc_ctrl
RIKIBOT-FOC使用系列-无刷轮毂电机驱动板基于liunx下的接口控制示例
五、交流方式
QQ交流群:130486387
RIKIBOT店铺连接
RIKIBOT-FOC使用系列-FOC无刷轮毂电机控制使用教程相关推荐
- 直流无刷减速电机PID控制
最近做了直流无刷减速电机的控制的项目,针对项目中遇到的问题做下总结. #PID_Control PID 代码(速度环 位置环 串级) STM32F407VET6 STM32CubeMX 更新记录 V1 ...
- bldc不同载波频率_有刷CD电机好用还是无刷BLDC电机好用?该选那个?
无刷直流电机 (BLDC电机/BLDC直流电机) 图二:直流无刷电机(BLDC电机) 无刷直流(BLDC)电机可以想像成与有刷直流电机截然相反,其中永久磁性在转子上,而绕线在定子上.因此,该电机没有刷 ...
- 无刷无霍尔BLCD电机控制
声明:本文出自百度文库无刷无霍尔电机控制,因为该文为繁体,看起来特别别扭,特此翻译. 文库网址: https://wenku.baidu.com/view/b99217dca0116c175f0e48 ...
- 无刷无霍尔BLCD电机控制(转)
1.概述 无霍尔的BLDC控制方案与有霍尔BLDC的基本原理相似,都是用所谓"六步换向法",根据转子当前的位置,按照一定的顺序给定子绕组通电使BLDC电机转动.所不同的是无霍尔BL ...
- 无位置传感器的电机控制
原文:https://blog.csdn.net/k331922164/article/details/80414339 一.前言. 电机控制一般使用闭环控制,这就必须使用传感器,如:霍尔传感器.编码 ...
- 全系列极路由刷不死uboot(breed)教程
Breed是什么 是一款全新的bootloader,不是Uboot,也不是Uboot的改进版,暂名为Breed.它是一种普遍用于嵌入式系统中的Bootloader,Bootloader是在操作系统运行 ...
- 【优化求解】基于人工蜂群算法求解无刷直流电机PID控制matlab代码
1 简介 高精度的精密微位移系统在近代尖端工业生产和科学研究领域内占有极其重要的地位.它广泛应用于航空航天.微型机械制造.超精密加工.医学.生物工程等领域.纳米级位移定位技术已经成为推动科技发展的前进 ...
- 【FOC控制】英飞凌TC264无刷驱动方案simplefoc移植(2)-SVPWM波实现
[FOC控制]英飞凌TC264无刷驱动方案simplefoc移植(2)-SVPWM波实现 SVPWM波实现就是无数电机foc控制的核心,所以这一节就如何在英飞凌无刷驱动上时间互补pwm波形做讲解 [F ...
- 【FOC控制】英飞凌TC264无刷驱动方案simplefoc移植(5)-磁编码器移植AS5600 软件IIC
[FOC控制]英飞凌TC264无刷驱动方案simplefoc移植(5)-磁编码器移植 [FOC控制]英飞凌TC264无刷驱动方案simplefoc移植(5)-磁编码器移植 一.编码器选择 二.通讯方式 ...
最新文章
- js中propertyIsEnumerable()方法使用介绍
- Exchange Server 2013 DAG高可用部署(三)-服务器角色安装
- OpenCV cv :: UMat与DirectX10曲面的互操作性的实例(附完整代码)
- MySQL学习笔记17:别名
- sonar扫的是class还是Java_如何在同一个项目中为java和javascript配置Sonarqube扫描程序...
- C#用域账号登陆,访问网络路径
- II.MongoDB CRUD Operations(CRUD操作)
- shell自动收集服务器硬件系统信息通过web页面显示
- axios直传阿里云,获取上传进度已以及取消上传
- OEL修改字符集失败 -bash: /root: is a directory
- C语言数组旋转问题(C笔记)
- 数据库基本知识点总结
- python点击屏幕坐标获取_python+appium 点击屏幕坐标操作(qq头像为例)
- 尝试一下暴力破解Wifi
- TcpClient类异步接收数据
- 《学会提问》——批判性思维的思考
- python一行输入两个数据中间用空格隔开
- 使用Java代码制作二维码(超级简单)
- 怎样快速锁定计算机加密硬盘,教你如何进行BitLocker加密
- RK3568平台开发系列讲解(NPU篇)让 NPU 跑起来