完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
4个回答
|
|
传统方法,直接使用A/D芯片进行模/数转换,然后经光耦传输。按接口形式,A/D芯片可分并行和串行访问2种方式。并行A/D芯片采集精度越高,并行数据线占用的光耦数目越多,而且需要配以控制A/D转换操作相应的隔离信号,这种方式接线多,占用资源也多;串行A/D芯片可以节省不少光耦,但需要复杂的时序才能完成对A/D的读写操作。
本文提出一种使用集成A/D的微型单片机AT-tiny13进行模拟量隔离采集,使用单根数据线完成数据传输。模拟量隔离采集采用了简化的UART通信方式,即单工通信方式,只需要发送线TXD,无需接收线RXD。这样,单根数据线就能承担发送A/D转换值任务,接收方只要具备硬件UART或软件UART(接收),就可以轻松获取隔离模拟量值。 |
|
|
|
2 ATtiny13简介
ATtiny13具有1 KB Flash,64字节EEPROM,64字节SRAM,6个通用I/O口线,32个通用工作寄存器,1个具有比较模式的8位定时器/计数器,片内/外中断,以及4路10位ADC。 |
|
|
|
3 硬件设计
模拟量隔离采集电路如图1所示。ATtiny13有2路10位ADC可控选择,本设计中只使用了1路ADC。光耦PC817用于传输A/D转换值。CLKI代表从外部引入的时钟源。 |
|
|
|
4 软件UART
ATtiny13内部没有集成UART功能。为了弥补这一缺陷,可以使用软件控制I/O引脚模拟UART功能,按照设定的采集速率将A/D转换值经光耦隔离输出。 4.1 异步串行协议 采用UART异步串行协议通信时,数据按顺序逐位输出。接收方通过监测起始位(低电平有效)和停止位(高电平有效)来判断一帧信息的起始与结束。数据帧中还可包括若干数据位和奇偶校验位。异步串行协议的起始位与停止位必须使用,其余各位可调整位长度。异步串行协议格式如下: 本文定义帧格式为:起始位(1位),数据位(5位),无奇偶校验位,停止位(1位)。ATtiny13自带精度为10位的A/D转换器,而数据位设定为5位宽度,所以需要连续发送2次异步串行通信帧,才能将一次A/D转换值传送完整。按照高位先出的方法,前1次发送A/D转换值的高5位,后1次发送低5位。 4.2 波特率设置 波特率是UART异步串行通信中非常重要的参数。通信双方必须以约定好的速率通信,才能保证通信成功。波特率与异步串行协议中“位”所占用的时间密切相关。对于二进制信号,数据帧中每一位的占用时间就是波特率的倒数。因此,如何精确确定每一位的时间宽度,成为确保串口通信成功的关键因素。 ATtiny13没有集成UART,但内部含有一个8位定时器/计数器,可利用软件控制该定时器产生波特率。MCU自带的RC振荡器可以作为时钟源,但是振荡频率存在最大±10%的误差,并且受温度影响较大。这样会造成波特率不稳,通信时可能出现接收不到数据,或者丢数据位、出现乱码和错码的情况。ATtiny13从外部引入了7.372 8 MHz有源晶振时钟信号,从而保证了主时钟频率的稳定性。 异步通信波特率可按式(1)计算。 式中:XTAL为引入的主时钟频率;Baud为需设置的波特率;C为定时器时钟分频系数;n为8位定时器/计数器的预加载比较值。定时器/计数器工作在CTC模式(比较匹配时清零定时器)。 XTAL即7.372 8 MHz,Baud设定为9 600,定时器时钟信号为主时钟4分频(即C=4),可得n=192。据此,8位定时器/计数器从0计到192时,产生比较中断,软件控制发送新的一位信息。 4.3 数据发送 UART异步串行协议规定了在没有数据帧发送时,通过逻辑“1”表示目前处于闲置状态。如果有数据需要发送,首先将发送线TXD拉低成逻辑“0”,并保持一个基本时间单位;之后根据待发送数据的二进制数值,依次逐位输出。本设计中未使用奇偶校验位,相关处理略去。5位数据发送完毕后,紧接着将TXD拉高为逻辑“1”,表示该帧结束。软件UART发送流程如图2所示。 函数Uart_SendByte(unsigned char data)实现了上述功能,一次发送5位数据。在模拟量隔离采集中,单片机不断地获取A/D转换值,并通过调用上述函数发送出去。 结 语 本文介绍一种基于ATtiny13的模拟量隔离采集电路,受ADC最大采样速率及光耦PC817传输带宽的限制,只适用于频率变换缓慢的模拟信号。该电路体积小、成本低、接线简单,已用于开关电源成品检测。 |
|
|
|
只有小组成员才能发言,加入小组>>
715 浏览 2 评论
12713 浏览 0 评论
4045 浏览 7 评论
2274 浏览 9 评论
2085 浏览 2 评论
400浏览 2评论
717浏览 2评论
464浏览 1评论
532浏览 1评论
AD7656在没有输入信号时,测量输入端都会有几mV至几十mV的电压,怎么消除呢?
427浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-30 11:26 , Processed in 0.950828 second(s), Total 81, Slave 65 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号