步进电机控制实验

这篇具有很好参考价值的文章主要介绍了步进电机控制实验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.设计要求

利用单片机实现对步进电机的控制,编写程序,用四路 I/O 口实现环形脉冲的分配,控制步进电机按固定方向连续转动。同时,要求按下“Positive(正转)”按键时,控制步进电机正转;按下“Negitive(反转)” 按键时,控制步进电机反转;按下“加速”按键时,控制步进电机加速;按下“减速” 按键时,控制步进电机减速。4位数码管,左边两位显示正反转,正转显示“11”,反转显示“00”,右边两位显示转速档次,步进电机的转速1~30档在右边两位数码管上显示。

1.设计意义:(项目应用领域及意义)

步进电机是一种受脉冲信号控制,并且能将脉冲信号转化为相应的角位移或者线位移的数字电动机。由于电源每次输入电脉冲给该电机,该电机就会前进一小步,转动的方式是步进式的,所以步进电机,由于电源输入的是脉冲式的电压,因此也被称为脉冲电动机。

在步进电机驱动范围内,其输出的角位移或线位移与输入的脉冲个数成正比,不因电源电压、负载变化和环境条件等的变化而变化。所以其输出的角速度或线速度也与输入的脉冲频率成正比,通过改变输入脉冲频率的高低就可以调节步进电机的转速,并能控制步进电机的快速启动,暂停,正反转和加减速等。

由于步进电机具有步距误差不积累,运行可靠,结构简单,成本低等特点,因此被广泛运用于计算机外围电路,自动化控制装置以及其他数字控制装置中,如打印机、钟表、数模转换设备中。

2.工作原理

步进电机采用脉冲信号进行控制,每输入一次脉冲,就使步进电动机向前推进一步。

②步进电动机的转动步距角,是以电动机的结构为基准,按一定比例的比例来实现的。

在实践中,电动机的转动步距角会有细微的差异,这是因为电动机的结构固定有问题,并且不会累积到总极数越多,对加工精度的要求也就越高。一般情况下,工业用混合步进电动机的步距角为1.8°,即200个极点。(相当于同步)

3.已实现的功能说明

按下51单片机中的k2键,步进电机会进行对应的加速,数码管的后两位会显示对应的0~30的速度值;按下51单片机中的k3键,步进电机会进行对应的减速,数码管的后两位会显示对应的0-30的速度值;按下51单片机中的k3键,步进电机会进行对应的进行反转,此时数码管前两位会对应的显示“00”;按下51单片机中的k5键,步进电机会进行对应的正转,此时数码管前两位会对应的显示“11”。

