智能寻迹小车设计与制作(电机控制程序设计)湖南创博龙智信息科技有限公司主讲:雷道仲任务一:控制电机旋转要求:学员编写程序,按顺序实现电机顺时针、逆时针、停转功能,电机旋转模式实现5秒—4秒—3秒自然切换,即电机顺时针旋转5秒后自动切换到逆时针,逆时针4秒后切换到停转,停转3秒后回到顺时针,周而复始。湖南创博龙智信息科技有限公司任务及要求电机控制模块共设置了两个任务,分别如下:任务二:按键控制电机旋转学员编写程序代码实现如下功能:当按下S1时,直流电机顺时针旋转;当按下S2时,直流电机逆时针旋转。湖南创博龙智信息科技有限公司任务及要求电机控制模块共设置了两个任务,分别如下:湖南创博龙智信息科技有限公司1.1任务一:控制电机旋转1.1.1电机控制电路图1电机控制电路17P3.718XLA1XLA219Gnd2024232221P2.3P2.2P2.1P2.013P3.314P3.4P3.515P3.61628272625P2.7P2.6P2.5P2.49RESET10P3.0P3.111P3.21232313029P0.7EAALEPSEN5P1.46P1.5P1.67P1.7836353433P0.3P0.4P0.5P0.61P1.02P1.1P1.23P1.3440393837VccP0.0P0.1P0.2DCDCINPUT1INPUT2INPUT3INPUT4ENAENBGNDGNDGNDGNDOUTPUT1OUTPUT2OUTPUT3OUTPUT4RX110KVCCBATVCCBATVCCBATGNDL293DIC3RM1跳线C2104C15C14104104M1M2IC1STC89C521.1.2直流电机H桥驱动电路工作原理湖南创博龙智信息科技有限公司本设计中直流电机H桥驱动电路由驱动芯片L293D完成,在L293D内部形成一个H桥型的驱动驱动电路,类似如图2所示。图中用开关模拟电机信号通断,在实际的控制中是采用晶体三极管来完成此功能,可参见图3所示的电机控制示意图。此处只是为简述控制原理,所以用开关模拟电机工作过程。1.1.2直流电机H桥驱动电路工作原理湖南创博龙智信息科技有限公司图2H桥驱动电机电路湖南创博龙智信息科技有限公司从图中可以看出,其形状类似于字母“H”,而作为负载的直流电机是像“桥”一样架在上面的,所以称之为“H桥驱动”。4个开关所在位置就称为“桥臂”。从电路中不难看出,假设开关A、D接通,电机为正向转动,则开关B、C接通时,直流电机将反向转动。从而实现了电机的正反向驱动。借助这4个开关还可以产生电机的另外2个工作状态:1.1.2直流电机H桥驱动电路工作原理湖南创博龙智信息科技有限公司(1)刹车——将B、D开关(或A、C)接通,则电机惯性转动产生的电势将被短路,形成阻碍运动的反电势,形成“刹车”作用。(2)惰行——4个开关全部断开,则电机惯性所产生的电势将无法形成电路,从而也就不会产生阻碍运动的反电势,电机将惯性转动较长时间。1.1.2直流电机H桥驱动电路工作原理湖南创博龙智信息科技有限公司图3电机控制示意图电路1.1.2直流电机H桥驱动电路工作原理湖南创博龙智信息科技有限公司表1电机控制状态表输入使能控制输出电机状态1A2AENA1Y2YDC01101电机正转10110电机反转11111电机刹车00100电机惰行XX0ZZ电机停转1.1.2直流电机H桥驱动电路工作原理湖南创博龙智信息科技有限公司表2智能小车运行状态表输入使能控制小车状态左电机右电机ENA1A2A3A4A101011前进10101后退10011左转弯01101右转弯11111停止1.1.2直流电机H桥驱动电路工作原理湖南创博龙智信息科技有限公司电机控制端口定义:sbitzuo1=P0^0;sbitzuo2=P0^1;sbityou1=P0^2;sbityou2=P0^3;控制函数:voidqian(){zuo1=0;zuo2=1;//左边往前you1=0;you2=1;//右边往前}1.1.2直流电机H桥驱动电路工作原理湖南创博龙智信息科技有限公司控制函数:voidhou(){zuo1=1;zuo2=0;//左边往后you1=1;you2=0;//右边往后}voidzuo(){zuo1=1;zuo2=0;//左边往后you1=0;you2=1;//右边往前}1.1.2直流电机H桥驱动电路工作原理湖南创博龙智信息科技有限公司控制函数:voidyou(){zuo1=0;zuo2=1;//左边往前you1=1;you2=0;//右边往后}voidting(){zuo1=1;zuo2=1;//左边停止you1=1;you2=1;//右边停止}1.1.2直流电机H桥驱动电路工作原理湖南创博龙智信息科技有限公司1.1.3参考程序流程图图4程序流程图湖南创博龙智信息科技有限公司#includeat89x52.h#defineuintunsignedint#defineucharunsignedcharsbitzuo1=P0^0;sbitzuo2=P0^1;sbityou1=P0^2;sbityou2=P0^3;voiddelay(uintx){uchari;while(x--)for(i=0;i123;i++);}1.1.4程序代码湖南创博龙智信息科技有限公司voidqian(){zuo1=0;zuo2=1;//左边往前you1=0;you2=1;//右边往前}voidhou(){zuo1=1;zuo2=0;//左边往后you1=1;you2=0;//右边往后}1.1.4程序代码湖南创博龙智信息科技有限公司voidzuo(){zuo1=1;zuo2=0;//左边往后you1=0;you2=1;//右边往前}voidyou(){zuo1=0;zuo2=1;//左边往前you1=1;you2=0;//右边往后}1.1.4程序代码湖南创博龙智信息科技有限公司voidting(){zuo1=1;zuo2=1;you1=1;you2=1;}main(){while(1){qian();delay(922*5);hou();delay(922*4);ting();delay(922*3);}}1.1.4程序代码湖南创博龙智信息科技有限公司2.1.1按键控制电机原理图图5按键控制电机旋转电路2.1任务二:按键控制电机旋转湖南创博龙智信息科技有限公司2.1.2参考程序流程图图6程序流程图湖南创博龙智信息科技有限公司#includeat89x52.h#defineuintunsignedint#defineucharunsignedcharsbitzuo1=P0^0;sbitzuo2=P0^1;sbityou1=P0^2;sbityou2=P0^3;sbitSB1=P3^2;sbitSB2=P3^4;voiddelay(uintx){uchari;while(x--)for(i=0;i123;i++);}2.1.3参考程序代码湖南创博龙智信息科技有限公司voidqian(){zuo1=0;zuo2=1;//左边往前you1=0;you2=1;//右边往前}voidhou(){zuo1=1;zuo2=0;//左边往后you1=1;you2=0;//右边往后}2.1.3参考程序代码湖南创博龙智信息科技有限公司voidzuo(){zuo1=1;zuo2=0;//左边往后you1=0;you2=1;//右边往前}voidyou(){zuo1=0;zuo2=1;//左边往前you1=1;you2=0;//右边往后}2.1.3参考程序代码湖南创博龙智信息科技有限公司voidting(){zuo1=1;zuo2=1;you1=1;you2=1;}main(){while(1){if(SB1==0){qian();}if(SB2==0){hou();}}}2.1.3参考程序代码