DA模拟量控制外接600V高压直流源-设计分析

一、STM32 12位AD DA线性度测试

配置STM32 DA为12bit输出,AD为12bit检测,测试AD和DA的线性度与误差。DAC从0到2.49V步进1mV。Error=DAC 为标准值减去 ADC的测量值。

板子的Vref=2.5V,ADC和DAC的极限为2.5V,测试时直接用杜邦线连接对应的IO端口。12bitADC和DAC的档位只有4095.电源模块的档位600/0.1=6000档。

按12bit计算:DAC的分辨率=2.5/(212-1)= 0.61050061050061050061050061050061mV»0.611mV.

Error=0.0005mV,折算到高压电源的6000档位,误差引起的档位调节量=0.0005*6000=3档,即SM32板载DA达不到要求,因此需要外挂DA。

图1和图2是STM32F407AD和DA线性度测试结果[matlab]。

 

                                     图1  线性度

                                         图2  误差

二、程控高压电源参数计算

1、需求:DA 0-3.3V 控制0-600V 步进0.1V,即步进100mV。

2、参数计算:

(1)DA控制误差

电压档位:600/0.1=6000档。

DA位数:213=8192,至少需要13位精度。例如MAX535.

设基准电压3.3V

DA分辨率:3.3/8191 V= 0.4028812110853376mV=0.403mV,

数据修约误差=0.0012mV, 高压直流电源电压放大倍数为600/3.3,最后的修约误差传递到高压电源的输出误差电压=0.0012mV*600/3.3=0.218mV。

因此,DA由控制字产生的数据修约传递到高压直流电源误差为0.218mV满足控制需求。

(2)DA线性噪声误差

若按图2的线性关系计算MAX535:

线性度拟合: Err=0.008409*DAC-0.001554,3.3V时最大的线性误差=0.0262V。

线性误差传递到高压直流电源的误差电压为0.0262V*600/3.3=4.76V,远远大于0.1V可调的步进要求。

三、ADC与DAC闭环

由于ADC本身存在测量误差,例如,ADC的测量误差按照3.3V时计算最大26.2mV,若以高压电源Vref反馈回来的电压值作为实际输出的电压真值,ADC测不准电压达到4.76V.因此,若需要闭环控制,可能还需要外扩更高位数的ADC,要求通道数1个,电压测量幅度大于3.3V,低速即可。

四、讨论

1:DA输出值越高,AD检测误差越大。

2:由于没有高精度电压表,采用板子的ADC直接测试DAC输出,不清楚AD还是DA误差占总误差的比例大。

3:图2可以看出来噪声干扰还是以周期低频干扰为主,可以考虑到电容滤波处理。

4:如果进一步控制DA的噪声,则可能将高压直流电源步进控制在0.1V.根据上边分析,最大线性误差0.0262V即26.2mV,若将DAC噪声控制在2mV,则最大误差降为0.36V.若DAC输出精度够高,就不需要ADC采样后进行PID调节。

5:抽时间规划一下13bitDAC MAX535的硬件设计。

五、ADC 采样规则

取得到的100个转换值的中间20个的平均值作为结果,连续取20次这样的平均值,再求平均值作为最后的结果。也就是虽然没有硬件电容滤波,但是我做了软件滤波处理。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404735.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[react] React的displayName有什么作用?

[react] React的displayName有什么作用? displayName:定义调试时的组件name 个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

使用 rose 将 c++代码转换为 uml 类图

From: http://www.cppblog.com/prayer/archive/2009/12/24/103954.html 阅读本文章,你需要对 uml 有简单的了解,懂得以下术语: 类图( class diagram ) 即 c 中的 class 。 聚合( Aggregation ) 即我们c中的引用。表现为 class 头文件中的…

android中的AIDL进程间通信

关于IPC应该不用多介绍了,Android系统中的进程之间不能共享内存,那么如果两个不同的应用程序之间需要通讯怎么办呢?比如公司的一个项目要更新,产品的需求是依附于当前项目开发一个插件,但是呢这个插件功能以及界面比较…

某测试仪控制系统的设计方案--ARM+FPGA+NIOS

一、系统要求 控制功能:600V直流电源模块控制63dB程控衰减器触摸屏高频毫伏表示波器USB存储FAR计数整形阈值调节。 功能要求: 检测高压电源的Vref控制高压电源的Vset控制光脉冲幅度控制阈值计数幅度存储测量数据触摸屏通信示波器通信高频毫伏表通信光…

[react] 为什么属性使用className而不是class呢?

[react] 为什么属性使用className而不是class呢? class是关键字js会使用dom.className获取样式名,跟js保持一致 个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣…