、设计方案 `

1.系统框图:

步进电机控制实验

 2. 系统总电路

步进电机控制实验

  1. 系统PCB图(可选):

首先绘制原理图完成原理图后,需要用 ERC工具查错,直到没有原则性错误。其次设计组件封装需要自己设计并建立新的组件封装库。最终设计 PCB 板先画好 PCB 板的轮廓,确定工艺要求,接着把原理图传到PCB里,接着在网络表中布局和布线

步进电机控制实验

#include <reg52.h>

#define dula P0		
sbit wei1=P2^4;
sbit wei2=P2^5;
sbit wei3=P2^6;
sbit wei4=P2^7;	

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
                        0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char code FFW[8]={0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6}; 
unsigned char code FFZ[8]={0xf6,0xf7,0xf3,0xfb,0xf9,0xfd,0xfc,0xfe};

sbit A1=P1^0; 
sbit B1=P1^1;
sbit C1=P1^2;
sbit D1=P1^3;
sbit k1 = P3^4;
sbit k2 = P3^5;
sbit k3 = P3^6;
sbit k4 = P3^7;

#define Coil_CD1 {A1=1;B1=1;C1=0;D1=0;}
#define Coil_AD1 {A1=0;B1=1;C1=1;D1=0;}
#define Coil_AB1 {A1=0;B1=0;C1=1;D1=1;}
#define Coil_BC1 {A1=1;B1=0;C1=0;D1=1;}
#define Coil_A1 {A1=0;B1=1;C1=1;D1=1;}
#define Coil_B1 {A1=1;B1=0;C1=1;D1=1;}
#define Coil_C1 {A1=1;B1=1;C1=0;D1=1;}
#define Coil_D1 {A1=1;B1=1;C1=1;D1=0;}
#define Coil_OFF {A1=1;B1=1;C1=1;D1=1;}

float Speed=1;
bit StopFlag;
void Display(unsigned char num);
void Init_Timer0(void);

void delay(unsigned int xms)				
{
	unsigned int i,j;
	for(i=xms;i>0;i--)		      
		for(j=112;j>0;j--);
}

void  motor_ffw()
 { 
   unsigned char i;
   unsigned int  j;
  	for (j=0; j<64; j++)
    { 

      for (i=0; i<8; i++)
        {
					if(k3==0) P1 = FFW[i];  
		      if(k4==0) P1 = FFZ[i]; 
					Display(Speed); 
        }
     } 
 }

main()
{
 Init_Timer0();
 Coil_OFF;
 while(1)  
  { 
   if(k1 == 0)
	{
		delay(10);
		if(k1 == 0)
		{
			while(k1 == 0);
			if(Speed<30)
				Speed++;			
		}
	}
	else if(k2 == 0)
		{
			delay(10);
			if(k2 == 0)
			{
				while(k2 == 0);
				if(Speed>1)
	   				Speed--;
			}
		}
    else if(k3 == 0)
		{
			  delay(10);
			  Speed=0000;
	      motor_ffw();		
			}
	else if(k4 == 0)
	{
			delay(10);
			Speed=1100;
			motor_ffw();
	}
Display(Speed);
  }
}
void Display(unsigned int num)
{
		unsigned int qian,bai,shi,ge;
	   qian=num/1000;
       bai=num%1000/100;
		shi = num%1000%100/10;
		ge = num%1000%100%10;
	  
	   wei1=1;		
		wei2=0;
		wei3=0;
		wei4=0;
		P0=table[qian];
		delay(2);
	
	   wei1=0;	
		wei2=1;
		wei3=0;
		wei4=0;
		P0=table[bai];
		delay(2);

		wei1=0;		
		wei2=0;
		wei3=1;
		wei4=0;
		P0=table[shi];
		delay(2);
		
		wei1=0;	
		wei2=0;
		wei3=0;
		wei4=1;
		P0=table[ge];
		delay(2);
}
void Init_Timer0(void)
{
 TMOD |= 0x01;	 		     
 EA=1;          
 ET0=1;           
 TR0=1;           
}
void Timer0_isr(void) interrupt 1 		
{
 static unsigned char times,i;
 TH0=(65536-1000)/256;		
 TL0=(65536-1000)%256;
 
 if(!StopFlag)
   {
  if(times==(32-Speed))
   {
   times=0;
   switch(i)
       {
				case 0:Coil_A1;i++;break;
				case 1:Coil_B1;i++;break;
				case 2:Coil_C1;i++;break;
				case 3:Coil_D1;i++;break;
				case 4:i=0;break;
				default:break;
	   }
}
 times++;
}
}

硬件调试

 步进电机控制实验步进电机控制实验

 步进电机控制实验步进电机控制实验

 .仿真调试:

 步进电机控制实验 反转文章来源地址https://www.toymoban.com/news/detail-512931.html

到了这里,关于步进电机控制实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ARM920T实验箱s3c2410 矩阵按键控制步进电机正反转和停止

    问题描述 按下第一个按键使步进电机可以正转、第二个反转反转、第三个按键停止 矩阵按键控制 画了张矩阵按键的内部电路图: 矩阵按键实物图: ABC 按键右边的就是步进电机。 按键第一行连接的是寄存器 GPFDAT0 的端口 第二行连接的是寄存器 GPFDAT2 的端口 第三行连接的是

    2024年02月09日
    浏览(46)
  • 混合式步进电机控制器开源系列(一)PCB原理图设计

    本系列文章仅针对淘宝店铺“三三智控”开发板产品作开发说明 参考资料由“三三智控”提供且已获得店铺授权使用 开源让世界更美好 本设计通过对上述开发板进行功能裁剪以及完善应用于具体场景中。 文章开源资料将同步上传至Github仓库: 👺https://github.com/NonnettaWu/TMC

    2024年02月08日
    浏览(95)
  • 毕业设计——基于STM32的智能家具系统(语音识别控制、步进电机、舵机)

    智能家具系统分为两个不同版本系列: ①系列一:手机app远程控制、远程检测温湿度显示在app,(云平台)!!!!                   https://blog.csdn.net/m0_59113542/article/details/123737710 ②系列二:语音识别控制-------本文章 硬件采购链接: 步进电机及相关驱动 ULN2003步进电机驱动

    2024年02月05日
    浏览(76)
  • 设计分享 | STM32F103RCT6利用ULN2003驱动步进电机正反转

    https://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==mid=2247484170idx=1sn=3fa68d0fbf30cf614e8779abf38c3e2bchksm=cf430652f8348f44e4b95bb7b22ce7f9f5a86e13f421741aefd08cedb169708309c79566ab1ftoken=1923877603lang=zh_CN#rd https://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==mid=2247484170idx=1sn=3fa68d0fbf30cf614e8779abf38c3e2bchksm=cf430652f8348f44e4b95bb7b22ce7f9f5a8

    2023年04月17日
    浏览(58)
  • STM32控制步进电机:基于HAL库定时器中断的闭环步进电机驱动+精准控制脉冲数

    该篇文章中用到的步进电机闭环驱动器为Emm42_V4.0步进电机闭环驱动器。该闭环驱动器自带FOC矢量闭环控制算法,能实现力矩、速度、位置三环控制。 如下图所示,该42步进闭环电机驱动器的A+、A-、B+、B-连接步进电机,通过右侧的使能、脉冲、方向端对步进电机进行驱动控制

    2024年02月01日
    浏览(56)
  • Arduino控制步进电机

    目录 1、步进电机简介 2、电路连接 3、控制代码 步进电机是一种用电脉冲进行控制,将电脉冲(数字信号)转化为角位移的执行机构。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,

    2024年02月15日
    浏览(45)
  • STM32控制42步进电机

    首先采用TB6600驱动外接12VDC电源。 STM32选c8t6最小系统板 接线TB6600跟32接线有共阴级接法(把ENA-,DIR-,PUL-与32共地)也有共阳接法(把ENA+,DIR+,PUL+与32共地)。这里选共阴级接法。 判断42步进电机的4根线哪两根是A相(A-和A+),哪两根是B相(B-和B+),方法:将任意两根线短接起来

    2024年02月16日
    浏览(74)
  • 闭环控制步进电机对比传统开环控制的优点

    在工业自动化中,步进电机的应用非常的广泛,例如工业机器人、3D打印机、计算机硬盘等都有步进电机的身影。传统的步进电机可以控制转子的角度位置,而不需要传感器来控制位置,是一种开环控制系统,在这样的控制方式下,步进电机控制脉冲的输入并不依赖于转子的

    2023年04月17日
    浏览(54)
  • 153、仿真-基于51单片机四相步进电机正反转控制系统设计(程序+Proteus仿真+参考论文+流程图+配套资料等)

    目录 一、设计功能 二、Proteus仿真图​ 三、程序源码 资料包括: 需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一:STM32系列单片机控制,该型号单片机为LQFP44封装,内部资源足够用于本次设计。

    2024年02月16日
    浏览(57)
  • 51单片机——步进电机实验,小白讲解,相互学习

    步进电机简介:         步进电机是将电脉冲信号转变为角位移或多线位移的开源控制元件。在非超载的情况下,电机的转速,停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性的关系的存在

    2024年02月04日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包