精华内容
下载资源
问答
  • 自己编写上位机控制伺服电机动作,本代码中主要实现了位置控制模式和速度控制模式,其他模式也都类似,都是通过发送SDO报文来改写相应的对象字典就可以了。其中要注意1、主站的eds文件里面SDO,PDO等对象涉及到从站ID...
  • 关于台达伺服电机驱动器的调试手册,调试手册包含接线方式
  • 金属切削机床的驱动电机包括进给伺服电机和主轴伺服电机两类。机械制造商在选购电机时担心切削力不够,往往选择较大规格的马达,这不但会增加机床的制造成本,而且使之体积增大,结构布局不够紧凑。本文以实例应用...
  • stm32f103c8t6单片机驱动台达伺服电机

    千次阅读 2021-05-27 08:02:01
    stm32f103c8t6驱动台达伺服电机 在做毕业设计时,需要使用伺服电机,但在此之前完全是个伺服小白,在开发的过程中遇到了很多问题,现在毕设结束了,我想把开发的过程分享出来,欢迎大家批评指正。 一、简介 本文使用...

    stm32f103c8t6单片机驱动台达伺服电机

    在做毕业设计时,需要使用伺服电机,但在此之前完全是个伺服小白,在开发的过程中遇到了很多问题,现在毕设结束了,我想把开发的过程分享出来,欢迎大家批评指正。

    一、简介

    本文使用的是伺服电机的位置模式,以stm32f103c8t6单片机输出脉冲,作为伺服电机驱动器的位置脉冲输入,从而达到伺服电机位置控制的目的。

    二、硬件部分

    本文涉及的硬件主要为:stm32f103c8t6单片机,台达ASD-B2-0421-B伺服电机驱动器,台达ECMA-C20604RS伺服电机。

    1. 单片机与伺服电机驱动器连接
    这里使用的是伺服电机的位置模式,低速脉冲输入,该模式的控制只需要两路输入,一路作为位置脉冲输入,一路作为方向控制(正反转)输入。接线的时候大家可以买个db44的转接板,把下图用到的几个引脚引出来就好了。
    单片机与驱动器接线
    2.伺服电机与伺服电机驱动器连接
    伺服电机与伺服电机驱动器的连接涉及动力线和编码线,这两部分的连接只要把线上的标志与驱动器上的标志对应起来就好了。

    三、软件部分

    根据硬件部分可以知道,单片机要对伺服电机进行位置控制,需要一路脉冲(PWM波)输出,一路高低电平输出。所以软件里主要就是PWM波输出和高低电平输出的设置。

    1.PWM波输出
    单片机的大多数定时器都有输出PWM波的功能,每个定时器可以有四个PWM通道。PWM输出的初始化设置如下:

    void TIM3_PWM_Init(u16 arr,u16 psc)
    {  
    	GPIO_InitTypeDef GPIO_InitStructure;
    	TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    	TIM_OCInitTypeDef  TIM_OCInitStructure;
    
    	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);//
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE);  //使能GPIO外设时钟使能                                                                  	
     	
    	//设置该引脚为复用输出功能,输出TIM3 CH3的PWM脉冲波形
    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //TIM_CH3
    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出
    	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    	GPIO_Init(GPIOB, &GPIO_InitStructure);
    	
    	TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值	 80K
    	TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值  不分频
    	TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
    	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
    	TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
    
    	TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //选择定时器模式:TIM脉冲宽度调制模式2
    	TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
    	TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高
    	TIM_OC3Init(TIM3, &TIM_OCInitStructure);  //根据TIM_OCInitStruct中指定的参数初始化外设TIMx
    
    	TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);  //CH1预装载使能	 
    	
    	TIM_Cmd(TIM3, ENABLE);  //使能TIM3
    }
    

    TIM3_PWM_Init(arr,psc)函数中,arr和psc的值是我根据自己需要的电机转速及电机转动一圈所需脉冲算出来的。

    初始化成功后,使用TIM_SetCompare3(TIM3,x)函数就可以进行PWM波的输出了,其中x代表数值。这里需要注意,TIM_SetCompare3()中的3是指通道号,引脚PB0对应定时器3的PWM波的第三个通道,所以是3,如果是通道1,则是TIM_SetCompare1。

    PWM波涉及频率和占空比两个性质,频率根据电机转速确定,驱动伺服电机对占空比没有太大要求,不要被伺服驱动器的滤波部分滤掉就好。这里占空比设置为50%。以周期为359为例,那么TIM_SetCompare3(TIM3,180)就是输出一个占空比为50%的PWM波,TIM_SetCompare3(TIM3,0)就是输出一直为低电平,从控制效果来说就是电机停止。

    2.高低电平输出

    void DIR_Init(void)
    {
    	 GPIO_InitTypeDef  GPIO_InitStructure;	
    	 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);	 //使能PB端口时钟
    	 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;				 //PB.1端口配置
    	 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
    	 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
    	 GPIO_Init(GPIOB, &GPIO_InitStructure);					 //根据设定参数初始化GPIOB.1
    	 GPIO_SetBits(GPIOB,GPIO_Pin_1);						 //PB.1 输出高
    }
    

    3.串口通信协议
    为了方便调试单片机对伺服电机的控制,这里在串口通信的基础上弄了一个协议,用于PC机与单片机进行通信。

    void Analysis_Ser(void)
    {
    	if(USART_RX_BUF[0]=='x')//x方向
    	{
    		if(USART_RX_BUF[1]=='h')
    		{
    			if(USART_RX_BUF[2]=='o')
    			{
    				TIM_SetCompare3(TIM3,180);
    			}
    			else if(USART_RX_BUF[2]=='c')
    			{
    				TIM_SetCompare3(TIM3,0);
    			}
    			if(USART_RX_BUF[3]=='z')
    			{
    				DIRx=1;
    			}
    			else if(USART_RX_BUF[3]=='f')
    			{
    				DIRx=0;
    			}
    		}
    	}
    }
    

    4.main函数
    主程序如下:

    int main(void)
    {	
    	u8 len,t;
    	delay_init();	    	 //延时函数初始化	  
    	DIR_Init();					//方向引脚初始化
    	NVIC_Configuration();//中断分组
    	uart_init(9600);//串口初始化
        TIM3_PWM_Init(359,39);//以电机转速60转/分,5000个脉冲/圈进行计算
    	TIM_SetCompare3(TIM3,0);//开始先关闭PWM波输出
    	while(1)
    	{
     		if(USART_RX_STA&0x8000)
    		{
    			len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
    			printf("\r\n您发送的消息为:\r\n");
    			for(t=0;t<len;t++)
    			{
    				USART1->DR=USART_RX_BUF[t];
    				while((USART1->SR&0X40)==0);//等待发送结束
    			}
    			printf("\r\n\r\n");//插入换行
    			Analysis_Ser();//数据解析函数
    			USART_RX_STA=0;//标志位清零
    		}
    	} 
    }
    

    四、总结

    1.控制效果
    按照上述过程,再使用串口通信软件就可以进行伺服电机的控制了。控制效果是:在PC机上输入“xhoz”,伺服电机启动,正转;输入“xhof”,电机启动,反转;输入“xhcz”,电机关闭。

    2.说明
    上述的过程中,其实还涉及伺服电机驱动器参数的设置,可以按照台达B2伺服技术说明书上(台达官网上有)的来。以后有机会可以再详细写一写。

    第一次写博客,写这个的初衷是因为自己在之前开发的过程中总是上网白嫖,现在也想当当种树人,有问题心得可以大家互相交流分享。

    写的不妥之处请大家见谅,欢迎大家留言批评指正!

    展开全文
  • 可利用此手册快速上手,如有问题直接可回复我,谢谢 。
  • 台达伺服电机技术说明台达伺服电机技术说明台达伺服电机技术说明
  • **通过CN3口直接控制台达伺服电机A2-M** 查询台A2-M手册,该产品支持485的通讯控制,因此可以使用上位机程序通过485协议与伺服驱动器进行通讯控制,伺服驱动器使用的端口为CN3,然后通过485转USB与PC端相连。 ...
                                       **通过CN3口直接控制台达伺服电机A2-M**
    
       查询台A2-M手册,该产品支持485的通讯控制,因此可以使用上位机程序通过485协议与伺服驱动器进行通讯控制,伺服驱动器使用的端口为CN3,然后通过485转USB与PC端相连。
    

    在这里插入图片描述
    特别提醒: 这里所看到的Pin5何Pin6口因为截面的原因,容易接反,因此在通讯不正常的时候,可以尝试对调下。进行485通讯,只需接Pin5和Pin6即可。

    查看P3-05参数的具体含义
    在这里插入图片描述
    通过P3-05可以知道,A2-M既可以进行RS232通讯也可以进行RS485通讯,通过CN3接不同的Pin口即可,P3-05的地址值为0则为RS232通讯,为1则为RS485通讯。

    接下来就需要设定通讯参数了
    在这里插入图片描述
    通过P3-00给伺服驱动器指定一个通讯的地址编号,0x0001 ~ 0x007F之间,通常如果只有一台的话,就指定为1, RS485是可以进行一对多的多方通信。
    在这里插入图片描述
    在这里插入图片描述

    通过P3-01可以设置好通讯的波特率,默认设置为201,分别对应上图中的ZYX,因为我们是使用串口通讯,因为只需要关心最后一位X,X设定为(0~5)分别对应波特率为(4800,9600,19200,38400,57600,115200)
    在这里插入图片描述
    在这里插入图片描述

    通过P3-02可以设置好通讯的数据位、校验位、停止位以及发送的数据形式,列如如果设定为7,则表示:数据位为8,偶校验,停止位为1,协议为 Modbus RTU协议。
    下面就讲一下Modbus RTU,一般格式如下,分为5个部分。
    从机地址 功能号 数据地址 数据 CRC校验

    从机地址:我们之前设置了为1,则为01
    功能号:从A2的说明书上我们可以找到三个功能号:功能码 03,读取多个字组(word);
    功能码 06,写入单笔字组(word);功能码 10,写入多个字组(multiple words)
    数据地址:一般是指寄存器地址,譬如P3-02的地址:0304
    数据:要写入或者要读取的字节数,如读取一个字节:0001
    CRC校验:这里用的是CRC16/Modbus校验

    我们根据Modbus RTU协议,实际读取一下我们刚才设置的P3-02的值
    命令帧:01 03 03 04 00 01 c5 8f
    地址 功能码 数据地址 读取数据字数 CRC16/Modbus校验码

    使用串口工具发送01 03 03 04 00 01 c5 8f,收到01 03 02 00 07 f9 86
    在这里插入图片描述
    解析收到的数据:
    01 03 02 0007 f9 86
    地址 功能码 读取到的字节数 数据内容 校验码
    这与实际我们设定的值一样

    这里有几点要注意:
    1、通过在线工具或者其他手段得到的CRC16校验码的高低位不要弄反了;
    2、发送命令读取指定的数量数据,单位为字,而不是字节,一般占用4位;例如读
    取一个字节则为:0001 ,不能省略为 01;
    3、获取到的数据的单位为字节,而不是字。

    至此,我们实现了通过RS485与伺服电机的一般通讯
    下一篇,讲具体怎么控制转速。

    展开全文
  • 机床的驱动电机包括进给伺服电机和主轴伺服电机两类。机械制造商在选购电机时担心切削力不够,往往选择较大规格的马达,这不但会增加机床的制造成本,而且使之体积增大,其结构布局不够紧凑。因此,一定要通过具体的...
  • 台达伺服说明书.pdf

    2019-08-28 19:26:55
    伺服驅動器和伺服電機的安裝與檢查 z 伺服驅動器的組成說明 z 試轉操作的步驟 z 伺服驅動器的控制功能介紹及調整方法 z 所有參數說明 z 通訊協定說明 z 檢測與保養 z 異常排除 z 應用例解說
  • 既然可以通过RS485与伺服驱动器进行通讯,那么就肯定可以控制转速 首先,需要了解下 ‘控制模式及控制命令输入源设定’ 依据以上资料,速度控制模式有两种,S和SZ模式,分别对应模式选择中的02和04,对P1-01的...

    既然可以通过RS485与伺服驱动器进行通讯,那么就肯定可以控制转速
    首先,需要了解下 ‘控制模式及控制命令输入源设定’
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    依据以上资料,速度控制模式有两种,S和SZ模式,分别对应模式选择中的02和04,对P1-01的地址0102进行写地址操作即可实现,一开始我使用了S模式,但是这个模式在寸动模式下会自动运转,不符合我控制的要求,后面改用SZ模式,就可以实现零速度。

    使用串口工具发送命令:“01 06 01 02 00 04 28 35”即可以实现设置,设置完成后可以手动在伺服驱动器的按键面板上进行确认,也可以通过命令回读,设置成功后,伺服驱动器会返回一个和发送命令内容一样的数据。
    在这里插入图片描述
    接下来需要对P2-30进行设置,P2-30的含义如下:
    在这里插入图片描述
    在这里插入图片描述
    从上述说明中,尤其是被框出来的内容中可以看出,该参数可以设置也可以不用设置,但是如果使用通讯控制的话,经常需要对EEPROM进行擦写,因此强烈建议设置为5,另外,该设置并不是非易失性的,所以重新上下电之后,该参数会自动归零,需要重新设置。

    既然要通过伺服驱动器控制伺服电机,那么首先就需要使得伺服电机处于servo on状态,在说明书中我们可以看到如下说明:(参数没有截全)
    在这里插入图片描述
    由上面可以看出,操作数字输入DI即可以控制伺服电机servo on状态

    在这里插入图片描述
    由上图可以看出,通过控制P2-10即可以控制DI1,进而控制伺服电机servo on状态
    该参数默认为101,后两位表示输入功能选择,01则表示为servo on信号,第一位表示常开或者常闭,常开则表示不导通,servo off, 反之,servo on
    因此,通过命令,“01060214000109b6”即可以使得伺服电机servo on,命令成功后会听到电机的电流声音

    在这里插入图片描述
    通过命令,“0106021401010826”即可以使得伺服电机servo off,命令成功后电机的电流声音消失
    在这里插入图片描述
    接下来我们就可以使用寸动模式来控制伺服电机的运转了,看P4-05说明
    在这里插入图片描述
    由上图可以看出,通过通讯对P4-05的寄存器地址写不同的值即可实现对伺服电机的正反转、转速的控制。实际操作过程中,CCW应为顺时针,CW应为逆时针,另外写入的值应该转换成十六进制。如:“01 06 04 0a 13 87 e5 aa”控制逆时针转。其他控制命令可以依次组合即可。

    下一篇,将使用Python编写一个简单的上位机界面对伺服电机的运转进行控制。

    展开全文
  • 实现对台达ASDA2系列伺服电机的简单控制,使用C++的上位机软件
  • 金属切削机床的驱动电机包括进给伺服电机和主轴伺服电机两类。机械制造商在选购电机时担心切削力不够,往往选择较大规格的马达,这不但会增加机床的制造成本,而且使之体积增大,结构布局不够紧凑。本文以实例应用...
  • 台达伺服电机A2E型说明书英文版,介绍该类型电机EtherCAT总线通讯方式及规格
  • 台达伺服ASDA-AB-手册
  • 台达伺服电机-ASDA-B2系列样本.pdf
  • 本文以实例应用阐明了如何选择最佳规格电机的方法,以控制制造成本。
  • 台达伺服电机在绣花机上的应用rar,台达伺服电机在绣花机上的应用:本文将针对目前最先进的计算机绣花机所用的伺服电机作深入分析,并结合台达伺服的优良特性以及其在计算机绣花机上的实际运用,作详细分析。
  • 近年来,永磁同步电机(最常见的伺服电机类型)以其轻型化、高性能、高能效的特性,广泛应用于工业自动化领域。尤其是今年,在国家大力推动机器人产业发展的背景下,永磁同步电机作为机器人的核心动力部件,其研发、...
  • S7-200和台达ASDA-B2伺服定位模式接线图(伺服定位模式)
  • 本系列支持低、中、高三种惯量的伺服马达,可解决客户在不同扭力应用上的需求。支持标准Modbus通讯读写,可与台达PLC, HMI构成通
  • 台达伺服电机参数

    2012-10-03 20:54:15
    台达伺服电机使用说明书详细介绍了台达伺服电机的使用方法
  • 台达400W伺服参数

    2018-10-15 10:33:23
    台达400W伺服,位置模式参数,伺服控制同步带参数,刚性增益都已经调好
  • 台达ASDA-B2系列交流伺服电机与驱动器说明书pdf,台达ASDA-B2系列交流伺服电机与驱动器
  • STM32控制伺服电机

    2020-11-27 11:44:27
    带485接口伺服电机使用MODBUS协议控制,实际应用中因为是一个色度标定机器的机器控制部分,所以需要有上位机的参与,通过上位机发送控制信号给STM32,STM32解析并控制机器运动。
  • 本文为伺服电机编码器调零对位方法实例,下面一起来学习一下
  • 本文档详细介绍了Labview-伺服电机控制的设备以及细节等过程
  • 台达PLC控制伺服电机的详细说明,其中有伺服驱动
  • 台达伺服马达选型软体(简体中文版),详细自动计算伺服电机选型。正在使用,好用。
  • 台达伺服测试软件

    2015-02-14 19:15:57
    台达伺服驱动器测试软件,该软件适用于台达系列交流伺服驱动器,可在线进行测试。
  • 台达ASD-B3 系列 伺服驱动器的使用说明书

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 295
精华内容 118
关键字:

台达伺服电机