QT实现图像处理-傅立叶变换、傅立叶反变换、平滑、锐化与模板匹配

From: http://www.cnblogs.com/qytan36/archive/2010/04/04/1704226.html 实验环境: 1,Linux操作系统 2,QT3编程开发环境 3,C编程语言 傅立叶变换和傅立叶反变换 1.1. 主要源代码 readImage() 从图像中读取数据 writeImage() 往图…

Java finally语句到底是在return之前还是之后执行?

网上有很多人探讨Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被执行?很多人都说不是,当然他们的回答是正确的,经过我试验,至少有两种情况下finally语句是不会被执行的: (1&…

TLV5618 双路12位DAC 模拟SPI驱动

一、TLV65618芯片 TLV5618A 带掉电功能 2.7V-5.5V,低功耗双路 12 位数模转换器 特点 ●双路 12 位电压输出 DAC ●可编程调节转换时间 - 快速模式 3μs - 低速模式 10μs ●兼容 TMS320 和 SPI 串行接口 16位串行接口包含4位控制和12位数据。 二、驱动代码 采用模…

[react] React中你有使用过propType吗?它有什么作用?

[react] React中你有使用过propType吗?它有什么作用? 校验属性的合法性 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

python对json的相关操作

From: http://www.cnblogs.com/coser/archive/2011/12/14/2287739.html 什么是json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3r…

UIbutton

第一、UIButton的定义 UIButton *button[[UIButton buttonWithType:(UIButtonType); 能够定义的button类型有以下6种, typedef enum { UIButtonTypeCustom 0, 自定义风格 UIButtonTypeRoundedRect, 圆角矩形 UIButtonTypeDetailDisclosure, 蓝色小箭头按钮&#xf…

MAX535 单路13位DAC 模拟SPI驱动

一、MAX535 max535是低功耗、13位、电压输出DAC,采用串行接口和MAX封装。MAX535通过单个5V/3.3V电源工作,仅需要280A电流工作。 MAX535/MAX5351适用于广泛的应用,包括工业过程控制。其他功能包括软件关机和开机复位。 DAC寄存器可以独立更…

[react] react多个setState调用的原理是什么?

[react] react多个setState调用的原理是什么? 同步调用多个setState,React并不会连续多次的进行更新操作,而是会将同步中的多个setState操作合成一个,只执行一次render操作 个人简介 我是歌谣,欢迎和大家一起交流前…

python Json的一点收获,自定义序列化方法

From: http://blog.csdn.net/jlnuboy/article/details/5732196 PyMOTW: json 模块: json目的: JavaScript对象格式序列器python版本: 2.6 json模块提供了一个类似于pickle中用于转换内存中python对象为一个序列表示形式(“JavaScript Objec…

Android的sdk、api及工程目录说明

SDK下包的说明 1:add-ons:Android开发需要的第三方文件和软件库 2:docs:Android的文档。包括开发指南、API参考、资源等 3:extras:扩展的附加包 4:platforms:你安装下载的所有Androi…

云服务器开启TCP Server 客户端无法连接的解决方法

一、问题描述 华为云服务器运行TCPServer后,等待客户端连接,客户端一直无法连接到服务器。经过测试,客户端可以ping通服务器的地址。 客户端网络防火墙已经完全放开。 二、解决办法 1、查看云服务器端的安全组,是否放开该端口。…

[react] 请描述下你对react的新特性Hooks的理解?它有哪些应用场景?

[react] 请描述下你对react的新特性Hooks的理解?它有哪些应用场景? 在 React 中使用 class 继承 React.Component,就可以在类里面使用各种各样的钩子函数,比如 componentWillMount、componentDidMount、componentWillUnmount 等。…

CSS 页面元素

1. 文字基本样式 font-familyfont-sizefont-weightfont-stylecolor2. 段落样式 text-indent:2em;(缩进)line-height:1.5;(行高)3. 特殊效果 :first-letter;&a…

STM32CubeMx HAL库使用硬件IIC读写AT24C02

介绍使用硬件IIC接口读写AT24C02,STM32自带硬件IIC,比较好用,没必要千篇一律的使用模拟IIC。作为一个IIC的使用例子,可以适当修改用于其他IIC接口设备通信控制。 一、测试环境 STM32F407CubeMx(6.1.1)MDK…

2013农业银行存款利率表

From: http://www.southmoney.com/yinhang/cunkuan/473061.html 2013农业银行存款利率表 中国人民银行决定,自2012年7月6日起下调金融机构人民币存贷款基准利率。金融机构一年期存款基准利率下调0.25个百分点,一年期贷款基准利率下调0.31个百分点&#…