如果你的两个信号一个是启停,一个是方向,那么程序可以这样写。includesbitqt=P,,sbitfx=P,,sbitkeyqt=P,,sbitkeyfx=P,,voiddelay(unsignedinti){while(i–);}main(){while({qt=,if(key==,{qt=。includedefineuintunsignedintdefineucharunsignedcharsbitIN,P,,sbitENA=P,,//左轮,sbitIN,P,,//左轮,sbitIN,P,,//右轮,sbitENB=P,,sbitIN,P,,//右轮,sbitleft=P,,sbitright=P,,//sbitmiddle=P,。
用单片机的四个口接uln的四个输入,然后uln四个输出接步进电机的ABCD,剩下的那一根红线是接VCC的。控制单片机四个口的输出控制正反转ucharzheng[={,,,,,,,,,;//正转电机导通相序A-AB-B-BC-C-CD-D-DAucharfan[={,,,。如果控制的是直流电机则选用H-bridge直流驱动器,如果控制的是交流电机则选用单相或三相交流驱动器。使用单片机选择驱动器输出的PWM信号控制H-bridge直流驱动器的IN,IN,脚,或者控制单相或三相交流驱动器的输入信号,实现电机正反转和调速控制。根据所选的驱动器和电机类型,识别相应的引脚。
哦,你控制的是交流电机。可以采用你说的方案。交流电机控制转速需要用到变频技术,实际操作起来需要有一定的单片机和电路设计的功底。还不如采用齿轮变速,继电器控制。简单点时只有几个开关 继电器就可以了,捎复杂点的可变速齿轮箱和电机正反转保护,过流过压保护,超温保护等电路,不需要单片机。voiddelay(unsignedintt);sbitF,=P,,sbitF,=P,,sbitF,=P,,sbitF,=P,,unsignedcharcodeFFW[={f,f,f,f,f,fc,f,f,;//反转unsignedcharcodeFFZ[={f,f,fc,f,f,f,f,f。
ucharFFW_shang[={,,,,,c,,,;//四相八拍正转编码ucharREV_shang[={,,c,,,,,,;///四相八拍反转编码ucharbujinjiao=,//控制步进电机的步进角voidIO_bujin(void){P,IR|=。你的电路是不对的,我先分析一下你的思路:P,电平—>Q,通—>R,R,侧为,—>Q,通,Q,闭P,电平—>Q,通—>Q,闭—>R,R,侧为,—>Q,闭,Q,通,电机电流从右到左P,电平—>Q,闭—>R,R,侧为,—>Q,通,Q,闭P,电平—>Q。
暂无评论内容