38度发烧友--38Hot Volt-Nuts

 找回密码
 立即注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: xjw01

这样做PWM也挺好的

[复制链接]
发表于 2013-10-17 18:10:01 | 显示全部楼层
对分辨率不追求的话,高频PWM也无所谓,要是追求分辨率的话,16BIT甚至更高,STM32也只能做到几百HZ,得用CPLD或者FPGA硬件PWM实现才行了
回复

使用道具 举报

发表于 2013-10-17 18:11:54 | 显示全部楼层
频率高,滤波器简化了,要做分辨率高低位的细调就没有办法做了。PWM的频率兼顾滤波器的体积大小成本和细调的位数综合考虑
实际最简单的PWM就是以前电视高频头的频道调谐电压电路
回复

使用道具 举报

 楼主| 发表于 2013-10-17 19:06:50 | 显示全部楼层
marshallemon 发表于 2013-10-17 16:03
能否上传RC滤波这部分的计算笔记一看?

高阶低通滤波,谐波分量可以滤得很好,主要考虑基波分量。
1pF,对于1MHz正弦波的阻抗是,160k欧,
所以1uF对于1Hz阻抗也是160k欧
0.1uF对于1Hz将是1600k欧
0.1uF对于10kHz就是160欧
对于16kHz是100欧,是低阻抗,10k欧负载基本不影响它的频率特性。
因此,直接分为两级计算,第一级衰减为100欧/100k欧=1/1000
第二级衰减为100欧/10k欧=1/100
两级总衰减为1/100000
基波分量按方波峰值估算即可,即2.5V
那么最后得到纹波为2.5V/1000000=25uV
如果采用图中的三阶滤波,理论上的纹波还会下降几十倍。不过,由于杂散耦合的影响,实际效果不会好么好。


回复

使用道具 举报

发表于 2013-10-17 19:26:09 | 显示全部楼层
51单片机还是不行,不信楼主试试rsic的AVR试试,用内部上拉,使用内部的快速PWM模式,输出的肯定比51强很多
回复

使用道具 举报

发表于 2013-10-17 19:41:25 | 显示全部楼层
关注一下,效果蛮不错的!
回复

使用道具 举报

发表于 2013-10-17 20:23:56 | 显示全部楼层
效果这么好呀,比16bit的专用DA 都好,高人来解释一下到底有那些问题存在,楼主最好拿示波器看下波形
回复

使用道具 举报

发表于 2013-10-17 20:24:38 | 显示全部楼层
有没有源码看呀,这样人做的多了就容易发现问题
回复

使用道具 举报

发表于 2013-10-17 21:22:06 | 显示全部楼层
有源滤波器的参数太不不合理了。
回复

使用道具 举报

发表于 2013-10-17 22:00:15 | 显示全部楼层
    很多网友都提出 提供 pwm频率的方法, 我觉得 另一个方法是  用 二级 PWM, 这样可以对频率的要求大为降低,频率升高后, 滤布电路也不需要高阶了.
   有一个问题, PWM的输出不是线性的(指高精度的情况),    以楼主提供的测试参数为例, 计算 PWM=11 到 PWM=255 的输出电压线性度,   这里的 "差" 是指 当前 PWM值(或电压值) 与 PWM=11的差值

         PWM值,   电压值    电压差 / PWM差
        11     21881
            21     41390    195090
            31     60899    195090
            41     80409    195093
            81    158455    195106
           101    197483    195113
           131    256031    195125
           181    353625    195144
           221    431715    195159
           255    498102    195173
   我也做过类似的实验, 用LM399做输出,MOS管驱动, 测出的数据,总是非线性的(指高精度情况下)

   请各位大侠, 能否从理论上,给出一些解析。

回复

使用道具 举报

 楼主| 发表于 2013-10-17 22:42:19 | 显示全部楼层
aa7812 发表于 2013-10-17 22:00
很多网友都提出 提供 pwm频率的方法, 我觉得 另一个方法是  用 二级 PWM, 这样可以对频率的要求大为降 ...

开关1态与0态的导能电阻是不同的,所以总要产生非线性的,不过,这种非线性理论是二次曲线,实测也是这样的,通过三点校准法可以消除。
还有一个就是电容的漏电及PCB漏电问题了。不过,还不是很明显。
回复

使用道具 举报

 楼主| 发表于 2013-10-17 23:09:26 | 显示全部楼层
a-fly 发表于 2013-10-17 21:22
有源滤波器的参数太不不合理了。

这个滤波器要考虑多个因素,不能只考滤波效果。
STC单片机端口内阻按200欧左右估计。输出负载用100k,端口内阻比重是千分之2(对应39楼所述差分表的最大变化比重)
端口0、1态电阻差异按40%估计,那么引入的非线性0.002*0.4/4=万分之2
这种非线性温漂不能忽略,因此,最好就是减小端口电阻的比重。
电阻太大,又怕电容漏电的影响太大。最后就用100k欧试验

还有一个问题就是,高压CBB用0.1uF的比较好找。
回复

使用道具 举报

 楼主| 发表于 2013-10-17 23:24:11 | 显示全部楼层
起点、中点、末点的校准值分别是
4.21
1.75
0.56

非线性是((4.21+0.56)/2-1.75)=0.63mV,合0.63/5000=130ppm
三点校准后,直接插值输出,误差就减少到只有1字左右(0.01mV)的校准误差了
回复

使用道具 举报

 楼主| 发表于 2013-10-18 07:49:05 | 显示全部楼层
atl0402 发表于 2013-10-17 20:24
有没有源码看呀,这样人做的多了就容易发现问题

代码比较简单。
等电路全部设计好在发代码吧。
回复

