草庐IT

步进电机与滚珠丝杆

我与nano 2023-04-18 原文

步进电机

文章目录

前言


滚珠丝杆在一些特定环境下可以很好的代替机械臂使用。使用滚珠丝杆你必须会用步进电机。

一、ATK-2MD4850驱动

ATK-2MD4850 是一款高性能细分型 2 相混合式步进电机驱动器,采用 12~48VDC 供电,输出峰值电流可达 5.0A,适合驱动常用的 42、57、86 两相混合式步进电机。此驱动器采用PWM 恒流控制和超小细分技术,使得电机转矩波动小,低速运行平稳以及极小振动和噪音。高速时输出力矩也大大高于其他两相驱动器,定位精度高。广泛适用于雕刻机、数控机床、包装机械等分辨率要求较高的设备上。该驱动器特点包括:
1, 采用先进的双极性 PWM 恒流驱动技术。
2, 高速大力矩输出,避免丢步(空载转速高达 240~300r/min),最高转速达 1200r/min。
3, 灵活的输出电流设定,适用不同型号的电机。
4, 自带自动半流功能,减小电机发热。
5, 支持各种常用的 16 种细分功能,最大支持 128 细分。
6, 直流 12~48V 供电,输出峰值电流高达 5.0A。
7, 支持欠压保护、过流保护、过热保护等功能。

注意:严禁在驱动器驱动电机转动过程中更改拨码开关!!!

二、使用驱动

1. 控制信号接口

  1. 使能信号接口 ENA+、ENA-
    使能信号 ENA:用驱动器的上下电进行电机通断电操作会使驱动器快速老化,为避免
    这种情况,本驱动器设计了使能信号(ENA)输入端口,也就是通常所说的脱机信号。用户
    可以随时控制此信号,当此信号有效时,驱动器将自动切断电机绕组电流,使电机处于自由
    状态(无保持转矩)。当此信号不连接时默认为无效状态,这时电机绕组通以电流,可正常
    工作。
  2. 方向输入接口 DIR+、DIR-
    方向电平信号 DIR:此信号决定电机的旋转方向。如果此信号有效时,电机顺时针旋转,
    则此信号无效时,电机逆时针旋转。驱动器工作于这种单脉冲模式。
  3. 脉冲输入接口 PUL+、PUL-
    步进脉冲接口 PUL:步进电机驱动器把控制器发出的脉冲信号转化为步进电机的角位
    移,驱动器每接受一个脉冲信号 PUL,就驱动步进电机旋转一个步距角,PUL 的频率和步
    进电机的转速成正比。对于最佳输入要求,此信号占空比最好 1:1,脉冲信号的频率不大于
    100KHz。

2.故障排除

3.硬件连接

三、实现代码

#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "key.h"
#include "led.h"	 
#include "usmart.h"	
#include "driver.h"

	 	 
#include "hc05.h" 	 
#include "usart3.h" 	 	 
#include "string.h"	
#include "timer.h"

	
int main(void)
{	 
	//
	u8 reclen=0;
	//
	u8 i;
	u8 keyval;
	
	//
	SystemInit();
	//
	
	delay_init();	    	 //延时函数初始化	  
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); 	 //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	uart_init(115200);	 	//串口初始化为115200
	usmart_dev.init(72); 	//初始化USMART	
	LED_Init();			     //LED端口初始化
	KEY_Init();					//初始化按键
	Driver_Init();			//驱动器初始化
	TIM8_OPM_RCR_Init(999,72-1); //1MHz计数频率  单脉冲+重复计数模?
	LED1=0;	

//
usmart_dev.init(72); 	//初始化USMART				 	
	HC05_Init();
	delay_ms(100);
	USART2_RX_STA=0;
//
	while(1) 
	{		 	
     
		keyval=KEY_Scan(0);
		if(keyval==WKUP_PRES)
		{
			Locate_Abs(0,500);//按下WKUP,回零点
		}else if(keyval==KEY0_PRES)
		{
			Locate_Rle(300,500,CW);//按下KEY0,以500Hz的频率 顺时针发200脉冲
		}else if(keyval==KEY1_PRES)
		{
			Locate_Rle(300,500,CCW);//按下KEY1,以500Hz的频率 逆时针发400脉冲
		}	

	 if(!GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1))
	 {
	  
		 LED1=0;
	 }
	 else
		 LED1=1;

		delay_ms(10);
		i++;
		if(i==50)	
		{	
			i=0;
		}



if(USART2_RX_STA&0X8000)			//接收到一次数据了
		{
				reclen=USART2_RX_STA&0X7FFF;	//得到数据长度
		  	USART2_RX_BUF[reclen]=0;	 	//加入结束符
				if(reclen==1) 		//控制DS1检测
				{
					if(strcmp((const char*)USART2_RX_BUF,"0")==0) 
						Locate_Rle(300,500,CW);
					if(strcmp((const char*)USART2_RX_BUF,"1")==0) 
						Locate_Rle(300,500,CCW);
				}	
 			USART2_RX_STA=0;	 
		}
		
		
	}			
}


