Unite Embed CTR https://passport2.21ic.com/?601464 [收藏] [复制] [RSS] 在生活中寻找自己的快乐!不停地发现自我!

日志

用STM32F103C8T6设计的12通道信号采集器

已有 1677 次阅读2011-9-21 03:04 |个人分类:作品介绍|系统分类:电测仪表| STM32, 多通道, 数据采集, AD值, FFT计算, FreeRtos, FreeModBus

前些时间受一个朋友委托,帮他做了一个50HZ工频信号采集的设备,该设备可以对12通道的信号进行采集。
说说该设置的结构吧:
处理器芯片:STM32F103C8T6
AD芯片:AD7266(两个独立转换器,各支持6个通道,一共可采集12通道信号或6通道差分信号)
运放:OPA2277(好像用差点的也可以,没有仔细测试过)
光隔:HCPL0637(这个有点贵,后来了解到磁耦,申请了几个样片,还没有用上)
电源:采用的AC-DC电源模块为系统提供12V的电源,用MP1482将其再降出一级5V,同时还用了一个DC-DC 12V-5V的2W隔离出一个5V来供数字电路使用。
操作系统:FreeRTOS 6.0(本人觉得这个系统很好用的,呵呵,用了好几次,感觉不错)
通讯协议:RS485-FreeModbus.RTU(在网上下了一个源码,折腾了了一个星期的晚上时间,才把它与FreeRTOS整合在一起,好用得不得了,哈哈哈哈)

在数据处理基本的方式是使用定时器来进行采集,由于是50HZ正弦信号,所以我在应用中,用的FFT来分析数据,大概流程如下:
1、启动定时器2.5mS中断一次,差不多400Hz的速度
2、定时器启动并读取一次AD数据
3、在定时器中断中采集64个数据
4、对数据的极性进行处理
5、调用STF32的DSP库的64点FFT对数据进行变换
6、计算第9点数据的数据的模,这样不用全部计算来浪费时间了
7、根据AD的参数计算有效值

系统的一些说明:
硬件:
    对于信号,我将输入的交流信号经过运放组成的加法器后,将其强制变为正的交流信号,这样AD就能在单极性的情况下采集数据了。由于我的AD给的是2.5V基准,进行2*Ref采集,所以低于2.5V的数据就是负数,因此存在上述第4点的处理。

软件:
    软件比较简单,就是初始化好系统资的各引脚,写好AD读写的函数,启动定时器,同时新建立两个任务,一个是Modbus通讯协议处理,一个是不停是做数据采集处理。

下面是成品的实物图片:


由于该产品的商业性质,所以不公开源码及详细的图纸资料了,有需要的,直接买我的成品吧,哈哈,我也可以赚点外水。

欢迎各位来咨询。

mail: support@uectr.com

zxw36792116@hotmail.com


www.uectr.com
谢谢!




路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)