百合的花语是什么| 牙银肿痛吃什么药| 产成品是什么意思| 苏醒是什么意思| 淄博有什么大学| 肺结核通过什么途径传染| 濡养是什么意思| 脸发红是什么原因| 离子检测是检查什么| 妹汁是什么意思| 出差什么意思| 鸟屎掉衣服上有什么预兆| 白血球高是什么原因| 甩货是什么意思| 猫鼻支是什么症状| 火碱对人体有什么害处| 手为什么会抖| 胃部间质瘤是什么性质的瘤| 凯旋归来是什么意思| 雷达表属于什么档次| 什么克风| 中性粒细胞百分比高是什么原因| 为什么不建议吃大豆油| 蜜蜂为什么要采蜜| 土豆与什么食物相克| 保肝护肝吃什么药好| 鼻窦炎首选什么抗生素| 吃牛油果有什么好处| 小孩铅过高有什么症状| 兰蔻属于什么档次| 小分子肽能治什么病| 什么是胎记| 血小板低有什么危险| 睡醒嘴巴苦是什么原因| 谷维素是治疗什么的| aa是什么病| 慢性非萎缩性胃炎是什么意思| 室上性心动过速是什么原因引起的| 窦性心动过速什么意思| 眼黄瘤什么方法治疗最好| 大鱼际发青是什么原因| 二聚体测定是什么| 腰疼不能弯腰是什么原因引起的| 为什么要割包皮| 低血糖什么症状| 多囊卵巢综合症有什么症状| 膀胱冲洗用什么药| 教师节什么时候| 呲牙是什么意思| 经常上火口腔溃疡是什么原因| 北京市长属于什么级别| 舌苔发白吃什么药| 吴佳尼为什么嫁马景涛| 阴道放气是什么原因| 成什么结什么| 咸池是什么意思| 大小便失禁是什么意思| 着凉嗓子疼吃什么药| 10月10号是什么日子| 太阳穴长痘痘什么原因| 欧米茄算什么档次| 阴蒂痛是什么原因| 浮躁的意思是什么| 不感冒是什么意思| 买碗有什么讲究| 感觉抑郁了去医院挂什么科| 羽立读什么| 竹笙是什么| 眼睛视力模糊是什么原因| 吃什么补充蛋白| 早孕反应最早什么时候出现| 婴儿呛奶是什么原因引起的| 吃什么补叶酸| 喜大普奔是什么意思| 肚子不舒服是什么原因| 栀子花叶子发黄是什么原因| 心血管堵塞吃什么药| 什么是白血病| 2000年属龙的是什么命| 看演唱会需要准备什么| 白猫进家有什么预兆| ws什么意思| 先父什么意思| 什么菊花茶降火最好| 9.22是什么星座| 妇科炎症用什么药| 拔罐什么时候拔最好| 9月10号什么星座| 一声叹息是什么意思| 老登是什么意思| 生长纹是什么原因| 西瓜坏了是什么样| pt950是什么材质| 李隆基是李世民的什么人| 穿刺手术是什么意思| 人肉什么味道| mcv偏低是什么意思| 糖类抗原是什么意思| 走麦城是什么意思| 脖子痛什么原因| 什么叫多动症| 啾啾是什么意思| 画龙点睛指什么生肖| 圣女果是什么水果| 43属什么| 尿常规能检查出什么| 儿童呕吐吃什么药| 办离婚需要什么手续和证件| 多吃海带有什么好处和坏处| 铲子是什么意思| 11.9是什么星座| 油管是什么意思| 几朵花代表什么意思| 花匠是什么意思| 一抽一抽的打嗝叫什么| 貔貅和麒麟有什么区别| 都有什么瓜| 丛林之王是什么动物| 7777什么意思| 尿常规能查出什么病| 部队指导员是什么级别| 士加一笔是什么字| t和p是什么意思| 早起的鸟儿有虫吃是什么意思| 喘粗气是什么原因| 什么是讨好型人格| 为什么会得前列腺炎| 什么水果不能一起吃| 扬琴属于什么乐器| crp什么意思| 鳌虾吃什么| graff是什么牌子| 以纯属于什么档次| 山茱萸的功效与作用是什么| 芥子是什么| gcp是什么意思| 阿迪达斯neo什么意思| tfcc是什么| 美国为什么有两块土地| 做梦牙掉了是什么征兆| 梦见炒菜是什么意思| 0x00000024蓝屏代码是什么意思| 思维跳脱是什么意思| 唇亡齿寒什么意思| 鲮鱼是什么鱼| 女性尿道出血是什么原因引起的| 柬埔寨是什么国家| 中耳炎什么症状| 银屑病为什么会自愈| 半身不遂的前兆是什么症状| 吃了紧急避孕药会有什么反应| 萃是什么意思| 回忆杀是什么意思| 家里为什么有蚂蚁| 减肥吃什么药好| 惊弓之鸟是什么故事| 孕妇喝什么牛奶好| 高考600多分能上什么大学| 红细胞体积偏高是什么意思| 整形什么医院好| 99年属什么生肖| 什么床垫最健康| 一个金字旁一个各念什么| 肠道紊乱吃什么药| 为什么男生喜欢女生的脚| 手信是什么| 2034年是什么年| 孕妇梦见血是什么预兆| 凉粉用什么做的| 胡萝卜什么颜色| 脾虚吃什么中成药| 985是什么| id锁是什么| 什么降血脂效果最好的| 什么是佛| 看肺结节挂什么科| 什么地腐烂| 晚上没有睡意什么原因| 一什么杯子| 总胆红素偏高什么意思| 顺风顺水是什么生肖| 沙悟净是什么生肖| 尿常规是检查什么的| 端午节为什么吃粽子| 黄山四绝指的是什么| 左手小手指麻木是什么原因引起的| 那悲歌总会在梦中惊醒是什么歌| 有什么病| 为什么这样对我| 先天性心脏病是什么原因造成的| 撒西不理是什么意思| 什么学海无涯苦作舟| 眉心长痘痘什么原因| 怀孕什么时候能测出来| 什么是卫星| 女人吃洋葱有什么好处| 9月份怀孕预产期是什么时候| 蟑螂屎长什么样| 来姨妈不能吃什么水果| 西葫芦炒什么好吃| 左腿疼是什么原因| 宦官是什么意思| 马标志的车是什么牌子| 淋巴细胞偏低什么意思| 宫颈多发潴留囊肿是什么意思| 苹果跟什么榨汁好喝| 出汗多吃什么| 心衰是什么意思| 粉盒和硒鼓有什么区别| 肿瘤患者不能吃什么| 加湿器什么季节用最好| 烧仙草是什么东西| 房性逸搏心律是什么意思| 女性血热吃什么好得快| 交会是什么意思| 肠炎吃什么药效果最好| 文盲是什么意思| 什么药治鼻炎| 上房是什么意思| 乳酸菌可以制作什么| 叶酸什么时候吃| 葬礼穿什么衣服| 清欢渡是什么意思| 为什么犹太人聪明| 头皮屑多的原因是什么| 吃什么对身体好| 亥时是什么时候| 为什么腰疼| 什么牌子的裤子质量好| 金色葡萄球菌最怕什么| 小肚子疼是什么原因| 咳黄痰吃什么药好得快| 女生左手食指戴戒指什么意思| 科目二学什么| 海关是什么| 肝火旺盛是什么原因引起的| 小人难防前一句是什么| 支气管炎吃什么药最好| 钙不能和什么一起吃| 蜗牛吃什么| 1月11日是什么星座| joeone是什么牌子| 甘油脂肪酸酯是什么| 喉咙痛喝什么汤好| 摩什么擦什么| 经常犯困想睡觉是什么原因| 二月十号是什么星座| 孩子长个子吃什么有利于长高| 根充是什么意思| street是什么意思| ecmo是什么| 小孩经常肚子疼是什么原因| 冥想是什么| 植物纤维是什么面料| queen是什么意思| 子宫肌瘤有什么症状| 地藏菩萨求什么最灵| 梦见自己大出血是什么征兆| 蠼螋吃什么| 古曼童是什么| 夏天喝绿茶有什么好处| 无底洞是什么意思| 9月14号是什么星座| 15年什么婚| 百度
打印
[PIC32/SAM]

