单片机控制步进电机的资料很容易找到,但控制伺服电机的比较少见。本文以一个小白的角度讲解单片机控制伺服电机的方法,希望用得着或者想学这方面的朋友看了本文后能少走弯路。重点放在硬件方面,因为硬件连好了,直接用控制步进电机的程序就可以了。所以,本文对软件部分就不作过多的说明。
控制过步进电机的朋友都知道,单片机IO口连接到步进电机驱动器上,驱动器与步进电机连接。之后就可以通过IO口发送脉冲(先写1隔几微秒后再写0就可以)让步进电机转动,发一个脉冲步进电机就转动一个相同的小角度。这样就可以通过脉冲的数目来控制电机转动的角度啦。转动的方向通过另一个与驱动器相连的IO口控制,控制方法更简单,给IO口写1就正转,写0就反转。伺服电机的控制方法也是一样的,只是接线方法不太一样。废话不多说啦,开始啰。
一、材料准备
工具:面包板、杜邦线、12V或者24V直流电源。
硬件:带三角插头的电源线、伺服电机、伺服电机驱动器(我用的是Panasonic MINAS A6系列)、伺服电机驱动器端子台、stm32最小系统、电阻两个(1K)、NPN三极管两个(我用的c9014)。
二、线路连接
伺服驱动器没有插头接出来,需要自己接电源线,接保护电路,本文仅仅演示相关方法,保护电路啥的就先省了吧。
2.1 电源及驱动器连线
具体的接线方法看图1就知道了。伺服电机与驱动器之间怎么连线没有在图中表示,这个你只要有实物,看着连就行,注意UVW那三根线不要连混了就行,其他两个接口都有防错设计,插错了就插不上。
图1 驱动器电源接线图 这样,电源线接好了,上电之后,面板就会有显示啦。是不是迫不及待地想让电机转一转?当然。 一般地,成功后,面板上显示为r 0(没法在行内嵌入图片,朋友们脑补一下显示的内容)。在此显示下按面板上S键进入菜单,再按M键几次,直到显示为类似AF_RCL的东西,再按上或下箭头,直到显示AF_JOG。按s键进入该功能。此时显示为JOG _,长按上方向键直到显示rEAdy。接着长按左方向键直到显示为SrV_On,如果此步出错,将显示Error。在没出错状态下,按上方向或者下方向键就可以让电机正反转了。是不是有点小激动了呢! 以上内容可以从伺服驱动器手册上找到,但让一个新手啃手册真的有点残忍呢。因为手册上包含了很多内容,直接看手册很难找到自己需要的东西。上面给出了使用驱动器让电机转动的方法,如果自己再对照手册上141页内容进行操作,那么前面板的操作方法应该就会了,然后进行举一反三,手册上参数设定那些内容都应该知道怎么去查了。2.2 驱动器与单片机连线 电机是可以转动了,但是怎么通过单片机控制它转呢?这就要知道单片机怎么和驱动器连线了。连线的关键就在驱动器上那个名为X4的含有50个引脚的接口(见图1)。我们可以通过伺服电机驱动器端子台将这些线引出来,而且,端子台还给我们标了号的。我们不需要用到每根线只需用到表1(表格也没法搞,把它变成图片形式了)中几根。
需要用到的引脚 表中GND信号为单片机GND与12V开关电源负极共地端。单片机端口通过三极管开关电路与PULS2和SIGN2进行连接,电路图如图2所示。
图 2 三极管开关电路图 在面包板上搭好图2电路,将其与驱动器和单片机连接在一起,就可以通过给PA1口发脉冲来控制电机的转动了。但是要想通过PA2口对电机的方向进行控制还需要对驱动器进行设置。具体为将pr0.07设置为3.设置好后需要写入EEPROM,详细操作方法见手册135-136页,通过上面对电机运转的操作我相信朋友们看懂手册这两页应该没问题的。三、代码编写下面给出控制电机沿指定方向旋转指定步数,对于出厂状态,一圈为10000步。void go_step(int stepnum,char dir){ int i=0,j=0; If(dir==0){ //正转 PAout(2)=1; }else{ //反转 PAout(2)=0; } For(j=0;j<stepnum;j++){ PAout(1)=1;//给PA1口写高电平,需要自己实现该函数哦 For(i=0;i<600000;i++);//延时 PAout(1)=0; } } 自己完善相关代码后,编译烧写到单片机就可以随心所欲地控制伺服电机的转动了。
|