大疆遥控控制M3508电机(基于HAL库)

一、简介

本篇文章主要实现的是使用大疆遥控控制M3508电机匀速转动,笔者是个新手小白,最近做比赛用到大疆遥控和M3508电机,看了很多例程写的都挺复杂,大疆官网例程更是用上了FreeRTOS,这些太综合的资料笔者感觉不适于新手学习,无论是遥控还是3508电机的资料都有很多,但是二者结合起来用的还是比较少,所以笔者想的还是从简单写起,想和大家一起学习进步,有什么问题或者建议都欢迎各位大佬提出。(本篇文章有部分都是参考了其他大佬的,笔者会在相应的地方贴出,如果大佬本人介意的话,请及时联系笔者删除)

二、描述

  1. 硬件描述:大疆A板*1,M3508电机*1,C620电调*1,中心板*1,大疆遥控(带DR16接收器),24v电源*1,紧急开关*1.

  1. 软件描述:遥控器方面使用的是官方的dbus协议,利用DMA和串口进行通讯;电调使用的是CAN通讯;CUBEMX配置基础程序;

三、CUBEMX配置:(参考了其他大佬的 https://blog.youkuaiyun.com/weixin_43361652/article/details/118770662

1.时钟树配置

2.配置CAN1

(注意这里复用了PD1和PD0作为CAN1的收发,A板的原理图上可以找到)

(后续要使用FIFO0,所以这里开启RX0,用FIFO1的就开RX1)

  1. 配置串口1(作为DMA的接收)

  1. 配置串口6(作为DMA的发送)

然后就差不多配置好了,剩下的就是这个项目工程的配置

到这里就已经搭配好咱们需要的环境和基础的配置了,剩下的就在keil中完成吧,笔者最近在准备比赛,时间有点紧,剩下的会尽快补上。

使用DJI APM(AeroPrime Mission Planner)平台和PID(比例积分微分)算法来控制3508电机转速通常涉及以下几个步骤,因为APM本身提供了一个基本的飞控框架,所以代码可能是在Python或MATLAB环境下编写: 1. **安装**:首先,需要安装与APM通信的,如`apm_python_library`或通过Mission Planner直接使用的API。 2. **设置PID参数**: ```python kp = 0.1 # 比例系数 ki = 0.01 # 积分系数 kd = 0.001 # 微分系数 setpoint = 0 # 设定的目标转速 error = 0 integral = 0 derivative = 0 ``` 3. **获取反馈值**: ```python motor_speed = read_motor_speed(3508) # 读取3508电机的实际速度 ``` 4. **PID计算**: ```python derivative = (error - prev_error) / dt # 计算微分 integral += error * dt # 积分累加 output = kp * error + ki * integral + kd * derivative # PID输出 ``` 5. **限幅和调整**: ```python if output > max_speed_limit: output = max_speed_limit elif output < min_speed_limit: output = min_speed_limit target_speed = map(output, range(min_speed, max_speed), range(min_pwm, max_pwm)) # 根据实际范围映射到PWM信号 ``` 6. **发送命令**: ```python send_motor_command(3508, target_speed) # 通过API向3508电机发送目标PWM值 ``` 7. **更新状态**: ```python prev_error = error ``` 记得替换上述代码中的函数名和变量名以匹配实际的APM API和硬件接口。每个部分的具体实现可能会因APM版本的不同而有所差异。最后,在使用PID时,可能需要根据飞行器的性能进行参数调试。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值