电机转动原理为什么影响陀螺仪读值

豆丁微信公众号
君,已阅读到文档的结尾了呢~~
改进的小波阈值滤波算法在陀螺仪漂移伺服法测试中的应用
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
改进的小波阈值滤波算法在陀螺仪漂移伺服法测试中的应用
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口陀螺仪电机
一、陀螺仪电机定义
是机械式陀螺仪的核心组成部分,是保持陀螺转子高速转动的驱动机构,其输出的稳定性直接决定着陀螺的稳定性。(陀螺仪电机常采用同步电机、磁滞电机、三相交流电机等拖动方法来使陀螺转子绕自转轴高速旋转)
二、陀螺仪电机作用&
  单轴陀螺仪运转示意图
  陀螺仪,是一种用来感测与维持方向的装置,基於角动量不灭的理论设计出来的。主要是由一个位于轴心可以旋转的轮子构成。陀螺仪一旦开始旋转,由於轮子的角动量,陀螺仪有抗拒方向改变的趋向。
  注:1850年法国的物理学家福柯(J.Foucault)为了研究地球自转,首先发现高速转动中的转子(rotor),由于惯性作用它的旋转轴永远指向一固定方向,他用希腊字gyro(旋转)和skopein(看)两字合为gyro
scopei一字来命名。&
 一种机械陀螺仪转子组成示意图
  是陀螺仪高速旋转角动量的来源,主要是拖动位于轴心可旋转的陀螺转子做高速旋转,当陀螺转子以高速旋转时,在没有任何外力矩作用在陀螺仪上时,陀螺仪的自转轴在惯性空间中的指向保持稳定不变,同时反抗任何改变转子轴向的力量。
三、陀螺仪电机测试
  陀螺仪电机是保持陀螺转子高速转动的驱动力来源,其输出的稳定性直接决定着陀螺的稳定性。的运行稳定性,体现在输出机械特性的变化上,而输出机械特性的变化,必然会以各种形式反映在输入电参数上。因此,对输入电压、电流、瞬时功率进行分析,得到输入电参量、尤其是输入功率的变化规律,有助于对电机性能进行全面的了解。
  本陀螺仪电机测试方案采用湖南银河电气有限公司研制的,该分析仪是目前国家变频电量测量仪器计量站的测量基准,测试数据具有较高的精度和最高的权威性。每台WP4000最多可连接6个功率单元,每个DT
数字变送器可连接一路电压和一路功率。由于电机未引出中性线,一般采用二瓦计法测量三相功率,为了更加准确直接的反映三相电流,每相电流均采甠一个DT数字变送器进行测量。当采用三相功率时,每相均采用一个进行测量,由于该电机的中性线未引出,可以利用同型号的DT数字变送器电压通道输入阻抗相等的原理,构建虚拟中性点。
图示:2V3A法测量三相功率线路图
  由于二瓦计法的单个功率读数没有明确的物理意义,当不相同时,不便于分析功率波动的原因,因此,利用同型号的DT数字变送器电压通道输入阻抗相等的原理,构建虚拟中性点,并在此基础上采用三瓦计法进行测量。下图为3V3A法测量线路图。
 图示:3V3A法测量三相功率线路图
  本测试方案对的启动时间、惰转时间、启动电流、启动功耗、电压谐波、电流谐波、瞬时功率谐波进行全面测试,可较为全面了解电机的机械特性,并对电机的稳定性进行定量分析。试验电源的谐波、三相不平衡度等可调,可全面研究工作电源对电机运行性能的影响。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。陀螺仪+步进电机,怎么样才能实现自动平衡? - 控制|传感 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
