测量与测试世界 专注 LabVIEW 传感器 仪器仪表 数据采集 工业控制 虚拟仪器 系统集成 知识 设计 应用 开发 学习 交流 测控产品应用

国内最专业
工业4.0测量与测试最新资讯社区

LabVIEW,32路舵机控制板和多自由度机械臂

   从题目上看,这篇文章涉及了LabVIEW的编程、32路舵机控制板的使用和多自由度机械臂的动作演示,应该还有蓝牙通讯,后面三部分内容,在前面的文章中讲述过,文章题目《32路舵机控制板与多自由度机械臂》,网址:http://www.eefocus.com/zhang700309/blog/12-09/286479_a1c80.html 。这篇文章主要讲LabVIEW如何编程来与舵机控制板串口通信,并进而控制机械臂上的各个舵机。

    32路舵机控制板由国内公司DFRobot出品,上一篇文章讲述了如何用控制板自带的舵机控制软件,来设置舵机动作的方法,这篇文章希望用LabVIEW程序来代替厂家的舵机控制软件一部分功能,来做一个为这个实验项目量身定做的人机界面。

实验视频:

 

 点击网址,全屏看视频,

http://www.tudou.com/v/anpCVbq0ZDI/&rpid=96368873&resourceId=96368873_04_05_99/v.swf  

   多自由度机械臂的6个舵机分别控制爪子抓放、腕部旋转、腕部上下、肘部上下、臂部上下和臂部旋转,这些部位的舵机按照从爪子到塔台的顺序,分别通过控制线接到舵机控制板的通道上,通道编号为3、4、5、13、14、15,如下图所示

6自由度机械臂:(所有图片,双击都可以放大观看!

 32路舵机控制板:

 

   多自由度机械臂上的6个舵机都支持180度转角,舵机的转动角度是通过调节PWM(脉冲宽度调制)信号的占空比来实现的,标准PWM信号的周期固定为20ms(50Hz),脉宽在500us到2500us之间,脉宽和舵机的转角0°~180°相对应。

       从人机对话前面板入手,开始讲解LabVIEW编程,看看下图LabVIEW前面板中,有六个滑动杆控件,用鼠标移动游标,在行程范围从500到2500的滑动杆上移动,就可以分别控制机械臂上的六个舵机转动角度。

     六个滑动杆的当前值会立即反馈到后台程序,即LabVIEW框图程序,这个程序会把这些数据组合成一行字符串命令,并通过串口,下达给32路舵机控制板,进而控制机械臂上的舵机。所以这次LabVIEW编程有两个要点:1、如何编写LabVIEW串口通信程序,让舵机控制板接受到上位机下达的字符串命令;2、如何把数据类型为整数的六个舵机PWM脉宽数据组合成字符串,而且这个字符串必须符合控制板对字符串命令的格式要求。

框图程序所有图片,双击都可以放大观看!

   上图的图形化编程设计是采用NI_VISA串口Serial函数来访问和控制串口的。VISA中的Serial函数库里包含VISA 配置串口、VISA 写入、VISA 读取、VISA 关闭等子函数。这些子函数的提取路径是:函数库→仪器I/O→串口,本设计用到的三个VISA串口子函数是:VISA串口配置函数VISA Configure Serial Port、VISA写入函数VISA Write、和VISA 关闭函数VISA Close。它们的图标见下图所示:

    VISA串口配置函数的作用是完成串口参数的初始化设置,包括了串口资源名称,波特率,奇偶校验、数据比特、是否启用终止符等,上图中该函数连接了两个输入变量,变量名为“请选择串口名”和“波特率”,它们分别连在串口资源名称和波特率参数端子上,变量值是在前面板上相应控件来设定的,其它输入参数采用默认值。图中VISA串口配置函数有两个输出端子,图标上面的输出端子输出的是串口资源名称,下面的输出端子输出的是错误码,输出端子向下游函数传递信息。
       VISA写入函数有三个输入端子,上面一个输入端子是前面VISA 串口配置函数传递的串口资源名称,下面的输入端子是传递的错误码,意思是若前面的函数出错了,会往这里输入一个错误码,然后继续往下面传递,有错误码出现时程序是不会工作的。中间的输入端子是写入缓冲区入口,写入缓冲区支持的数据格式是字符串

     VISA关闭函数VISA Close的作用是当程序停止之前,必须要把使用的串口设备关闭,若不关闭,其他程序就不能使用该设备。

    了解了LabVIEW的串口通信函数,下面的问题是如何把六个整数数据组合成字符串,而且这个字符串必须符合格式要求,然后把它送到VISA写入函数的写入缓冲区

   DF-USBSSC32控制板说明书网址:http://wiki.dfrobot.com.cn/index.php?title=USB%E7%89%8832%E8%B7%AF%E8%88%B5%E6%9C%BA%E6%8E%A7%E5%88%B6%E6%9D%BF(SKU:DRI0005)

,看看里面的说明书,多舵机字符串命令的格式是如何解释的。

说明书文摘:

  舵机群运动实例:#5 P1600 #10 P750 T2500 <cr>
 
通道5移动到1600us位置,通道10移动到750us的位置,2个都同时在2500us内完成,这个命令能协调多个舵机的速度。

   机械臂上有六个舵机,它们的控制线接到舵机控制板的控制通道为3、4、5、13、14、15,不考虑移动速度,如果所有舵机都转动到90度位置,那么这个字符串命令应该如何写?答案是:

#3 P1500 #4 P1500 #5 P1500 #13 P1500 #14 P1500 #15 P1500<cr>,字母P后面的整数数据是6个舵机通道的舵机PWM脉宽值,我用到了“格式化写入字符串”命令,该命令有一个“格式化字符”输入端,我对应地写入格式字符串为 #3 P%d #4 P%d  #5 P%d  #13 P%d #14 P%d  #15 P%d,%d意思是带符号整数数据,这个函数左侧的六个输入端输入的数据就是格式字符串的六个%d所对应的实时舵机脉宽值舵机脉宽值通过前面板的六个滑动杆上的游标来设置。

    由于舵机安装的方位不同,所以程序中“3000-滑动杆当前值”算式的意思是让滑动杆游标的移动方向与舵机转动方向调整为一致,比如希望滑动杆游标左移,希望舵机顺时针旋转,如果发现实际情况是舵机逆时针旋转,就要用到这个算式。

     再看看LabVIEW框图程序中,与生成字符串命令相关的部分,我把它们单独截屏下来了。

 

   按照DF-USBSSC32控制板说明书上所述,在这个字符串命令后面要加入<CR>,<CR>是回车符,我通过“连接字符串”函数,来实现回车符的加入。如上图所示。

    框图程序中,VISA配置串口函数下方的程序是1、串口波特率设定为115200b/s;2、控制各舵机转角的滑动杆初值都设置为1500us,即舵机角度设置为90度,使程序开始运行时,机械臂到达工作初始位置,我在机械臂上安装舵机时,事先把所有舵机的转角都调整为90度,才把它们安装上去

 

   通过以上编程,符合格式要求的字符串命令就这样一步步生成了,把这个字符串往VISA写入函数“一送”,就OK了,通过串口写到了下位机DF-USBSSC32控制板中,控制板不需要编写一行程序,它会自动理解下达的命令,同时响应前面板上滑动杆控件的游标移动,并驱使各舵机转动角度,让机械臂完成鼠标操纵者所希望达到的各种动作。

Labview程序请下载:labVIEW.zip

 

 

分享:

评论