1. 底子组成部分概述
1.1 机械结构部分
【机械臂主体结构】
机械臂主体全手艺制造,由15种零件,合共25件零件构成,其间包含3根标准不同的轴,2种标准不同的轴承算计5个,支架1种合共2件,支座1种合共1件,榜首级机械臂1种合共2件,第二级机械臂1种合共2件,第三级机械臂1种算计2件,机械臂间衔接件3种共4件,轴固定件2种算计4件,还有用于各个零件间固定的角铁算计8件。其间除轴承外均为铝合金制件,机械臂手臂部分由平行铝合金板构成双立式结构,第三级机械臂共有两头,别离可自在活动,其由单块铝合金板组成,一端直接与舵机相连,另一端固定鼓棒。轴分为竖直轴与水平轴,竖直轴与步进电机相套,水平轴由轴固定件与轴承别离衔接各级机械臂。
全体呈现单支双臂式结构,合共有5个自在度,其间3个自在度有电机驱动,其间坐落底座下方的步进电机用于滚动,而坐落第二级与第三级机械臂之间衔接的舵机用于带动第三级机械臂滚动。铝合金板零件之间运用克己淬火角铁进行固定,防止对铝合金制件进行钣金作业,以减低本钱和制造时间;轴与铝合金工件之间选用轴衔接件与轴承混合固定的办法进行合作与固定。全体机械臂合共运用了将近200g的螺丝与螺母,首要用于角铁与铝合金板件的紧固处理,别的也有运用少数紧固螺钉进行轴与固定件或许电机之间的固定。舵机上面也装有四个带有齿孔的固定件,用于夹持第三级机械臂。(详见图1.1)
图1.1 机械臂主体结构什物图
【底座结构】
机器人底座由2块平行有机玻璃构成,其间由4根螺柱衔接2块玻璃板。面板装有轴承,通过轴承自带的小孔与有机玻璃地板进行螺丝固定。底板通过角铁夹住步进电机,使步进电机自身不能滚动,竖直轴穿过轴承与步进电机相连,竖直轴底部为空心处理,而且使电机轴套入竖直轴中,并运用紧固螺钉进行两者的固定。面板一起有9根固定螺钉,用于支撑鼓。2块底板之间的空间用于放置主操控电路电路板PIC,步进电机驱动及其间一个电源。(详见图1.2及1.3)
图1.2 底座部分内部什物暗示图
图1.3 底座部分全体什物图
1.2 电子电路部分
【全体电路体系】
整个机器人的电路体系由3个首要部分组成别离为由PIC组成的主操控电路,由声响传感器与触碰开关组成的子操控电路,以及由单片机操控的电机及其配套电路,其间电机及其配套电路又细分为舵机的直接操控与运用步进电机驱动电路进行对步进电机的操控。
【主操控电路】
机器人主操控电路由开发板和最小体系板组成,开发板首要结构包含有PIC单片机,时钟电路体系,蜂鸣器电路,复位电路体系,配套的LED灯显现体系,数字显现体系,外接数据线体系等组成(见图1.4),外有与PIC匹配5V电压电源体系相连,向主操控电路供给安稳的电压。运用主操控电路上的排针设备,可以运用电路衔接线衔接各个子操控电路、舵机与步进电机驱动器的相关接口,通过主操控电路接纳子操控电路的反应信息,通过对应的判别向舵机、步进电机输出相应的脉冲,操控电机运动。其操控流程如下:
图1.4 主操控电路操控流程暗示图
【子操控电路】
机器人子操控电路由手艺制造的电路板组成,其间子操控电路又分为声控子电路与触控子电路;其间声控电路部分首要由声响传感器及指示灯体系构成,可以接纳环境变量中的声响分量,通过调理可变电阻可以使声响传感器接纳适宜规划的声强,并通过整波电路与扩大电路将相关的信息传递到单片机中;触控电路首要部分由触碰开关构成,触碰开关将在规划中外接,通过击打触碰开关,使开关通过电流,通过电流后全体通过各类比较器、扩大器、整波元件完结向PIC单片机输出有高电平通过的信息功用。其操控流程如下所示:
图1.5 子操控电路全体暗示图
【步进电机驱动电路】
步进电机驱动电路为现成集成模块,外部与15V电压相连,逻辑电源接单片机VCC,通过单片机输出脉冲完结必定角速度滚动,一起由DIR(方向)接口决议步进电机滚动方向,FREE(使能)接口决议步进电机的发动与中止速度。
2. 底子功用概述
【伐鼓功用】
机器人通过第三级机械臂及其衔接的鼓棒完结伐鼓的功用,其间第三级机械臂由舵机带动,调理舵机的凹凸电平延时时间完结对舵机的转速、击打力度的操控,通过凹凸电平输出的循环完结转角的操控,一起调用相关的程序,使机器人可以依照必定的节奏或许现场示教人员的指示进行有规则的伐鼓动作。
如下图所示,机器人当给予舵机延时2400us的高电平以及20ms低电平的脉冲信号(详见图3.5)而且将该程序循环40次,舵时机从图1.9所示方位A移动到图1.10方位B,一起通过第三级机械臂、舵机自身、鼓棒构成一个三级结构,击打鼓,使鼓宣布必定的响声;而当给予舵机延时600us的高电平以及20ms低电平的脉冲信号(详见图3.7)而且将该程序循环40次,舵时机从图1.6所示方位回复到图1.5所示方位,而且通过其自身的机械零点进行回复。
通过单片机预先编写的程序或许示教的形式,机器人依照必定的规则进行伐鼓,其伐鼓的频率约为0.7-1.0秒/次,其间下行时间约为0.3-0.5秒,上行时间约为0.4-0.6秒,通过调理左右舵机输出不同的脉冲信号,可以完结替换击打(见图1.7,图1.8),替换极大可以完结全体机器人均匀伐鼓频率在0.3-0.5秒/次,而通过双臂仅能一起使全体机器人的伐鼓频率在0.8-1.0秒/次左右。
而步进电机可以使机器人通过自身的滚动,击打到不同方位的鼓,通过对步进电机的输出脉冲的个数进行操控,依据步矩角理论则可以使步进电机滚动必定的视点,通过核算可以测出击打左边两个鼓与击打右侧两个鼓需求滚动的视点,即循环的次数,使步进电机滚动要求的视点,而且完结击打的鼓的机械转化。
图1.6 伐鼓功用操控流程图
图1.7 机器人同步击打A方位什物暗示图
|
图1.8 机器人同步击打B方位什物暗示图
图1.9 机器人异步击打什物暗示图A
图1.10 机器人异步击打什物暗示图B
【离线编程功用】
通过在预先在PIC单片机中离线编写好的程序,程序中进行对舵机与步进电机的脉冲信号输出,其间包含有舵机的异步操控办法、同步操控办法以及步进电机的操控;异步操控办法为单片机对两个舵机中的一个输出脉宽为2.4ms的高电平和20ms低电平而对别的一个电机输出脉宽为0.6ms的高电平和20ms(详见图1,13),循环必定次数之后沟通两个电机的输出脉冲(详见图1.14),这样两个舵机将会呈现一个左边机械臂下行一起右侧机械臂上行,然后左边机械臂上行右侧机械臂下行的替换击打;同步操控办法为PIC单片机对两个舵机一起输出脉宽为2.4ms的高电平和20ms的低电平(详见图1.15)循环必定次数之后一起再输出脉宽为0.6ms的高电平和20ms的低电平,这样两个舵机将会呈现一起击打一起复位的状况。步进电机运用占空比为50%的凹凸电平调控,可以完结必定的步矩角的滚动。
离线编程体系通过屡次重复地不同地调用舵机异步操控、舵机同步操控、步进电机操控的子程序,可以完结机器人在步进电机一边滚动一边舵机同步击打、步进电机一边滚动一边舵机异步击打,步进电机停动一起舵机同步击打、步进电机停动一起舵机异步击打四种首要状况,通过替换、屡次、重复、并排运用这些子程序和状况,可以使机器人全体在环绕三个鼓之间进行屡次的来回往复击打,一起可以进行左右臂一起击打(见图1.7,图1.8)和左右臂替换击打的操控(见图1.9,图1.10)。
图1.11 两舵机异步操控脉冲信号暗示图A
图1.12 两舵机异步操控脉冲信号暗示图B
图1.13 两舵机同步操控脉冲信号暗示图
【示教功用】
通过在声响传感子操控电路,通过可变电阻调整声响传感器的接纳规划,可以辨认现场的声响,机器人通过从子操控体系反应的声响信息,可以实时输出相应的舵机同步操控脉冲信号,舵机一起伐鼓,机器人跟从声响进行运动;通过触感子操控电路,可以辨认人是否对示教的仿照鼓进行击打,假如是则输出相应的脉冲信号使一侧舵机进行跟从运动。
二、意图与含义
1. 创造意图与创意来历
【创造意图】
大白菜作为一个伐鼓机器人,其首要功用并不约束与伐鼓。咱们创造这个机器人的意图是作为后续项意图前期制造,对后续项目中运用到的机械手进行理论的证明,以及对其进行部分制造,大白菜是后续项目中机械手的简化版别,咱们也在大白菜上预留满意的空间以及添加电机的空间,用于日后在项目中对其进行改装与添加自在度。
【创意来历】
大白菜的创意来历于多个方面:
(1)、底子结构:为了习惯后续项目中的仿人式机械手而选用的单支双臂式结构,榜首级机械臂与第二级机械臂也选用与人类似的规划;
(2)、底子功用:因为在竞赛中侧重可展现性,侧重可以调集现场气氛的才能,因而简化了原有纪录位姿的功用,单纯选用单片机的操控而撤销对电机转角、转速的丈量,然后萌发使机械手进行伐鼓动作的规划;
(3)、附加功用:包含声响操控与触感操控,则源于在最近结束的上海世博会中在上海企业联合馆中的等候区节目,榜首个为由观众现场的拍掌,使场馆的LED灯依据现场拍掌的节奏而闪亮,第二个为由现场观众喊出相应的字母,机器人捡起对应的箱子,仿照这2个节目咱们规划出通过现场观众拍掌的声响操控机器人以及通过现场伐鼓的展现使机器人纪录示教人的击打信息并重现的附加功用。
2. 项目意图
(1)、作为一款参与机器人竞赛展现类的机器人,该机械臂可以进行底子的伐鼓动作;而在附加功用上,则通过不同的传感体系,记载示教人员的伐鼓节奏,并在示教完结之后机器人可以重现该伐鼓的动作以及节奏。
(2)、作为一种单支双臂式的机器人(机械臂),其仿人的规划用于作者对该理论的一种验证,通过对仿人的规划,使机械手可以仿照人的运动,而大白菜仅是作为对后期仿人机器人的规划与制造的一个前期进程进行相关的研讨与制造。
(3)、作为一个预留了许多改善空间的机器人,该机器人可以在多个方面进行不同的改善,包含预留添加自在度的方位,添加电机的方位,添加编码盘丈量电机转角转速,减缩底座面积等多个改善方向,通过不同方面改善可以为日后研讨机器人(机械臂)的运动、仿真、丈量、多机器人协作等扩展功用供给了许多的实践数据、机器人实体和空间。
3.项目含义
(1)作为大赛的参赛著作,本机器人的最大功用与含义在于可以完结最底子的伐鼓功用。并在伐鼓功用的基础上添加附加功用,完结以离线编程形式与示教形式操控机器人的功用。可以为观众带来对机器人的一种新的感触,一种新的趣味,而且让更多观众参与到机器人傍边。
(2)作为一种单支双臂式的机器人(机械臂),本机器人的含义在于可以通过舵机对其操控,完结伐鼓的功用;一起,也是作为对该类机械臂的结构的一种新考虑的实践与验证。
(3)作为一个预留许多改善空间的机器人,本机器人的含义在于为后续的规划与制造供给许多的实践数据与机器人实体,而且为日后的各个探求方面的挑选供给了更多的参阅数据材料,可以使日后项目组成员的后续探求规划更为完善与周详。
4. 可行性总结
【技能可行性】
表1 探求进程中运用的技能及运用规划
运用领域 |
技能称号 |
技能功用 |
机械规划 |
CAD制图 |
交给制造机械臂主体 |
三维建模软件 |
底子暗示及大致剖析 |
|
一般力学剖析 |
测算自在度受力 |
|
机械制造 |
机械加工 |
制造机械臂主体 |
一般钳工 |
拼装及固定全体机器人 |
|
主动操控 |
单片机操控 |
全体机器人操控 |
电机伺服操控 |
操控电机以希望速率、起伏运动 |
|
电子电路 |
传感器 |
接纳环境变量信息 |
电路处理 |
扩大、优化、收拾电路信息 |
上述各种技能现已悉数老练及成型,只需求在把握这些技能的基础上运用它们,并不需求通过自行规划技能来完结;一起而且通过运用这些技能,完结机器人的每个部分细节的处理,就可以终究完结机器人的全体制造与调试,整个机器人的制造中运用的技能都是可行的。
【运用可行性】
本机器人作为一款底子参与大赛的著作,在参赛的运用方面因为其具有杰出的展现性与文娱性,该方面运用是可行的;别的,因为预留了许多的改善空间,即便是在竞赛之后,需求进行多方面的改善,在未来,依然可以运用这个机器人现有的本体作后续的研讨,该方面运用一起可行。
三、技能参数
1. 机械部分
【全体质量与尺度参数】
(1)、全体质量:2.5Kg
(2)、全体尺度:40cm X 30cm X 40cm (长X宽X高)
【机械作业参数】
(1)、全体作业最大宽度:49cm
(2)、全体作业最大高度:53cm
(3)、全体作业最高温度:45℃
(4)、全体作业最低温度:-10℃
(5)、舵机作业最大转角起伏:90°
(6)、步进电机作业最大转角起伏:30°
【电机参数】
表2 步进电机的物理参数
步进电机类型 |
57H46403(带减速) |
步矩角 |
1.8° |
最大滚动角 |
360° |
相数 |
2 |
相电流 |
2.4A |
静力矩 |
7 |
定位力矩 |
2.8 |
表3 舵机的物理参数
舵机类型 |
TOWER PRO MG945 (辉盛) |
静力矩 |
1.2 |
最大转速 |
0.25sec/60°(4.8V) |
最大转角 |
185° |
作业电压 |
4.8-7.2V |
【机械臂主体力矩参数】
(1)、自在度核算
将支架和臂简化为杆件,因为结构对称性,将两舵机旋转副、每个轴的旋转副和两三级臂各只作一个,别的因为有两个旋转副(两个轴地点的旋转副)被约束,因而简化成果如图3.1:
图3.1 机械臂全自在度简化暗示图
活动组件n=2高副P =0,低副P =2,自在度为:
(1)
两个自在度别离由舵机和步进电机操控,满意组织安稳要求。
(2)、舵机静力矩校核
取铝合金密度为:
(2)
将三级臂上孔去掉,简化为一实体长方体块,则三级臂体积为:
(3)
由(2)、(3)式数据可得三级臂质量为:
(4)
三级臂重心在其几许中心,间隔舵机旋转轴间隔为:
(5)
敲击棒质量取 ,其重心距舵机旋转轴间隔为:
(6)
当三级臂和敲击棒处于图示水平常,舵机旋转轴所需静扭矩最大,其简化结构图见图3.2
图3.2 第三级机械臂长度简化暗示图
可以得第三级机械臂的静力矩为:
(7)
(8)
(3)、全体安稳性校核
核算施加在轴2上扭矩
取该部分臂前端角铁和螺钉、舵机总质量m =120g,二三级衔接板尺度:
(9)
其质量为:
kg (10)
相同当三级臂水平常,如图3.3,所施加的静力矩为最大
图3.3 第二级、第三级机械臂静力矩简化暗示图
此刻重心距轴为L =100mm,将前端角铁和螺钉、舵机总重心距轴2间隔也取L =100mm
(11)
(12)
取 =0.25
底座圆盘半径R=66mm,厚t=8mm,质量为:
(13)
kg (14)
假定全体受轴2上扭矩而歪斜,视点很小,则底盘边际一点与地接触,此刻,校验要使全体不倒条件 ,设所需全体部分结构(底盘至轴2间部件)质量为m,其重心在全体中心轴上,如图3.4所示
图3.4 假定结构歪斜受力简化暗示图
当倾角a很小时,底座重心、部分结构重心距倾角原点处间隔均为R,列平衡条件:
(15)
k为动载荷扭矩时相关于静载荷比值 ,k取大越安稳,取2
(16)
由(16)式可得m>0.45kg
运用UG核算得实践m约0.70kg,这样在底座、底座至轴部分结构重力力矩效果下,体系会有摆正趋势,即a变小,可以确保要求,而且在中心轴效果下,全领会更安稳不倒
2. 电子电路部分
【声响传感器】
表4 声响传感器模块首要技能参数
尺度 |
|
首要芯片 |
LM393,驻极体话筒 |
作业电压 |
4V-6V |
【步进电机驱动器】
表5 步进电机驱动器技能参数与接口
步进电机驱动类型 |
QDQ241 |
驱动最大电流 |
2.1A |
驱动最大相数 |
2 |
可选细分数 |
1/2,1/4,1/10,1/15 |
作业电压 |
0-32V |
(1)、+COM 接单片机VCC5V,假如接24V,则CP,DIR各串接一个2K电阻 |
|
(2)、CP 接脉冲频率输入,决议快慢 |
|
(3)、DIR 方向操控,0V回转,空正转,决议方向 |
|
(4)、FREE 使能接口,接0V停转,电机自在状况 |
|
(5)、A+ A相正输入 |
|
(6)、A- A相负输入 |
|
(7)、B+ B相正输入 |
|
(8)、B- B相负输入 |
|
(9)、+DC 接外接驱动电源,9-32V |
|
(10)、 接0V |
【电源】
(1)、逻辑电源电压:5V
(2)、步进电机驱动外加电压:15V
3. 操控部分
【舵机输入脉冲信号】
图3.5 舵机正转脉冲信号暗示图
图3.6 舵机回转脉冲信号暗示图
【步进电机输入脉冲信号】
图3.7 步进电机脉冲信号操控
四、运用说明
1. 常用操控与运用说明
【常见按钮与衔接】
图4.1 步进电机驱动与电源衔接办法什物暗示图
【运用注意事项】
(1)、防止使机器人在歪斜面上作业,避免从高处下跌形成损坏;
(2)、机械臂运动时请勿用手接触作业部分;
(3)、呈现电机在通电状况却不作业的状况,请马上堵截电源,避免电机损坏;
(4)、声控开关和触控开关为易损部件,请勿暴力操作;
2. 形式运用说明
声控形式适宜一切用户运用,运用时将机器人摆在渠道上,渠道面积应满意大,以确保机器人伐鼓时产生的轰动不会使机器人下跌渠道。查看电路衔接是否有断线、短路。确保无误后接通电源,人站在邻近1m处,双手合拍,调查机器人是否呈现敲鼓动作,假如机器人没有反应,则掌声可以拍大一点,直至调查到机器人履行敲鼓动作。若此刻让机器人伐鼓所需掌声还比较小,人可以离机器人动作远一点拍掌调查机器人是否敲鼓。这样即可调理好人运用该机器人的掌声巨细和间隔规划。每次拍掌机器人会敲鼓一次,也可接连拍掌,但接连拍掌时速度不行过快,以留机器人反应时间。拍掌频率把握好后,人可以改动拍掌频率,机器人则会以相同频率做出伐鼓动作。假如人依据一首歌曲节奏接连拍掌,机器人将回忆该节奏并在人拍掌后伐鼓重现该节奏,然后完结文娱功用。运用结束后应及时封闭电源,避免电路元件发热影响机器人运用寿命。
【触感形式敞开与运用】
触控形式可以适宜一切用户运用,运用时将机器人摆在渠道上,渠道面积应满意大,以确保机器人伐鼓时产生的轰动不会使机器人下跌渠道。查看电路衔接是否有断线、短路。确保无误后接通电源,单手接触一下左臂就任一个接触开关,调查机器人左伐鼓手是否履行伐鼓动作。相同办法查看右手伐鼓功用是否正常。若左右伐鼓手均正常,则可以每次接触机器人任一伐鼓手上的接触开关,使机器人履行伐鼓动作。也可一起双手接触两伐鼓手接触开关,左右伐鼓手同步履行伐鼓动作。人可以通过调整接触频率、接触方位来使机器人打出赋有旋律和动感的伐鼓声。运用结束后应及时封闭电源,避免电路元件发热影响机器人运用寿命。
【再离线编程功用运用】
再离线编程功用首要由高档用户运用。运用时请将电路的首要衔接线悉数移开,使PIC单片机地点的主操控电路板独立出来运用,并一起翻开您的电脑,调试您电脑的串口线或许其它烧录PIC单片机的设备处于正常作业状况。在确保您可以向单片机烧入程序的状况之下,您可以开端编写程序,咱们主张运用常见的KEIL软件进行单片机程序的编写和项意图树立和调试。程序由首要几个部分组成,咱们主张您尽量不要对咱们附上的程序的首要结构、体系、头文件、舵机和步进电机的延时时间等方面进行更改,否则会导致机器人的某些部分或许全体无法作业;请您对如各个舵机、步进电机的子程序进行某些次第的改动,或许对舵机的循环次数进行修正,这样可以依据您的喜爱,调理机械臂的包含伐鼓的滚动视点规划、步进电机的滚动规划以及舵机替换伐鼓与同步伐鼓的次第进行调整,使机器人的扮演愈加具有您个人的特征。运用该功用的时分请您特别注意PIC单片机的数位与存储规划。完结烧录之后将电路从头接回,敞开离线编程形式之后机器人就可以按您的设定进行运动。
3. 常见问题与处理
【常见问题及处理QA】
(1)Q:为何通电之后PIC单片机指示灯不亮,一起驱动器指示灯微亮?
A:请您确认您现已给两个电路接入正确的电压,PIC单片机接的是5V的逻辑电压,电机驱动器接的是15V的外加电压,假如二者弄反了,或许会导致逻辑电路烧坏的状况。而驱动器在低于9V的电压条件下不能拖动步进电机作业,因而请确保您现已为机器人接入正确的电源。
(2)Q:我现已接入正确的电源,为何舵机不能作业?
A:请您确认您现在运用的形式是什么,假如您运用的是离线编程形式,或许是因为PIC单片机内没有预设的程序,或许是您在本机器人再离线编程体系运用中给舵机输出的脉冲信号不正确,本舵机运用的是伺服操控技能,高电平延时2.4ms,低电平延时20ms为舵机正转,高电平延时0.6ms,低电平延时20ms时为舵机回转,一但延时时间缺少,或许导致舵机不能作业;假如您运用的是声控形式或许触控形式,请确认您现已正确敞开这些形式,通过声控体系指示灯和触控体系指示灯可以判别体系是否接纳到您所击打的信号。
(3) Q:我现已接入正确的电源,为何步进电机不能作业?
A:请您确认你给步进电机输出的脉冲是正确的,假如您运用再离线编程体系给步进电机输出的脉冲信号不正确,脉冲频率过低会使步进电机滚动不显着或许不滚动,脉冲频率过高会使步进电机产生跳动并产生尖利的高频声响。本步进电机的作业频率起伏比较大,为了确保满意的观赏性和安全功用,主张您运用凹凸电平替换的方波信号,两者延时时间均为1.2±0.5ms
(4)Q:为何我的舵机挥动手臂但打不到鼓?
A:假如您运用了再离线编程形式,请您确认您对舵机输出的脉冲的循环次数,假如输出的脉冲循环次数过低,会导致舵机的滚动视点大幅削减,这样机器人就无法伐鼓了。
(5)Q:我分明现已给机器人声响信号,为何机器人依然没有反应?
A:请您首要确认您运用的声控形式,假如不是,请将其调至声控形式再给予声控信号;若您确认已运用声控形式,请您首要调查声控形式的指示灯在您击打鼓的时分有亮,假如没有亮的话则或许是您给予的声响信号不行强,此刻可以通过调理声响传感器一侧的可变电阻以调理其活络度;假如灯在您击打的时分有亮,但电机依然不滚动,则表明PIC单片机在接纳到信号的条件下无法带动电机,此刻请查看您是否曾运用过再离线编程功用,是否对舵机的驱动子程序进行过修正,如是则请按后边供给的源程序列表康复;假如您不曾运用过在离线编程功用,则或许是因为电路方面衔接呈现问题导致。
五、探求进程
1. 规划思路
大白菜的创意来历与咱们对机械臂方面研讨的爱好,整个探求进程的规划采纳以一个中心点动身进行扩展的规划思路,其思路表达如下:
图5.1 规划思路流程图
2. 探求进程简述
首周作为确认标题和参赛的一周,首要作业在于对确认参赛的类型,项目组成员进行相关的构思与规划,虽然现已具有一个确认的方向,可是依然需求确认规划的全体思路与方案,以及进行接下来作业的一些物资与材料预备。
次周作为机器人制造的开端,首要作业在于机械规划方面,特别是以机械臂的主体结构进行CAD及UG等软件方面的规划为重,一起对机器人进行相应的受力剖析以及对应的细节处理,并将初稿提交给辅导教师进行审定与修正;电路方面进行初期的购买物资,确认元器材类型与数量,对开发板与最小体系板进行对应的开端调试。
机械组织部分 |
电路与操控部分 |
CAD与UG软件制图 受力剖析 细节处理 辅导教师修正机械规划方案 |
确认元器材类型与数量 购买物资 调试PIC单片机开发板 |
第三周作业进入全面展开的状况,因为机械规划方面呈现不少的问题,需求屡次修正机械规划部分,如轴、各级机械臂、衔接件等方面都呈现了如孔径不均、钣金件尺度不标准、轴没有分级等多种问题,需求屡次与辅导教师沟通并作出修正;别的,购买轴承、螺钉等紧固件与衔接件,确认需求机械零件的参数与一般选定条件;电路与操控方面则开端进行相关子操控电路的制造,声响操控体系与触感操控体系的规划以及一般算法的编写与规划。
机械组织部分 |
电路与操控部分 |
机械规划修正 购买紧固件、轴承等 确认零件参数标准 |
子操控电路规划与制造 一般算法规划与编写 |
第四周作业比较深重,首要会集在机械规划方面持续定稿与制造,并提交到加工方进行受理与制造,而一起依据之前测得的机械臂的主体结构受力数据等方面进行电机参数的挑选,购买舵机与步进电机;电路与操控方面开端对新购买的舵机、步进电机、步进电机驱动器进行相应的调试,因为供货商方面供给的材料并不完好,因而在电机的调试上呈现许多的问题,如占空比的把握、步进电机脉冲的频率调整等未能使电机滚动。
机械组织部分 |
电路与操控部分 |
机械规划定稿 交给加工 确认电机参数并购买电机 |
对电机进行运动测验
|
第五周因为等候机械加工的原因,在机械方面并没有太多的作业,仅仅一些购买简略拼装东西的作业;而作业重心则首要都会集在整个团队关于新的电机的调试方面,别离向《机器人规划与制造》任课教师、电工电子试验中心教师、机电学院研讨生等多方面进行相应的讨教,总算使舵机可以滚动,而步进电机则呈现宣布尖叫声的问题。
机械组织部分 |
电路与操控部分 |
购买拼装东西 |
对电机进行运动测验 |
第六周机械加工完结,机械组织方面进行相应的拼装作业,首要会集在对机械臂主体的拼装、电机的装入与固定、底座的制造等配套作业;而操控方面则对现已调整好的舵机进行相应的操控测验,一起再对步进电机进行调试,总算在运用高频信号产生器之下使步进电机滚动,而且底子把握步进电机的作业频率与作业电压,以及步进电机驱动的操控技巧。
机械组织部分 |
电路与操控部分 |
机械零件拼装 配套体系制造 |
舵机进行操控测验 步进电机运动测验 |
第七周需求加速作业进度,机械方面现已成型,结构现已得到确认,而且各个自在度运动在作业条件下运动正常;而作业都会集在电路与操控方面,首要是全体程序的编写与各个子电路的测验,以及各个示教体系对电机的操控调试。
机械组织部分 |
电路与操控部分 |
自在度微调 |
全体与子程序编写 各个子体系对电机调试 |
第八周首要作业在于整机调试以及编写项目陈述;整机调试作业首要会集在对机械臂的主体结构进行P%&&&&&%单片机操控,仿照现场状况进行各个子操控体系的调试,仿照各种或许呈现的问题进行相关的预备与规划。
全体作业 |
全体机械臂调试 编写总结陈述 仿照及想象问题及预备处理方案 |
3. 探求进程呈现的问题与采纳的处理办法
3.1
【问题】机械规划不标准,如轴、各级机械臂、衔接件等方面都呈现了如孔径不均、钣金件尺度不标准、轴没有分级等多种问题。
【处理办法】通过与辅导教师的沟通与屡次沟通,并将机械规划图交给教师审理与修正,由辅导教师供给改善的定见,咱们通过4次的大型修正,终究确认了现在的机械结构:运用角铁衔接机械臂、多级轴结构、法兰与轴承分边固定等机械结构,并在11月中下旬总算将机械规划图终究定稿并交给加工方进行相应的机械加工与制造。
3.2
【问题】整个机械臂主体加工精度过低,导致机械臂多个当地的衔接呈现问题,轴与轴承的合作过盈太多,主体结构的通孔空隙过大,平行机械臂结构的通孔没有对准等多种机械加工精度问题。
【处理办法】因为本机器人是交给到外面的加工方进行相应的机械加工和机械制造,而为了节约本钱,挑选了精度比较低的手控机床来进行加工,因而机械加工的精度存在适当的问题。为了处理上述的问题,咱们在规划的时分现已相应添加了必定的过盈量以防加工失误导致空隙过大等无法弥补的问题;一起,咱们在获得零件的时分现已进行相关的查看,确保了必定的精度,可是依然存在过盈或许空隙过大等一系列的问题,终究处理办法是选用咱们自己进行后期再加工,如对轴、机械臂结构等进行打磨,一起对过盈量过大的工件进行锉刀慢锉以减低过盈量等,终究顺畅将所以工件拼装起来并完结机械臂的全体结构。
3.3
【问题】因为没有完好的技能材料,舵机在给予必定脉冲的时分不滚动,或许呈现跳动等现象。
【处理办法】出于没有相关技能材料的原因,咱们首要是在网上寻觅MG945这款舵机的相关操控材料,可是没有完好的占空比的信息,因而咱们又找到了电工电子试验中心的同学、《机器人规划与制造》的任课教师咨询,终究归纳网上的论坛材料与教师供给的信息,终究运用单片机进行脉宽调理,终究确认了低电平延时20ms,高电平在1.5±1ms的伺服信号,而且添加循环等程序的操控下使电机可以依照必定的周期摇摆,而且在装上机械臂后可以使机械臂依照必定的视点进行上下的摇摆。
3.4
【问题】因为没有完好的技能材料,步进电机在运用单片机操控下不滚动、或许跳动并宣布尖利声响
【处理办法】相同因为技能材料不完好以及供货方方面供给的信息有误,步进电机不能正常滚动,其首要现象是前者在步进电机驱动上电的状况之下步进电机对信号彻底没有反应;后则则是在给予的脉冲有反映,但宣布声响。咱们在面对着两种状况的时别离离寻觅了机电学院的研讨生与电工电子技能的教师进行相关的咨询和调试,终究依据相关的材料,得出了步进电机的操控办法是通过一个凹凸电平的改动使步进电机产生一个步矩角的滚动的相关信息,可以确认是因为咱们在衔接的时分,给予步进电机的脉冲频率过高,到达了10000Hz,远超过步进电机的反应速度,因而后来将频率调至350-700Hz左右的时分,步进电机就可以正常作业。
3.5
【问题】步进电机运动与其步矩角参数等理论值不对应,如给定50个凹凸改动的脉冲,可是步进电机滚动的视点大于90度。
【处理办法】咱们终究挑选疏忽这个问题,虽然无法量化地操控电机,可是通过屡次的调试,终究可以将电机的转角调到一个适宜的规划;别的,依据供货方供给的信息,本问题的成因很或许是因为步进电机的驱动器有个细分数可选,而这个细分数可以将步矩角细分到必定的规划,因而或许导致给定的凹凸电平改动使步进电机的输出视点变小,然后是视点与其本来的理论值不相符。
3.6
【问题】步进电机与其电机驱动需求较高电压电源,而且电机需求一个独立电源,单片机需求一个独立逻辑电源。
【处理办法】依照本来的方案,咱们是方案运用7805芯片进行相应的电压调整,使整个机器人只需求一个电源体系,可是后来依据辅导教师的主张,以为逻辑电源与外接电源不宜共同,因而,应该运用两个独立电源;一起,因为步进电机的滚动最低要求9V的电压,而最好是有15V的电压,因而在参与竞赛的时分,则需求运用到外加的学生电源进行相关的驱动。
3.7
【问题】两个舵机运用程序无法进行调平
【处理办法】呈现这个问题的底子原因是因为选用的舵机有个机械零点,它具有上电主动复位的功用,因而在运用的时分就会因为每次单片机上电是舵机复位而导致无法进行调平,不管咱们的程序怎样编写都没有办法使其适宜伐鼓的需求。为了处理这个问题,咱们只能选用机械调平的办法处理,通过调整机械臂与舵机的不同视点的衔接,然后改动其初始的视点,以及将两个机械臂调成平行的,使其适宜伐鼓的状况。
3.8
【问题】伐鼓的时分击打的声响并不显着
【处理办法】这个问题的首要成因是因为舵机归于高扭矩的舵机,而其价值则是其转速比较慢,仅为0.25sec/60°,一起在电机的伺服操控傍边为了确保其有满意的转角,其速度也不能调得过快,否则会导致第三级机械臂与舵机之间的衔接呈现较大的问题。为了处理这个问题,咱们只可以在转速、转角、击打力度之间获得一个平衡,咱们也屡次改动舵机的伺服操控程序,包含对凹凸电平的脉宽进行相关调理,以及对循环的次数进行调理,只能得呈现在的这个状况,即便是在今后进行改善的时分,也只能在硬件方面,如添加鼓棒分量,改动鼓的结构或许运用架子鼓的发声比较强的鼓进行展现。
3.9
【问题】声响传感器过活络,致使超过了舵机的反应速度
【处理办法】这个问题的首要成因是因为声响传感器自身的精度问题引起的,因而处理的办法有多种,一个是调理声响传感器自身,而别的一种则是在声响传感器与单片机的相连的电路体系中添加可变电阻体系,咱们挑选了后者;在电路中添加可调的可变电阻,然后通过现场对可变电阻的调理,可以满意对声响传感器在其作业规划内的声响勘探才能的调制,从而可以是机器人具有更为广泛的习惯性与适用性。
3.10
【问题】部分电路不安稳,使在声控形式下舵机运动并不规则,如在一次声响信号输入之下,舵机重复运动。
【处理办法】这个问题的首要成因比较杂乱,或许是因为电路的原因形成的,也或许是因为程序的编写失误或许是调用失误导致的,因而至今咱们也没能清晰这个问题的首要成因是什么。可是咱们选用了多种手法,包含调整程序的结构、从头编写子程序与调用的结构、从头规划电路与从头布局排版、添加施密特触发器进行整波等手法,终究使声控电路可以正常作业。
六、点评与改善方案
1. 自我总结与点评
【自我总结】
通过2个月的规划与制造,总算将机器人完好地完结 ,可以说着2个月过得痛并快乐着。究竟这个机器人是整个项目组成员现现已过了近半年的理证明明终究得到的实体,虽然其功用与本来的想象并不彻底共同,可是至少给了咱们一个参与竞赛的时机,一起给了一个制造一台真实机器人实体的时机,因而咱们要感谢这次大赛,也感谢每一个支撑与协助过咱们的教师、同学。
机器人的规划与制造总是伴随着那几个不行短少的底子点,之所以咱们参与竞赛一来是为了愈加靠近实践的机器人学,二来是为了对项意图后续开展带来更大的协助。因而咱们挑选了制造一向机械臂,虽然参与竞赛的功用现在还仅仅伐鼓,可是信任在更久远的未来,它会走得更远。
正如之前所说的,咱们现现已过将近半年的理论验证,从许多当地现已省下了不少时间,包含咱们现已收集了满意多的材料,也现已对机械臂的实体进行过相关的简易建模研讨,因而在参与本次竞赛的时分可以称心如意。而在这次竞赛傍边,咱们确实学到了更多,虽然在之前理论验证阶段现已有了必定的数据与相关材料,可是依然缺少实践操作的空间。而在这次制造大白菜的进程中,首要学到的是机械规划方面的常识,在规划机械臂的时分无可防止地要与机械规划打交道,虽然之前有过相关的经历,可是依然缺少以应对十几样零件的规划,因而咱们在许多当地也做得缺少,也在许多细节上存在许多缝隙;然后学到的便是加工方面的一些常识,虽然咱们不是亲身去加工这些零件,可是怎样才能愈加速愈加省钱的完结这些零件的制造,是咱们需求考虑的问题,因而咱们省掉了许多不必要的规划,也减去了一些在本次竞赛不需求的自在度和相关零件;还有学到了电机的操控方面的常识,包含舵机、步进电机、直流电机的操控办法,是怎么进行PWM脉冲调理,或许是假如操控步进电机的这些常识有了开端的了解;终究便是电路与程序方面的调试,虽然电路并不杂乱,可是全体因为组织比较大、功用杂乱,因而各个组合的合作需求花许多心思去完结。
总结这次参与竞赛,咱们得到了一个可以伐鼓的机器人,收成了包含机械、电子、操控方面的常识,也认识到自己许多当地的缺少与改善之处。
【自我点评】
虽然每个人的参与程度与参与规划不同,可是整个项目组都处于一种合一的状况。一起,每个人依据自己的才能地点进行相应方面的研讨,因为咱们规划与制造的不是一架一般的小车,而是一个机械臂,咱们也需求在受力剖析、三维建模、CAD制图、机械加工与制造方面投入更多的时间,因而项目组成员首要都是偏机械方向,而在电路规划、程序操控、电机调测等方面也有相应的投入。因为作业组的不懈努力,不管是前期的预备,中期的制造与安装,仍是后期的调试都进行得有条有理,成员各司所职,将自己本分做好,也去协助遇到困难的伙伴,咱们将自己所知道的,所把握的常识投入到本次竞赛中,再从中收成更多的常识。
2. 自我改善方案
【改善方案】
因为参与本次竞赛是现现已过适当多理论的验证,因而在竞赛之后,咱们可以依据本来设定的方案持续进行机器人方面的探求。
依据本来的方案,机械臂部分具有大约9个自在度,其间第三级机械臂处会添加4个自在度,一起会为一切自在度配上舵机或许步进电机,一起也会在轴部分添加编码盘或许其它可以丈量电机滚动角速度的器材,而在操控方面则侧重与对机械臂转速与滚动视点的量化丈量,而且纪录机械臂的对应时间的位姿与速度,可以完结丈量臂的功用,而且可以一起运用操控体系将其本来的示教进程中机械臂的位姿与速度重现,到达一种可以回忆机械臂示教运动并重现的终究功用。
具有这种功用的机器人的运用方面广泛,而针对特定的状况以及咱们的制造水平与机器人的规划巨细,终究预计会确认用于医疗方面,例如针对中风患者进行按摩,在医护人员进行相关的示教之后,机器人可以主动重现示教的动作,对患者主动进行按摩。
附件:
1. 机械规划零件图及安装图
1.1 机械零件CAD图
【轴1】 1件
【轴2】 1件
【轴3】 1件
【底盘】 1件
【支架】 2件
【榜首级机械臂】 2件
【第二级机械臂】 2件
【第三级机械臂】 2件
【二级臂衔接件】 1件
【二三级衔接件】 1件
【舵机固定件】 2件
【衔接件1】 2件
【衔接件2】 2件
1.2 机械零件UG图
【轴1】 1件
【轴2】 1件
【轴3】 1件
【底盘】 1件
【支架】 2件
【榜首级机械臂】 2件
【第二级机械臂】 2件
【第三级机械臂】 2件
【二级臂衔接件】 1件
【二三级衔接件】 1件
【舵机固定件】 2件
【衔接件1】 2件
【衔接件2】 2件
【轴承】5件
1.3 机械规划安装总图
【安装图-主视】
【安装图-仰望】
【安装图-恣意视点1】
【安装图-恣意视点2】
【安装图-恣意视点3】
2. 电路原理图
【声控电路原理图】
【触控电路原理图】
3. 全程序
#define uchar unsigned char
#define uint unsigned int
sbit P0_0=P0^0;
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
sbit P2_4=P2^4;
sbit P3_0=P3^0;
sbit P3_1=P3^1;
sbit P3_2=P3^2;
sbit P3_3=P3^3;
sbit P3_4=P3^4;
sbit P3_5=P3^5;
sbit P3_6=P3^6;
sbit P3_7=P3^7;
/***********************************/
void delay_nus(unsigned int i) //延时:i>=12 ,i的最小延时单12 us
{
i=i/10;
while(–i);
}
void delay_nms(unsigned int n) //延时n ms
{
n=n+1;
while(–n)
delay_nus(900); //延时 1ms,一起进行补偿
}
/**********************************/
void init(void) //声控程序,中止初始化
{
EA=1;
EX0=1;
IT0=0;
}
void int0 () interrupt 0
{
P2_0=0;
delay_nms(200);
P2_0=1;
}
/***********************************/
void main(void) //主程序
{
int a,b,c;
P3_0=0;
while(1)
{
a=P3_4; //KEY4
if(a==0)
{
delay_nms(10);
if(a==0)
{
P2_3=0; //输给自在扮演的部分来检测
while(1)
{
P1_5=0;
delay_nms(2000);
P2_3=1;
}
}
}
a=P3_5; //KEY5
if(a==0)
{
delay_nms(10);
if(a==0)
{
while(1)
{
b=P1_0;
c=P1_1;
if((b==0)(c==0))
{
P2_0=0;
delay_nms(200);
}
if((b==0)(c!=0))
{
P2_1=0;
delay_nms(200);
}
if((b!=0)(c==0))
{
P2_2=0;
delay_nms(200);
}
P1_6=0;
}
}
}
a=P3_6; //KEY6
if(a==0)
{
delay_nms(10);
if(a==0)
{
while(1)
{
init();
P1_7=0;
}}}
}}
#define uchar unsigned char
#define uint unsigned int
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
sbit P0_0=P0^0;
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P0_3=P0^3;
sbit P0_4=P0^4;
sbit P0_5=P0^5;
sbit P0_6=P0^6;
sbit P0_7=P0^7;
sbit P2_0=P2^0;
sbit P2_2=P2^2;
sbit P2_4=P2^4;
sbit P2_6=P2^6;
/***************************************/
void delay_nus(unsigned int i) //延时:i>=12 ,i最小延时12us
{
i=i/10;
while(–i);
}
void delay_nms(unsigned int n) //延时n ms
{
n=n+1;
while(–n)
delay_nus(900); //延时 1ms,一起进行补偿
}
void SMotorL(void) //步进电机左转
{
int i;
P1_4=1;
P1_3=1;
for(i=0;i1550;i++)
{
P1_2=1;
delay_nus(800);
P1_2=0;
delay_nus(800);
}
delay_nus(5000);
}
void SMotorR(void) //步进电机右转
{
int i;
P1_4=1;
P1_3=0;
for(i=0;i1550;i++)
{
P1_2=1;
delay_nus(800);
P1_2=0;
delay_nus(800);
}
delay_nus(5000);
}
void DMotor_Dou(int n) //舵机双手一起动,n表明次数
{
int i,j;
for(j=0;jn;j++)
{
for(i=0;i18;i++)
{
P1_0=1;
P1_1=1;
delay_nus(2400);
P1_0=0;
P1_1=0;
delay_nms(20);
}
for(i=0;i18;i++)
{
P1_0=1;
P1_1=1;
delay_nus(1000);
P1_0=0;
P1_1=0;
delay_nms(20);
}
}
delay_nms(10);
}
void DMotor_Dou1(int n) //舵机双手一起动,n表明次数
{
int i,j;
for(j=0;jn;j++)
{
for(i=0;i30;i++)
{
P1_0=1;
P1_1=1;
delay_nus(2400);
P1_0=0;
P1_1=0;
delay_nms(20);
}
for(i=0;i30;i++)
{
P1_0=1;
P1_1=1;
delay_nus(600);
P1_0=0;
P1_1=0;
delay_nms(20);
}
}
delay_nms(10);
}
void DMotor_Dou2(int n) //舵机双手一起动,n表明次数
{
int i,j;
for(j=0;jn;j++)
{
for(i=0;i25;i++)
{
P1_0=1;
P1_1=1;
delay_nus(2400);
P1_0=0;
P1_1=0;
delay_nms(20);
}
for(i=0;i25;i++)
{
P1_0=1;
P1_1=1;
delay_nus(800);
P1_0=0;
P1_1=0;
delay_nms(20);
}
}
delay_nms(10);
}
void DMotor_Sig(int n) //左右手替换,n代表次数
{
int i,j;
for(j=0;jn;j++)
{
for(i=0;i15;i++)
{
P1_1=1;
delay_nus(2400);
P1_1=0;
delay_nms(20);
}
for(i=0;i15;i++)
{
P1_1=1;
delay_nus(1000);
P1_1=0;
delay_nms(20);
}
for(i=0;i15;i++)
{
P1_0=1;
delay_nus(2400);
P1_0=0;
delay_nms(20);
}
for(i=0;i15;i++)
{
P1_0=1;
delay_nus(1000);
P1_0=0;
delay_nms(20);
}
}
delay_nms(10);
}
void DMotorL(int n) //舵机左手,n代表次数
{
int i,j;
for(j=0;jn;j++)
{
for(i=0;i18;i++)
{
P1_0=1;
delay_nus(2400);
P1_0=0;
delay_nms(20);
}
for(i=0;i18;i++)
{
P1_0=1;
delay_nus(900);
P1_0=0;
delay_nms(20);
}
}
delay_nms(10);
}
void DMotorR(int n) //舵机右手,n代表次数
{
int i,j;
for(j=0;jn;j++)
{
for(i=0;i18;i++)
{
P1_1=1;
delay_nus(2400);
P1_1=0;
delay_nms(20);
}
for(i=0;i18;i++)
{
P1_1=1;
delay_nus(900);
P1_1=0;
delay_nms(20);
}
}
delay_nms(10);
}
void main(void)
{
int a,b;
while(1)
{
a=P1_0;
if(a==0)
{
DMotor_Dou(1);
delay_nms(10);}
a=P1_1;
if(a==0)
{
DMotorL(1);
delay_nms(10);
}
a=P1_2;
if(a==0)
{
DMotorR(1);
delay_nms(10);}
a=P1_3;
if(a==0)
{
DMotor_Dou1(1);
DMotor_Dou2(1);
DMotor_Dou(3);
delay_nms(200);
DMotor_Dou(2);
SMotorR();
DMotor_Dou(2);
SMotorL();
DMotor_Dou(2);
SMotorR();
DMotor_Dou(2);
SMotorL();
DMotor_Dou(1);
delay_nms(30);
DMotor_Sig(2);
SMotorR();
DMotor_Sig(2);
SMotorL();
DMotorL(1);
DMotorR(1);
DMotorL(1);
DMotorR(1);
DMotor_Sig(1);
SMotorR();
DMotor_Sig(1);
DMotorL(1);
DMotorR(1);
DMotor_Dou(2);
delay_nms(100);
DMotorR(2);
DMotorL(2);
SMotorL();
DMotor_Sig(1);
DMotor_Sig(1);
delay_nms(100);
DMotorL(2);
SMotorR();
DMotorR(1);
DMotorL(2);
SMotorL();
DMotorR(1);
DMotorL(2);
SMotorR();
DMotorR(1);
DMotorL(2);
SMotorL();
DMotorR(1);
DMotor_Sig(1);
SMotorR();
DMotor_Sig(1);
DMotorL(2);
DMotor_Sig(1);
DMotorL(2);
DMotorR(2);
delay_nms(400);
DMotor_Sig(1);
SMotorL();
DMotorL(1);
DMotorR(1);
SMotorR();
DMotorL(1);
DMotorR(1);
SMotorL();
DMotorL(1);
DMotorR(1);
SMotorR();
DMotorL(1);
DMotorR(1);
DMotor_Sig(1);
DMotor_Sig(1);
SMotorL();
DMotorL(1);
DMotorR(1);
DMotor_Sig(1);
SMotorR();
DMotorL(1);
DMotorR(1);
DMotor_Sig(1);
SMotorL();
DMotorL(1);
DMotorR(1);
DMotor_Sig(1);
SMotorR();
DMotorL(1);
DMotorR(1);
DMotor_Sig(1);
delay_nms(100);
DMotorL(1); SMotorL();
DMotorR(1); SMotorR();
DMotorL(1); SMotorL();
DMotorR(1); SMotorR();
delay_nms(200);
DMotor_Dou(2);
DMotor_Dou1(1);
DMotor_Dou2(1);}
}
}