自平衡小车控制系统设计与实现

需积分: 9 3 下载量 191 浏览量 更新于2024-07-21 1 收藏 104KB DOC 举报
"该资源提供了一个自平衡小车的设计方案,可用于行走机器人和移动雷达等领域。方案中包含自平衡程序的实现,涉及了微控制器编程、传感器数据处理以及电机控制等多个方面。" 自平衡小车是一种能够自主保持直立状态的机器人平台,常见于教育、科研和娱乐领域。该设计方案的核心是自平衡程序,通过精确控制电机转速来调整小车的姿态,使其在各种情况下都能保持稳定。 1. **微控制器编程**:代码中包含了`DSP281x_Device.h`和`DSP281x_Examples.h`头文件,这表明设计基于Texas Instruments公司的TMS320F281x系列数字信号处理器(DSP),这是一种高性能、低功耗的微控制器,适合处理复杂的实时计算任务,如平衡算法。 2. **传感器数据处理**:代码中定义了`adc_current_samples`数组用于存储ADC(模拟-数字转换器)采样数据,可能是来自陀螺仪或加速度计的数据,用于检测小车的倾斜角度和角速度。`gyro_filter`结构体可能包含了对陀螺仪数据进行滤波的算法,例如互补滤波或卡尔曼滤波,以减少噪声并提高稳定性。 3. **电机控制**:变量`left_motor_pwm`和`right_motor_pwm`分别代表左右电机的脉宽调制(PWM)信号,通过调整PWM信号的占空比来改变电机转速,从而调整小车的姿态。`steer_cmd`可能用于控制小车的转向,`left_cof`和`right_cof`可能是校准电机性能的系数。 4. **控制模式**:`mode`变量定义了两种模式——平衡模式(0x00)和辅助模式(0x01)。平衡模式下,小车自动保持直立;辅助模式可能允许用户通过外部输入来控制小车。 5. **状态监测**:`still`和`stand`变量用于检测小车是否静止或站立状态,这有助于判断小车当前的行为。`last_balance_s0`和`totsamples_0`可能是用于记录平衡状态和采样计数的变量。 6. **参数设定**:`initial_angle`是小车的初始倾角,`hard_speed_lim`是最大速度限制,`steer_lim`是转向限制,这些参数可以根据实际应用需求进行调整。 7. **其他变量**:`bus_current`可能是测量电池电流的变量,`cmd`可能用于接收外部指令,`batt_voltage1`表示电池电压,`ay`和`ax`可能是加速度计的Y轴和X轴读数,`in_steer_knob`可能是用于用户输入转向控制的变量,`pitch_rate`表示俯仰角变化率。 这个自平衡小车方案涵盖了从硬件接口到软件控制策略的多个层面,是一个完整的控制系统设计。开发者可以通过调整参数、优化滤波算法以及改进控制策略,进一步提升小车的稳定性和性能。
2021-04-22 上传
硬件选择与方案设计: 胶枪、电转、电表等耐用品工具的价格不计算在内,下列原件总共花了我大概450元吧。无意给淘宝商家做广告,所以请大家自动略过图片中的商家logo。 1. 控制板采用原子的STM32 MINI开发板,不带屏的话138元吧。遥控使用板上的红外接收器,当然理论上也可以使用板上的rf无线模块接口。 2. 方位传感器采用iic接口的9轴模块,花了我88大洋。包括加速度、角速度、气压、地磁传感器,主要是考虑到以后别的用途,如果采用6轴模块的话,应该可以降到50元以内吧。 自平衡小车需要使用到1个角速度分量和2个加速度分量,通过融合滤波得到较为准确的小车倾斜角度值。查看网上几年前的小车,都是使用3个独立ic搭建的,而且还是使用模拟量输入;查找网上资料,现在都是集成ic,接口主要有spi和iic,而且还有中断输入。我买的这个模块只有iic接口,而且没有中断输出,iic接口,故只能采用周期性查询方式;加速度传感器采用的是ADXL345,角速度传感器采用L3G4200D,这两个ic的手册资料是比较齐全的,便于学习。 3. 采用9v减速电机与铝合金支架、轮胎,指导价格98元。卖家给的资料有限,电机的参数不明,减速比都是自己测的。经过实测,电机的减速比大概为150。感觉小车的力矩还是比较大的,但是反应速度不够快;采用减速比100的电机或是大轮胎,应该能够改善小车的动力性能。电机有两个电源输入端口,通过改变电压的正负极,可以改变电机的转动方向;通过改变驱动电压的大小,可以改变电机的转速。 4. 电机驱动模块采用全隔离的L298N驱动板,抗干扰,30元。如果不是光耦隔离的话会便宜很多。卖家给的实物和照片不太一样,有一条pwm控制线5v有效,3.3v无效,说明商家卖出之前没完整的做过测试。我自己并了个电阻搞定了,也便没有跟卖家纠缠了。 模块有4个逻辑控制输入端口,接控制器的4个io口,控制2个电机的转向与停止;2个pwm输入,接控制器的pwm输出,控制2个电机的转速;1个逻辑电源输入接口,从stm32控制板上取电。驱动部分,2个电源输入端口,接聚合物锂电池,考虑到5v稳压模块从电池取电,减速电机又是9v的,建议采用9v以上的电池(我采用的是12v);4个驱动输出接2个减速电机的4个输入口。 5. 电池采用12v 3000mah的聚合物锂电池,65大洋,不包括充电器的价格。恒定放电电流可达4A,瞬间可达40A。不知道用9v的电池可不可以,当时怕电压太小,所以就没有买。据说普通的电池不能用在小车上,因为电机的瞬间电流很大,普通电池无法提供。 6. 逻辑电路5V供电模块,采用LM2596降压模块从12v锂电池取电,6元。该模块的输出电压可调,我调整到了5v输出。 7. 测速码盘,1个18元。为了省钱省地方,我只用了1个,有了这个就可以得到电机的速度反馈,再通过控制调整小车的速度、位置。小车的动力部分其实不一定要使用减速电机,而可以使用步进电机,这样就可以省掉编码器,而且控制性能更加良好。但这样带来的是需要采用专门的步进电机控制板,还有成本的攀升。不差钱的同志可以考虑采用步进电机方案。 8. 铜柱、洞洞板、连接线等若干。