随笔分类 -  两轮自平衡小车

摘要:车模速度控制:车模速度控制采用了典型的PI 控制算法,对于PI 调节算法中的参数整定可以参照一般PI 参数整定的方法进行。速度控制子程序是每隔一段时间(100ms)调用一次,程序并没有直接更新 g_nLeftMotorSpeedOut ,g_nRightMotorSpeedOut的数值,而是通过调用函数更新上面的数值CalculateMotorSpeedOut(),而此函数是每5ms被调用一次,所以程序是将速度控制的变化量平均到20次进行更新。这样可以降低速度控制对于车模直立控制的影响。 该函数的输入为:g_nLeftMotorSpeedCount ,g_nRightMotorSpeedCou 阅读全文
posted @ 2013-01-07 11:59 奔流聚海 阅读(1360) 评论(0) 推荐(0)
摘要://***************************************// HMC5883 IIC测试程序// 使用单片机STC89C52// 晶振:12M// 显示:串口输出,波特率4800// 编译环境 Keil uVision3// 参考宏晶网站24c04通信程序// 时间:2012年11月27日// 修改:Mr Lee//****************************************#include <REG51.H>#include <math.h> //Keil library #include <stdio.h> 阅读全文
posted @ 2013-01-02 21:17 奔流聚海 阅读(7289) 评论(2) 推荐(0)
摘要:(1)、参考资料:飞思卡尔官网1.0,2.0两个版本,有详细的原理和方案介绍;当然,我们采用的陀螺仪和加速度计以及相关芯片不一定是按照文档所述的方案进行,但是原理是相同的;重要的加点为: A、我们小车要模型实质上单摆倒立模型,要平衡必须要有指向平衡点的回复力,平衡车同样需要,只不过这个里需要小车的电机加速来维持平衡;B、要平衡,小车的模型与电机的转速转矩和轮子的大小有关系,要么轮子大些,要么电机转速快些,同时,姿态传感器最好放在小车的质心处; C、具体细节而言,小车的电机运动过程分为加速过程和平衡过程,小车平衡必须在加速阶段完成;首先需要进行姿态检测,了解姿态信息,然后通过PD调接来控制电机. 阅读全文
posted @ 2012-11-05 18:03 奔流聚海 阅读(2077) 评论(0) 推荐(0)
摘要:在十种经典软件滤波算法中,可以看到很多算法都是平均值滤波算法变种,事实上最常用的也还是平均值滤波算法。但传统的平均值滤波算法很占内存,每次运算都要求累加和,再求平均值,导致运算效率不高。今天介绍一种超简洁超高效的平均滤波算法,此算法是以前搞单片机时一老师所创(单片机上的内存简直是寸土寸金),仅仅用三个变量,就完成了平均值滤波的计算。刚开始看到这个算法是只觉得很佩服,后来用了各种各样的算法后,才感到此算法简直到了鬼斧神工的地步(别以为看完后觉得太简单没啥大不了的,正是因为太简单才突出了它的了不起,最开始能想到将一个复杂的算法简化到无法再简的地步非一般功力所能做到的)。在该基础上,我们再演变出一种 阅读全文
posted @ 2012-10-16 21:29 奔流聚海 阅读(5677) 评论(1) 推荐(0)
摘要:摘要 数据采集,又称数据获取,是利用一种装置,从系统外部采集数据并输入到系统内部的一个接口。数据采集技术广泛引用在各个领域。比如摄像头,麦克风,都是数据采集工具。被采集数据是已被转换为电讯号的各种物理量,如温度、水位、风速、压力等,可以是模拟量,也可以是数字量。在互联网行业快速发展的今天,数据采集已经被广泛应用于互联网及分布式领域,数据采集领域已经发生了重要的变化。 而在数据采集中存在着各种噪声。滤除噪声的方法有很多种,既有数字滤波器,也有模拟滤波器。这里我们采用了基于单片机和C语言来设计并开发数字滤波系统。 我们针对于单片机数据采集系统中经常出现的随机干扰,通过手动输入来模拟数据采集过程,验 阅读全文
posted @ 2012-10-16 20:47 奔流聚海 阅读(3371) 评论(0) 推荐(1)
摘要:初始化定义 1 #ifndef _MPU6050_H 2 #define _MPU6050_H 3 4 #define PORT_USED 0 5 6 #define MPU6050_ADDRESS_AD0_LOW 0x68 // address pin low (GND), default for InvenSense evaluation board 7 #define MPU6050_ADDRESS_AD0_HIGH 0x69 // address pin high (VCC) 8 #define MPU6050_DEFAULT_ADDRE... 阅读全文
posted @ 2012-09-17 15:47 奔流聚海 阅读(11220) 评论(1) 推荐(0)
摘要:Mpu6050为全球首例整合3轴陀螺仪、3轴加速器、含9轴融合演;MPU-6000为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时之轴间差的问题,减少了大量的包装空间。MPU-6000整合了3轴陀螺仪、3轴加速器,并含可藉由第二个I2C端口连接其他厂牌之加速器、磁力传感器、或其他传感器的数位运动处理(DMP: Digital Motion Processor)硬件加速引擎,由主要I2C端口以单一数据流的形式,向应用端输出完整的9轴融合演算技术InvenSense的运动处理资料库,可处理运动感测的复杂数据,降低了运动处理运算对操作系统的负荷,并为应用开发提供架构化. 阅读全文
posted @ 2012-09-11 15:01 奔流聚海 阅读(14851) 评论(7) 推荐(1)
摘要:小车下面就是L3G4200D + ADXL345 两个模块,加速度模块没固定好,板子太小了没地方打孔; 加速度模块角度计算: 如果传感器 x 轴朝下, y 轴朝前 那竖直方向弧度计算公式为: angle = atan2(y, z) //结果以弧度表示并介于 -pi 到 pi 之间(不包括 -pi) 如果要换算成具体角度: angle = atan2(y, z) * (180/3.14) 如:actan(1,sqrt(3)) * 180 / PI = 30° 陀螺仪角度计算: 式中angle(n)为陀螺仪采样到第n次的角度值; angle(n-1)为陀螺仪第n-1次采样时的角度值; g 阅读全文
posted @ 2012-09-01 17:20 奔流聚海 阅读(4480) 评论(1) 推荐(0)