|
本帖最后由 闻太师 于 2019-3-26 12:11 编辑
在做数控电源的时候,为了提高性能通常要做校正。不管是用最小二乘法还是用其它曲线拟合算法,都是测量的点算多精度越高。以校正输出电压为例,操作步骤大概是:设置输出电压--> 测量输出电压-->记录输出电压,这一步骤重复若干次,然后通过公式计算拟合参数。手工进行这种操作十分累人,而且单调重复的操作一不留神很可能搞错数据,工作效率也很低。以我上次校正为例,测量120个点用了一两个小时,做完以后脖子疼了好几天。
如果这一操作能自动完成,必将极大的提高效率和计算结果的可靠性。楼主经过一段时间的鼓捣,摸索出了一套用优利德UT61E自动测量自动校正的方法,现分享出来,希望对需要的人有所帮助。
自动校正的原理很简单,就是通过数控电源上的单片机程序把UT61E的串口数据读出来,然后与设置值一起计算拟合参数,不断重复这一过程,直到把完成所有需要校正的点。然后把计算出来的参数存入EEPROM/Flash,之后程序中使用这些参数完成校正。
要达到这一目的,有几个问题需要解决:
一、UT61E与上位机的通讯协议和数据包格式
二、UT61E串口接头的供电
第一个问题是重中之重,为此先用官方上位机软件连接UT61E,此时使用了USB转RS232转接头,连接成功。断开连接,然后打开PC上的串口监控工具CommMonitor,然后再次用官方上位机软件连接UT61E,成功抓取到串口连接过程中的数据。结果如果:
(, 下载次数: 67)
(, 下载次数: 68)
波特率19200,7位数据位,1位停止位、奇校验。UT61E和上位机是单向通讯的,即UT61E只发,上位机只收。数据是ASCII码形式,每包数据以回车换行为单位。这些信息表明,UT61E和上位机通讯非常简单,非常有利于单片机读取。同时还注意到上位机在连接UT61E时有一个把DTR置为高电平、RTS置为低电平的操作。
获得上述信息之后就可以尝试绕开官方上位机软件,使用普通的串口工具读出UT61E的数据了。首先断开官方上位机软件与UT61E的连接,然后打开雪莉串口调试助手,按上述信息打开串口,成功接收到了UT61E发来的数据,表明上述分析是正确的。
(, 下载次数: 62)
再看数据包格式,因为在对数据电源做校正时只需测量直流电压和电流,所以只需要分析电压档和电流档的数据包格式就可以了,这里以电压档为例。用UT61E连接可调稳压电源,并把电源的输出从0逐渐调高到15V(这个范围够我用了),同时观察串口数据。可以看出0~2V时与2V~15V时的数据格式稍有不同(应该分别对应2V档和20V档),但中间都有分号。对比UT61E屏幕读数可见2V档的数据以0开头,单位是0.1mV;2V档的数据以1开头,单位是1mV。知道这些就足够单片机读取并解析数据了,数据包中其它的数据无需关心。
(, 下载次数: 67)
现在分析UT61E串口通讯的问题。前边分析串口数据的时候提到了上位机软件连接UT61E时有一个把DTR置为高电平、RTS置为低电平的操作,由此可以推测UT61E的串口是通过这两个管脚供电的,另外坛子里矿友的一个帖子也证实了这一点。
因为RS232的电平与TTL/CMOS不同,高电平是实测为9V、低电平实测为-9V。常用的电平转换是用MAX232完成的,手里正好有一块MAX232板子,简单改造一下,两路RS232输出为UT61E串口供电,一路RS232输入接收UT61E数据并转换为TTL电平供单片机读取。电平转换板做好以后先验证一下,连接好UT61E和USB转TTL,同时外接5V给MAX232供电,PC上用串口调试工具成功读到UT61E发出的数据。
(, 下载次数: 64)
(, 下载次数: 66)
剩下的事就是修必数控电源的单片机程序,读出UT61E数据并计算拟合参数和。啰嗦一下:UT61E连接数控电源的输出端,把数控电源的输出设置为某电压,单片机读取UT61E测量到的实际电压,并把设置电压和实际电压保存在RAM里,然后再把输出设置为另一压,重复上述过程。然后计算拟合参数,然后再重复上述过程,直到所有需要校正的点都完成参数的计算。整个过程完全不用人工干预,几分钟后完成所有参数的测量、计算和保存,大功告成。
(, 下载次数: 65)
(, 下载次数: 65)
补充内容 (2019-4-7 17:05):
UT61E精度不算很高,业余玩玩可以,需要高精度还是得台表。 |
评分
-
2
查看全部评分
-
|