直流电机驱动控制与程序设计
直流减速电机
直流电机驱动讲解
H桥驱动电路
三极管H桥驱动结构
简单三极管驱动电路
实际三极管驱动电路
集成驱动电路
程序设计
• 1、汇编语言 • 2、C语言
1、PWM调速程序设计
• 目标:让单片机的I/O口输出受控的PWM信 号波形。
• 方法: • 1)简单的硬延时输出 • 2)利用定时器中断输出
•
case 2: TurnLeft();
•
break;
•
case 3: TurnRight();
•
break;
•
case 4: GoBack();
•
break;
•
case 5: Stopcar();
•
break;
•}
•}
1)简单的硬延时设计
• Void main ()•{•SysInt();//系统初始化
•
while(1)
•
{ P1_0=0; //PWM输出端,置低
•
DelayMs(M); //低电平的占空比值
•
P1_0=1; //PWM输出端,置高
•
DelayMs(100-M); //高电平的占空比值
•
}
•}
2)定时器中断设计
• 程序初始化:定时器 0采用方式 1,16 位的 计数方式,计时时间到后进入中断,进入 中断时间为 0.01ms,51 单片机的 PWM 的程序如下:
• #include<AT89X51.H>
•
• #define Moto1 P2_0 //驱动电机信号的输出端口
• unsigned char M_count,M_num;
//允许定时器 0 计数
• ET0=1;
//允许定时器 0 溢出中断
• EA=1;
//开启总中断
• while(1)
•{
•
//系统其它功能程序
•}
• void t0()interrupt 1
•{
• M_count++; //0.01Ms步进
• if(M_count==M_num) //占空比值,1-100
•
{
•
Moto1=1; //PWM高电平输出
•
}
• if(M_count==100) //PWM输出信号周期
•
{
•
M_count=0; // 0.01Ms步进清零,输出周期信
•
号
•
Moto1=0; //PWM低电平输出
•
}
• TH1=(65536-500)/256; //定时器重装载值,0.01Ms
•
• void main()
•{
• Moto1=0; //PWM输出端初始值
• TMOD=0x11; //Timer0 和 Timer1 同时配置为模式 1,16 位计
•
数模式
• TH0=(65536-2000)/256; //定时器初值设置
• TL0=(65536-2000)%256; //
• TR0=1;
• Void main()
•{
• SysInit(); //系统初始化
• while(1)
• { SensorSeek(); // 传感器检测,影响DriveMode值。
•
switch(DriveMode) //根据传感器结果,确定小车动作状态
•
{case 1: GoStraight();
•
break;
• TL1=(65536-500)%256;
•}
2、小车运行控制
• 1)直行 • 2)左转 • 3)右转 • 4)后退 • 5)停止
void GoStraight() void TurnLeft() void TurnRight() void GoBack() void StopCar()
• 例如void TurnLeft()如何编写?