机器谱

R234】立式铣床模型

作者:机器谱

图文展示3264(1)

图文展示3264(1)

副标题

概述

1. 功能说明

      铣床主要是指用铣刀在工件上加工多种表面的机床,本文示例将通过程序控制模拟铣床的运动效果--模拟铣床进行加工时各个结构的运动方式。铣床的运动主要包括:主轴的旋转运动、立铣头的上下进给运动、工作台的前后左右进给运动。

概述

2. 结构说明

      该铣床的主轴旋转运动选择用电机直接驱动;立铣头的上下进给运动选择丝杠平移机构,运动稳定,且位移距离较长;工作台的左右进给运动选择丝杠平移机构,运动稳定,且位移距离较长;工作台的前后进给运动选择滑块平移机构,用于短距离的运输。

3. 电子硬件

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

主控板

Basra主控板(兼容Arduino Uno)

扩展板

Bigfish2.1扩展板

传感器触碰传感器
电池7.4V锂电池


/*------------------------------------------------------------------------------------

  版权说明: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-06-14 https://www.robotway.com/

  ------------------------------*/

#include <Servo.h>


int i,j,k,l;   //定义几个变量

Servo servo1; //命名一个舵机


void setup() {

 

  servo1.attach(3); //启动舵机3号口

 

  pinMode( 14, INPUT);   //定义引脚

  pinMode( 18, INPUT);

  pinMode( 5, OUTPUT);

  pinMode( 6, OUTPUT);

  pinMode( 9, OUTPUT);

  pinMode( 10, OUTPUT);

  pinMode( 4, OUTPUT);



}


void loop() {

  i=digitalRead(14);   //设置i为A0读取数据

  j=digitalRead(18);   //设置j为A4读取数据

//第一步

  servo1.write( 130 );       //舵机置位

  zero();

/****************************

第二步

*****************************/

      if(i==0&&j==0)      //如果X轴Y轴已归位

      {

           //delay(2000);

           

           digitalWrite( 9 , LOW );   //X轴至中部

           digitalWrite( 10 , HIGH );

           delay(6000);

           digitalWrite( 10 , LOW );

   

           servo1.write( 87 );        //舵机伸出

           digitalWrite( 4 , HIGH );   //电机旋转

           delay(1000);

/****************************

第三步

*****************************/

           digitalWrite( 5 , LOW ); //Z轴移至中间

           digitalWrite( 6 , HIGH );

           delay(5000);

           digitalWrite( 6 , LOW );

           

           digitalWrite( 9 , LOW ); //X轴左移一秒

           digitalWrite( 10 , HIGH );

           delay(1000);

           digitalWrite( 10 , LOW );   //稍停

           delay(300);

           digitalWrite( 9 , HIGH ); //X轴右移一秒

           digitalWrite( 10 , LOW );

           delay(1000);

   digitalWrite( 9 , LOW );

                                 

           servo1.write( 130 );     //舵机伸缩移动

   delay(300);

   servo1.write( 87 );

   delay(300);

/****************************

第四步

*****************************/

//   digitalWrite( 5 , LOW ); //Z轴下移一秒

         //   digitalWrite( 6 , HIGH );

         //   delay(1000);

//           digitalWrite( 6 , LOW );//稍停

//           delay(300);

           digitalWrite( 5 , HIGH );    //Z轴上移一秒

           digitalWrite( 6 , LOW );

           delay(1000);

          digitalWrite( 5 , LOW );

   

/****************************

重复第三步

*****************************/

   digitalWrite( 5 , LOW ); //Z轴移至中间

           digitalWrite( 6 , HIGH );

           delay(1000);

           digitalWrite( 6 , LOW );

         

           digitalWrite( 9 , LOW );   //X轴左右移一秒

           digitalWrite( 10 , HIGH );

           delay(1000);

           digitalWrite( 10 , LOW );

           delay(300);

           digitalWrite( 9 , HIGH );

           digitalWrite( 10 , LOW );

           delay(1000);

           digitalWrite( 9 , LOW );

                                 

           servo1.write( 130 );     //舵机伸缩移动

           delay(300);

           servo1.write( 87 );

           delay(300);

           digitalWrite( 4 , LOW );

           while(1)

           {

             i=digitalRead(14);   //设置i为A0读取数据

            j=digitalRead(18);   //设置j为A4读取数据

            zero();

            }

         

      }

     

  //}

 

}




void zero()

{

   if(i==0)                   //如果触发限位A0

      {

         digitalWrite( 9 , LOW );   //X轴停止运动

         digitalWrite( 10 , LOW );

      }

      else

      {

         digitalWrite( 9 , HIGH );   //X轴电机置位

        digitalWrite( 10 , LOW );

      }

     

      if(j==0)//如果触发限位A4

      {

         digitalWrite( 5 , LOW );//Z轴停止运动

         digitalWrite( 6 , LOW );

      }

      else

      {

          digitalWrite( 5 , HIGH ); //Z轴电机置位

          digitalWrite( 6 , LOW );

      }

}

电路连接说明:在下图所示的2个位置分别安装一个触碰传感器作为限位(限位:限定机械设备的运动极限位置)。

① 2个触碰传感器分别连接在Bigfish扩展板的A0、A4端口;

② 舵机连接在Bigfish扩展板的D3端口;

③ 电机连接在Bigfish扩展板的D5,D6;D9,D10。

4. 功能实现

4.1 实现思路

      实现铣床模拟加工的功能。

第一步(复位):

     工作台运动到X正向极限位置(控制1号电机旋转,直到工作台碰到限位的触碰传感器停止);铣头运动到Y正向极限位置(控制2号电机旋转,直到洗头碰到限位的触碰传感器停止),工作台运动到Y正向极限位置(控制4号电机);

第二步:

      工作台在一号电机所在的丝杠上向-X方向运动,其中心位置与铣头的中心位置在同一平面上(控制1号电机);工作台在一号电机所在的丝杠上向-Y方向运动,其中心位置与铣头的中心位置在同一直线上(控制1号电机);铣头开始旋转(控制3号电机)

第三步:

      铣头-Z方向移动,移动到2号电机所在丝杠的中间位置停止(控制2号电机);工作台在+X与-X方向各匀速移动1S的时间(控制1号电机正转与反转延迟各1s);工作台在+Y与-Y方向各移动一段距离(控制4号舵机顺时针、逆时针各旋转一定的角度);

第四步

      铣头在-Z向移动1s(控制2号电机旋转1s),暂停0.3s;洗头在+Z向移动1s(控制2号电机反向旋转1s);工作台的运动重复第三步中工作台的运动;

第五步:

      复位,回到第一步中的位置。

4.2 示例程序

编程环境:Arduino 1.8.19

下面提供一个参考例程(xichuang.ino),具体实验效果可参考演示视频。

5. 资料清单

序号

内容
1

R234-程序源代码

2R234-样机3D文件


文件下载
【整体打包】-【R234】立式铣床-概述-资料附件.zip
6.92MB下载6次下载
上一页 1 下一页
© 2024 机器时代(北京)科技有限公司  版权所有
机器谱——机器人共享方案网站
学习  开发  设计  应用