❶ 单片机pwm电路原理
pwm是一种数字控制设备用的控制波形,一般是方波,通过改变pwm的频率和占空比来控制设备。简单来讲:电机控制中,电机的功率输出,转速控制就是需要调整pwm频率和占空比实现的,在电机回路中做电子开关,用单片机输出的pwm控制其开关的导通时间与导通频率。生活中常见的电脑CPU风扇就是一种,通过温度检测器的反馈,控制风扇转速,从而灵活的控制cpu的温度,并且节省电能。
有二种情况,第一,如果你所使用的8051单片机(例如stc12系列)是带有专用的pwm输出i/o口的话,那就只要控制里面的特殊功能寄存器改变输出占空比就行了,不要外加什么硬件电路的。第二,如果是通入软件模拟pwm输出的话,那就用定时器可以解决的,也不需要外加电路。
脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。也是一种模拟控制方脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。并且制是一种模拟控制方式,其根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。这种方式能使电源的输出电压在工作条件变化。
❷ 单片机输出PWM信号,经低通滤波电路和输出驱动电路输出模拟正弦信号。
假设正弦波周期是 T=20mS,将一个周期360度分成72份(分得越细,输出的正弦波越平滑),每份是5度
求出每个角度的正弦值sin(5*n),由于这个数值在+1到-1之间,而单片机只能输出正电压,因此要将该结果加1,即sin(5*n)+1 ,该值介于0和+2之间
用定时器产生pwm脉冲,该pwm脉冲的周期是T/72=278US
,占空比随时间而变化 ,可知D=(sin(5*n)+1)/2
高电平持续时间为th=T*D=278*(sin(5*n)+1)/2
这个th可以边输出边计算,也可以提前计算好存于数组中
然后用两个定时器(定时器0和定时器1), 定时器0定时278US, 定时器1定时时间可变,即为th
定时0负责置高电平并将定时器1打开并装入初值,定时器1负责置低电平
假设晶振12M ,51单片机程序如下:
主程序中:
sbit PWM=P1^0;
uchar time_high[72]={139,151,163,........};
uchar i=0;
void main( )
{
TMOD=0X11;
TH0=(65536-278)/256;
TL0=(65536-278)%256;
ET0=1;
ET1=1;
EA=1;
TR0=1;
while(1);
}
定时器0中断:
void timer0()interrupt 1
{
TH0=(65536-278)/256;
TL0=(65536-278)%256;
TH1=(65536- time_high[i])/256;
TL1=(65536- time_high[i])%256;
i++;
If(i==72)i=0;
PWM=1;
TR1=1;
}
定时器1中断:
void timer1()interrupt 3
{
PWM=0;
TR1=0;
}
这样P1^0输出的是占空比可变的方波,经高频滤波后,得到的是脉动直流电,再经电平偏移或电容藕合,即可得到类似正弦波
❸ 请问一下单片机输出PWM,这个电路在这边什么作用
PWM是脉冲信号,当为低电平时,三极管Q2导通致使Q1导通,那么Q1集电极就为LED提供电流,LED亮。当高电平时,Q2截止Q1截止,那么LED灭;
总效果是脉冲信号低电平时,LED亮,同时要求满足LED接集电极(而不是发射极),这样就需要在Q2的后面加一级反相电路;
显然,这是初哥设计的电路,其实从参数看,就没必要弄得这么复杂和麻烦,去掉Q2、R7、R3,保留Q1、R4,然后PWM信号直接加到R4就好了;
另外顺便说,Q2可以工作在开关状态,而Q1不能工作在开关状态,而是放大状态,即是个恒流源。因为Vcc如果为5V,Q1在开关状态,那么LED上就是5V了,这个不得了,LED会烧的;
❹ 求单片机控制PWM输出0~10V连续可调电压不进0.05程序电路
上面“兰色的闪电”兄的回答,在许多情况下就可以了。
不过就是他说的“用RC滤波”的方法,如果负载较重的话(也就是负载电流较大),有一定局限,不容易实现输出直流电压的精度,往往电压随负载的不同而不同。
所以,如果负载较重的话,通常不用RC滤波,而是用电感滤波,加续流二极管。此时,如果忽略二极管正向压降和线圈的电阻的话,输出直流电压可以严格等于电源电压乘以PWM的占空比。
如下图,图中的电源取10V即可。
这种电路,电感量越大、PWM频率越高、负载电流越大滤波效果越好。
故这三个因素可以综合起来选择。例如,尽量提高频率,就可以用比较小的电感来实现同样的滤波效果。
粗略的估算,按照该频率算一下电感的感抗有多大,再根据电流估算一下负载电阻有多大,用分压的办法,就可以估计出PWM信号中的交流成分被衰减到多少分之一了。
当然,这里只算了基频,但其他频率成分(即高次谐波)因为频率更高,滤波效果只会更好。
如果对滤波效果要求很高,也可以在电感之后,在输出+到地之间再并上一个电容,做成两次滤波。
❺ 51单片机pwm调光电路
51单片机pwm调光电路参考源程序:
int potpin=0;//定义模拟接口0
int ledpin=11;//定义数字接口11(PWM 输出)
int val=0;// 暂存来自传感器的变量数值
void setup()
{
pinMode(ledpin,OUTPUT);//定义数字接口11 为输出
Serial.begin(9600);//设置波特率为9600
//注意:模拟接口自动设置为输入
}
void loop()
{
val=analogRead(potpin);// 读取传感器的模拟值并赋值给val
Serial.println(val);//显示val 变量
analogWrite(ledpin,val/4);// 打开LED 并设置亮度(PWM 输__________出最大值255)
delay(10);//延时0.01 秒
}
原理图:
PWM简介:
Pulse Width Molation 就是通常所说的PWM,译为脉冲宽度调制,简称脉宽调制。脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法,由于计算机不能输出模拟电压,只能输出0 或5V 的的数字电压值,我们就通过使用高分辨率计数器,利用方波的占空比被调制的方法来对一个具体模拟信号的电平进行编码。
❻ 如何利用51单片机输出PWM波
用两个定时器的方法是用定时器T0来控制频率,定时器T1来控制占空比。大致的的编程思路是这样的:T0定时器中断让一个I0口输出高电平,在这个定时器T0的中断当中起动定时器T1,而这个T1是让IO口输出低电平,这样改变定时器T0的初值就可以改变频率,改变定时器T1的初值就可以改变占空比。
用一个定时器时(如定时器T0),首先你要确定PWM的周期T和占空比D,确定了这些以后,你可以用定时器产生一个时间基准t,比如定时器溢出n次的时间是PWM的高电平的时间,则D*T=n*t,类似的可以求出PWM低电平时间需要多少个时间基准n'。
因为这里我们是产生周期为1ms(1000HZ)的PWM,所以可设置中断的时间基准为0.01ms,,然后中断100次即为1ms。在中断子程序内,可设置一个变量如time,在中断子程序内,有三条重要的语句:1、当time>=100时,time清零(此语句保证频率为1000HZ),2、当time>n时(n应该在0-100之间变化开),让单片相应的I/O口输出高电平,当time<n时,让单片相应的I/O口输出低电平,此时占空比就为%n。
参考资料:http://wenku..com/link?url=-Q74XVCQtStw6zJYtmlveX_O4_p3CkaHS-KIbWcgOIwQVMGTOGUi