六线式步进电机驱动仿真
这个仿真的功能就是模拟单片机系统来驱动步进电机的加速、反向,数码管显示当前步进电机速度,当然还包括最基本的振荡电路以及复位电路。
首先我们打开程序里面的仿真软件。
进入仿真页面软件如下(这里我们应该注意各个红线圈出的区域的名称):
在这个驱动电路中我们需要用到的元件有电容(cap)、电解电容(cap-elec)、晶振
1 / 65授课:XXX
(crystal)、按钮(button)、1k电阻(
2 / 65授课:XXX
chipres1k)、8引脚排阻(respack-8)、80c51芯片(80c51)、六线式步进电机(motor-stepper)步进电机驱动芯片(uln2003a)、数码管(7seg-com-cat-grn)。
(1)挑选电器元件
点击挑选元件按钮P
之后弹出Pick Device窗口,然后在关键字里面输入cap,输入完之后,在这个窗口右侧自动的显示出搜索结果,
双击该搜索结果。然后cap(电容)就自动添加到了元件列表窗口了
授课:XXX
之后继续在Pick Device窗口里面的关键字里依次再输入cap-elec、crystal、button、chipres1k、respack-8、80c51、motor-stepper、uln2003a、7seg-com-cat-grn。寻找到相应的搜索结果并双击,把这10个元件找到之后再点击Pick Device窗口里面的确定按钮。
至此元件的选取工作已经完成。
上面元件选取完之后软件界面如下图所示
授课:XXX
(2)电路元件布局:
在布局时我们需要选择接地接口与电源接口,所以这里先说一下接地端口与电源端口的选取方法。在软件的最左侧的模型选择工具栏中我们需要点中终端模式按钮侧的元件列表中显示如下
之后在右
点击一下POWER,此时该元件变为蓝色,元件显示为蓝色即表示该元件已经可以在原理图编辑窗口里面使用,之后只需要在原理图编辑窗口里面的某一个位置上点击一下该元件,该元件就可以显示在原理图编辑窗口里面了。再在原理图编辑窗口里面不同的位置
授课:XXX
点击一下该命令依然有效(后面会用到)。此时就正确添加了电源接口。
授课:XXX
之后点击一下GROUND,此时该元件变为蓝色。在原理图编辑窗口里面的某一个位置上点击一下,该元件就可以显示在原理图编辑窗口里面了。
依次点击元件列表中的第一个元件7seg-com-cat-grn,此时。在这个仿真中我们只需要使用一个数码管所以如下图所示
之后依次将十个元件布置在原理图编辑窗口的相应位置上,如下图所示
至此布局工作就结束了。
(3)电路元件布线
授课:XXX
这里我们需要连接的有晶振电路、复位电路、数码管与排阻、以及步进电机的驱动电路。所以最终的电路布线如下图所示:
授课:XXX
(4)电器元件的属性参数设置
设置方法是选中各个元器件然后右键,之后会出现如下窗口
点击“编辑属性”之后会新出现一个对话框,然后在这个对话框里面输入各个元件所相对应的属性参数(capacitance为电容的容值,frequency为频率,resistance为电阻的阻值)。其中各元件的相应参数为C1=30pF,C2=30pF,C3=10uF,R1=1KΩ,R2=1KΩ,
授课:XXX
晶振C3的频率f=12MHz。
(5)连线标号与文本添加
连接编号也就是常说的编线号.编线号的目的是为了在现场装配,调试,检修的时候,方便查线.使真实的接线与原理图能够方便地对应
授课:XXX
。操作方法是选中模型选择工具栏里面的连线标号模式将鼠标放在任意连线上时就会出现一个小叉号,
选中之后在原理图编辑窗口
后点击一下就会出现一个对话框然后就可以键入编号,点击“确定”就可以了。
具体操作如下:
在这个电路图我们需要做的编号是步进电机六个接线端子里面的四个(直接接VCC的连个接线端子除外)分别标号A0、B0、C0、D0。下面就以标号A0为例进行操作
在这个位置点击一下弹出如下对话框,在对话框里面键入A0
授课:XXX
之后点击“确定”即可。
添加完的效果如下:
授课:XXX
之后依次将B、C、D分别添加到相应的位置。
总体效果如下
授课:XXX
另外还有就是两个按钮需要额外的添加注释,其中一个是与P3.0相连的反向按钮,还有一个是与P3.1相连的加速按钮。操作方法是选中模型选择工具栏里面的2D图形文本模式
选中之后在与P3.0相连的反向按钮后面添加文本“反向”二字,效果如下
同理在与P3.1相连的加速按钮后面添加文本“加速”二字,总体效果如下
授课:XXX
还有我们需要将VCC与GND添加到电路图中,具体操作是点击原理图编辑窗口里的power元件
授课:XXX
然后双击,
在弹出的edit terminal label(编辑终端标签)对话框中的“标号“中键入VCC然后点击“确定”
添加效果如下
授课:XXX
然后是在接地端方法相同)
的编辑属性对话框里面键入GND。(方法与上面添加VCC
授课:XXX
最终添加效果如右
(6)示波器的选择
在这里为了看清驱动楚步进电机的脉冲周期与脉宽的变化我们需要一个示波器来显示A0、B0、C0、D0四处的波形变化曲线。
点击模型选择工具栏里面的虚拟仪器模式,元件列表中就显示如下内容
点击第一个按钮oscilloscope(示波器)后在原理图编辑窗口里面点击一下就会显示出示波器了,如下:
授课:XXX
由于此时oscilloscope是要显示步进电机的脉冲变化,所以我们要将oscilloscope连接到步进电机的A0、B0、C0、D0,四个连线端。连接方法是将oscilloscope的四个连线端分别引出一条线,如下图所示:
授课:XXX
之后在四个接线上分别再标号A0、B0、C0、D0。通过对应节点的一一对应匹配来实现接线(当然可以直接连接到电机的四个引线上上)。如下:
这样就连接了示波器oscilloscope与步进电机的四个引线端。从而实现示波器oscilloscope与整个电路的连接。
至此,整个电路的元件选择、布局、布线、标号与添加虚拟仪器都已经完成。整体效果如下:
授课:XXX
(7)编译程序
这里我们需要使用单片机编程软件Keil uVision2
这里Keil uVision2软件的使用方法就不做具体介绍了。具体编写的程序及注释如下:
#include //8051单片机头文件#define uchar unsigned char //ungsigned char定义为uchar
#define uint unsigned int //unsigned int定义为uint
授课:XXX
sbit huanxiang=P3^0; //改变旋转方向
sbit jiasu=P3^1; //加速
uchar num,sudu,flag;
授课:XXX
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code forward[]={ 0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09 };
//电机正转:0001 1,0011 3,0010 2,0110 6,0100 4,1100 c,1000 8,1001 9
/**************************************************/
/* 延时函数 /**************************************************/
void delayms(uint ms)
{
uint i,j;
for(i=0;ifor(j=0;j<114;j++);}
/**************************************************/
授课:XXX
*/
/* 显示函数 */
/**************************************************/
void display() //数码管显示程序
{
P0=table[sudu]; //显示相应字符
授课:XXX
}
/**************************************************/
/* 主函数 */
/**************************************************/
void main(void)
{
while(1)
{
if(huanxiang==0) //按键换向的检测
{
delayms(2); //延时去抖
if(huanxiang==0) //如果换向真的被按下
{
授课:XXX
flag=~flag; //标志位取反,开始换向
while(huanxiang==0); //松手检测
}
}
if(jiasu==0) {
delayms(2); if(jiasu==0) {
//按键加速的检测
//延时去抖
//如果加速键真的被按下
授课:XXX
sudu++; //速度自加
if(sudu==10)sudu=0; //控制速度范围
while(jiasu==0); //松手检测
}
}
display(); //显示函数
if(sudu==0) P1=0x0f; //电机停转
else if(flag==0) //正反转控制
P1=forward[num];
else P1=forward[7-num];
num++; //数量自加
if(num==8)num=0;
delayms(230-sudu*20); //控制延时长度,调节转速
授课:XXX
}
}
程序编辑完成之后必须将C文件编译成hex文件才可以下载到单片机仿真系统中。具体操作为:在Keil uVision2软件中点击options for target(选择目标)图标
授课:XXX
弹出一个options for target ‘Target 1’对话框,点击Output,对话框如下:
后在Create HEX Fi前面的小框格中点击勾选。点“确定”即可。
授课:XXX
授课:XXX
之后点击rebuild all target files(重建所有目标文件)图标
这样就生成了HEX文件了(前提是编写的程序正确,可以正常编译)。生成的HEX文件如下:
(8)程序下载到仿真芯片80C51里
方法是在仿真软件的原理图编辑窗口中双击80C51芯片,会弹出一个“编辑元件”的对话框:
授课:XXX
下面在这个对话框里面的Program File后面的文件夹图标,又弹出一个选择文件的窗口,注意这里我们所选的目标文件就是上面用软件Keil uVision2编译出来的HEX文件,选中之后点击“打开”。
授课:XXX
之后又回到了“编辑元件”对话框,继续点击“确定”按钮退出该对话框。
授课:XXX
(9)动态模拟仿真。
授课:XXX
点击仿真软件里面右下角的仿真按钮里面的开始,点击完成之后以及就会弹出示
波器里面有四条线分别代表A0、B0、C0、D0四根线的高低电平(此时都为一条直线),同时数码管显示“0”,步进电机下面的小的显示仪显示“0.00”,且各个管脚显示出红绿方格,其中红方格表示高电平绿的方格表示低电平。效果如下:
下面我们按下加速按钮,数码管示数就会变化同时步进电机开始旋转,步进电机下面的小的显示仪会有示数变化。此时再观察示波器里面的四条线的高低电平变化就可以发现每条线都有脉冲输出。效果如下:
授课:XXX
之后点击反向按钮观察图里面步进电机的旋转方向(很明显电机的转向会改变),之后再点击反向按钮又可以看到电机的方向改变了一次。可以看出每点一次反向按钮电机的方向就会改变一次。
点击复位按钮我们可以观察到数码管的示数归“0”同时步进电机停转。然后点击仿真按钮里面的停止按钮
。
这样仿真就结束了。
至此我们的六线式步进电机的运动仿真就已全部完成!!
授课:XXX
下面我们进行出PCB板(印制电路板)操作。
由于我们之前所选的元件里面的数码管、按钮、与步进电机没有封装,所以我们需要在这里先添加这几种元件的封装。
授课:XXX
首先添加按钮(button)的封装。先新建一个空白的仿真页面点击下拉式菜单“工具”里面的导出网络表到ARES
界面就自动弹出一个保存窗口,这里为了便于记忆我们保存为button。
授课:XXX
授课:XXX
保存之后页面自动跳转到
点击模型选择工具栏里2D Graphics框体模式Board Edge
后再点击黄色的
选完之后在原理图编辑窗口里面拉拽一个合适的的窗格
由于用的按钮是四引脚的且四引脚组成5mm*7mm的矩形,所以点击圆形穿孔焊盘模式选择C-40-15,在右边原理图编辑窗口里面的黄色区域内点击一下如下图
在点的焊盘上面右键一下,选择重复放置
授课:XXX
选择完成之后就又弹出了一个复制对话框,这里X-Step=5mm,Y-Step=0,复制个数为1,点击“确定”退出对话框。
现在就有了两个相距为5mm焊盘。
授课:XXX
下面分别再执行前面的重复放置操作(注意此时X-Step=0,Y-Step=5mm,复制个数为1)。最终有四个如下焊盘
授课:XXX
之后,再为各个引脚编辑标号分别为1、2、3、4(方法为右键编辑属性)。效果如下
之后在点击选择模式之后框选一下右边的黄色区域,如下:
授课:XXX
在菜单栏中选择库→创建封装
授课:XXX
弹出一个新的对话框,填写内容如下:
点击确定按钮,保存封装。
利用上述方法可以制作SMG(数码管)与六线式步进电机(motor-stepper)的封装。这里需要注意的是数码管有10个引脚,分两排。同排各有5个引脚,间距为2.5mm,排与排间距为15mm,分别命名为A、B、C、D、E、F、G、H、I、COM。
授课:XXX
六线式步进电机有6个引脚,分两排。同排各有3个引脚,间距为2.5mm,排与排间距为5mm,分别命名为A1、B1、A2、B2、AC、BC。
至此我们的封装工作已经全部完成。
授课:XXX
首先点击仿真软件的工具栏中的生成网表并传输到ARES按钮
软件又新打开了一个制作PCB的页面,之后又弹出了一个提示框(如下),点击确定。
授课:XXX
又出现了一个封装选择器对话框,如下。在里面输入button(前面已手工添加过封装)。输入完之后点击“回车”键。
然后又出现了下一个封装选择器对话框,分别依据器件名称在封装里面输入button,motor-stepper,smg。待输完之后,就进入了制作PCB板的页面。
授课:XXX
之后点击模型选择工具栏中的2D Graphics框体模式
后在右下角的线形选择里面选择Board Edge
选完之后在原理图编辑窗口里面拉拽一个大点的窗格(黄色区)
授课:XXX
之后点击下拉式“菜单”工具里面的“自动布局”
授课:XXX
又新弹出一个对话框(在仿真中用的元件在这里就全都出现)点击“确定”。
授课:XXX
授课:XXX
在原理图编辑窗口里面的黄色区域里面就会自动出现添加的元件。如下图
这里我们可以自动调整一下元件的位置。方法为选中元件然后右键点“拖拽对象”。
拖拽完之后的布局如下
授课:XXX
点击下拉式“菜单”工具里面的“自动布线”
之后又弹出一个“Electra自动布线器”对话框点击“开始布线”
授课:XXX
自动布线如下
授课:XXX
以下进行PCB板的覆铜操作。
PCB覆铜的作用
授课:XXX
PCB的敷铜一般都是连在地线上,增大地线面积,有利于地线阻抗降低,使电源和信号传输稳定,在高频的信号线附近敷铜,可大大减少电磁辐射干扰。总的来说增强了PCB的电磁兼容性。提高板子的抗干扰能力。
点击模型选择工具栏里面的“覆铜操作”。
后选择当前板层里的Top Copper一下布线后的区域。
后面在“原理图编辑窗口”再框选
授课:XXX
之后选择左下角里的下
后在“原理图编辑窗口”再框选一下效果如
授课:XXX
下面我们可以看一下实际制作的PCB板里的“输出”的“3D预览”
制作的PCB板的实际板样如下
授课:XXX
正面板样
授课:XXX
授课:XXX
反面板样
授课:XXX
至此先保存一下
制作完成之后再点击下拉式菜单“输出”里面的“Gerber输出”
新弹出一个对话框,选择如下后点击“确定”。
授课:XXX
打开上述窗口里面的文件夹名,就会看见自动生成的文件了。
授课:XXX
至此我们驱动步进电机的专用开发板已经制作完成。
(注:可编辑下载,若有不当之处,请指正,谢谢!)
授课:XXX