步进电机制作
- 格式:doc
- 大小:308.00 KB
- 文档页数:19
步进电机驱动电路制作图解
前几天吧寒假作业糊弄完了,这几天没事干昨天晚上看到了步进电机然后就研究了半晚上原理
今天在我的那个单片机试验箱里翻到啦一个35mm的步进电机,然后在配套资料里面找到了驱动电路的电路图如图
下面我给大家讲讲原理(仅供参考):首先j18接口是加到单片机io 口上的j19接到步进电机j19的1234分别为步进电机的a,a1,b,b1
首先8550是低电平导通,如果j18的1的电平为0,那幺三极管v8导通,v8导通之后j19的1脚的电平为1
,同时电流又通过R49让三极管v15导通由电路图可知,j19的2脚接到了v15的集电极,且j19的2脚和1脚是
一组线圈,3和4脚是一组线圈,现在1脚电平为1,电流流经一组线圈。
步进电机生产工艺步进电机是一种可以实现精确控制的电动机,广泛应用于机械设备、工业自动化和电子设备等领域。
步进电机的生产工艺主要包括原材料准备、加工制造、组装和检测等环节。
首先,原材料准备是步进电机生产的第一步。
步进电机的核心部分是由铁芯、线圈和转子组成的。
在生产过程中,需要选择优质的铁芯材料和导线,以确保步进电机的性能和质量。
同时,还需要准备其他配件,如轴、防尘罩等。
接下来,是加工制造环节。
在这一阶段,需要通过多道工序对原材料进行加工和制造。
首先,需要对铁芯进行冲压和切割处理,制作铁芯的形状和尺寸。
然后,将导线绕制在铁芯上,形成线圈。
线圈的绕制需要根据不同的电机类型和规格进行,精确计算绕线圈的匝数和层数。
同时,还需要对转子进行加工和装配。
这些加工工艺需要保证每一个工件的准确度和一致性。
在组装环节,将加工好的各个部件进行组装。
首先,将铁芯和线圈组合在一起,形成步进电机的固定部分。
然后,将转子与固定部分合并,形成步进电机的转动结构。
在组装过程中,需要严格控制各部件的配合度,以确保步进电机的运行效果和寿命。
最后,是进行检测和调试。
在步进电机的生产过程中,需要对每一台电机进行严格的测试和检测,以确保其性能和质量。
主要检测项目包括电阻、电感、绝缘电阻、转子的动平衡等。
同时,还需要对步进电机进行调试,调整步进电机的参数和控制方式,以满足客户的需求。
综上所述,步进电机的生产工艺包括原材料准备、加工制造、组装和检测等环节。
这些工艺需要严格控制和操作,以确保步进电机的性能和质量。
步进电机的生产工艺对于电机的性能和质量有着重要的影响,只有通过科学有效的工艺流程,才能生产出优质的步进电机。
ylpc步进电机程序编写步进电机程序的编写需要根据具体的驱动板和控制器进行设置。
下面是一般步进电机程序的编写流程:1. 定义引脚步进电机通常需要4个信号线(A+、A-、B+、B-),需要定义引脚来连接至驱动板:```#define DIR_PIN 2 //方向引脚#define STEPS_PIN 3 //步进引脚#define MOTOR_INTERFACE_TYPE 1 //驱动板接口类型(1为手摇电位器,2为数字输入)```2. 初始化引脚将定义的引脚初始化为输出模式:```void setup() {pinMode(DIR_PIN, OUTPUT);pinMode(STEPS_PIN, OUTPUT);}```3. 定义运动参数定义步进电机的转速和转动方式等参数,需要根据具体步进电机和要求进行设置:```//步进电机参数int stepsPerRevolution = 200; // 步进角度int speed = 1500; // 转速(mm/s)int acceleration = 8000; // 加速度(mm/s^2)int deceleration = 8000; // 减速度(mm/s^2)int micro_steps = 1; // 微步模式```4. 控制电机运动使用控制器或驱动板将引脚信号以设定的参数发送到步进电机上,启动电机运动:```void loop() {// 设置方向digitalWrite(DIR_PIN, HIGH);// 控制电机运动StepperDriver.step(speed, acceleration, deceleration, stepsPerRevolution, DIR_CW, micro_steps);}```以上仅为步进电机程序编写的一般流程,具体编写方法需要根据具体的情况进行设置。
在编写过程中,需要注意保证步进电机运动的平稳性,避免过快或不稳定的运动。
步进电机制作小型木工车床
对于模型爱好者来讲。
拥有自己的木工车床,加工一些小型的木材或塑料、有机玻璃等材料的模型部件,是求之不得的事情。
下面介绍的小型木工车床,采用了小型步进电机。
可从废旧软盘驱动器、打印机及复印机中拆取。
一般的步进电机都需要用二相或多相脉冲电源作驱动电源,这种电路较复杂,成本也较高。
这一制作另辟蹊径,利用电机的两个绕组的阻抗实现正反馈而产生振荡,实现了他激励型驱动,电路简单到只用七个零件。
图1是单端驱动电路。
图2为推挽驱动电路。
为了获得需要的转矩,步进电机试用了日本产品23LM-0304-14,其额定电压5.1V,额定电流1.0A,步长1.8°,绕组电阻10Ω。
42步进电机工作原理
两相步进电机最简单的构成为Nr=1的情况,电机结构如下图所示。
一般两相电机定子磁极数为4的倍数,至少是4。
转子为N极与S 极各一个的两极转子。
定子一般用硅钢片叠压制作,定子磁极数为4极,相当于一相绕组占两个极,A相两个极在空间相差180°,B相两个极在空间也相差180°。
电流在一相绕组内正负流动(此种驱动方式称为双极性驱动),A相与B相电流的相位相差90°,两相绕组中矩形波电流交替流过。
即两相电机的定子,在Nr=1时,空间相差90°,时间上电流相差90°相位差,电流与普通的同步电机相似,在定子上产生旋转磁场,转子被旋转磁场吸引,随旋转磁场同步旋转。
以上图为例,假如A相有两个线圈,单向电流交替流过两个线圈,也可产生相反的磁通方向,此方式称为单极(uni-plar)型线圈。
.
上图中的两相单极型线圈在有些文献中也被称为四相步进电机,此时其转子极对数、齿数Nr,以及步距角θs均与双极型线圈相同。
本课程两相电机的定义符合式θs=180°/PNr,即将转子齿数和步距角θs代入式θs=180°/PNr,如P=2,则为两相电机,如Nr相同,P=4,步距角θs只有1/2,则电机为四相电机,在此特别提请注意。
李先生电话:QQ号码:。
步进电机驱动器的制作
方佩敏
【期刊名称】《电子制作》
【年(卷),期】2002(000)006
【摘要】本电路采用了Bourn公司的双向数字旋转编码器、PIC16C54微控制器及UCN5804B步进电机驱动IC等器件,组成了步进电机驱动电路,代表了从前用一大堆门电路和功率晶体管组成的电路。
套件中不提供步进电机。
另外,本电路仅适用于6引线单极步进电机,不适合用于4引线双极步进电机。
【总页数】2页(P13-14)
【作者】方佩敏
【作者单位】无
【正文语种】中文
【中图分类】TM383.6
【相关文献】
1.怠速步进电机驱动器的制作 [J], 杨增雨
2.步进电机揭秘(下)——第二部分:四通道单极步进电机驱动器 [J], 伊大成
3.步进电机及驱动器(十五)——大步距角步进电机及其应用(1) [J], 鄂峻膺
4.步进电机及驱动器(十四):步进电机驱动器的输入输接口电路 [J], 鄂峻膺
5.步进电机及驱动器(二)——混合式步进电机与反应式步进电机对比分析 [J], 鄂峻膺
因版权原因,仅展示原文概要,查看原文内容请购买。
自制简易的步进电机控制器电路
步进电机控制电路原理图如下图所示,电路主要由脉冲信号产生电路、脉冲信号分配电路及功率放大电路等几部分组成。
在本电路中的脉冲信号由NE555构成的一个多谐振荡器产生,选择开关S1和不同振荡电容C1/C2相连,可得到不同频段的脉冲信号,通过电位器RP可使其3脚输出的信号频率连续可调,该脉冲信号加到十进制计数器
CD4017的时钟输入CP端,作为步进电机工作的时钟。
电机的工作步序由CD4017的计数输出端提供。
由于目前市面上步进电机的种类较多,本电路仅以较常用的“三相双三拍”控制(具体步序见下下表)为例进行分析,其他的控制方式读者们可以参照本例自行分析。
由于“三拍”完成一个循环需有三个步序,故由十进制计数器CD4017构成一个3进制的封闭小循环,分别由Q0、Q1、Q2输出所需的步序1、2、3的信号,而将
Q3直接接到CD4017的复位端R,从而构成了一个完整的环形分配电路。
“双”是在每一步序中电机要有2相同时得电,经对表1中不同步序的真值表分析可知,“A”相的值应在步序1和3均为有效,此时可将Q0与Q2的输出信号经或门(74HC32)送至A相的控制端;Q0与Q1相或后送至B相;Q1与Q2相或后送至C相,这样就可以得到我们所需要的三相双三拍步序控制信号。
步进电机制作设计用51单片机控制步进电机运转,实现步进电机正转、反转、正转加速、反转加速、停止等功能。
要求:列出所用元件清单(含参数);所用软件环境;设计电路原理图及PCB图;编写相应控制程序;制作出实物。
单片机控制步进电机要求:有加速、减速、停止、正转、反转按钮,电机是四相五线,控制两个步进电机,c程序浏览次数:109次悬赏分:20 |解决时间:2011-8-6 12:14 |提问者:》没有《最好带有硬件电路,驱动最好是L297和L298,谢谢各位大侠啊问题补充:芯片是AT89c52,要付费的不要来,俺穷得很最佳答案我用的是控制一个步进电机的,这个是我以前写的,你的要求在下面的程序做修改就行了;程序如下:#include <reg52.h>#define uchar unsigned char#define uint unsigned int//uchar table[]={0x18,0x30,0x60,0x48,0x48,0x60,0x30,0x18}; //二相励磁uchar table[]={0x08,0x10,0x20,0x40,0x40,0x20,0x10,0x08}; //一相励磁uchar num=0,maichong,zhengfan;sbit add_key=P3^2; //加速键sbit reduce_key=P3^3; //减速键sbit zhengfan_key=P3^4; //正反转按键void delay(uint z) //延时1ms{uint x,y;for(x=z;x>0;x--)for(y=114;y>0;y--);}void only_key() //按键处理{static uchar flag; //定义成静态只被定义一次if(zhengfan_key==0) //检测正反按键是否被按下{delay(5);if(zhengfan_key==0){flag=~flag; //取反if(flag==0)zhengfan=0; //正转,取数组前四位elsezhengfan=4; //反转,取数组后四位while(!zhengfan_key);}}if(add_key==0) //检测加按键是否被按下{delay(5);if(add_key==0) //消抖{num++; //加速键按下,速度标志加1if(num==4) //已达到最大值3num=3;while(!add_key);}}if(reduce_key==0) //检测减按键是否被按下{delay(5);if(reduce_key==0){if(num!=0)num--; //减速键按下,速度标志减1elsenum=0; //减速到0则保持while(!reduce_key);}}}void deal() //根据速度标志进行数据处理{switch(num){case 0: P0=0x06; //数据管显示1maichong=5; //转速最慢break;case 1: P0=0x5b; //数据管显示2maichong=4;break;case 2: P0=0x4f; //数据管显示3maichong=3;break;case 3: P0=0x66; //数据管显示4maichong=2; //转速最快break;}}void start() //电机速度和正反控制处理{uchar i,j;for(i=zhengfan;i<4+zhengfan;i++){P1=table[i];for(j=0;j<maichong;j++) //延时越小,转速越快,但也不得太小delay(2);}}void main(){while(1){only_key();deal();start();}}回答时间:2011-7-28 01:00 |我来评论向TA求助回答者:孤漠飞鸟来自团队飞鸟部落|四级采纳率:56%擅长领域:C/C++数学其他编程语言参加的活动:暂时没有参加的活动相关内容∙2011-4-5急求单片机控制步进电机加减速/正反转的汇编程序 5∙2010-4-13请问基于L297/298单片机控制两相双极性步进电机正反转以及加速减速的程 (4)∙2009-5-9C51单片机控制三相步进电机的程序,要实现的功能是正转反转和加速减速 10∙2008-12-7请问单片机控制步进电机正反转以及加速减速的程序怎么写?急!! 10∙2011-5-29大家好我是大4快毕业的学生求51单片机通过7279按键控制4相八拍步进电机...更多关于步进电机正转、反转、正转加速、反转加速的问题>>等待您来回答∙2回答步进电机28BYJ48的C语言程序问题∙2回答如何用单片机编写C程序,实现步进电机的正反转和调速?∙3回答30谁有基于51单片机的步进电机C程序,可实现启动,停止,加减速,并显示...∙3回答100C语言控制步进电机更多等待您来回答的问题>>其他回答共3条加我,帮你回答者:QQ1294989206|四级| 2011-7-24 09:35#include <reg52.h> //52芯片管脚定义头文件#include <intrins.h> //内部包含延时函数_nop_();#define uchar unsigned char#define uint unsigned intuchar code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; uchar code REV[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; sbit K1 = P3^2; //正转sbit K2 = P3^3; //反转sbit K3 = P3^4; //停止sbit BEEP = P3^6; //蜂鸣器/********************************************************//*/* 延时t毫秒/* 11.0592MHz时钟,延时约1ms/*/********************************************************/void delay(uint t){uint k;while(t--){for(k=0; k<125; k++){ }}}/**********************************************************/void delayB(uchar x) //x*0.14MS{uchar i;while(x--){for (i=0; i<13; i++){ }}}/**********************************************************/void beep(){uchar i;for (i=0;i<100;i++){delayB(4);BEEP=!BEEP; //BEEP取反}BEEP=1; //关闭蜂鸣器}/********************************************************/ /*/*步进电机正转/*/********************************************************/ void motor_ffw(){uchar i;uint j;for (j=0; j<8; j++) //转1*n圈{if(K3==0){break;} //退出此循环程序for (i=0; i<8; i++) //一个周期转45度{P1 = FFW[i]; //取数据delay(2); //调节转速}}}/********************************************************/ /*/*步进电机反转/*/********************************************************/ void motor_rev(){uchar i;uint j;for (j=0; j<8; j++) //转1×n圈{if(K3==0){break;} //退出此循环程序for (i=0; i<8; i++) //一个周期转45度{P1 = REV[i]; //取数据delay(2); //调节转速}}}/********************************************************** 主程序**********************************************************/main(){uchar r,N=64; //N 步进电机运转圈数因为我们的步进电机是减速步进电机减速比是1/64 所以这里N=64时步进电机外部的主轴转1圈while(1){if(K1==0){beep();for(r=0;r<N;r++){motor_ffw(); //电机正转if(K3==0){beep();break;} //退出此循环程序}}else if(K2==0){beep();for(r=0;r<N;r++){motor_rev(); //电机反转if(K3==0){beep();break;} //退出此循环程序}}elseP1 = 0xf0;}}/********************************************************/追问还需要加速、减速,硬件电路图,谢谢大侠啦主要还有电压的转换芯片7805你的图我看不清楚,正面是我编的一段程序仅供参考#include<reg51.h> //头文件FYM 35BY48S053常州市丰源微特电机有限公司?#define uchar unsigned int //宏定义,为方便编程#define uint unsigned int#define MOTORSTEP P1 //宏定义,定义P1口为步进电机驱动端口uchar code step[]={0x03,0x09,0x0c,0x06}; //步进电机驱动值数组{0x06,0x0c,0x09,0x03}void delay() //步进电机每一步间延迟函数{uint j ,f;for(f=0;f<10;f++)for(j=0;j<400;j++);//uchar i=700;//while(i--);}sbit key1=P3^0;sbit key2=P3^1;//char code SST516[3] _at_ 0x003b; //仿真插入代码main() //主函数{uchar i=0;while(1){if(key1==0) //电机氛正转{for(i=0;i<4;i++) //4步一个循环{MOTORSTEP=step[i]; //取值赋给P1驱动口delay(); //延迟}}elseif(key2==0) //电机反转{for(i=4;i>0;i--) //4步一个循环{MOTORSTEP=step[i]; //取值赋给P1驱动口delay(); //延迟}}}}四相六线?六根控制线?回答者:热心网友| 2011-5-6 18:08ORG 00HSTOP: ORL P2,#0FFHLOOP: JNB P1.0,FOR2JNB P1.1,REV2JNB P1.2,STOP1JMP LOOPFOR: MOV R0,#00HFOR1: MOV A,R0MOV DPTR,#TABLEMOVC A,@A+DPTRJZ FORCPL AMOV P2,AJNB P1.2,STOP1JNB P1.1,REV2CALL DELAYINC R0JMP FOR1REV: MOV R0,#05HREV1: MOV A,R0MOV DPTR,#TABLEMOVC A,@A+DPTRJZ REVCPL AMOV P2,AJNB P1.2,STOP1JNB P1.0,FOR2CALL DELAYINC R0JMP REV1STOP1: CALL DELAYJNB P1.2,$CALL DELAYJMP STOPFOR2: CALL DELAYJNB P1.0,$CALL DELAYJMP FORREV2: CALL DELAYJNB P1.1,$CALL DELAYJMP REVDELAY: MOV R1,#40D1: MOV R2,#248DJNZ R2,$DJNZ R1,D1RETTABLE: DB 03H,09H,0CH,06HDB 00DB 03H,06H,0CH,09HDB 00END > bujindianji.rar > S_ MOTOR-key.C, change:2009-04-12,size:3323b1.2.3.#include <reg52.h> //51芯片管脚定义头文件4.#include <intrins.h> //内部包含延时函数 _nop_();5.6.#define uchar unsigned char7.#define uint unsigned int8.9.uchar code FFW[8]={0x1F,0x3F,0x2F,0x6F,0x4F,0xCF,0x8F,0x9F};10.uchar code REV[8]={0x9F,0x8F,0xCF,0x4F,0x6F,0x2F,0x3F,0x1F};11.//uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};12.//uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};13.14.sbit K1 = P3^4; //正转15.sbit K2 = P3^5; //反转16.sbit K3 = P3^6;17.sbit K4 = P3^7; //停止18.sbit BEEP = P2^3; //蜂鸣器19.20./********************************************************/21./*22./* 延时t毫秒23./* 11.0592MHz时钟,延时约1ms24./*25./********************************************************/26.void delay(uint t)27.{28. uint k;29.while(t--)30. {31.for(k=0; k<125; k++)32. { }33. }34.}35.36./**********************************************************/37.void delayB(uchar x) //x*0.14MS38. {39. uchar i;40.while(x--)41. {42.for (i=0; i<13; i++)43. { }44. }45. }46.47./**********************************************************/48.void beep()49. {50. uchar i;51.for (i=0;i<180;i++)52. {53. delayB(5);54. BEEP=!BEEP; //BEEP取反55. }56. BEEP=1; //关闭蜂鸣器57. }58.59./********************************************************/60./*61./*步进电机正转62./*63./********************************************************/64.void motor_ffw()65. {66. uchar i;67. uint j;68.for (j=0; j<12; j++) //转1*n圈69. {70.if(K4==0)71. {break;} //退出此循环程序72.for (i=0; i<8; i++) //一个周期转30度73. {74. P2 = FFW[i]; //取数据75. delay(10); //调节转速76. }77. }78. }79.80./********************************************************/81./*82./*步进电机反转83./*84./********************************************************/85.void motor_rev()86.{87. uchar i;88. uint j;89.for (j=0; j<12; j++) //转1×n圈90. {91.if(K4==0)92. {break;} //退出此循环程序93.for (i=0; i<8; i++) //一个周期转30度94. {95. P2 = REV[i]; //取数据96. delay(10); //调节转速97. }98. }99. }100.101./******************************************************** 102.* 103.* 主程序104.* 105.*********************************************************/ 106.107.main()108. {109. uchar r,N=5; //N 步进电机运转圈数110. P2=0xDF;111.while(1)112. {113.if(K1==0)114. {115. beep();116.for(r=0;r<N;r++)117. {118. motor_ffw(); //电机正转119.if(K4==0)120. {beep();break;} //退出此循环程序121. }122. }123.else if(K2==0)124. {125. beep();126.for(r=0;r<N;r++)127. {128. motor_rev(); //电机反转129.if(K4==0)130. {beep();break;} //退出此循环程序131. }132. }133.else134. P2 = 0x0F;135. }136. }137.138./********************************************************/实用的步进电机驱动电路(图)作者:中国地质大学(武汉)机电学院赵家政补家武日期:2007-5-1 来源:本网字符大小:【大】【中】【小】概述步进电机是一种将电脉冲转化为角位移的执行机构,可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。