陀螺仪+步进电机,怎么样才能实现自动平衡?
17:12:00  
本帖最后由 eehome 于
09:55 编辑
兄弟我最近要做个自动平衡的设备,平衡检测元件是用的一款模拟输出的陀螺仪,输出电压0.1-5V,我的执行元件准备用步进电机,(因为找到了一台拆机的带有减速装置的步进电机)且步进电机驱动器也已经装好实验了,现在的问题是:怎么样用陀螺仪输出的模拟直流电压去控制步进电机驱动器?需要用电压比较器来设置陀螺的中点吗?(平衡的位置)用比较器控制电机转换方向?
18:21:26  
哪位DX出手相助呀,不胜感激!
23:52:00  
木有人进来说说吗?是问题太难还是俺木有说清楚?还是问的太菜了?
15:44:41  
万能的论坛呀有木有人能进来说说呀
18:42:43  
看来是真的木有人来说说了
12:24:30  
我也在研究。。。。
14:05:43  
我也是,正在研究。
17:48:10  
我也不会啊。。。。
15:53:56  
把你的思路上传上来,上传方案,上传图片,在家共同讨论,
17:00:14  
我也在研究。
助理工程师
11:43:20  
不用A-D的话,还是H桥控制直流电机来的简单
15:43:59  
&&一般应用都是通过嵌入式或者其他计算器来读取陀螺仪的相关信息来计算出偏移量输出脉冲信号给步进单机的,,
10:25:53  
用电机以最快速度带动 陀螺仪转动
11:25:49  
求解,研究中
02:35:31  
不了解 学习 帮顶
08:29:55  
我最近也想用陀螺仪来控制步进电机做个稳定平台,有望单片机爱好者有偿提供源助!交流联系QQ
11:01:55  
谢谢分享………………
23:01:58  
不了解,,学习,,
15:17:52  
哎,我是来遛弯儿的,是个初学者不能帮你了。
13:38:06  
也是正在研究啊
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司查看: 77252|回复: 149
新手平衡小车卡尔曼滤波算法总结
主题帖子精华
高级会员, 积分 779, 距离下一级还需 221 积分
在线时间12 小时
由于做平衡小车,然后对那段滤波算法很疑惑,然后网上讲的又比较少,我看了一段时间的书。。。。。。。。。。。这是小弟的对这段卡尔曼滤波程序的一点理解,因为基础薄弱(大二),有错的请多多包涵,然后附带有平衡小车的程序。
23:44 上传
点击文件名下载附件
476.83 KB, 下载次数: 9852
23:44 上传
点击文件名下载附件
114.5 KB, 下载次数: 11429
23:44 上传
点击文件名下载附件
313.56 KB, 下载次数: 10076
主题帖子精华
高级会员, 积分 779, 距离下一级还需 221 积分
在线时间12 小时
楼上看一下这个。。MIT的超经典无数人看过的互补滤波器
& & & & & & & & & & &&&&&&&互补滤波器
定义:是集成加速度计和陀螺测量平衡的一个简单的解决办法的平台。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
a5bffab5cb76fe_532.png (0 Bytes, 下载次数: 37)
22:54 上传
两轴加速度计:
1.&测量加速度实际上是推动每个单元的块。
2.&可以用来测量重力加速度,上图中x轴加速度为0g,y轴加速度为1g。
3.&可以用来测量斜角。
9f86bdb521fe5f71d60b9a6_928.png (0 Bytes, 下载次数: 37)
22:54 上传
上图中x轴方向上有重力的作用&,左边的图中x有正向的加速度,右边的图中x有负向的加速度。这就使y轴方向的加速度减少。
由y轴得到的信息是否有用?可能不是:
a..x轴方向上改变一个很小的角度它的灵敏度远远高于y轴。
b.它不依赖于方向倾斜
a8ae6e3f.png (0 Bytes, 下载次数: 41)
22:54 上传
1.&测量角速度(旋转的角度)。
2.&当静止时读“0”。
3.&读取旋转时的方向值。
a3c0d449ced_824.png (0 Bytes, 下载次数: 23)
22:54 上传
左图为陀螺仪正转,右图为陀螺仪反转。
读传感器的值
第一步是要看每个传感器的模拟输入(通过类比数模转换器,ADC),并让他们成为有用的单位。这需要调整偏移和数值范围。
偏移是很容易找到的:&传感器水平和/或静止的时候读传感器的整型值。如果它的值颤动,则选择一个平均值。偏移量应该是一个整形变量(或常量)。
取值范围取决于传感器。它是由多因素预期的单位得来。这可以从传感器“数据手册”或实验得到。它有时被称为传感器常数、增益、或灵敏度。取值应该是一个浮点型的变量(或常量)。
e07b994fb8e165de57cacdd82fb155a4_847.png (0 Bytes, 下载次数: 41)
22:54 上传
即使没有ADC的结果也可以抵消负面的偏移,它们将会被去掉,所以不会使变量发生改变了。  单位可以是度或弧度(每秒陀螺仪),它们必须是一致的。
更多的关于加速度计
&&&如果必须要有一个360?角旋转的估量,有y轴方向上的测量会很有用,但不是一定必须要。有了它,我们可以用三角法找到两个轴的反正切的数值和计算两个轴的角度。没有它,我们还可以用正弦或余弦和x轴单独算出角度,因为我们知道重力的大小。但是三角法消耗处理器时间而且是非线性,所以,它可以避免就应该尽量避免。
为平衡平台,最重要的是确保角度靠近垂直。如果平台倾斜从两个方向超过30?,那可能就没有更多的控制器可以做全速行驶去纠正它,在这种情形下,我们可以用小角度近似和x轴节约处理器时间和简化编码复杂度。
ce14b457f3b252eab9d1_457.png (0 Bytes, 下载次数: 44)
22:54 上传
平台有一个倾斜的角度θ,但是是静止的(没有水平加速度)
X轴方向上:(1g)&×&sin(θ)&小角度近似:sin(θ)&≈&θ,按幅度来算的话θ=±π/6&=&±30?。
因此编码的二进制码如下:
x_acc&=&(float)(x_acc_ADC&–&x_acc_offset)&*&x_acc_scale
如果x_acc_scale角度将取值输出到1[g],x轴是径直指向下,x_acc将按弧度来算。
为了获得角度,x_acc_scale应该在180/π之间取值。
所需要的测量
为了控制平台,最好是知道基础平台角度和角速度。这可能是一个角度PD(比例/微分)控制算法的基础,该算法已经证实了该系统类型可以很好地工作。像这样的:
电机输出&=&Kp&×&角度&+&Kd&×&&角速度
电机真正的输出又是另一回事。但常规的想法是,这种控制建立可调谐Kd和Kp使它达到稳定和平稳的性能。这是不太可能超越的水平点除了proportional-only控制器之外。(如果角度是正向的,但是角速度是负向的,即它反馈回来的是水平的,电机就会提前减慢。)
afa6eebdc5f_496.png (0 Bytes, 下载次数: 41)
22:54 上传
事实上,这种PD控制方案就像对智能车添加一个可调弹簧和阻尼器。
映射传感器
bf454ddbd33e1a6_779.png (0 Bytes, 下载次数: 31)
22:54 上传
这是最好的方法吗??
85f08e6c687f4ba552cb3cd_0.png (0 Bytes, 下载次数: 41)
22:54 上传
赞成的观点:1.直观。
&&&&&&&&&&&&2.容易编码
&&&&&&&&&&&&3.&陀螺给快速、准确的角速度测量
反对的观点:&1.噪声。
&&&&&&&&&&&&&2.&x轴要读水平方向任何角度改变的加速度。(想象一下平台是水平,但平台电机使它向前加速,加速度计也无法和引力鉴别开。)
066fc8c1de634da14f95a2ebf5e3f4f9_488.png (0 Bytes, 下载次数: 50)
22:54 上传
0.75和0.25是参考数值。这些可以调谐滤波到满意的变化时间常数。
赞成的观点:
1.&依然很直观。
2.&依然很容易编码。
3.&过滤掉短周期水平加速度,唯一可以通过的是长周期的加速度(重力)。
反对的观点:
1.&测角由于取平均值而滞后,过滤器越多就越能滞后,滞后一般会影响稳定性。
赞成的观点:
1.&只有一个传感器来读.
2.&快速,滞后不是问题
3.&不受制于水平加速度。
4.&容易编码。
反对的观点:
1.&可怕的陀螺漂移,如果陀螺没有准确的读出平衡时的零点(而且它不会),小速度将持续增加角度,直到它远离实际的角度。
c39bc146db1e0c55f90fa2a949e101c1_833.png (0 Bytes, 下载次数: 13)
22:54 上传
赞成的观点:
1.&想象一下理论上完美的滤波器可以滤去杂波、准确的估计。
2.&考虑到系统的已知的物理性质(质量、惯性等)。
反对的观点:
1.&我不知道它是如何工作的,它的算法很复杂的,需要了解一些线性代数的知识。不同情况有不同形式。
2.&可能很难编码。
3.&会消耗处理器的时间。
bb3f30219fdbaef.png (0 Bytes, 下载次数: 39)
22:54 上传
赞成的观点:
1.&可以帮助解决噪声、漂移、水平加速度的依赖性。
2.&快速估计角度,比只有低通滤波器时的滞后明显减弱。
3.&处理器不是很密集。
反对的观点:
1.&和低通滤波相比需要了解更多的理论知识,但没有像卡尔曼滤波器那样。
更多关于数字滤波器
&&&&数字滤波器有很多的原理,其中大部分我不懂,但是没有理论符号的基本概念很容易掌握&(z-domain转移函数,如果你想研究它),这里有一些定义:
整合:这很简单,想像一个汽车以一个已知的速度移动,你的程序是一只钟每隔几毫秒滴答响一次,为了在每一个滴答声响得到新的位置,你应把旧的位置加上改变的位置。这个位置的改变只是自从上次滴答响,这辆小汽车的速度乘以时间,你由单片机定时器或其他已知的定时器得到数值。在代码:
新位置=旧的位置+速度*变化的时间。
对于平衡的平台来说:角度=原来的角度+陀螺仪的值*变化的时间。
&&&&&低通滤波器:低通滤波的目的是只让长期信号的变化量通过,过滤掉短期的波动。一种方法是力的变化建立在随后的时间一点一点地通过程序循环。在代码中:
angle&=&(0.98)*angle&+&(0.02)*x_acc
例如,开始是零的角度,加速计突然跳跃到10?,角度估计的改变像随后的迭代:
97f17a09_35.png (0 Bytes, 下载次数: 39)
22:54 上传
如果传感器保持在10?,角度估计将会上升直至在它的水平这个值。所花费的时间,达到充分数值既取决于过滤常数(例如0.98和0.02)也取决于采样率的回路(dt)。
高通滤波器:理论和低通滤波器相比这有点难以解释,但作用上它恰恰和低通滤波器相反:它允许短周期信号通过,过滤信号而达到稳定,这能用来抵消漂移(过滤掉直流成分)。
采样周期:每个程序之间经过循环所需时间的长短。如果采样率是100赫兹,采样周期为0.01秒。
时间常数:滤波器的时间常数表现为一个相对持续的信号,对于一个低通滤波器,分析了信号的时间常数远比通过信号改变而短于过滤的时间常数。对于高通滤波器那就是相反的,这个时间常数,τ,是一个低通滤波器。
&&&&&&y&=&(a)*(y)&+&(1-a)*(x);
所以如果你知道所需的时间常数和采样率,你可以选择滤波器系数。
补充:这表示滤波器的两个部分总是合成一部分,输出是一种精度高的值、单位的线性估计这样做是有意义的。读得差不了,我感觉这滤波器不是准确的互补,&但是当时间常数远比采样率大的时候是一个很好的近似(对任何数字控制来说是一个必要条件)。
仔细看看角互补滤波器
7aa72ac5aae61a90d8cedb_877.png (0 Bytes, 下载次数: 43)
22:54 上传
如果这个过滤器运行一个循环中执行100次/秒,时间常数对低通、高通滤波器是:
& & & & & &
c2f2bc4c.png (0 Bytes, 下载次数: 39)
22:54 上传
在这个定义中是徘徊在信任陀螺仪和加速度计的边界,如果这个时间短于半秒钟,陀螺仪整合和滤除水平加速度噪声优先。如果时间期长于半秒钟,平均加速计的质量比陀螺仪更重,可能这一点有漂流。
&&大多数情况下,设计滤波器通常用其他的方式,首先,选择一个时间常数,然后用它来计算滤波器系数。挑选时间常数在这个地方你可以调整响应。如果你的陀螺仪漂移平均每秒2?(可能是一个最坏的估计),你可能想要一个小于一秒的时间常数,让你可以保证在任一个方向上从未漂移超过两度。但时间常数越低,加速度越水平噪声将允许通过。像许多其他控制的情况下,有一个权衡,唯一的办法就是去试验。
&&&记住,&选择正确的采样率系数是非常重要的,如果你改变你的程序,增加更多的浮点运算和
是导致你的采样率下降的两个因素。你的时间常数会变大有两个因素除非你重新计算你的过滤条件。
&&&举个例子,考虑使用26.2毫秒的收音机更新你的控制回路(通常是一个缓慢的思想,但它是工作的)。如果你想要一个0.75秒的时间常数、过滤器术语应该是这样的:
5913baacec9bbe018a.png (0 Bytes, 下载次数: 39)
22:54 上传
滤波器上陀螺仪的偏压它也是值得去思考。这个过滤器陀螺肯定不会造成漂移的问题,但它仍然可以影响角的计算方法。举例来说,我们误选错了偏移和我们的速率陀螺静止时报告5?/秒的旋转,它算术上可以证明(这里我不会)&角度估计等于偏移速度乘以时间常数。因此,如果我们有一个0.75秒时间常数,这将给一个常数3.75?角的偏移量。
另外,这可能是一个坏的情形(陀螺仪不应该那么远偏移),长角度偏移和一个漂泊角度偏移量相比较是很容易处理的。举例说来,你可以在相反的方向旋转加速度计3.75?来调节它。
对某些实验结果的足够理论
控制平台:自定义PIC-based无线控制器,十位精度的ad。
数据采集:一个串行USB收音机,做在Visual&Basic上。
陀螺:ADXRS401、模拟装置iMEMS&/秒75?角速率传感器。
加速度:ADXL203,模拟设备两轴iMEMS加速度计。
3dee69dcfea4ea7b962dba_447.png (0 Bytes, 下载次数: 24)
22:54 上传
注意过滤处理两个问题:水平加速度干扰而不旋转(强调蓝色)和陀螺漂移(突出红色)。
3bdbc4e6fc56ecdbef3ac11_211.png (0 Bytes, 下载次数: 43)
22:54 上传
这里有两件事情需要注意:第一,不可预见的启动问题(蓝色凸显),如果你不适当初始化你的变量这是什么都可能发生的,长时间常数是指前几秒钟可以不确定。这是很容易地确保所有重要的变量将被初始化为0,或者任何一个“安全”的数值。其次,注意到严重的陀螺偏移量(红色突出),大约6?/秒,以及如何创造一个恒角度在偏移角度估计中。角度偏移约等于陀螺偏移乘以时间常数)这是一个很好的坏的情形的例子
我认为这个过滤器,很适合D.I.Y.平衡解决方案,原因如下:
1.&这似乎工作,角度估计是准确,响应快的,但是对横向加速度和陀螺仪漂移是不敏感的。
主题帖子精华
高级会员, 积分 779, 距离下一级还需 221 积分
在线时间12 小时
第三个PDF是参考的论文,最近也在做四轴。
主题帖子精华
金钱127398
在线时间1109 小时
不错,谢谢分享。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
主题帖子精华
新手入门, 积分 21, 距离下一级还需 -1 积分
在线时间0 小时
不错啊,谢谢分享
主题帖子精华
在线时间770 小时
好东东,谢谢分享
主题帖子精华
初级会员, 积分 119, 距离下一级还需 81 积分
在线时间7 小时
第二篇文章讲的很详细。。
主题帖子精华
新手入门, 积分 31, 距离下一级还需 -11 积分
在线时间0 小时
楼主,滤波程序中的&dt&怎么得到的呀??
主题帖子精华
高级会员, 积分 779, 距离下一级还需 221 积分
在线时间12 小时
回复【7楼】PYPXY:
---------------------------------
两次滤波之间的时间,这个是由定时器中断来定的,注意这个优先级一定要定的很高,不然会有噪声,pid控制中d的噪声也会很大
主题帖子精华
新手入门, 积分 40, 距离下一级还需 -20 积分
在线时间0 小时
表示楼主的那个文档写的真不错。不敢相信如此牛气的大二小神啊。 & 我最近也在做小车,最近一直在用& & tft屏显示角度传感器的数值,之前用别人的程序,没加卡尔曼滤波之前显示的值还是比较稳的,加了之后显示的不太稳,得几秒钟才能够稳住,现在看了你的程序发现我之前的那个程序的卡尔曼滤波一直没有用定时器来设定dt的时间。等我按照你那个加了之后就只显示0了 & 请问楼主这是什么意思呢?
主题帖子精华
高级会员, 积分 779, 距离下一级还需 221 积分
在线时间12 小时
回复【9楼】yw:
---------------------------------
额,,不明白你什么意思啊。。dt你要宏定义,比如浮点的0.01然后定时器中断就是10ms呗
主题帖子精华
在线时间2 小时
你用的什么CPU,另外你要想清楚你用卡尔曼的原理,就是融合加速度和陀螺仪两种传感器么?
主题帖子精华
高级会员, 积分 779, 距离下一级还需 221 积分
在线时间12 小时
回复【11楼】惯性坐标系:
---------------------------------
就是普通的stm32103,这个平衡小车就是融合加计和陀螺仪,对角度还有陀螺仪的漂移最优估计,但是这个系统方差不变取定值容易出问题
主题帖子精华
在线时间2 小时
回复【12楼】2013的弹子球:
---------------------------------
你这个系统比较简单,不建议用复杂的卡尔曼,可以用比较简单的互补滤波试试。
主题帖子精华
高级会员, 积分 779, 距离下一级还需 221 积分
在线时间12 小时
回复【13楼】惯性坐标系:
---------------------------------
奥。。。确实可以用互补滤波。。。这个卡尔曼还行吧2维的。。不是太复杂。。基本他们做平衡车的都用的这个。。但我们学校的做飞思卡尔的用的互补滤波比卡尔曼稳一些,但是只需修改一些这个就比互补滤波好了,互补滤波会产生相移的,二阶的话特别明显
主题帖子精华
新手入门, 积分 21, 距离下一级还需 -1 积分
在线时间0 小时
非常感谢!努力学习!
主题帖子精华
新手入门, 积分 40, 距离下一级还需 -20 积分
在线时间0 小时
那个PID什么意思,看不懂啊!
主题帖子精华
高级会员, 积分 779, 距离下一级还需 221 积分
在线时间12 小时
回复【16楼】yw:
---------------------------------
能百度的先百度。。百度讲的清楚多了
主题帖子精华
中级会员, 积分 314, 距离下一级还需 186 积分
在线时间22 小时
回复【2楼】2013的弹子球:
--------------------------------
你这个卡尔曼后出来的波形与没有经过卡尔曼的波形相比跟随性好不好啊!?
主题帖子精华
高级会员, 积分 779, 距离下一级还需 221 积分
在线时间12 小时
回复【18楼】jiushibuzhidao:
---------------------------------
额。。这个是普通的卡尔曼。。跟随性肯定是比互补滤波好的。。你可以看坛里其他人做的测试。。
主题帖子精华
中级会员, 积分 314, 距离下一级还需 186 积分
在线时间22 小时
回复【19楼】2013的弹子球:
---------------------------------
我之前测试过的,但是不知道为什么我那个跟随性不是很好啊
主题帖子精华
高级会员, 积分 779, 距离下一级还需 221 积分
在线时间12 小时
回复【20楼】jiushibuzhidao:
---------------------------------
奥。。。不知道啊。。。我用这个做的两轮小车。。挺好啊。。卡尔曼啥的没啥区别。。没有不一样都是一样的。。。。
主题帖子精华
新手入门, 积分 40, 距离下一级还需 -20 积分
在线时间0 小时
我用显示屏显示卡尔曼滤波的效果,没加卡尔曼角度达到的比较快,比如我转到20度显示就是20度,加了卡尔曼滤波后转到二十度,得过1s左右才是显示的20度。而且我一移动那个,数值变化就特别灵敏,请问大神为何?
主题帖子精华
高级会员, 积分 779, 距离下一级还需 221 积分
在线时间12 小时
回复【22楼】yw:
---------------------------------
额,,我不是大神,,然后我也不清楚啊。。最后说一下猜测。。你把跟新速度调快点试试,它是迭代算法,如果你跟新的比较慢的话接近真实值得速度就慢,互补滤波更明显。。。。
主题帖子精华
新手入门, 积分 40, 距离下一级还需 -20 积分
在线时间0 小时
请问PID调PWM的时候,Speed&=&Speed*0.7;这句话是滤波意思吧!&但是不太明白这个参数怎么来的。求指教
主题帖子精华
高级会员, 积分 779, 距离下一级还需 221 积分
在线时间12 小时
回复【24楼】yw:
---------------------------------
有多一点的代码么,你这么说看不懂额。。
主题帖子精华
新手入门, 积分 40, 距离下一级还需 -20 积分
在线时间0 小时
Absolute_Speed&=&(Absolute_Cont2&+&Absolute_Cont3)&*0.5;
&Speed&=&Speed*0.7;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&请问这两句是什么意思?
&Speed&+=&Absolute_Speed*0,3;&&&&&&&&&&&&&&&&请问这两句是什么意思?&&为什么这么弄呢?
&nbsposition&+=&S&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&在这个球位移累加的过程中不用考虑速度的正负吗?&
&nbsposition&+=&Speed_
&if(Position&-6000)&nbsposition&=&-6000;
&if(Position&&6000)&nbsposition&=&&6000;
主题帖子精华
高级会员, 积分 779, 距离下一级还需 221 积分
在线时间12 小时
回复【26楼】yw:
------------------------------
你这个是互补滤波么。。。能再发全一点么。。各个变量啥的都是什么啊。。我可能不知道让大家看看呗
主题帖子精华
新手入门, 积分 40, 距离下一级还需 -20 积分
在线时间0 小时
//&calculate_Speed,PID计算PWM值,车速环是做PI运算
//&入口:&无
//&出口:&无&
void&calculate_Position()
{
&Absolute_Cont2&=&TIM2-&CNT&-&COUNTER_RESET;
&Absolute_Cont3&=&TIM3-&CNT&-&COUNTER_RESET;
&Absolute_Speed&=&(Absolute_Cont2&+&Absolute_Cont3)&*0.5;
&Speed&=&Speed*0.7;
&Speed&+=&Absolute_Speed*0,3;
&nbsposition&+=&S &&&&&&&&&&&&&&&&&&//积分得到位移
&nbsposition&+=&Speed_
&if(Position&-6000)&nbsposition&=&-6000;
&if(Position&&6000)&nbsposition&=&&6000;
}
//&calculate_PWM,PID计算PWM值
//&入口:&无
//&出口:&无&
void&calculate_PWM(float&Gry_vivi,float&angle)
{
int&nbspwm,Pwm_R,Pwm_L;
calculate_Position();
Pwm&=&Kp*angle&+&Kd*Gry_vivi&+&Kpp*Position&+&Ki*Speed&;
Pwm_R&=&nbspwm&+&turn_
Pwm_L&=&nbspwm&-&turn_
Set_Moto(Pwm_R,Pwm_L);
}
//&Set_Moto,置占空比和电机方向
//&入口:&无
//&出口:&无&
void&Set_Moto(int&nbspwm_R,int&nbspwm_L)
{
if(Pwm_R&0)
&&&Dir_R1&=0;
Dir_R2&=1;
& Pwm_R=-Pwm_R;
LED_R_Green&=&1;
LED_R_Red&=&0;
&&&Dir_R1&=1;
&&&Dir_R2&=0;
LED_R_Green&=&0;
LED_R_Red&=&1;
&if(Pwm_R&gtwm_saturation+dead_zone_R)
&&Pwm_R&=&Pwm_saturation+dead_zone_R;
&MOTO_PWM_R&=&Pwm_R;
&//电机R占空比
&if(Pwm_L&0)
&&&Dir_L1&=0;
Dir_L2&=1;
& Pwm_L=-Pwm_L;
LED_L_Green&=&1;
LED_L_Red&=&0;
Dir_L1&=1;
&&&Dir_L2&=0;
LED_L_Green&=0;
LED_L_Red&=&1;
&if(Pwm_L&Pwm_saturation+dead_zone_L)
&&Pwm_L&=&Pwm_saturation+dead_zone_L;
&&MOTO_PWM_L&=&Pwm_L;
&&//电机L占空比
}
我是直接复制你上面文件里的部分程序。&&计算PWM波的值
主题帖子精华
新手入门, 积分 40, 距离下一级还需 -20 积分
在线时间0 小时
回复【28楼】2013的弹子球:
---------------------------------
&&你这个不是用在结算加速度那一块的吗?
主题帖子精华
高级会员, 积分 779, 距离下一级还需 221 积分
在线时间12 小时
回复【30楼】yw:
---------------------------------
Speed&=&Speed*0.7;
Speed&+=&Absolute_Speed*0,3;我的理解是一个低通滤波。0.3这个参数越大,跟随真实速度的值越快,噪声也越大。越小跟随越慢,噪声越小
实际电机控制的时候这些细小的噪声是没有用的电机也反应不过来(只是我个人觉得哈),所以一般求来的要求个平均值,这里低通滤波也行
COUNTER_RESET应该是你设定的值就是现在应该有的速度对应的脉冲计数,这里的speed应该是速度的误差,&nbsposition&+=&S&&&&&对误差进行积分,不用考虑正负
还有。。。。你还是没发全。。。看着费劲
主题帖子精华
新手入门, 积分 40, 距离下一级还需 -20 积分
在线时间0 小时
既然这样那我直接上文件吧!
首先,第一个“原版平衡小车程序”是我下载你这个贴的附件;TIM2-&CNT = COUNTER_RESET;
//计数初值为32767 & 以及Absolute_Cont2 = TIM2-&CNT - COUNTER_RESET;这两句话可以判定速度的正负,比如当反向转动的时候,计数器就会向下技术,然后得到的值就会比COUNTER_RESET小,速度就是负值,正值同样道理。 &但是第二个附件“自平衡小车驱动程序”里面设置的初始值是0xffff,你的程序(第一个文件)初始值是COUNTER_RESET=32767 & ;表示我不太明白他那个程序怎么区分正负的呢?
刚刚看了一些stm32的编码器模式的相关资料,表示没有发现重点。没有发现两个通道输入脉冲怎么确定其方向的。
你说的滤波那个,怎么说呢,有种卡尔曼滤波那意思,就是使速度值趋向相信上一时刻的速度值。这个赞同,虽然不太明白为啥这么做,但是还是差不多清楚了那是用来干嘛的。
最近只用角度和角速度进行PD,遇到一个问题,就是PWM波的值得到60%+以上轮子才开始转,然后在车子小角度的时候,车轮没反应。不过后来给加了个初始值就好一些了。
然后目前调试过程中不知为何出BUG了,仿真发现程序停在那个I2C停止信号那一块了。那我就把我自己折腾的程序拿出来,表见笑
01:15 上传
点击文件名下载附件
4.67 MB, 下载次数: 1515
01:15 上传
点击文件名下载附件
1.08 MB, 下载次数: 2180
01:15 上传
点击文件名下载附件
476.83 KB, 下载次数: 1757
主题帖子精华
新手入门, 积分 40, 距离下一级还需 -20 积分
在线时间0 小时
回复【32楼】yw:
---------------------------------
额,表示上传之后顺序就乱了,还好上面有说。不过声明一下,我自己在改的程序是附件1-蓝牙。。。。
主题帖子精华
高级会员, 积分 779, 距离下一级还需 221 积分
在线时间12 小时
回复【33楼】yw:
---------------------------------
明天考试了明天晚上再看,电机有死区的不过你这白分之60太大了吧,是电压低。。交流交流。。
主题帖子精华
高级会员, 积分 779, 距离下一级还需 221 积分
在线时间12 小时
回复【33楼】yw:
---------------------------------
是电压低么。。。
主题帖子精华
新手入门, 积分 40, 距离下一级还需 -20 积分
在线时间0 小时
回复【35楼】2013的弹子球:
---------------------------------
嗯&,差不多是这回事!我估计是stm32的电平比较低,然后驱动出来的电压也不太大。因为之前用51的时候都是用40%左右。
&&行,那你安心准备考试吧!
主题帖子精华
高级会员, 积分 779, 距离下一级还需 221 积分
在线时间12 小时
回复【36楼】yw:
---------------------------------不是不是。。。。你不是电机驱动么。。我说的电机的供电电压。。
奥。。我明天电工大后天大物。。你的那个程序太多了。。我考完大物晚上再看。。不行也能问学长
主题帖子精华
新手入门, 积分 40, 距离下一级还需 -20 积分
在线时间0 小时
回复【37楼】2013的弹子球:
---------------------------------
驱动的供电电压应该没有问题吧&&11.3V左右
主题帖子精华
高级会员, 积分 779, 距离下一级还需 221 积分
在线时间12 小时
回复【38楼】yw:
--------------------------------
你充电试试。。。。蓝皮那种电池我记得11.几可以冲了
主题帖子精华
新手入门, 积分 40, 距离下一级还需 -20 积分
在线时间0 小时
回复【39楼】2013的弹子球:
---------------------------------
不是那个问题,电池的那个你可以放心。
主题帖子精华
新手入门, 积分 40, 距离下一级还需 -20 积分
在线时间0 小时
对了,你设置的编码器脉冲感觉数目不太对啊!在编码器接32之前我测了一下那转速下面的脉冲频率是11k也就是10ms应该产生110个脉冲啊!为什么我仿真的不对呢!那个循环也只有一些函数啊,并没有其他的延时函数啊!好郁闷
主题帖子精华
高级会员, 积分 779, 距离下一级还需 221 积分
在线时间12 小时
回复【41楼】yw:
---------------------------------
==..额,,这个是别人的程序。。只是很多人对卡尔曼这段有疑惑写的总结。。。你加油。。我继续复习了不然连跪了。。。。卧槽考的不好啊。。晚点我们再交流
主题帖子精华
初级会员, 积分 87, 距离下一级还需 113 积分
在线时间0 小时
我想问下LZ,陀螺仪的值你是用串口发送看的还是显示屏?
主题帖子精华
高级会员, 积分 779, 距离下一级还需 221 积分
在线时间12 小时
回复【43楼】扬帆起航:
---------------------------------
想用啥就啥额。。。我用的NRF2401
主题帖子精华
初级会员, 积分 87, 距离下一级还需 113 积分
在线时间0 小时
float的数怎么用串口打印出来?
主题帖子精华
高级会员, 积分 779, 距离下一级还需 221 积分
在线时间12 小时
回复【45楼】扬帆起航:
---------------------------------
串口。。。不是有printf么。。支持float。如果是无线,float分解一下一个字节一个字节的发就行了呗
主题帖子精华
初级会员, 积分 87, 距离下一级还需 113 积分
在线时间0 小时
cfdce5fb9acdd_185.png (0 Bytes, 下载次数: 37)
22:54 上传
为什么用卡尔曼滤波输出的值是这样子的?
主题帖子精华
初级会员, 积分 87, 距离下一级还需 113 积分
在线时间0 小时
弄出来了,时钟设置得不对
主题帖子精华
初级会员, 积分 87, 距离下一级还需 113 积分
在线时间0 小时
数据有点不正常啊,卡尔曼随着时间的增加,角度不断的减少
主题帖子精华
高级会员, 积分 779, 距离下一级还需 221 积分
在线时间12 小时
回复【47楼】扬帆起航:
---------------------------------
。。你好好看书查资料
Powered by

我要回帖

更多关于 电机转动惯量计算 的文章

 

随机推荐