使用道具 举报

发表于 2013-10-19 17:02:21 | 显示全部楼层
好的等源码,谢谢许老师
回复

使用道具 举报

 楼主| 发表于 2013-10-19 22:35:50 | 显示全部楼层
电路图.PNG
回复

使用道具 举报

 楼主| 发表于 2013-10-19 22:41:06 | 显示全部楼层
不提供源代码,提供以下程序。
供坛友玩玩,没有加密。

uu.rar (6 KB, 下载次数: 46)
回复

使用道具 举报

 楼主| 发表于 2013-10-20 08:37:42 | 显示全部楼层
本帖最后由 xjw01 于 2013-10-20 08:39 编辑

利用昼夜温差测试,满面度值漂了7字,零点漂了0.5字左右,中点误差了4.5字
理想中点漂移应是7/2=3.5字。与实测相差1字。这1字可能是昨天的校准误差。
这就是说,温度改变了2度左右,未发现线性度明显改变。
回复

使用道具 举报

 楼主| 发表于 2013-10-20 08:38:12 | 显示全部楼层

1602的RW脚接地,不要接到单片机。
回复

使用道具 举报

发表于 2013-10-20 10:50:26 | 显示全部楼层
支持~学习了!
回复

使用道具 举报

 楼主| 发表于 2013-10-22 17:41:26 | 显示全部楼层
关于温度补偿:
单片机的端口是多功能的端口,内部可能是通过一些开关切换的。他们不是以最简路径通往地线引脚。
工作时,单片机地线与0态端口之间存在4mV的电位差。这4mV电位差是有温漂的。在常温区间(10到35度),温漂可达0.4mV,对于5V基准源来说,可引入100ppm左右的偏差。对于0.5V来说,则引入1000ppm误差。1000ppm误差有些不可接受。
如果把电压起算点改为端口0态电压,那么对于低压时的PWM输出来说,零漂误差基本消除。
经过实测,已经验证了上述推断。用烙铁烘热单片机,输出端的零漂只有0.0几mV的漂移。
为什么PWM相对端口0态电压(如P1.0的0态电压)输出,补偿效果会很好?因为,PWM口(P1.3)是在P1口,P1.0口也是在P1口,有理由相信集成电路内部,P1口上8口位于相近的物理位置上,物理特性也是一致的,因此P1.3的0态电压将与P1.0的0态电压非常接近,并且温漂一致。

然而,故事没有结束,P1.3工作于PWM开关态,0态所占用时间与占空比有关,P1.0置为0,其实不反应P1.3口的PWM在全程的温漂。
P1.3在0态占比100%时,P1.3的0态温漂对PWM总温漂的贡献接近于100%
P1.3在0态占比50%时,P1.3的0态温漂对PWM总温漂的贡献为50%
P1.3在0态占比0%时,P1.3的0态温漂对PWM总温漂的贡献为0%
这就是说,用P1.0的0态温漂补偿P1.3的PWM温漂,正好补偿0态占比100%时的温漂;而在50%占比时,由于过度补偿量也是50%,所以没有补偿效果;在0%占比时,则过度补偿了100%,总的说,用P1.0的0态进行温度补偿,消除了零点温漂,却增加了满度温漂。

下一步还打算进一步改进,是这样解决温漂的。
用第二个PWM进行温漂补偿。它在P1.4口,让它工作于“斩波”状态。即开漏输出态。P1.4口PWM与主P1.3口PWM输出占空比完全相同的信号,它们的0态温漂贡献就会相同,这样就实现了全程PWM温漂补偿。
理论上是这样的,实测也验证了这个设想,即PWM滤波输出相对于P1.4斩波输出的电压差值,不再产到单片机温漂亮的影响了。


回复

使用道具 举报

发表于 2013-11-8 16:45:39 | 显示全部楼层
许老师:用89c52和12M晶振可以吗?如不行,如何修改?
回复

使用道具 举报

发表于 2015-2-11 17:37:08 | 显示全部楼层
单片机和基准相结合,一定会让基准有一定的提升,尤其在长期稳定性这一最难办的方面,我想很有意义。

比如,可以把基准的老化率、温漂等数据存储在ROM中,结合时钟芯片(有的单片机本身有时钟功能)计时,结合测温头取得环境温度,通过一定的算法,应该可以提高温漂、老化等指标。

更有意思的是,在检测发现有新情况时,可以随时修正程序来不断提高基准的有关指标。

回复

使用道具 举报

发表于 2015-4-6 16:50:16 | 显示全部楼层
lllaaa 发表于 2013-10-17 06:47
所以lz单片机用基准供电的

基准供电会好一些,但单片机输出波形的沿很奇怪,而且高低电平与负载有关,负载稍微变化一点儿,输出电压就会变化。

负载变化的方式很多,例如三阶滤波器中的运放输入偏流,单片机内部上拉电阻的变化都有影响。这些主要影响增益的温度系数。

输出波形的沿形状主要影响低占空比,来源于单片机内部上拉电阻的温度系数,对零点温度系数影响很大。可以用HC14做缓冲。


回复

使用道具 举报

发表于 2015-4-9 01:48:34 | 显示全部楼层
lilith 发表于 2013-10-17 11:08
用 IO 上的 PWM 脉冲驱动一个接到基准上的 JFET 或摸死开关,而不是用基准给 MCU 供电

觉得这个MCU好享受的说,那么高等级的供电=_=
回复

使用道具 举报

发表于 2017-8-4 18:57:04 | 显示全部楼层

有点不太明白, PWM频率7.8125K, 晶振8M, 算下来PWM占空比分辨率是1024, 是如何做到5万字分辨率的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表