2017央视《星光大道》四川选手选拔活动在成都启动

[复制链接]
17035|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dongnanxibei|  楼主 | 2025-6-24 13:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
平衡车控制系统,其平衡实现依赖于高实时性传感器采样、高效姿态解算算法、精准电机控制三者的闭环协作。
一、硬件架构

模块
关键组件
功能说明
主控MCUPIC32MZ EF系列(带FPU和DSP指令)100MHz+主频,硬件浮点加速,实时处理传感器数据
姿态传感器MPU6050(六轴IMU)集成陀螺仪+加速度计,I2C通信
电机驱动MCPWM模块 + DRV8301驱动芯片生成6路PWM,驱动无刷电机
编码器接口QEI模块(正交编码器接口)实时读取电机转速/位置
通信接口UART/USB(调试) + CAN(扩展)数据传输与参数校准

二、软件实现流程
1. 传感器数据采集与融合

// 使用Microchip Harmony框架配置I2C读取MPU6050
void IMU_ReadData(void) {
    uint8_t raw_data[14];
    I2C_Read(MPU6050_ADDR, ACCEL_XOUT_H, raw_data, 14); // 读取14字节原始数据

    // 解析加速度计数据 (范围: ±2g)
    float accel_x = (int16_t)((raw_data[0]<<8) | raw_data[1]) / 16384.0f;
    float accel_z = (int16_t)((raw_data[4]<<8) | raw_data[5]) / 16384.0f; // Z轴垂直重力

    // 解析陀螺仪数据 (范围: ±250°/s)
    float gyro_y = (int16_t)((raw_data[8]<<8) | raw_data[9]) / 131.0f; // Y轴角速度(俯仰)

    // 互补滤波融合
    float dt = 0.01f; // 10ms采样周期
    static float pitch_angle = 0.0f;
    float accel_pitch = atan2(accel_x, accel_z) * 180/M_PI; // 加速度计计算倾角
    pitch_angle = 0.98f * (pitch_angle + gyro_y * dt) + 0.02f * accel_pitch;
}
关键点:利用硬件FPU加速浮点运算,互补滤波权重(0.98/0.02)需实测调整。