void Driver_Init(void);//驱动器初始化
void TIM8_OPM_RCR_Init(u16 arr, u16 psc);//TIM8_CH2 初始化 单脉冲+重复计数模式
void Locate_Rle(long num, u32 frequency, DIR_Type dir) //相对定位函数
void Locate_Abs(long num, u32 frequency);/绝对定位函数

  1. 驱动器初始化函数,主要就是初始化与驱动器 ENA+,DIR+相连的 2 个 IO为推挽输出;
  2. TIM8_CH2 初始化,此例程产生脉冲所使用的定时器均是 TIM8_CH2(PC7),定时器工
    作在单脉冲+重复计数模式,TIM8 中断频率可以通过 driver.h 下的 RCR_VAL 宏更改,RCR_VAL
    的范围 0~255,每计数 RCR_VAL+1 次中断一次,所以这个值越大,中断频率越低。需要注意
    的是定时器必须初始化为 1MHz 计数频率。
  3. 相对定位函数:在步进电机当前位置基础上顺时针(CW)或者逆时针(CCW)走 num 个脉 冲,此函数带方向控制,DIR_Type 是 driver.h 下声明的一个枚举类型,用于设置电机旋转方向,参数 dir=CW,电机顺时针旋转;dir=CCW,电机逆时针旋转,实验时,如果电机旋转方 向和设置方向相反,不用更改电机接线,只需要更改 driver.h 下的 CW=0,CCW=1;参数 num范围 0~2147483647;frequency 范围 20Hz~100KHz。
  4. 绝对定位函数:步进电机按设定频率转动到设置的绝对位置,开发板上电和复位时,
    当前位置为 0,电机的当前位置用一个 long 型变量 current_pos 指示。在 current_pos=0 的基
    础上顺时针转动后 current_pos 为正,否则为负。此函数不带方向控制,驱动器根据参数的
    正负自动设置电机旋转方向,转动到绝对位置。参数 num 范围-2147483648~2147483647;
    frequency 范围 20Hz~100KHz。

