PWM实现DA转换,输出-4V到+4V电压

PWM实现DA转换,输出-4V到+4V电压,第1张

1、DA信号先变成直流信号u,然后将将该直流信号u用运放进行放大,使得DA输出电压变为0-8V之间,再用运放搭建一个电位平移电兄拍路,将电压平移到-4V到+4V之间。

2、PWM信号变成直流信号主要有两种方法,第一种:用多级RC滤波电路(一般2-3级RC滤波即可),可以变成直流,这种方法比较简单,但是,输出阻抗大,不能带负载。第二种方法:用运放构成的有源滤波器来滤波,这种方法效果好,输羡厅羡出阻抗小,就是电路稍微复杂了点,而且要一些计算。用一个单运放就可以实现3级滤波。但是要注伏中意运放的选择,如果是单电源供电的话,运放要采用Rail-to-Rail的运放。

PWM是通过改变占空比来改变核晌输出电压的有效值的,即改变输出电压的大小.

假设单片机的电源电压为5V,并假设输出高电平也为5V.

当PWM的占空比为100%时,输出电压有效值为5V,当占空比为0时,输出电压有效值为0V,当占空比为50%时,输出电银搭压有效值为2.5V,以此类推.当然以上为理论上的值,实际使用时PWM频率要适当高些,同时在输出并上改搏锋个电容,让输出电压较平稳而不至于真的是个脉冲.

当然,这种DA的精度是不高的,用于要求不高的场合,如果要求精度较高的时候,要用到外部DA芯片,关于这个,见参考文献P286,这里有详细的线路与程序,及其原理说明等。

FPGA是不能实现DA转码蚂换的,它内部处理的都是数字信号,不能输出模拟信号。一般是用FPGA控制系统工作流程,产生控制信号,DSP输出数字信号处理后得到的数字信号,经专门的DA芯片,如PCM1798、1794、AD1955、CS4398、AK4396、AK4399等等,FPGA只能实现特定类轿行型的脉冲,如下:

library ieee

use ieee.std_logic_1164.all

use ieee.std_logic_arith.all

use ieee.std_logic_unsigned.all

entity dac_ds is

port(reset :in std_logic

clk :in std_logic

din :in std_logic_vector(7 downto 0)--Signed integer

dout :out std_logic)

end dac_ds

architecture arch_dac_ds of dac_ds is

signal error :std_logic_vector(9 downto 0)--Error accumulator is 2 bits larger

constant zeros:std_logic_vector(7 downto 0):=(others=>'0')

begin

process(reset,clk,din)

variable val :std_logic_vector(9 downto 0)

begin

if reset='1'then

error<=(others=>'闭模哗0')

dout<='0'

elsif clk'event and clk='1' then

--val:=din+errordin is sign extended to nbits+2

val:=(din(din'high)&din(din'high)&din)+error

if val(val'high)='0'then

dout<='1'

error<=val+("11"&zeros)

else

dout<='0'

error<=val+("01"&zeros)

end if

end if

end process

end arch_dac_ds


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8275969.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存