OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2981|回复: 7

做项目中遇见的几个问题,各位进来讨论一下。

[复制链接]

15

主题

181

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
389
金钱
389
注册时间
2014-11-8
在线时间
40 小时
发表于 2015-10-15 18:32:39 | 显示全部楼层 |阅读模式
5金钱

最近做了个项目和比赛,过程中遇见了几个问题,想大家请教一下,希望大家积极讨论。

先说自己做项目遇见的问题。
做得一个***机器人,遇见了两个问题。
驱动用的是298模块,发现用稳压电源l298n就不能让电机反转,用航模电池供电就可以。这是为什么?
电源地和板子地接在一起,12vvcc不小心直接接在板子引脚上面,板子不工作了,请问是单片机被烧了吗,烧了单片机的哪个模块。

比赛时遇见的两个问题。
检测距离用的是GP2Y0A21YK0F传感器,用了8个,读取其返回的电压值,ad转换,dma到数组里里面。发现了一些问题。
电机转动会使这个电源系统的电压不稳定,导致传感器在电机不转时能正常工作,在转动时就不能正常工作,后来在电机,降压模块输入输出端加电容都没有明显的效果,最终解决办法是在传感器的电源正极和负极之间加一个0.1uf的电解电容,负极和信号之间加一个102的瓷片电容解决问题。(别问为什么,我们是换了几十种电容搭配组合,示波器按个看波形才发现这两种搭配对这个电路滤杂波最好,几十种电容啊,日了吉娃娃了。而且是在比赛前一天晚上才发现的,妈的法克我策略只调了一晚上),而且奇葩的是这个传感器安装的时候螺丝一拧紧就不好用了,不拧紧螺丝用着用着就松了,这个传感器哪位大神用过,加了两个电容虽然能暂时好用了,但是还是有杂波,只是不那么明显了,请问哪位大神用过这个传感器,给些电路,程序滤波,安装方法上面的建议,不胜感激。
为什么我用的板子滴答定时器不好用了,用原子哥的延时感觉时间大致短了三分之一,延时9s实际上也就延时3s左右,换了块板子依旧如此,串口返回的数据是正确的,说明晶振没问题,二块两块板子的都不好用,最后只能用for语句延时了。。。


希望大家积极讨论,多给小弟一些建议,不胜感激


Good good study , day day up...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11553
金钱
11553
注册时间
2014-4-1
在线时间
1317 小时
发表于 2015-10-15 20:14:36 | 显示全部楼层
1、可能是稳压电源的容量低。

2、现场问题,没人会知道。

3、供电容量太小,同问题1。
    电路与螺丝有关:短路,或者虚焊。

4、可能是总线频率有问题。
回复

使用道具 举报

15

主题

181

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
389
金钱
389
注册时间
2014-11-8
在线时间
40 小时
 楼主| 发表于 2015-10-15 20:56:47 | 显示全部楼层
回复【2楼】xuande:
---------------------------------
请问GP2Y0A21YK0F传感器有没有什么经典的软件滤波或者是电路滤杂波的方法。
第四个问题能否再详细的解答一下。谢谢
Good good study , day day up...
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11553
金钱
11553
注册时间
2014-4-1
在线时间
1317 小时
发表于 2015-10-15 21:30:25 | 显示全部楼层
1、别考虑复杂,用最简单的滤波:硬件上RC滤波,软件用几个值求平均。

2、最源头的时钟频率,二者可能不一致。。。猜的。
回复

使用道具 举报

15

主题

181

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
389
金钱
389
注册时间
2014-11-8
在线时间
40 小时
 楼主| 发表于 2015-10-15 21:36:32 | 显示全部楼层
回复【4楼】xuande:
---------------------------------
①这个其实简单的滤波方法我已经试了好多种,但是都没什么用。
u16 filter(u8 Channel)
{
u32 Temp_Sum=0;
u16 AD_After_Filter;
    u8 count;
   
for ( count=0;count<N;count++)
 Temp_Sum += ADCvalue[Channel];
 AD_After_Filter=Temp_Sum/N;
return AD_After_Filter;
}
我是用dma把ad值直接放到ADCvalue[]数组里面,这样能实现取平均值吗?我每次读ADCvalue[]数组里面的值都没有加延时,可以吗?

②最源头的时钟频率,二者可能不一致,还是听不懂,大神莫怪。。。>
Good good study , day day up...
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11553
金钱
11553
注册时间
2014-4-1
在线时间
1317 小时
发表于 2015-10-15 22:52:25 | 显示全部楼层
1、这样平均,物理意义是什么?这是掩耳盗铃。
    你必须保证:ADC等间隔采样;不同点相加;然后求平均。

2、stm32的时钟分配问题。
    通俗说,你这边时钟是1Mhz,原子那边可能是3MHz,虽然都数十下,但时间长度自然就不同。
    这个我不熟悉,供参考。
回复

使用道具 举报

15

主题

181

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
389
金钱
389
注册时间
2014-11-8
在线时间
40 小时
 楼主| 发表于 2015-10-16 08:56:45 | 显示全部楼层
请问如何把dma采回的数据求平均值?每次读取时加延时吗?
for ( count=0;count<N;count++) 
{
 Temp_Sum += ADCvalue[Channel]; 
delay_ms(20);
}


我的和原子哥都用的8m外部晶振,时钟树初始化是一样的,为什么会快了大致3倍呢?求解答>
Good good study , day day up...
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11553
金钱
11553
注册时间
2014-4-1
在线时间
1317 小时
发表于 2015-10-16 10:32:48 | 显示全部楼层
回复【7楼】Just Beat It:
---------------------------------

1、在两次采集数据的间隙,对刚采集的数据求累加;加够n个点,再求平均。
    可能要改程序结构。

2、晶体相同,但送到定时器,中间还有系数问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 17:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表