查看: 22684|回复: 15

MegaPI制作Delta机械臂

[复制链接]
  • TA的每日心情
    无聊
    2017-6-24 14:20
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2016-7-19 21:04 | 显示全部楼层 |阅读模式
    我是一名Arduino/Edison用户。平常比较熟悉Arduino的使用和编程。对于给Arduino UNO, Mega2560等单片机编程,需要弄清楚PIN端口 IO1-13, A0-A5,这些端口的位置,再相应读写端口状态,就可以做到一些基本的功能。Intel Edison也类似,只是开发环境和编程开发界面有了一个变化。但关键都在弄清端口有哪些,怎样调用。

    但是,对于MakeBlock MegaPI这样的运动控制板,它集成了很多功放和步进控制芯片,在板卡接口上又引入了工业标准接口。MegaPI的PIN端口,更是远比Arduino复杂。这对于我们这样较少接触Arduino扩展板的用户,感觉比较陌生。怎样调用这么多的端口,我感到无从下手。

    拿到MegaPI后,我查阅官方资料。开始逐步了解这块功能强大的运动控制主板。随着对MegaPI学习的不断深入。我在arduino中文社区的帮助下,自备材料,使用开源方案做出了一台Delta机械臂,并可以做基本的动作控制。

    IMG_20160926_172947_640_480.jpg

    测试视频:


    以下是MegaPI相关知识的学习,和Delta机械臂的详细制作过程。

    1 MakeBlock MegaPI板卡性能指标、电路结构、软硬件接口情况


    首先我在官网 www.makeblock.cc上查到MegaPi的端口编号。

    10050_10.png

    有了端口号示意图,在Arduino IDE里面编程,就能想在Arduino里面操作操作IO1-13那样,
    pinMode(), digitalWrite()这样的函数单独操作这些端口。
    以下是MegaPI调用这些端口的定义文件在 ..\Arduino\libraries\makeblock\src:


    kittenblock中小学创客名师推荐的图形化编程软件

    #define PORT_1  (0x01)
    #define PORT_2  (0x02)
    #define PORT_3  (0x03)
    #define PORT_4  (0x04)
    #define PORT_5  (0x05)
    #define PORT_6  (0x06)
    #define PORT_7  (0x07)
    #define PORT_8  (0x08)
    #define PORT_9  (0x09)
    #define PORT_10 (0x0a)
    #define M1      (0x09)
    #define M2      (0x0a)
    #define PORT_11 (0x0b)
    #define PORT_12 (0x0c)
    #define PORT_13 (0x0d)
    #define PORT_14 (0x0e)
    
    #ifdef MeMbot_H
    #define PORT_RGB           (0x05)
    #define PORT_LightSensor   (0x06)
    #endif
    
    #define SLOT1       (1)
    #define SLOT2       (2)
    #define SLOT3       (3)
    #define SLOT4       (4)
    #define SLOT_1  SLOT1
    #define SLOT_2  SLOT2
    #define SLOT_3  SLOT3
    #define SLOT_4  SLOT4
    


    MegaPI与Arduino标准板卡的另一个区别,在于其SLOT插槽,连接电机,方便插拔。这个SLOT插槽,官网在MegaPI上没有注明型号。但在官网另一产品上,有标注类似绿色插槽是HT5.08标准的。注意,MegaPI的插槽不一样。而MegaPI的SLOT插槽是更小的HT3.96标准插槽。

    Tx80.jpg

    为了连接自己的步进电机,我第一次买错,买成HT5.08的。浪费了一笔采购费。

    HT插头和MegaPI实拍:
    IMG20160704115959.jpg


    MegaPI的电机供电接口,和Arduino一样使用标准的同心圆直流电源接口,外负内正。但是MegaPI可以承受比9V更高的电压:12V。
    我购买选用这种转接口,为MegaPI电机供电。
    T1BShOXApbXXXXXXXX_!!0-item_pic.jpg_80x80.jpg


    在搞懂MegaPI的接口后,在主板上插上相应的步进电机、编码电机驱动芯片。电机接上SLOT接口,就可以让电机转起来了。

    2 对顺利使用MegaPI所需要做的准备。

    首先我阅读了MakeBlock的官网和官方github源代码库。

    可以在
    https://github.com/Makeblock-off ... oardStepperTest.ino
    找到该例程,在Arduino IDE中,也可以找到该程序。

    arduinoIDE.png

    它可以控制步进电机做旋转运动。

    kittenblock中小学创客名师推荐的图形化编程软件

    /** 
     * \par Copyright (C), 2012-2016, MakeBlock 
     * @file    MegaPiOnBoardStepperTest.ino 
     * @author  MakeBlock 
     * @version V1.0.0 
     * @date    2016/05/06 
     * @brief   Description: this file is sample code for Stepper Driver device. 
     * 
     * Function List: 
      * 
      *    1. void MeStepper::moveTo(long absolute);  
      *    2. void MeStepper::move(long relative); 
      *    3. boolean MeStepper::run(); 
      *    4. void MeStepper::setMaxSpeed(float speed); 
      *    5. void MeStepper::setAcceleration(float acceleration); 
      *    6. void MeStepper::setMicroStep(int8_t value); 
      *    7. void MeStepper::enableOutputs(void); 
      * 
      * \par History: 
      * <pre> 
      * <Author>     <Time>        <Version>      <Descr> 
      * Mark Yan     2016/05/06    1.0.0          build the new. 
      * </pre> 
      */ 
     
    
     #include "MeMegaPi.h" 
     #include <SoftwareSerial.h> 
     
    
     MeStepperOnBoard stepper(SLOT_1);  
     
    
     void setup() 
     {   
       Serial.begin(9600); 
       // Change these to suit your stepper if you want 
       stepper.setMaxSpeed(1000); 
       stepper.setAcceleration(20000); 
       stepper.setMicroStep(16); 
       stepper.enableOutputs(); 
     } 
     
    
     void loop() 
     { 
       if(Serial.available()) 
       { 
         char a = Serial.read(); 
         switch(a) 
         { 
           case '0': 
           stepper.moveTo(0); 
           break; 
           case '1': 
           stepper.moveTo(200); 
           break; 
           case '2': 
           stepper.move(50); 
           break; 
           case '3': 
           stepper.move(100); 
           break; 
           case '4': 
           stepper.move(200); 
           break; 
           case '5': 
           stepper.move(400); 
           break; 
           case '6': 
           stepper.move(600); 
           break; 
           case '7': 
           stepper.move(4000); 
           break; 
           case '8': 
           stepper.move(8000); 
           break; 
           case '9': 
           stepper.move(3200); 
           break; 
         } 
       } 
       stepper.run(); 
     } 
    


    3 试用MegaPI控制步进电机,研制电路接线可靠性。

    将连接好HT3.96插头的步进电机插入MegaPI,接好MegaPI电源,USB线,即可测试步进电机。
    没有找到合适HT3.96接口步进电机的同学,建议直接在MakeBlock旗舰店购买。质量更有保证。
    http://item.jd.com/10066690351.html


    bujindianji.png


    测试视频如下:


    注意,在使用MegaPI时,记住要安装散热设施。MegaPI自带电机驱动芯片,发热量较大,良好的散热是保护芯片长久耐用的好方法。

    经测试,电机能够运动。接下来,就可以设计制作机械臂,并用步进电机加以驱动了。

    4 制作Delta机械臂的初步设想,设计图纸,源程序。

    MegaPI自带4路步进电机驱动SLOT插座,使用它控制机器人是个很好的选择。它连接电机,连线简单,集成度高。选择它控制Delta机械臂,实际需要使用3个电机控制插座。

    Delta机械臂方面,因为Delta3D打印机设计方案比较成熟,目前销量大,零配件便宜。所以我打算按照Delta3D打印机方案制作机械臂,只是摒弃掉打印机的吐丝机。只要其机械臂运动系统即可。

    我选择repreappro.com提供的Delta3d打印机方案Fisher,来制作我的Delta机械臂系统。该方案的官方制作文档在这里:
    https://reprappro.com/documentation/fisher-1/


    reprappro是开源3D打印机的创始人Adrian Bowyer设立的企业。

    Adrian Bowyer.png

    现在的开源桌面3D打印机方案实际最初都源自reprap。
    RepRap的设计思想,是运用最少的工业化零件,只依靠3D打印机和激光切割机,设计出器械。让大家体会DIY的乐趣。大家现在能便宜使用的桌面型3d打印机,以前其机械零件繁多,成本很高,所以该行业只有Strasys和3DSystem才愿意投资做研发生产。Adrain的reprap项目花了很多功夫,机械设计上即便使用公差大,精度低3D打印件和激光切割件,机械也可以正常运转。大幅降低了3D打印机的制作成本。

    选择reprappro fisher制作机械臂,可以重用到我的老式reprappro mendel 2的零件。我把老的打印机M8光轴拆下,即可组装成一台Delta机械臂。螺钉体系也是原来的M3螺钉。多么巧妙的再利用。


    5 delta机械臂的制作过程

    首先,按照Fisher说明文档BOM零件清单,打印相关零件。

    我使用玉米塑料SLA来打印零件。这样,零件尺寸更加精确。而且,我的ABS塑料打印机reprappro mendel 2,上文所述,已经被我拆掉用来制作本机械臂了。-__-!

    需要打印的零部件在这里:Delta机械臂零件

    IMG20160704120235.jpg

    其中挤出机Extruder的零件不要打印,因为我们只要3D打印机的Delta机械臂部分,不要它吐塑料丝。
    另外准备好LM8UU直线轴承6个,套在M8光轴上使用。M8光轴长度420毫米6根。
    准备好MXL同步轮和同步带。这些都是3d打印机常用零件,在淘宝上几十块钱就能买到,价格便宜。精度又不低,非常有益于自己DIY制作机械。

    需要用激光切割机制作的零件在这里:Delta机械臂所需激光切割亚克力件
    IMG_20160708_122251.jpg

    在Arduino.cn论坛的支持下,论坛为我定做了以上激光切割亚克力零件。非常感谢论坛支持我们学习开源硬件设计,非常敬佩论坛工作人员的专业态度。

    接下来开始按照官方文档拼装Delta机械臂的机架。

    准备好材料:光轴,螺钉,和Bracket零件。

    IMG_20160711_152824.jpg

    安装说明文档拼装:

    IMG_20160711_154215.jpg

    装好3个电机和光轴后,拿出激光切割的亚克力件,拼装底盘。

    IMG_20160711_154748.jpg


    底盘插入到电机光轴上,用3D打印件Kinematic Mount固定。
    IMG_20160711_161801.jpg

    螺丝要用内六角螺丝固定,用劲扭,这个螺丝固定好底盘后,很牢固。

    IMG_20160711_161830.jpg

    底盘固定好后的俯视图是这样。

    IMG_20160711_161838.jpg

    注意别压着电机线。

    IMG_20160711_162742.jpg

    以上是Delta机械臂和官方说明文档图片的比对。结构上没有太大问题。

    下面制作开始机械臂了。

    首先这里难倒了我。

    MegaPI需要控制步进电机提拉滑块,滑块带动机械臂运动。而滑块和机械臂的连接使用球形关节。
    根据我查看淘宝上Delta机械臂的设计方案,都是使用现成的球型关节轴承。
    但是reprap官方为了DIY精神,选择自己制作球形关节,它建议使用钢球,打孔攻丝。

    RRP-FISH1-022-300x200.jpg
    就是这一步,把钢球打半孔后攻丝,上到M3螺钉上面,做成球形关节。

    我请教了贵州大学的机加工老师后才发现:

    妈呀?钢球可是经过淬火热处理工艺的,表面强度高,根本不适合打孔攻丝。需要重新加热,在空气中缓慢冷却,才能软化表面,用车床打孔。吐血啊。
    又联系淘宝,有唯一一家店面承接钢球开孔攻丝,人家制作12mm直径以上的。reprap要求6mm直径的小球开孔,这么精细的活儿,又只有很小的加工订单量,老板直接不干。

    多翻思索,决定换为POM塑料小球打孔。同样润滑,而且POM塑料方便机加工。目前笔者我跑了2个周末。打孔已经成功,攻丝弄不了,决定开孔后直接用螺丝攻上去,霸王硬上弓......

    -_-!!!

    下周末去机加工车间,再进行球关节制作,随后汇报情况。
    将POM塑料球在车床上夹紧,选择M2.7-2.8直径范围钻头,1400转/分钟转速,
    1.在塑料球顶用顶针车出凹陷,方便第2步操作钻头定位。
    2.顶针更换为上述钻头,钻头给进4mm,打半孔。
    IMG_20160806_144925.jpg

    M3螺钉即可直接自攻方式上入半孔小球,造出球形关节。M3×16mm的螺钉也已经买到。拼装后关节臂长56mm+3mm 有点长,实在拧不进去了。

    IMG_20160817_153932.jpg

    接下来做好3个。

    IMG_20160817_163041.jpg

    对做好球型关节的滑块零件继续装配,在“双眼”处嵌入LM8UU直线轴承。
    就像这样:

    IMG_20160817_170413.jpg

    轴承装入后用M3螺钉固定,滑块零件上同样留有M3螺钉和螺帽位置,按照图中位置装入拧紧固定轴承。
    然后将滑块按照轴承位置插入Delta结构塔的M8光轴。保证滑块能够上下正常滑动。

    IMG_20160817_170213.jpg

    滑块上的球型关节安装方向要注意,选择向内对准圆心。

    安装好滑块后,我们需要对Delta结构塔封顶。
    首先找出封顶零件1285,和随动轮装配零件1243:


    IMG_20160818_163653.jpg

    1285需要装配到每一对M8轴承上,1243和随动轮组合挂载到1285上。

    1243随动轮这样装配:
    IMG_20160818_165343.jpg

    1243V型槽一侧为六方型开口,嵌入一个M3螺帽,另一侧为圆形开口,嵌入M3螺钉,螺钉中间穿入两个428轴承,轴承外侧用垫圈固定位置,作为后面要说到的MXL步进皮带的随动轮。

    IMG_20160818_165627.jpg

    然后将1243按这个方向挂载到1285零件上。1243留有M3螺母位置,1285留有M3螺钉位置,轻轻上好,不要拧紧,这个步骤1243零件方向为3D打印堆集方向,强度不高,容易开裂。

    IMG_20160818_170039.jpg

    以上是1243和1285装配好后的样子。

    IMG_20160818_170647.jpg

    1285零件也有两对M3螺钉需要装配,用在封顶时固定M8光轴对。所以保持螺钉螺帽宽松。
    好了,准备好3对1285+1243:

    IMG_20160822_105910.jpg

    接下来开始封顶!

    IMG_20160822_110727.jpg

    将1285的M8光轴预留孔对准光轴,装入后拧紧M3螺钉固定。

    接着安装效应器球型关节。关节安装方法和安装尺寸完全和滑块相同。取出效应器零件,上面留有M3螺钉孔,插入M3*16mm螺钉,并拧上螺帽固定好位置,螺钉顶部上入球型关节。每一对球关节距离等同滑块球关节距离。

    取出2只激光切割好的亚克力半机臂零件,用M3*8mm螺钉螺母轻轻拧住。合并为一只。
    共需要制作6只机臂。

    用手扳开机臂末端,夹住球型关节。

    IMG_20160829_095016.jpg

    每个滑块左右两侧球型关节与效应器左右两侧球型关节分别连接,形成可以移动的平行四边形连接。
    平行四边形连接是可以平移滑动的,我们用手移动滑块测试一下,保证效应器正常随动。



    然后使用MegaPI的Sketch例程序Me_MegaPiOnBoardStepper连接每个步进电机进行测试:



    经测试,电机能够带动Delta机械臂运动。
    接下来,我们准备给MegaPI烧录Marlin固件控制程序。

    Marlin是3D打印机固件控制程序的一种。

    为MegaPI准备的Marlin固件在这里:
    https://github.com/Makeblock-official/Marlin-for-mGiraffe
    将整个目录下载回来,用Arduino Sketch打开marlin.ino文件,目录中其他相关文件会跟着打开。

    marlin.png

    Marlin可以接受G代码,翻译,控制步进电机推动机械臂运动,并挤压塑料丝,形成打印件。

    为MegaPI准备的Marlin硬件是用于控制MakeBlock的mGiraffe Delta 3D打印机套件的。
    这次我们只是自己组装一台简易Delta机械臂,使用机械臂的运动功能,不涉及塑料融化吐丝,所以修改Marlin程序的机械部分参数,将Makeblock mGiraffe的机械臂尺寸改为Reprappro Fisher的尺寸即可实现控制。

    该尺寸的修改说明,我搜索到这篇帖子
    http://tieba.baidu.com/p/3021889363
    在marlin目录下有Configuration.h文件

    808c46f2b21193130895d63667380cd793238db6.png

    以上4个字段需要修改。

    经测量,对上示意图的:
    第一个参数修改为160mm
    第二个参数修改为125mm
    第三个参数修改为28mm
    第四个参数修改为18mm
    另外,机械臂的安全移动半径为60mm

    kittenblock中小学创客名师推荐的图形化编程软件

    //===========================================================================
    //============================== Delta Settings =============================
    //===========================================================================
    // Enable DELTA kinematics and most of the default configuration for Deltas
    #define DELTA
    
    #if ENABLED(DELTA)
    
      // Make delta curves from many straight lines (linear interpolation).
      // This is a trade-off between visible corners (not enough segments)
      // and processor overload (too many expensive sqrt calls).
      #define DELTA_SEGMENTS_PER_SECOND 120
    
      // NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them
    
      // Center-to-center distance of the holes in the diagonal push rods.
      //#define DELTA_DIAGONAL_ROD 240.0 // mm
      #define DELTA_DIAGONAL_ROD 160.0 // mm
      
      // Horizontal offset from middle of printer to smooth rod center.
      //#define DELTA_SMOOTH_ROD_OFFSET 165.0// mm
      #define DELTA_SMOOTH_ROD_OFFSET 125.0// mm
      
      // Horizontal offset of the universal joints on the end effector.
      //#define DELTA_EFFECTOR_OFFSET 35.0 // mm
      #define DELTA_EFFECTOR_OFFSET 28.0 // mm
      
      // Horizontal offset of the universal joints on the carriages.
      //#define DELTA_CARRIAGE_OFFSET 12 // mm
      #define DELTA_CARRIAGE_OFFSET 18 // mm
      
      // Horizontal distance bridged by diagonal push rods when effector is centered.
      #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET-DELTA_EFFECTOR_OFFSET-DELTA_CARRIAGE_OFFSET)
    
      // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
      //#define DELTA_PRINTABLE_RADIUS 90
      #define DELTA_PRINTABLE_RADIUS 60
    #endif
    


    我选用的电机同步带为MXL标准同步带,MXL20齿同步轮。


    MXL皮带参数.jpg
    MXL同步带的每一齿距离为2.032mm
    我选用的同步轮为20齿。
    这也需要在Configuration.h文件相应位置作修改。

    kittenblock中小学创客名师推荐的图形化编程软件

    #define XYZ_BELT_PITCH 2.032
    //#define XYZ_PULLEY_TEETH 18
    #define XYZ_PULLEY_TEETH 20


    以上参数改好之后,在arduino sketch IDE中运行Marlin代码。将Marlin固件传输烧录到MegaPI。

    串口编辑器.png

    点击串口监视器,进入串口调试。
    选择输入结束符 NL CR 通讯速率115200。

    Marlin固件显示以下文字,并等待输入。

    串口界面.png

    上图Marlin界面启动信息全文:

    kittenblock中小学创客名师推荐的图形化编程软件

    start
    echo:Marlin 1.1.0-RC3
    echo: Last Updated: 2015-12-01 12:00 | Author: (Makeblock, mGiraffeV1.0)
    Compiled: Sep 12 2016
    echo: Free Memory: 3394  PlannerBufferBytes: 1232
    echo:Hardcoded Default Settings Loaded
    echo:Steps per unit:
    echo:  M92 X157.48 Y157.48 Z157.48 E185.20
    echo:Maximum feedrates (mm/s):
    echo:  M203 X500.00 Y500.00 Z500.00 E25.00
    echo:Maximum Acceleration (mm/s2):
    echo:  M201 X9000 Y9000 Z9000 E10000
    echo:Accelerations: P=printing, R=retract and T=travel
    echo:  M204 P3000.00 R3000.00 T3000.00
    echo:Advanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s),  Z=maximum Z jerk (mm/s),  E=maximum E jerk (mm/s)
    echo:  M205 S0.00 T0.00 B20000 X20.00 Z20.00 E5.00
    echo:Home offset (mm):
    echo:  M206 X0.00 Y0.00 Z0.00
    echo:Endstop adjustment (mm):
    echo:  M666 X0.00 Y0.00 Z0.00
    echoelta settings: L=delta_diagonal_rod, R=delta_radius, S=delta_segments_per_second
    echo:  M665 L160.00 R79.00 S120.00
    echo:Material heatup parameters:
    echo:  M145 M0 H180 B70 F255
    echo:  M145 M1 H240 B100 F255
    echoID settings:
    echo:  M301 P16.66 I1.19 D58.14 C100.00 L20
    echo:Filament settings: Disabled
    echo:  M200 D3.00
    echo:  M200 D0
    echo:Z-Probe Offset (mm):
    echo:  M851 Z-1.00
    echo:Bed correction(mm):
    echo:; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00
    echo:; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00
    echo:; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00
    echo:; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00
    echo:; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00
    echo:; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00
    echo:; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00
    echo:; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00
    echo:; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00; 0.00
    echo:SD init fail
    


    这样,MegaPI的Marlin固件就烧写好了。通过串口发送G代码命令,MegaPI中的Marlin固件就可以接收处理,并驱动Delta机械臂做相应运动了。

    下面我们发送G代码命令到MegaPI,驱动Delta机械臂进行测试:

    我们要使用的G代码命令为:

    G1 S2 X5 Y0 Z0 F500

    X___ Y___ Z____ 这是需要机械臂到达的XYZ坐标。输入正负数都可以。
    F___这个是机械臂的运动速度。

    OK。我们开始测试。



    测试基本完成后,我们使用Processing做一个小程序,在电脑上用键盘直接控制机械臂。
    借助论坛网友@夏夜繁星 控制四自由度舵机机械臂的程序:Processing与arduino互动之4自由度桌面码垛机
    我对该程序进行了简化,不需要计算关节动力学,只是把XYZ数值通过串口发送给MegaPI而已:

    大家可从https://github.com/qq95538/DeltaArm目录下载最新版本。


    kittenblock中小学创客名师推荐的图形化编程软件

     /**
     processing control a Marlin Delta 3D printer arm
     by b.h. song
     190808149@qq.com
     */
     
     /**
     *processing control a 4-DOF mechanical arm
     *by jorneryChen 
     *
     *my emial address is 1274104408@qq.com
     */
    
     import processing.serial.*;
     Serial port;
     boolean bToSend;
     String inString;
     int lf = 10;      // ASCII linefeed
     int x=0;
     int y=0;
     int z=0;
     int a=2;
     PFont font;
     void setup()
     {
       size(500,500);
       frameRate(53);
       printArray(Serial.list()); 
       port = new Serial(this, Serial.list()[0], 115200); 
       port.bufferUntil(lf); 
    
       
       smooth();
     }
     void draw()
     {
    
       inter_face();
       picture();
       if(bToSend) send_data();
     }
    
     void inter_face()
     {
        background(255);
       textSize(40);
       fill(245,12,32);
       text("C",5,40);
       fill(38,245,12);
       text("L",35,40);
       fill(12,91,245);
       text("Y",55,40);
       fill(66,204,227);
       textSize(15);
       text("Redesigned by song, which was an originally u-arm",100,20);
       text("similar robot control program authorized by yao.",100,40);
       textSize(30);
       fill(211,191,0);
       text("this interface shows data only",5,80);
       fill(0);
       textSize(20);
       text("X=",5,110);
       text(int(x),35,110);
       text("Y=",85,110);
       text(int(y),115,110);
       text("Z=",165,110);
       text(int(z),195,110);
       
       
     }
     void picture()
     {
       strokeWeight(4);
       fill(255);
       rect(5,160,490,320);
       ellipse(170,320,300,300);
       stroke(0);
       line(415,170,415,470);
       float m=map(x,-100,100,40,300);
       float n=map(y,-100,100,450,190);
       fill(0,0,150);
       ellipse(m,n,30,30);
       float l=map(z,-100,100,470,170);
       l=constrain(l,170,470);
       ellipse(415,l,30,30);
     }
     void keyPressed()
     {
        switch(key) {
        case 'A': 
            x-=a;
        break;
        case 'D': 
            x+=a;
        break;
        case 'W': 
            y+=a;
        break;
        case 'S': 
            y-=a;
        break;
        case 'I': 
            z+=a;
        break;
        case 'K': 
            z-=a;
        break;
        }
     }
     void keyReleased() 
     {
       bToSend=true;
     }
    
     void send_data()
     {
       String s;
       s = "G1 S2 X" + x + " Y" + y + " Z" + z + " F1000";
       println(s);
       port.write(s);
       port.write(13);
       port.write(10);
       bToSend=false;
     }
     
     void serialEvent(Serial p) { 
      inString = p.readString(); 
      print(inString);
    } 


    电脑插上MegaPI,运行程序:

    cly程序.png

    W前  S后  A左 D右, I上 K下。控制机械臂运动。
    OK, 可以进行测试了:

    测试成功。




  • TA的每日心情
    慵懒
    2019-1-29 12:49
  • 签到天数: 26 天

    [LV.4]偶尔看看III

    发表于 2016-7-20 16:45 | 显示全部楼层
    在哪弄的?拍个实物图看看呀。
  • TA的每日心情
    无聊
    2017-6-24 14:20
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2016-7-25 12:28 | 显示全部楼层
    fenggr 发表于 2016-7-20 16:45
    在哪弄的?拍个实物图看看呀。

    您好,帖子正在写作中,现在实物图已上传。正在制作,还没做好。请查看。
  • TA的每日心情
    无聊
    2017-6-24 14:20
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2016-8-7 10:38 | 显示全部楼层
    fenggr 发表于 2016-7-20 16:45
    在哪弄的?拍个实物图看看呀。

    您好,已经制作好球型关节,请查看最新进度。
  • TA的每日心情
    奋斗
    2015-8-28 10:33
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2016-10-21 10:03 | 显示全部楼层
    大神,如果用mega2560+ramps1.4的主板来做机器人的marlin固件源该怎么改啊
  • TA的每日心情
    无聊
    2017-6-24 14:20
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2016-10-21 20:27 | 显示全部楼层
    981510493 发表于 2016-10-21 10:03
    大神,如果用mega2560+ramps1.4的主板来做机器人的marlin固件源该怎么改啊

    ramps1.4是最常用的扩展版了,marlin硬件有现成的3D打印机配置方案。直接在官方网站下载烧录即可使用。改造控制机器人,至少可以配合控制3路电机,还可以独立控制1路电机,把机器人关节运动行程,输入到G代码中,即可将3D打印机控制器当作机器人的控制器。
  • TA的每日心情

    2016-11-8 07:51
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2016-11-10 17:16 | 显示全部楼层
    大神,我用MegaPi用Arduino IDE上传程序时出现错误,如下:
    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x56
    avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x65
    avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x72
    avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x73
    avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x69
    avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x6f
    avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x6e
    avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x3a
    avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x20
    avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x30
    上传项目出错
    Arduino 选择的UNO
    com口没错
    编译器用的是AVRISP MKII
  • TA的每日心情
    无聊
    2017-6-24 14:20
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2016-11-10 21:41 | 显示全部楼层
    MegaPi使用Mega2560核心。应该在IDE选Mega2560.
  • TA的每日心情
    开心
    2016-11-25 09:16
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2016-11-25 21:48 | 显示全部楼层
    来向大神学习了

    该用户从未签到

    发表于 2017-4-9 20:29 | 显示全部楼层
    楼主还在吗,想问下这整个过程是什么样的,谢谢!
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    【原创】全球最小口袋3D打印机mini one直播教程贴
    【原创】全球最小口袋3D打
    最近闲得蛋疼,没事搞个掌上3D打印机,先放效果图吧。 搞了半天,终于能正常打印,
    程序设计问题求大虾们帮帮忙
    程序设计问题求大虾们帮帮
    大家好,我是一个萌新想设计一个程序,现在遇到困难了。当运行按下按钮,电机会向end
    请问 3块 MCP 4725 ,能否同时接在一起使用?
    请问 3块 MCP 4725 ,能否
    买来时,ADDR是全开路的,使用代码中的所有地址,均无法使用。 // For Adafruit M
    打砖块游戏
    打砖块游戏
    **** 本内容被作者隐藏 ****
    OLED 128*64自制可达10000000个选项的菜单(已更新)
    OLED 128*64自制可达10000
    OLED 128*64自制可达10000000个选项的菜单 温馨提示: 建议占个楼再食用本帖子
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表