tag 标签: 机械设计

相关博文
  • 热度 5
    2023-7-9 13:36
    878 次阅读|
    0 个评论
    机器人制作方案 | 8自由度并联腿机器狗实现姿态平衡
    1. 功能说明 本文示例将实现8自由度并联腿机器狗保持姿态平衡的功能,当机器狗在一个平台上原地站立,平台发生倾斜时,机器狗能够自动调整姿态,保证背部水平。 2. 机器狗的稳定性分析 稳定性是机器狗运动中很重要的一部分,对于足式机器人的稳定性判定,研究人员提出了很多不同的方法,如ZMP(零力矩点)、FASM(力角稳定裕度)、ESM(能量稳定裕度)等。 机器狗运动时,惯性力、腿部与地面的接触力是其主要扰动来源。机器狗的着地腿会受到地面对其的支持力和摩擦力,而其它外力可等效为机器狗重心处的惯性力,受力分析如下图所示: 机器狗的受力分析示意图 (F1、F2、F3是地面对机器狗的支持力;表示等效惯性力和等效重力的合力) 在四足机器人中,由于运动步态中支撑脚通常只有两条或更少,无法在地面上寻找到有效的支撑多边形,因此四足机器人只好将机器人的质心偏离初始位置的距离作为稳定性的参考量。一般来说,竖直方向的偏置距离对稳定性的影响不大。 3. 电子硬件 本实验中采用了以下硬件: 电路连接说明: ① 将8个舵机连接在SH-SR扩展板上,舵机连接顺序为:1、2、3、4、5、6、7、8; ② 将六轴陀螺仪传感器连接在Bigfish扩展板的A0端口。 4. 功能实现 上位机: Controller 1.0 下位机编程环境: Arduino 1.8.19 实现思路: 当机器狗在一个平台上原地站立,平台发生倾斜时,机器狗能够自动调整姿态,保证背部水平。 4.1 调试舵机角度 对于机器狗利用Controller软件进行调试舵机角度,可参考文章 8自由度并联腿机器狗-行走 【 https://www.robotway.com/h-col-228.html 】 4.2 示例程序 下面提供一个8自由度并联腿机器狗保持姿态平衡的参考例程(Dog_Balance.ino),具体实验效果可参考演示视频。 /*------------------------------------------------------------------------------------ 版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved. Distributed under MIT license.See file LICENSE for detail or copy at https://opensource.org/licenses/MIT by 机器谱 2023-05-18 https://www.robotway.com/ ------------------------------*/ #include "leg.h" #include "gait.h" #include "sensor.h" enum{DOGBALANCE=1,DOGWALK,DogObstacleAvoidanceWalk}; float Eular ; /* 欧拉角 */ void setup() { // put your setup code here, to run once: Serial.begin(115200); Serial.begin(115200); sensorSetup(); delay(3000); } void loop() { // put your main code here, to run repeatedly: Dog_Balance(); //狗保持平衡 } void Dog_Balance() { static long t_control = millis(); float f = readFront(); float b = readBack(); readPose(); 40) { if (f && !b) { leg0.back(); leg1.back(); leg2.back(); leg3.back(); } else if (b && !f) { leg0.front(); leg1.front(); leg2.front(); leg3.front(); } 3) { leg0.down(); leg1.down(); leg2.up(); leg3.up(); } if (Eular < -3) { leg0.up(); leg1.up(); leg2.down(); leg3.down(); } if (Eular -176) { leg0.up(); leg1.down(); leg2.up(); leg3.down(); } 0 && Eular < 176) { leg0.down(); leg1.up(); leg2.down(); leg3.up(); } leg0.updatePos(); leg1.updatePos(); leg2.updatePos(); leg3.updatePos(); // SerialUSB.println(); t_control = millis(); } } 程序源代码资料详见:8自由度并联腿机器狗-姿态平衡https://www.robotway.com/h-col-228.html
  • 热度 7
    2023-7-9 13:28
    511 次阅读|
    0 个评论
    1. 功能说明 本文示例将实现R018a支撑臂爬楼履带车爬楼梯的功能。 2. 结构说明 支撑臂爬楼履带车主要是由 小型平行履带底盘 和2个 舵机关节模组 组成。 3. 电子硬件 在这个示例中,我们采用了以下硬件,请大家参考: 电路连接: 舵机分别连接在Bigfish扩展板的D3、D4; 电机分别连在Bigfish扩展板的(9,10)、(5,6)接口。 4. 功能实现 编程环境: Arduino 1.8.19 实现思路: 实现支撑臂爬楼履带车爬楼梯的功能。 将参考例程(sketch_apr27a.ino)下载到主控板,实验效果可参考演示视频。 /*------------------------------------------------------------------------------------ 版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved. Distributed under MIT license.See file LICENSE for detail or copy at https://opensource.org/licenses/MIT by 机器谱 2023-05-12 https://www.robotway.com/ ------------------------------*/ #include Servo servo_pin_4; Servo servo_pin_3; int i = 0; int j = 0; void setup() { Serial.begin(9600); pinMode( 10, OUTPUT); pinMode( 6, OUTPUT); pinMode( 5, OUTPUT); pinMode( 9, OUTPUT); servo_pin_4.attach(4); servo_pin_3.attach(3); servo_pin_4.write(0); servo_pin_3.write(180); } void loop() { forward(); for(i = 0; i <= 180; i+=2) { servo_pin_4.write(i); servo_pin_3.write(180-i); delay(5); } = 0; i-=2) { servo_pin_4.write(i); servo_pin_3.write(180-i); delay(5); } } void forward() { digitalWrite(5,HIGH); digitalWrite(6,LOW); digitalWrite(9,HIGH); digitalWrite(10,LOW); } 5. 扩展样机 本样机可以有一些扩展,如将样机底盘上的2个直流电机替换成舵机,如下图所示: 或者对关节模组进行改造,增加更强大的功能装置,如下图所示(该作品为“智能管道检测机器人”。开发者:白东旭、毛砚锋、刘颖、刘一博、杨志文。指导老师:李公法、孙瑛。武汉科技大学,2020年): 程序源代码及样机3D文件详见:支撑臂爬楼履带车-概述https://www.robotway.com/h-col-225.html
  • 热度 6
    2023-7-9 13:19
    497 次阅读|
    0 个评论
    1. 运动功能说明 本文示例将实现R330样机机器鱼胸鳍能够灵活的上下摆动的功能。 2. 结构说明 本样机 采用舵机模块 来 进行 仿生机器鱼 结构的设计 。 3. 电子硬件 在这个示例中,我们采用了以下硬件,请大家参考: 电路连接: 将舵机连接在 Bigfish扩展板的D4端口。 4.运动功能实现 编程环境:Arduino 1.8.19 下面提供一个机器鱼胸鳍上下摆动的参考例程(fishQi.ino),实验效果可参考演示视频。 /*------------------------------------------------------------------------------------ 版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved. Distributed under MIT license.See file LICENSE for detail or copy at https://opensource.org/licenses/MIT by 机器谱 2023-05-23 https://www.robotway.com/ ------------------------------*/ #include int _ABVAR_1_angle_current2 = 0 ; int _ABVAR_2_num = 0 ; Servo servo_pin_4; int _ABVAR_3_angle_current1 = 0 ; void up_down(); void down_up(); void setup() { servo_pin_4.attach(4); } void loop() { down_up(); up_down(); } void down_up() { _ABVAR_1_angle_current2 = 30 ; for (_ABVAR_2_num= 1; _ABVAR_2_num<= ( 16 ); _ABVAR_2_num++ ) { _ABVAR_1_angle_current2 = ( _ABVAR_1_angle_current2 + 5 ) ; servo_pin_4.write( _ABVAR_1_angle_current2 ); delay( 50 ); } } void up_down() { _ABVAR_3_angle_current1 = 110 ; for (_ABVAR_2_num= 1; _ABVAR_2_num<= ( 16 ); _ABVAR_2_num++ ) { _ABVAR_3_angle_current1 = ( _ABVAR_3_angle_current1 - 5 ) ; servo_pin_4.write( _ABVAR_3_angle_current1 ); delay( 50 ); } } 下面再给大家提供一个机器鱼鱼尾摆动的参考例程(fishTail.ino),大家可以尝试改写一下舵机摆动角度参数,让机器鱼尾能够灵活的摆动。 /*------------------------------------------------------------------------------------ 版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved. Distributed under MIT license.See file LICENSE for detail or copy at https://opensource.org/licenses/MIT by 机器谱 2023-05-23 https://www.robotway.com/ ------------------------------*/ #include int _ABVAR_1_angle_right = 0 ; int _ABVAR_2_num = 0 ; Servo servo_pin_4; int _ABVAR_3_angle_left = 0 ; void Right_Left(); void left_Right(); void setup() { servo_pin_4.attach(4); } void loop() { left_Right(); Right_Left(); } void Right_Left() { _ABVAR_1_angle_right = 70 ; for (_ABVAR_2_num= 1; _ABVAR_2_num<= ( 8 ); _ABVAR_2_num++ ) { _ABVAR_1_angle_right = ( _ABVAR_1_angle_right + 5 ) ; servo_pin_4.write( _ABVAR_1_angle_right ); delay( 100 ); } } void left_Right() { _ABVAR_3_angle_left = 110 ; for (_ABVAR_2_num= 1; _ABVAR_2_num<= ( 8 ); _ABVAR_2_num++ ) { _ABVAR_3_angle_left = ( _ABVAR_3_angle_left - 5 ) ; servo_pin_4.write( _ABVAR_3_angle_left ); delay( 100 ); } } 程序源代码及样机3D文件详见:机器鱼-概述https://www.robotway.com/h-col-236.html
  • 热度 8
    2023-6-27 17:39
    677 次阅读|
    0 个评论
    机器人制作方案 | Delta并联机械臂搬运磁铁物料功能的实现
    1 . 功能 说明 本文示例将利用Delta并联机械臂实现不同点定点搬运磁铁物料的效果。 2. 结构说明 Delta并联机械臂,其驱动系统采用精度较高的42步进电机;传动系统为丝杠和万向球节;执行末端为搭载电磁铁的圆盘支架。 3. Delta机械臂运动学算法 这里给大家介绍一种 Delta并联机械臂的运动轨迹解法,通过控制电机的转动参数,最终求解出电磁铁圆盘支架的运动轨迹规律,样机采用R037b 该机械臂由 3个丝杠平台构成,通过并联的方式同时控制同一个端点的运动;三个丝杠位于一个正三角形边线的中心位置,连杆采用球头万向节连杆结构。 ① 首先我们建立一个空间直角坐标系,该直角坐标系以三个丝杠平台在俯视图方向投影的内切圆心为原点,x轴与tower1和tower3之间的连线平行,y轴过tower2,其中z=0的平面设置在三个限位开关所在平面。 ② 建立坐标系之后,我们可以得出3个限位开关Z轴投影的坐标为A=(-msin(60°),mcos(60°),0);B=(0,m,0);C=(msin(60°),mcos(60°),0);其中m为在xy投影面上正三角形的内切圆心到B点的距离。 ③确定各限位开关的位置(即确定各丝杠平台上滑块的初始位置),丝杠平台的运动可简化为如下:【其中N点为滑块初始位置,Q点为端点初始位置,P为Q点在丝杠平台上Z轴的投影;N1,P1,Q1点为丝杠平台运动后的位,T点为某一固定点,假设为delta机械臂上端点在Z向可以运动的最大值在丝杠平台Z向的投影点】 ④逆运动学是根据Q1点的位置确定NN1的距离。 在图中有几个可以通过测量得到已知值,分别是连杆长度 NQ/N1Q1、NT的距离、终点Q1点的坐标;假设我们输入的量是终点Q1的坐标(X1,Y1,Z1);这里需要注意的是Z1坐标为负值,为了方便理解在后面的推导中我们都对Z1取绝对值。 我们需要计算的是 NN1的距离: 其中 Q1的Z坐标与P1的Z坐标一致,所以NP1为已知量为Q1的Z坐标值Z1,即可以将上面的公式改为: 这里我们只需要计算出 N1P1的值即可: 其中 NIQ1为连杆长度,可通过测量得知,所以这里面需要我们计算出Q1P1。 ⑤求出Q1P1:【该长度我们可以通过两点坐标距离公式得出,借助俯视图投影进行计算】 为方便计算 Q1P1,图中我们将N,N1,P,P1,T点都投影到Z为0的点,则Q1(X1,Y1,0)。 根据点坐标公式可得: 综上所述: 注意前面我们对 Z1取了一次绝对值,实际Z1为负值, 所以最终推导公式为: 这样我们就求出了 NN1(丝杠移动距离)与Q1(执行端运动的终点)坐标的关系。 4 . 功能实现 4 .1 电子硬件 在这个示例中,我们采用了以下硬件,请大家参考: 4.2 电路连接说明 ① 硬件连接-电子元件 各轴步进电机与 SH-ST步进电机扩展板的接线顺序如下(从上至下): X:红蓝黑绿 Y:红蓝黑绿 Z:黑绿红蓝 ② 硬件连接-限位传感器 各个轴的限位传感器(触碰)与 Bigfish扩展板的接线如下: X:A0 Y:A3 Z:A4 ③ 电磁铁连在Bigfish扩展板的D5、D6接口上。 4.3 编写程序 编程环境: Arduino 1.8.19 Delta机械臂有两种运动方式: 第一种是自动运行搬运;第二种是用电脑发送指令,然后再根据指令运动。 这里仅列出 Delta机械臂自动运行搬运(Delta.ino)的程序:【其它的程序源码可下载文末资料获取】 /*------------------------------------------------------------------------------------ 版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved. Distributed under MIT license.See file LICENSE for detail or copy at https://opensource.org/licenses/MIT by 机器谱 2023-02-08 https://www.robotway.com/ ------------------------------------------------------------------------------------*/ #include "Arduino.h" #include #include #include "Configuration.h" AccelStepper stepper_x(1, 2, 5); //tower1 AccelStepper stepper_y(1, 3, 6); //tower2 AccelStepper stepper_z(1, 4, 7); //tower3 //AccelStepper stepper_a(1, 12, 13); MultiStepper steppers; float delta ; float cartesian = {0.0, 0.0, 0.0}; //当前坐标 float destination ; //目标坐标 boolean dataComplete = false; float down = -111; float up = -105; /*********************************************Main******************************************/ void setup() { Serial.begin(9600); pinMode(EN, OUTPUT); steppers.addStepper(stepper_x); steppers.addStepper(stepper_y); steppers.addStepper(stepper_z); stepperSet(1600, 400.0); stepperReset(); delay(1000); Get_command(0, 0, down); Process_command(); delay(1000); } void loop() { float r = 25; float x1 = 0.0; float y1 = 0.0; Get_command(25, 0, down); Process_command(); delay(1000); for(int i=0;i<2;i++){ for(float i=0.0;i<=360;i+=10){ x1 = r * cos(i / 180 * 3.141592); y1 = r * sin(i / 180 * 3.141592); Get_command(x1, y1, down); Process_command(); } } delay(1000); for(int j=0;j<2;j++){ =0;i-=10){ x1 = r * cos(i / 180 * 3.141592); y1 = r * sin(i / 180 * 3.141592); Get_command(x1, y1, down); Process_command(); } } delay(1000); Get_command(0, 0, down); Process_command(); test(); delay(1000); stepperReset(); delay(1000); } /***************************************Get_commond*******************************************/ void Get_command(float _dx, float _dy, float _dz){ destination = _dx; destination = _dy; destination = _dz; if(destination == 0 && destination == 0 && destination == 0){ stepperReset(); } else { dataComplete = true; } if(serial_notes){ Serial.print("destinationPosition: "); Serial.print(destination ); Serial.print(" "); Serial.print(destination ); Serial.print(" "); Serial.println(destination ); } } /***************************************Process_command***************************************/ void Process_command(){ if(dataComplete){ digitalWrite(EN, LOW); if(cartesian == destination && cartesian == destination && cartesian == destination ){ return; } else { Line_DDA(destination , destination , destination ); } } dataComplete = false; digitalWrite(EN, HIGH); } /************************************************** DDA ************************************************/ void Line_DDA(float x1, float y1, float z1) { float x0, y0, z0; // 当前坐标点 float cx, cy; // x、y 方向上的增量 x0 = cartesian ;y0 = cartesian ;z0 = cartesian ; abs(y1 - y0) ? abs(x1 - x0) : abs(y1 - y0); cx = (float)(x1 - x0) / steps; cy = (float)(y1 - y0) / steps; for(int i = 0; i <= steps; i++) { cartesian = x0 - cartesian ; cartesian = y0 - cartesian ; cartesian = z1 - cartesian ; calculate_delta(cartesian); stepperSet(1350.0, 50.0); stepperMove(delta , delta , delta ); cartesian = x0; cartesian = y0; cartesian = z1; x0 += cx; y0 += cy; if(serial_notes){ Serial.print("currentPosition: "); for(int i=0;i<3;i++){ Serial.print(cartesian ); Serial.print(" "); } Serial.println(); Serial.println("-------------------------------------------------"); } } } /***************************************calculateDelta****************************************/ void calculate_delta(float cartesian ) { if(cartesian == 0 && cartesian == 0 && cartesian == 0){ delta = 0; delta =0; delta = 0; } else { delta = sqrt(delta_diagonal_rod_2 - sq(delta_tower1_x-cartesian ) - sq(delta_tower1_y-cartesian ) ) + cartesian ; delta = sqrt(delta_diagonal_rod_2 - sq(delta_tower2_x-cartesian ) - sq(delta_tower2_y-cartesian ) ) + cartesian ; delta = sqrt(delta_diagonal_rod_2 - sq(delta_tower3_x-cartesian ) - sq(delta_tower3_y-cartesian ) ) + cartesian ; for(int i=0;i<3;i++){ delta = ((delta - 111.96) * stepsPerRevolution / LEAD); } } if(serial_notes){ Serial.print("cartesian x="); Serial.print(cartesian ); Serial.print(" y="); Serial.print(cartesian ); Serial.print(" z="); Serial.println(cartesian ); Serial.print("delta tower1="); Serial.print(delta ); Serial.print(" tower2="); Serial.print(delta ); Serial.print(" tower3="); Serial.println(delta ); } } /****************************************stepperMove******************************************/ void stepperMove(long _x, long _y, long _z){ long positions ; positions = _x; //steps 0, 向上运动 positions = _y; positions = _z; steppers.moveTo(positions); steppers.runSpeedToPosition(); stepper_x.setCurrentPosition(0); stepper_y.setCurrentPosition(0); stepper_z.setCurrentPosition(0); } /****************************************stepperSet******************************************/ void stepperSet(float _v, float _a){ stepper_x.setMaxSpeed(_v); //MaxSpeed: 650 stepper_x.setAcceleration(_a); stepper_y.setMaxSpeed(_v); stepper_y.setAcceleration(_a); stepper_z.setMaxSpeed(_v); stepper_z.setAcceleration(_a); } /****************************************stepperReset******************************************/ void stepperReset(){ digitalWrite(EN, LOW); if(cartesian != 0){ Get_command(0, 0, cartesian ); Process_command(); digitalWrite(EN, LOW); } while(digitalRead(SENSOR_TOWER1) && digitalRead(SENSOR_TOWER2) && digitalRead(SENSOR_TOWER3)){ stepperMove(10, 10, 10); } stepperSet(1200.0, 100.0); stepperMove(-400, 0, 0); while(digitalRead(SENSOR_TOWER1)){ stepperMove(10, 0, 0); } stepperMove(0, -400, 0); while(digitalRead(SENSOR_TOWER2)){ stepperMove(0, 10, 0); } stepperMove(0, 0, -400); while(digitalRead(SENSOR_TOWER3)){ stepperMove(0, 0, 10); } for(int i=0;i<3;i++){ cartesian = 0.0; } if(serial_notes) Serial.println("resetComplete!"); digitalWrite(EN, HIGH); } /*************************************************** electromagnet *************************************************************/ void putUp(){ digitalWrite(9, HIGH); digitalWrite(10, LOW); } void putDown(){ digitalWrite(9, LOW); digitalWrite(10, LOW); } /************************************************** test ******************************************************************/ void test(){ Get_command(0, 0, down); Process_command(); delay(500); putUp(); Get_command(0, 0, up); Process_command(); Get_command(25, 0, up); Process_command(); Get_command(25, 0, down); Process_command(); putDown(); delay(500); putDown(); putUp(); Get_command(25, 0, up); Process_command(); Get_command(0, 25, up); Process_command(); Get_command(0, 25, down); Process_command(); putDown(); delay(500); putDown(); putUp(); Get_command(0, 25, up); Process_command(); Get_command(-25, 0, up); Process_command(); Get_command(-25, 0, down); Process_command(); putDown(); delay(500); putUp(); Get_command(-25, 0, up); Process_command(); Get_command(0, -25, up); Process_command(); Get_command(0, -25, down); Process_command(); putDown(); delay(500); putUp(); Get_command(0, -25, up); Process_command(); Get_command(25, 0, up); Process_command(); Get_command(25, 0, down); Process_command(); putDown(); delay(500); putUp(); Get_command(25, 0, up); Process_command(); Get_command(0, 0, up); Process_command(); Get_command(0, 0, down); Process_command(); delay(500); putDown(); } 5 . 扩展 下图是另一种外观的 Delta机械臂(R037c),控制原理完全一样。 Delta并联机械臂的程序源代码及样机3D文件详见【R037】Delta并联机械臂-电磁铁搬运https://www.robotway.com/h-col-194.html
  • 热度 21
    2015-10-22 14:15
    1164 次阅读|
    0 个评论
    机械设计是机械工程的重要组成部分,是机械生产的第一步,是决定机械性能的最主要的因素。机械设计的努力目标是:在各种限定的条件(如材料、加工能力、理论知识和计算手段等)下设计出最好的机械,即做出优化设计。优化设计需要综合地考虑许多要求,一般有:最好工作性能、最低制造成本、最小尺寸和重量、使用中最可靠性、最低消耗和最少环境污染。那么,如何成为一名优秀的机械设计师?应该储备哪些知识?具备怎样的素质呢?小编特为您奉上一位资深机械设计师难得的经验与感悟。 机械设计所要了解的周边知识以及所要具备的观察视角 1、熟练翻阅机械设计手册 对于标准件以及常用件的一些技术特征要了熟于心。比如要清楚各类轴承,带传动,链传动,齿轮传动,丝杠传动,蜗轮蜗杆等的使用场合,使用方式,以及相关的技术特征。对于具体应用时的选型计算则可对照设计手册的图表和公式进行具体确定。 2、知道N家常用件供应商并熟练翻阅其产品样本 现在机械设计趋向于模块化,对于机械设备制造工厂的整体技术要求更侧重于对于一些配件和部件的组装应用。比如台湾HIWIN,日本THK,德国FAG,FESTO。对于此,要做到当你在设计某个零件或部件或要完成某个动作或功能的时候必须得知道目前是否有专业的厂商在生产或提供能实现某个部位的功能要求的成熟的零配件。 3、熟悉原材料情况 比如你要知道目前市场上有卖的冷轧或热轧铁板以及各类型材的规格尺寸,有经验的工程师往往都会知道你安排给采购的单子往往到最后是会变得面目全非的。因为在钢材市场,普遍存在变薄,变窄,变短这些情况,采购买回来的东西往往是和你坐办公室根据设计手册里选出来的相关数据存在比较大的折扣。 4、深度了解各类常用机床的结构原理和性能特点 所谓万变不离其宗,机床亦是如此。设计一台机器的过程可类比是小孩堆积木一般,一个部件一个组件进行堆积,然后把这些具备不同功能的部件或组建遵循某种规律联系起来。在这个过程中就需要你熟练掌握一些常用机构或装置的功能和特性。而我们所常见的车,铣,钻,刨,磨,镗。等机床上应用的结构或原理都是经过了数十上百年的考验,对于其稳定性和可应用性我们无需过多地怀疑。比如车床的刀架结构,卡盘结构,尾座的锁紧机构,主轴轴承布置,磨床主轴密封结构,刨床的连杆机构等等。 其实说这么多,想表述的就两字,对于这些稳定的常用的结构我们要学会在设计新机床时“借鉴”或者说是“参照”。从另一方面来说了解各类常用机床的结构原理和性能特点是出一张零件图纸的前提基础。举个例子来说就是当你完成一张图纸时最起码你自己要知道这张图纸上的这个零件的大体加工过程。这个所谓的大体了解楼主个人认为是好比要加工一条常见的轴类零件,当你了解车床,铣床,磨床的一些特性后就不会在图纸上出现没有了螺纹退刀槽,砂轮越程槽等情况,同时也不会对轴类零件的长度方向尺寸随意标注个IT6,IT7的公差要求。 5、掌握一定的机床装配能力 很多人会问,这完全是装配工的活了,我做为一个设计人员过多地了解这方面知识干什么?当然,会这么问的往往都是些刚入行的新手。当你永远不去了解这方面的知识时就永远理解不了针对一条长轴进行过渡或过盈装配时因为你那图纸上的左轴承位和右轴承位相距太大而轴承却只能从左到右或从右到左装配时,那两轴承位之间那么长一段装配距离所带来的痛苦。当然,你也肯定不会想起当这条轴最后要进行轴端螺纹锁紧时,因为你图纸上缺少了限制这条轴锁紧时转动用的夹持平面而导致无法顺利锁紧。当然,你就更想不到或是理解不了哪个位置哪些孔或哪些销位是需要装配时定配的。 6、具备一定的电气,液压,气动等方面的知识 社会分工越来越细,个人工作方向越来越专。当然,这里强调这些“旁系”学科并不是要求作为一个机械设计人员必须得能够根据机床功能进行液压或气动的集成块的油路布置或进行强电线路的规划或弱电程序的编写。但至少我们要能看懂人家提供的液压系统原理图或电气原理图/接线图等。但能读懂或编写通用的PLC程序或一些运动控制器的C程序是更为妥当。了解这些交叉科目知识的主要目的是能够和专业负责液压,气动或电气控制的工程师进行技术沟通和协调。往宽泛了说,当你了解透彻了这台机床的液压和电气后就能进行合理的“预留”。在你设计初期就在头脑里把液压和电气所要连接的线路和管道进行了交叉排布,在设计时就能充分考虑这些管道和线路的空间位置问题。 7、养成在生活中捕捉,发现,简化,总结,借鉴的能力 对于一个搞机械设计的人员,在日常生活中应当更擅长去发现“动”的事物和现象。我们举些简单的例子,比如冰箱,就算你不知道它的制冷原理,但我们可以去观察学习冰箱的门的密封结构,再如榨汁机,它是利用刀盘的旋转进行物料的切削,同样是利用刀盘的旋转产生的离心力进行过滤和分离。再比如汽车后轮差速器,去琢磨当汽车转弯时候左右轮为什么出现速度差。这些都是要求我们在日常生活当中去捕捉去发现并去琢磨然后再进行提炼最后都是可以在设计中进行借鉴的。 当然,最好的学习和领悟的机会是在机床展会上,相信很多有经验的设计工程师对此深有体会。机械设备会展既是销售人员的一个良好的拓展舞台和机会,同时也是机械设计人员学习别人优秀设计经验和认知当前机械设备发展概况的良好机会。所以,楼主希望广大同行应当多多去参加相关展会,并不辞劳苦在展会上多走,多看,多拍照。 8、略知钣金知识 一个好的设计作品,应当是让外行人来观看时,能让他们在头脑里第一印象做出“美观”,“先进”,“牢固”,“稳定”等判断。很多机械设计工程师往往侧重关注于机床功能,效率,精度等一些技术性层面的东西。往往对于机床钣金设计,液压管道和电气线路布局采取忽略,忽视的姿态。举个简单的例子,要是把奥拓车的外围钣金套弄到奥迪车上,我相信很大比例的客户无法认同和接受。苹果手机之所以卖得差不多人手一机,除了它的完善功能以及运算速度的优异,当然其“美感”的产品外观设计也是很大一部分原因。 说了这么多,无非是突出在机械设计中要求注重机床的外围钣金设计以及线路管道布局或油漆色彩的协调。当你不熟悉不了解各类钣金加工设备情况时,往往会出现在能进行折弯的地方采用铁板焊接处理,能进行弯管的部位采取直线管道拼接,能进行裁剪的地方出现弯弯扭扭的气割痕迹。略窥机械设计的宗旨,那就是如何把复杂的问题用简单的设计来实现,以及如何做到让外行的人看到这个设计作品是持肯定和褒奖态度。 9、略知金属材料与热处理知识 对于事物或技能的掌握程度我们可分为认知—略知—掌握—熟练这么些阶段。我们作为机械设计工程师,因为我们从事的这个行业交叉性的学科比较多。所谓业精于专,当然我们的前提是做好自己设计范畴内的事情,而这里所要求知晓的金属材料与热处理知识并不是要求你能熟记铁碳合金相图以及各类金属在不同温度不同热处理工艺下的金相组织形态。但一些基础性的知识还是需要了解或掌握的。比如低碳钢,中碳钢,高碳钢,常见合金钢一些常见的特性,通用性材料的屈服点,抗拉强度,热处理前后硬度特性。 举个简单的例子车间的师傅请你帮他弄一条刚性好些的车床用的深孔镗杆,你一听是要弄一条又粗又壮的高刚性的东西,结果在图纸的材料栏里写了个40Gr,等采购买回来,加工,热处理后,一焊接,发现YG6的刀粒铜焊怎么都焊不到那条又粗又壮的刀杆上去。 10、设计软件只是工具,而非使用它就是目的 楼主曾面试过好多一些学校刚毕业的热血小伙,简历上很多都有这样那样的等级证书,尤其常见AUTOCAD,PRO/E。一类中级制图员,高级制图员等等头衔。楼主也加了好些像SOLIDWORKS应用群一类的QQ群。发现一个现象,很多人往往都沉浸和陶醉在讨论或研究采用何种建模方法,采用怎样的渲染或动画技巧一类的问题。 当然,并不是说你去研究和深挖某个软件的各项功能是错误的,只是觉得一个人的学习能力和学习方向应该正确把握。我们做机械设计的要明白软件只不过是替代了传统的图板和丁字尺的一个工具而已。应当把主要的精力和时间花在纯粹的设计构想当中,而不是让自己被这些功能庞大的软件给捆|绑。
相关资源