2. 双环控制算法实现


// 直立环(PD控制)
float Balance_Control(float pitch, float gyro_y) {
    float Kp = -12.0f;   // 比例系数(负号表示反向调节)
    float Kd = -0.25f;   // 微分系数
    return Kp * pitch + Kd * gyro_y; // 输出电机基础控制量
}

// 速度环(PI控制 + 积分抗饱和)
float Velocity_Control(float target_speed, float current_speed) {
    static float integral = 0;
    float Kp = 0.8f, Ki = 0.05f;
    float error = target_speed - current_speed;
   
    // 积分限幅 (±100)
    if (fabs(error) < 50) integral += error;
    else integral = 0;
   
    return Kp * error + Ki * integral; // 输出速度补偿量
}

// 总控制量合成
void Motor_Output(void) {
    float pitch = IMU_GetPitch();       // 获取当前俯仰角
    float gyro_y = IMU_GetGyroY();      // 获取Y轴角速度
    float speed = QEI_GetSpeed();       // 编码器获取当前车速
   
    float balance_out = Balance_Control(pitch, gyro_y);
    float speed_out = Velocity_Control(0, speed); // 目标速度=0(平衡点)
   
    float total_out = balance_out + speed_out;
   
    // 转换为PWM占空比(范围:-1000~+1000)
    int16_t pwm = (int16_t)(total_out * 10);
    MCPWM_SetDutyCycle(MOTOR_L, pwm);   // 左电机输出
    MCPWM_SetDutyCycle(MOTOR_R, pwm);   // 右电机输出
}
参数整定技巧:

先调直立环:增大 Kp 直至车身能勉强站立,再增大 Kd 抑制振荡
后调速度环:从较小 Ki 开始,避免积分累积导致失控


3. 电机精准驱动(利用MCPWM模块)

// 配置MCPWM(中心对齐模式,死区时间保护)
void PWM_Init(void) {
    MCPWM_ConfigTimeBase(MCPWM_MODULE1, MCPWM_TIMER2,
                         10000,          // PWM频率10kHz
                         MCPWM_TIME_BASE_CLOCK_PBCLK,
                         MCPWM_TIME_BASE_MODE_CONTINUOUS);
   
    // 设置死区时间(防MOSFET直通)
    MCPWM_ChannelDeadTimeSetup(MCPWM_CHANNEL1, 100, 100); // 100ns死区
}

// 更新PWM输出
void MCPWM_SetDutyCycle(MCPWM_CHANNEL ch, int16_t duty) {
    duty = constrain(duty, -1000, 1000); // 限幅
    MCPWM_ChannelPrimaryDutySet(ch, abs(duty)); // 设置占空比
    MCPWM_ChannelOutputPolaritySet(ch, (duty >= 0) ? MCPWM_OUT_POL_ACTIVE_HIGH : MCPWM_OUT_POL_ACTIVE_LOW); // 设置方向
}


三、Microchip方案优势
硬件加速

PIC32MZ的硬件FPU/DSP指令加速矩阵运算(如卡尔曼滤波)。

专用外设

MCPWM模块支持互补PWM、死区插入、故障保护,简化电机驱动设计。

QEI模块自动解码编码器信号,减轻CPU负担。

实时性保障

通过中断优先级配置,确保IMU数据读取(1kHz)> 控制计算(500Hz)> PWM更新(10kHz)的时序链。


四、安全与优化设计
故障保护

