|
【R279】单轴丝杠平台
作者:机器谱
搬运 搬运2 |
1. 功能说明
本文示例将实现R279样机单轴丝杠平台搬运的功能。
该机构是由一个丝杠模组和一个 舵机关节模组 组合而成,关节模组上安装了一个电磁铁。
搬运
注意限位开关【①触碰传感器、②近红外传感器】的安装位置:
2. 丝杠传动机构原理
丝杠传动机构是一个将转动转化为平动的机构,丝杠与移动的滑块之间通过螺纹传动;电机的旋转运动通过丝杆传递给滑块,由于滑块被支架限制不能进行旋转运动,所以滑块最终将旋转的运动转换为水平方向的移动。
运动特性:通过上面的分析可以看出,这是一种螺旋机构,具有以下特点
(1) 回转运动变换为直线运动,运动准确性高,且有很大的降速比;复式螺旋可以获得较大的位移,差动螺旋可以获得微小的位移;
(2) 结构简单,制造方便;
(3) 工作平稳,无噪声,可以传递很大的轴向力;
(4) 传动效率低,有自锁作用,相对运动表面磨损较快;
(5) 实现往复运动要靠主动件改变转动方向。
丝杠机构的的稳定性很好,可以承受较大的力,所以如果要设计一些直线运输重物的机构时可以考虑利用丝杠来实现。
3. 电子硬件
本实验中采用了以下硬件:
/*------------------------------------------------------------------------------------ 版权说明: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-04-19 https://www.robotway.com/ ------------------------------*/ #include <Stepper.h> const int stepsPerRevolution = 200; //步进电机每圈转动的步数 Stepper myStepper_X(stepsPerRevolution,5,6,9,10); //定义步进电机的引脚 #define SENSOR_RESET A0 //宏定义步进电机复位传感器引脚 A0 #define SENSOR_UN A2 //定义物块检测传感器引脚 A2 #define STEP_X 2500 //定义抓取物块后行进的步数 #define electromagnet 3 //定义电磁铁引脚 #include <Servo.h> Servo myServo; #define SERVO_UP 30 //定义舵机上下转动的角度 #define SERVO_DOWN 1 #define TIME 2000 int delta = 10; void setup() { Serial.begin(9600); //开启串口通信,波特率为9600 pinMode(SENSOR_RESET,INPUT); pinMode(SENSOR_UN,INPUT); pinMode(electromagnet,OUTPUT); myServo.attach(4); myServo.write(SERVO_UP); myStepper_X.setSpeed(60); resetStepper(); delay(1000); } void loop() { while(digitalRead(SENSOR_UN)){ delay(10); //物块检测传感器循环检测,未触发为 1,进入while循环等待,触发为0,跳出循环,执行后面物块抓取函数 } get(); put(); } //步进电机复位函数 void resetStepper() { while(digitalRead(SENSOR_RESET)) { myStepper_X.step(-10); } myStepper_X.step(15); } //物块抓取函数 void get() { Serial.println("begin"); myStepper_X.step(1500); ServoMove(SERVO_UP,SERVO_DOWN,TIME); digitalWrite(electromagnet,HIGH); //电磁铁引脚置高电平 吸取物块 ServoMove(SERVO_DOWN,SERVO_UP,TIME); } //物块释放函数 void put() { myStepper_X.step(STEP_X); ServoMove(SERVO_UP,SERVO_DOWN,TIME); digitalWrite(electromagnet,LOW); //电磁铁引脚置低电平 释放物块 ServoMove(SERVO_DOWN,SERVO_UP,TIME); resetStepper(); } //舵机转动函数,传三个参数,start为起始角度,finish为目标角度,t为时间 void ServoMove(int _start, int _finish, long t) { static int direct; static int diff; static long deltaTime; if(_start <= _finish) direct = 1; else direct = -1; diff = abs(_finish - _start); deltaTime = (long) (t / diff);
for(int i = 0; i < diff; i++) { myServo.write(_start + i * direct); delay(deltaTime); } delay(deltaTime); } |
电路连接说明:
① 步进电机:黑D5,绿D6,红D9,蓝D10
② 近红外传感器:A2
③ 触碰传感器:A0
④ 电磁铁:D3
4. 功能实现
编程环境:Arduino 1.8.19
下面提供一个单轴丝杠平台搬运的参考例程(_1.ino),将参考例程下载到主控板中,具体实验效果可参考演示视频。
5. 资料清单
序号 | 内容 |
1 | 【R279】-搬运-例程源代码 |
2 | 【R279】-搬运-样机3D文件 |
【整体打包】-【R279】单轴丝杠平台-搬运-资料附件.zip | 2.59MB | 下载37次 | 下载 |
搬运2
1. 功能描述
本文示例将实现R279a样机单轴丝杠平台两点间搬运的功能。
2. 结构说明
该单轴机构是由一个丝杠和一个简易机械臂组合而成,在简易机械臂上安装有一个电磁铁。
注意限位开关【触碰传感器】的安装位置:
3. 电子硬件
在这个示例中,我们采用了以下硬件,请大家参考:
电路连接:
① 电磁铁:连在Bigfish扩展板的9/10针脚
② 触碰传感器:连在Bigfish扩展板的A0端口上
③ 标准伺服电机:连在Bigfish扩展板的D11端口上
4. 功能实现
编程环境:Arduino 1.8.19
功能:实现单轴丝杠平台两点间的搬运。
下面提供一个参考程序(Single_Axis.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 机器谱 2024-01-30 https://www.robotway.com/ ------------------------------*/ /* * */ #include<Servo.h> Servo myservo; #define ServoPin 11 #define servo_init 30 #define servo_catch_angle 88 #define V_MAX 4800 //步进电机速度 #define Touch_Sensor A0
int magnet_pin[2] = {9,10};
void setup() { Serial.begin(9600); initMotor(); pinMode(Touch_Sensor,INPUT); myservo.attach(ServoPin); myservo.write(servo_init); pinMode(magnet_pin[0],OUTPUT); pinMode(magnet_pin[1],OUTPUT); magnet_off(); }
void loop() { Start(); }
//============================================================ void Start(){ while(digitalRead(Touch_Sensor)){ move(-1); } delay(200); servo_catch(); servo_putch(); }
void magnet_on() { digitalWrite(magnet_pin[0],HIGH); digitalWrite(magnet_pin[1],LOW); }
void magnet_off() { digitalWrite(magnet_pin[1],LOW); digitalWrite(magnet_pin[0],LOW); } |
5. 资料清单
序号 | 内容 |
1 | 程序源代码 |
2 | 样机3D文件 |
样机方案-【R279】单轴丝杠平台-搬运2-资料附件.rar | 4.3MB | 下载 |