步进电机控制一、电源电路:电源用5V电池供电,转换电路由四个二极管组成,这个设计是为了防止电源正负极接反造成电路烧坏二、最小系统:三、步进电机驱动原理图:四、系统整体原理图:五、问题及解决方法:问题:改变工作方式的时候电机状态改变不明显?解决方法:在程序中增加了速度之间的梯度、改变工作方式的时候电机状态改变明显。问题:程序没有错误、线路连接正确,电机不转动?解决方法:换了一台试验箱,就可以使电机转动。问题:改变工作方式的时候电机发出声音?解决方法:在程序中加了一个延时程序、改变工作方式的时候电机正常工作。六、程序流程图:程序模块:七、实验心得体会:通过这次课程设计,我对步进电机的调速控制系统有了实际的了解和认识,提高了动手能力,加深和巩固了对知识的理解和掌握。在程序调试的过程中遇到了一些问题,通过与同学讨论将问题解决,在以后的工作中要学会虚心向他人请教。最后,对张老师表示衷心的感谢,老师,您辛苦了。八、实验程序:#includereg51.h#defineucharunsignedchar#defineuintunsignedintucharcodeFFW0[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};//四相八拍正转编码ucharcodeREV0[8]={0x01,0x09,0x08,0x0c,0x04,0x06,0x02,0x03};//四相八拍反转编码ucharcodeFFW1[4]={0x03,0x06,0x0c,0x09};//双四拍ucharcodeREV1[4]={0x09,0x0c,0x06,0x03};ucharcodeFFW2[4]={0x01,0x02,0x04,0x08};//单四拍ucharcodeREV2[4]={0x08,0x04,0x02,0x01};sbitkey_7=P2^7;//方向sbitkey_6=P2^6;//单四拍sbitkey_5=P2^5;//双四拍sbitkey_4=P2^4;//四项四拍sbitkey_3=P2^3;sbitkey_2=P2^2;sbitkey_1=P2^1;sbitkey_0=P2^0;/*****延迟*****/voiddelay(uintt){uintx,y;for(x=t;x0;x--)for(y=110;y0;y--);}/*****调节转速*****/voidtimedelay(){if(key_0==1)delay(25);elseif(key_1==1)delay(20);elseif(key_2==1)delay(15);elseif(key_3==1)delay(10);elseP1=0x00;}/*****正转*****/voidmotor_ffw(){uchari;if(key_6==1){for(i=0;i4;i++){P1=FFW2[i];timedelay();}}elseif(key_5==1){for(i=0;i4;i++){P1=FFW1[i];timedelay();}}elseif(key_4==1){for(i=0;i8;i++){P1=FFW0[i];timedelay();}}}/*****反转*****/voidmotor_rev(){uchari;if(key_6==1){for(i=0;i4;i++){P1=REV2[i];timedelay();}}elseif(key_5==1){for(i=0;i4;i++){P1=REV1[i];timedelay();}}elseif(key_4==1){for(i=0;i8;i++){P1=REV0[i];timedelay();}}}/*****主函数*****/voidmain(){while(1){if(key_7==1)motor_ffw();elsemotor_rev();}}