// 硬件看门狗+软件超限保护
if (fabs(pitch) > 30.0f) {  // 倾角过大
  MCPWM_ChannelFaultStateSet(MCPWM_CHANNEL1, MCPWM_FAULT_DISABLE); // 立即关闭电机
  Watchdog_Reset();          // 触发看门狗复位
}
低功耗模式

待机时切换至Sleep模式,IMU中断唤醒(电流 < 1mA)。

沙发
dongnanxibei|  楼主 | 2025-6-24 13:51 | 只看该作者
调试工具链
MPLAB X IDE + Harmony框架:图形化配置外设,自动生成驱动代码。

实时数据可视化:通过UART输出姿态角/电机PWM数据,用MPLAB Data Visualizer绘制波形。
printf("Pitch:%.2f,PWM:%d\n", pitch_angle, pwm); // 串口调试输出
板凳
dongnanxibei|  楼主 | 2025-6-24 13:53 | 只看该作者
关键挑战与解决[size=16.002px]
问题
Microchip方案对策
传感器噪声干扰硬件I2C滤波 + 软件卡尔曼滤波
电机响应延迟MCPWM硬件触发ADC采样,实现同步控制
电池电压波动影响PWM精度内置ADC实时监测电压,动态补偿PWM占空比

微芯单片机通过 “传感器硬件接口优化 + 实时控制算法 + 专用电机外设” 三位一体实现平衡控制,其核心代码量可控制在200行以内(不含底层驱动),响应延迟 < 2ms,满足商业平衡车的性能需求。
地板
hp860629| | 2025-7-5 09:11 | 只看该作者
这个算法很重要
5
桃花落满山前| | 2025-7-23 11:54 | 只看该作者
浅浅的回答一下
[color=rgba(0, 0, 0, 0.85)]平衡车通过陀螺仪和加速度计检测姿态,单片机计算偏差后驱动电机调整转速,利用 PID 算法实时控制两轮力矩,抵消倾倒力矩实现平衡。
6
cooldog123pp| | 2025-7-24 17:17 | 只看该作者
实现平衡 滤波算法和PID算法两大核心以及相关传感器都是必不可少
7
魔法森林精灵| | 2025-7-25 19:19 | 只看该作者
这个帖子解释了平衡车的工作原理,从硬件到软件实现,非常详细。尤其是双环控制算法的实现,对于理解平衡车的动态平衡控制非常有帮助。
8
xixi2017| | 2025-7-26 11:52 | 只看该作者
PID是个好东西。
9
yiyigirl2014| | 2025-7-29 19:33 | 只看该作者
检测不平衡,那么刷新率是多少呢?
10
魔法森林精灵| | 2025-7-30 08:53 | 只看该作者
这个帖子很详细地解释了平衡车的控制系统,从硬件架构到软件实现流程,再到安全与优化设计,非常全面。
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

223

主题

3842

帖子

18

粉丝
月月红是什么花 李知恩为什么叫iu 营长是什么级别 排卵期身体有什么症状表现吗 4.12是什么星座
血糖高了会有什么危害 吃什么补孕酮最快 总胆汁酸高是什么意思 滴度是什么意思 小限是什么意思
干眼症用什么眼药水 ad是什么的缩写 做孕检都检查什么项目 第一次表白送什么花 红花油和活络油有什么区别
黑胡椒和白胡椒有什么区别 女性解脲支原体阳性是什么意思 89年的蛇是什么命 md是什么学位 apc是什么药
肝郁化火是什么意思hcv8jop0ns2r.cn 咖啡加什么最好喝hcv8jop0ns7r.cn 小米手机最新款是什么型号hcv9jop2ns4r.cn 免冠彩照是什么意思hcv9jop0ns3r.cn 黄什么hcv8jop7ns3r.cn
fsh是什么意思hcv8jop5ns5r.cn adhd是什么病hcv9jop7ns1r.cn 什么样才是包皮hcv7jop7ns1r.cn 什么情况下需要打破伤风针hcv7jop6ns8r.cn 芝麻吃多了有什么坏处hcv9jop2ns3r.cn
血清高是什么原因hcv8jop9ns0r.cn 人生轨迹是什么意思hcv9jop3ns9r.cn 受精卵着床的时候会有什么症状hcv8jop4ns4r.cn 1993年出生属什么生肖96micro.com 湿浊中阻是什么意思hcv8jop0ns1r.cn
十二生肖排第七是什么生肖shenchushe.com 白头发吃什么维生素hcv9jop0ns9r.cn 仙人掌什么时候开花hcv9jop6ns1r.cn 奶咖是什么hcv8jop5ns1r.cn 憋气2分钟算什么水平hcv8jop6ns8r.cn
百度