单轴丝杠平台实现搬运功能

1. 功能说明

      本文示例将实现R279样机单轴丝杠平台搬运的功能。

      该机构是由一个丝杠模组和一个 舵机关节模组 组合而成,关节模组上安装了一个电磁铁。

      注意限位开关【①触碰传感器、②近红外传感器】的安装位置:

2. 丝杠传动机构原理

      丝杠传动机构是一个将转动转化为平动的机构,丝杠与移动的滑块之间通过螺纹传动;电机的旋转运动通过丝杆传递给滑块,由于滑块被支架限制不能进行旋转运动,所以滑块最终将旋转的运动转换为水平方向的移动。

运动特性:通过上面的分析可以看出,这是一种螺旋机构,具有以下特点

      (1) 回转运动变换为直线运动,运动准确性高,且有很大的降速比;复式螺旋可以获得较大的位移,差动螺旋可以获得微小的位移;

      (2) 结构简单,制造方便;

      (3) 工作平稳,无噪声,可以传递很大的轴向力;

      (4) 传动效率低,有自锁作用,相对运动表面磨损较快;

      (5) 实现往复运动要靠主动件改变转动方向。

      丝杠机构的的稳定性很好,可以承受较大的力,所以如果要设计一些直线运输重物的机构时可以考虑利用丝杠来实现。

3. 电子硬件

      本实验中采用了以下硬件:

主控板

Basra主控板(兼容Arduino Uno)

扩展板

Bigfish2.1扩展板

传感器

触碰传感器
近红外传感器
电池7.4V锂电池

电路连接说明:

      ① 步进电机:黑D5,绿D6,红D9,蓝D10

      ② 近红外传感器:A2

      ③ 触碰传感器:A0

      ④ 电磁铁:D3

4. 功能实现

     编程环境:Arduino 1.8.19

下面提供一个单轴丝杠平台搬运的参考例程(_1.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-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);

}

5. 资料内容

①搬运-例程源代码

②搬运-样机3D文件

资料内容详见:单轴丝杠平台-搬运

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值