欢迎访问电子工程网!   登录 | 免费注册 ]   

chenningpo的个人空间 http://www.eechina.com/space-uid-73326.html [收藏] [复制] [分享] [RSS]

博客

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

热度 1已有 1314 次阅读2013-4-5 09:52

前些时间受一个朋友委托,帮他做了一个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通讯协议处理,一个是不停是做数据采集处理。





路过

鸡蛋

鲜花

握手

雷人

发表评论 评论 (1 个评论)

回复 wccd1 2013-4-5 23:47
用STM32F103C8T6设计的12通道信号采集器不错。

facelist

您需要登录后才可以评论 登录 | 立即注册

回顶部