有关步进电机与滚珠丝杆的更多相关文章

  1. STM32F103C8T6编码器电机的使用 - 2

    目录前言一、定时器部分和按键部分二、PWM调速三、电机驱动部分​​​​​​​三、编码器接口部分(测速)四.主函数总结​​​​​​​推荐STM32学习课程:[6-8]编码器接口测速_哔哩哔哩_bilibili[6-8]编码器接口测速是STM32入门教程-2022持续更新中的第20集视频,该合集共计30集,视频收藏或关注UP主,及时了解更多相关视频内容。https://www.bilibili.com/video/BV1th411z7sn/?p=20&spm_id_from=pageDriver&vd_source=ed36b2700bbc2bac7746c270bc391540OLED显示屏代码

  2. DRV8825步进电机驱动详细说明书————含接线图 - 2

    最近玩步进电机时候,发现步进电机驱动种类多;A4988,drv8825,tb6600,lv8731……;tb6600驱动电流可达4A,1600细分,十分强大,但是体积大,用在平衡车上不太合适。drv8825加散热器驱动电流可达2.5A,32细分,还不错。芯片介绍这里的介绍只介绍其引脚连接。如图是它的说明书中对引脚的解释在这里把它翻译成中文。  为了方便大家使用,说明书还给出了一种典型的连接方式 这样初始化好之后,将AOUT1、AOUT2、BOUT1、BOUT2分别连接到步进电机对应信号线,AOUT1与AOUT2同相,BOUT1与BOUT2同相。判断步进电机信号线是否同相的一个方法是将其中两条接

  3. 电机的反电动势了解及步进电机的基本特性 - 2

    电动势,是导体内电子运动的必要条件,也是电子运动趋势的一种表现,因而具有一定的方向性。电动势的方向,规定为从电源的负极,经过电源内部指向电源的正极,即与电源两端电压的方向相反。反电动势,是指由反抗电流发生改变的趋势而产生电动势。反电动势一般出现在电磁线圈中,如继电器线圈、电磁阀、接触器线圈、电动机、电感等。​对于电动机产品,定子部分是电能的输入端,而转子部分则是电机做功的输出端;通过定子部分输入的电能,一部分用于转子部分做功,另一部分则会消耗于线路内阻,以及其他损耗。转子部分产生的反电动势,即电动机做功的要素。反电动势消耗了电路中的电能,但它并不是一种“损耗”,与反电动势对应的那部分电能,将转

  4. L298n电机驱动模块(芯片)快速入门 - 2

    目录l298n模块详解l298n芯片简介 在嵌入式领域中l298n属于最常用的电机驱动模块,该模块稳定,耐用,操作简单备受广大电子爱好者的喜爱,今天小编结合自己开发的经验来给初学者门聊聊如何使用这款模块及芯片的用法l298n模块详解如图所示,模块左右两侧的2P的端子是接入电机的,左右两端分别可以接入一个直流电机。由于直流电机不分正负所以怎样接都是可以的。中间3P的端子分别接12V,GND,5V。黑色排针部分左右两端的跳帽插上代表使能,l298n有两个通道,所以有两个使能跳帽。中间的四个排针是逻辑输入,左边两个为一组,右边两个为另一组,真值表如下图所示下图附带了l298n模块的原理图,想自己di

  5. javascript - express 或 express 发电机 : do i need both? - 2

    只是探索node.js并遇到了express;在npm存储库站点上https://www.npmjs.com/package/express它清楚地表明安装是$npminstallexpress但是如果我向下滚动提到快速启动$npminstall-gexpress-generator@4谁能详细解释一下这是怎么回事?我用谷歌搜索并了解到在expressv3中两者被捆绑在一起,但在expressv4中发电机被拉出。所以我需要同时安装两者吗?生成器是否自动安装express而不是相反?我已经有JS疲劳了,我才刚刚开始:-(补充问题:然后让事情更加困惑,我看到另一个问题,问我应该从“npmi

  6. 【嵌入式模块】直流电机驱动L298N,TB6612详解 - 2

    文章目录参考链接概述L298NTB6612FNG参考链接单片机控制直流电机基于L9110S、L298N、TB6612FNG驱动-简书概述  从上面那篇教程我们可以看出,直流电机控制时,只需要给它输入一个PWM波即可,占空比越大,电机运行速度越快。但是一般来说单片机工作电压为5V,且电流较小,而电机运行需要较大的电流,因此往往控制电机运行时,都需要在单片机与电机之间连接一个驱动,即所谓的电机驱动。  目前市面上比较常见的小型车的电机驱动一般有两种:L298N和TB6612FNG,下面分别介绍。L298N引脚定义电气特性  L298N使用时需要用12V供电(9V也行),然后其内部带有稳压模块,如果

  7. QT上位机控制stm32,并利用PID控制编码电机旋转 - 2

    QT上位机控制stm32,并利用PID控制编码电机旋转          由于最近在学习电机控制算法之类的东西,看到论文大多使用PID、或以PID衍生的ADRC作为电机的主流控制,于是自己也写了一个stm32控制L298N以驱动直流电机的程序,并用QT做了一个上位机实现了用软件改变PID的参数、电机转速、转向等功能。一、硬件原理图   实验所用到的硬件有:带霍尔编码器的直流减速电机;    霍尔编码器具体型号为JGB37-520,12V供电,一分钟旋转110转(这里指的时全速运转下的转速),两端红白两线为电机的电源(0、12V),棕蓝两线为霍尔编码器的电源(0、3.3V),中间黄绿两线为霍尔编

  8. Arduino Uno开发板+电机驱动扩展版CNC Shield V3.0硬件说明 - 2

    陈拓2023/03/24-2023/03/291.ArduinoCNCShieldV3.00电机驱动扩展版注意:板子左侧中间的玻璃管是玻封保险丝。ArduinoCNCShield可以搭载A4988、DRV8825等步进电机驱动模块,用于驱动NEMA17电机(俗称42步进电机)。2.常用的步进电机驱动模块2.1A49882.1.1引脚布局注意:模块使用时需加装散热器。单片机只需要控制两个引脚DIR和STEP即可控制步进电机。2.1.2引脚功能说明从左上角开始,逆时针方向。ENABLE:使能引脚,接低电平使能有效,接高电平模块关闭工作。MS1/MS2/MS3:步进模式细分引脚;不需要使用功能可浮空

  9. javascript - 发电机 : How to append to list values in document - 2

    我有一个DynamoDB表users,其文档结构类似于以下内容:{"id":"1","name":"john","hobbies":[{"description":"painting","skill":"amateur"},{"description":"cooking","skill":"expert"}]}可以看出,文档结构包含一个列表属性hobbies,它可以包含一个爱好“对象”的集合。我想写一个更新语句来添加一个新的元素到列表属性中,如果它还不存在的话。例如,我希望能够将“描述”为“设计”和“技能”为“业余”的爱好传递给我的更新功能,并且由于此爱好还不在列表中爱好,它应该被添加

  10. 嵌入式开发板CAN通信编程——伺服电机驱动 - 2

    嵌入式开发板CAN通信编程——伺服电机驱动在实际的嵌入式项目开发过程中,若不涉及上位机与开发板的通信传输数据,那最关键的无非就是两个内容,读取传感器的数据并处理,驱动硬件设备工作。传感器数据的读取内容在前面我已经讲过了,主要就是TTL、RS232、RS485协议的串口编程,我分别给了实例,读取光敏电阻传感器的状态和倾角传感器的实时角度测量信息。那就还有一个下发指令驱动硬件工作的内容,硬件设备的驱动程序一般都由设备厂家完成,集成在设备的驱动器上(关于字符设备驱动程序我之前讲了不涉及硬件操作驱动的程序实现,后面我还会给大家介绍涉及硬件操作的驱动程序实现,并给出实例),我们要做的就是根据设备的驱动通

随机推荐