1.占空比是高电平所占周期时间与整个周期时间的比值。
2.脉宽调制(PWM)基本原理:
控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次谐波少。按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率。
PWM就是脉冲宽度调制,也就是占空比可变的脉冲波形。
主芯片L298N(双H桥电机驱动芯片,可以驱动两个直流电机或一个步进电机)
功率驱动电源输入12V(最高50V,最低7V)
5v供电需短接板载5v使能(当左边供电超过12v时,应该去除板载5v使能的短接,左边单独5v供电)
六个排针:逻辑输入,最左和最右边是使能端口(相当于开关),高电平有效。
逻辑区表(短接使能)
IN1 IN2 直流电机状态
0 1 正转
1 0 反转
使能端口调节电机转速(用按键都可以通断实现调速)
一定周期内,控制给高电平的时间来实现调速
时钟周期就是时钟振荡周期=1/12M=0.083us
机器周期=12*时钟周期=12/12M=1us
#include<reg52.h>
#define unit16 unsigned int
int x;
sbit pwm=P1^0;
//right
sbit IN1=P2^0;
sbit IN2=P2^1;
sbit IN3=P2^2;
sbit IN4=P2^3;
//left
sbit IN5=P2^4;
sbit IN6=P2^5;
sbit IN7=P2^6;
sbit IN8=P2^7;
//void delay_s(unsigned int n) //s
//{
// unsigned int i=0,j=0;
// for(i=0;i<n;i++)
// for(j=0;j<54053;j++);
//}
//void delay_ms(unsigned int n) //ms
//{
// unsigned int i=0,j=0;
// for(i=0;i<n;i++)
// for(j=0;j<123;j++);
//}
void delay_10um(unsigned int n) //(10*n)us
{
while(n--);
}
void main()
{
while(1)
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
pwm=1;
delay_10um(60); //占空比为60%
pwm=0;
delay_10um(40);
}
}
由于没有示波器,对占空比的验证我用电压值来测试占空比是否为60%(程序占空比为60%)
先测量电池盒外部供电的大小,测量结果如图所示 :
测量5v供电口,测量结果如图所示:
我的程序中pwm波输出引脚为P1^ 0,测量P1^0引脚的电压值,测量结果如图所示:
P1^0引脚的电压为3.07v;
由占空比定义可知5v*60%==3v,
故占空比为60%,测试成功。