实验所用的器材为安川交流伺服电机(型号为SGM7J-01AFC6S)、安川交流伺服电机驱动器(型号为SGD7S-R90A00A002)、ARM9单片机开发板、SN75ALS174四路差动线路驱动器、24V开关电源。
伺服电机位置控制原理:
位置控制是通过上位装置将脉冲串指令输入到伺服单元,移动目标至目标位置。以输入脉冲数来控制位置,以输入脉冲的频率控制电机的速度。
实验的的实现可分为两部分:
一、硬件接口
所需要用到的硬件接口有伺服驱动输入输出连接器中的信号接地接口、脉冲指令输入接口、符号指令输入接口、通用顺控输入接口(伺服ON输入)、顺空输入信号用电源输入接口、禁止正传侧驱动输入接口、禁止反转侧驱动输入接口、ARM9上的pwm输出接口、gpio接口。各接口连接方式如下:
信号接地接口接单片机GND、脉冲指令输入接口(7、8引脚)接差动线路驱动器的1Y和1Z(2、3引脚)、符号指令输入接口接差动线路驱动器的2Y和2Z(5、6引脚)、伺服ON输入接开关电源负极、电源输入接口接开关电源正极、禁止正传侧驱动输入接口和禁止反转侧输入接口接开关电源负极、pwm的输出接口接四路差动线路驱动器的1A(1引脚)、两个gpio接口分别接到四路差动线路驱动器2A(7引脚)和1,2EN(4引脚)上。
各接口的功能如下:
脉冲指令输入接口主要用于接受单片机发送的pwm脉冲波,以驱动电机转动,通过调节pwm脉冲波的频率来控制电机的转;符号指令接口接受单片机发送的高低电平,用于判断电机的正反转,但符号指令为高电平时为正转,为低电平时为反转;不同的脉冲指令和符号指令组合形成一种输入脉冲形态;电源输入接口用于给伺服驱动器提供顺控输入信号用的电源;伺服ON输入用于控制伺服电机的ON/OFF(低电平有效);禁止正转侧驱动输入和禁止反转侧驱动输入用于当机械运动超过可移动范围时,停止伺服电机的驱动(超程防止功能,低电平有效)。
二、软件接口
软件接口主要用到pwm接口和gpio接口以及通过SigmaWin+设置参数,pwm接口通过Linux中的文件操作修改pwm的div、period、brightness三个参数可以设置pwm脉冲波的频率和占空比。三个参数在目录/sys/class/backlight/easy283-pwm.7下,文件操作时的文件名分别为/sys/class/backlight/easy283-pwm.7/div、/sys/class/backlight/easy283-pwm.7/period、/sys/class/backlight/easy283-pwm.7/brightness。gpio接口主要用来使能四路差动线路驱动器和发送信号指令,最后在运行程序之前,要通过sigmawin+软件设置伺服驱动器的参数,用于选择控制方式(位置控制)和指令脉冲的形态(符号+脉冲串指令)以及上位装置位置指令输出回路的方式(线型驱动器输出回路)。
在进行软件接口配置时,应注意以下三点:
1、在对period和brightness两个参数赋值时,应当注意先给brightness赋值,再给period赋值,否则period的值将不会被修改,而只修改了brightness的值,造成pwm脉冲波的频率没有改变,而只是改变了其占空比。其原因是因为在开发板中period和brightness两个参数的默认值均为400,但是brightness的值必须小于period的值,所以为了保证brightness时刻小于period的值,应该先对brightness赋值,在对period赋值。
2、在使用gpio接口前需要在向开发版内核写入gpio的驱动文件,开发板在其/root目录下提供了gpio驱动,其名称为gpio_driver.ko,通过insmod gpio_driver.ko命令装载驱动。但是若所操作的gpio在内核中一被复用为其他功能,则内核驱动可能失效,在使用时应避免这种冲突(在后面使用UART、I2C、SPI等时可能要注意)。
3、在设置pwm脉冲波时要注意脉冲波的最大频率为4Mpps,且应先发送指令信号在发送pwm脉冲波,pwm脉冲波滞后指令信号的时间应大于0.5us,对于信号指令和pwm脉冲波本身还应满足相应的电气规格(一般若频率不高(低于1MHz)时,可以不考虑,若频率比较高,可参见安川电机伺服单元模拟量电压、脉冲序列指令形产品手册)。
编好程序运行时,可通过sigmawin+软件对伺服单元进行监测,查看其各输入输出的状态。
几点疑问,希望陈老师及各位师兄师弟帮忙解答:
1、差动线路驱动器有什么作用,为什么pwm脉冲波和指令信号要用两路输入?
2、伺服ON的输入为什么要接开关电源的负极(既然是低电平有效,为什么我用开发板gpio口发低电平不能打开伺服ON),这样不便于用软件实现开关电机?
3、实际使用中,伺服电机的启停是通过断开或接通伺服ON吗?(这里是指启停的状态转换不是指启停的过程)