找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4131|回复: 5
收起左侧

Arduino菜鸟新入坑想制作3D打印机 求指导

[复制链接]
ID:713174 发表于 2020-3-31 12:15 | 显示全部楼层 |阅读模式
按照下面的代码输入后IDE报错
求大神帮忙纠错 谢谢 新手刚入手的板子 想试一下进步电机怎么操作 UNO+CNC SHIELD V3+DRV8825 要做3D打印机的话也不知道这套配置是否可以 买了以后才发现v3板连线引脚的介绍并不是很详细 很多都是制作雕刻机的简单介绍 望大神指导一下 在此感谢


//下面是简单的步进电机控制程序,
#define EN  8     //步进电机使能端,低电平有效
#define X_DIR  5  //X轴 步进电机方向控制
#define Y_DIR  6  //Y轴 步进电机方向控制
#define Z_DIR  7  //Z轴 步进电机方向控制
#define X_STP  2  //X轴 步进控制
#define Y_STP  3  //Y轴 步进控制
#define Z_STP  4  //Z轴 步进控制
/*
//函数: step 功能: 控制步进电机方向,步数。
//参数: dir 方向控制,dirpin对应步进电机的DIR引脚,
Stepperpin 对应步进电机的step引脚,steps 步进的步数
//无返回值
Void step(boolean dir,byte dirPin,byte stepperPin,int steps)
{
digitalWrite(dirPin,dir);
delay(50);
for(inti=0;i<steps;i++){
digitalWrite(stepperPin,HIGH);
delayMicroseconds(800);
digitalWrite(stepperPin,LOW);
delayMicroseconds(800);
}
}
Void setup(){//将步进电机用到的IO管脚设置成输出
pinMode(X_DIR,OUTPUT);pinMode(X_STP,OUTPUT);
pinMode(Y_DIR,OUTPUT);pinMode(Y_STP,OUTPUT);
pinMode(Z_DIR,OUTPUT);pinMode(Z_STP,OUTPUT);
pinMode(EN,OUTPUT);
digitalWrite(EN,LOW);
}
Void loop(){
step(false,X_DIR,X_STP,200); //X轴电机 反转1圈,200步为一圈
step(false,Y_DIR,Y_STP,200); //Y轴电机 反转1圈,200步为一圈
step(false,Z_DIR,Z_STP,200); //Z轴电机 反转1圈,200步为一圈
delay(1000);
step(true,X_DIR,X_STP,200); //X轴电机 正转1圈,200步为一圈
step(true,Y_DIR,Y_STP,200); //Y轴电机 正转1圈,200步为一圈
step(true,Z_DIR,Z_STP,200); //Z轴电机 正转1圈,200步为一圈
delay(1000);
}


回复

使用道具 举报

ID:716703 发表于 2020-3-31 14:25 | 显示全部楼层
继上一个光驱激光打印机后又找到一个好玩的,3d打印机,相对于激光而言增加了z轴。i3属于入门级,相对于corexy和um而言价格低廉,易组装调试。材料大致清单:
2020铝材 250*2,390*2,310*2,410*2,100*1,150*1
角码*14
光轴:330*2,390*2,360*2(8mm)
42步进电机*5(40mm)
直线轴承*10(8mm)
同步轮*2,配套gt2皮带5m
惰性轮*2
丝杆(8mm) 330*2导程8
联轴器5mm*8mm*2
螺丝m4若干 m5若干(内六角配船型螺母)m3若干
220*220热床,220*220铝板
mk8近程挤出机带加热头
风扇*1
12v20a开关电源一个mega2560,reprap1.1,LCD2004,a4988*4,ntc热敏电阻
3d打印件一套总共四百左右,整机重量6kg。
大致装配过程
有点尴尬,组装过程照片不是太完整,大家将就一下
接下来就是软件调试。
采用开源marlin固件,现在已经更新到1.1.9,编辑软件采用arduino IDE1.6.5
下载好固件后选择marlin.ino打开
STRING_CONFIG_H_AUTHOR 设置固件作者信息,可在串口通信的时候看到。
SHOW_BOOTSCREEN
如果注释掉这行的话开机就不会显示初始画面,直接进入主界面。
STRING_SPLASH_LINE1
设置开机屏幕初始画面的第一行的文字,一般设置版本号。
STRING_SPLASH_LINE2
设置开机屏幕初始画面的第二行的文字,一般设置网站地址。
BAUDRATE 设置串口通信的波特率,一般默认是250000,不用修改,如果连接不上就改成115200
#define MOTHERBOAR 33 主板类型修改
#define EXTRUDERS 1 设置挤出机数量为1
#define TEMP_SENSOR_BED 1启用热床温度传感器
#define TEMP_SENSOR_0 1启用加热头温度传感器
HEATER_0_MAXTEMP 表示一号打印头的最大温度,HEATER_1_MAXTEMP 以此类推。BED_MAXTEMP 表示热床的最大温度。
温度数值建议根据实际情况保守设置,以免设置过大损坏硬件,或造成安全隐患,推荐打印头250,热床100,足以使用。
X_MIN_ENDSTOP_INVERTING 等系列参数设置为 true 表示将限位开关的信号反转,针对限位开关的常开和长闭状态,如触发状态不符合预期,可在此处修正。一般机械限位为常开,如果调试时xyz只能单向移动就需要修改此处
#define X_MAX_POS200
#define Y_MAX_POS200
#define Z_MAX_POS165 此处设置打印的最大尺寸

DEFAULT_AXIS_STEPS_PER_UNIT 后面的四个数字 {80,80,4000,500} ,分别表示XYZ和挤出机电机的步进数。XYZ电机步进公式为:
(360 / 电机步距角 * 细分数 ) / (同步带齿距 * 齿数)
一般现在3D打印机使用的42步进电机步距角为1.8度,细分数根据主板上跳帽的设置,一般设置成16,同步带齿距一般使用的是2mm的,齿数一般为16或者20齿,可以自己数数。如果Z轴使丝杠的话,直接除以丝杆的导程即可。这样默认情况下可以算得:(360/ 1.8 * 16) / (2 * 20) = 80
挤出机步进数没有很精确的计算公式,目前通常使用的近程挤出机设置为100,远程挤出机设置为150,然后根据实际打印的出丝多少微调,要出多点步进数就调大,出少点就调小
DEFAULT_MAX_FEEDRATE 后面的四个数字 {300, 300, 5, 25} ,分别表示XYZ和挤出机电机的最大移动速度。在实际测试不失步的情况下设置的越大越好,此值和电机步进数相关,步进数越大,对应的移动速度设置越小。所以使用大细分数或者丝杆需要减小此值才能保证电机不失步。
DEFAULT_MAX_ACCELERATION 后面的四个数字 {3000,3000,100,10000} ,分别表示XYZ和挤出机电机的最大加速度。三角洲机型的加速度可以设置的大些,其他机型小些,原则也使实际测试,在不失步的情况下设置的越大越好。
去掉 REPRAP_DISCOUNT_SMART_CONTROLLER 行的注释,可开启2004液晶屏功能。特别强调,如果使用非配套Makeboard液晶屏,液晶屏无法使用的话,可能时液晶屏牛角插座缺口方向是反的,EXP1和EXP2线的接头凸起处换各方向强行插入即可。
LCD2004上带有sd卡槽,用于脱机打印,不过到目前为止本人还没有找到一个能用的sd卡。
目前桌面级打印精度为0.1mm,打印材料一般为PLA和abs,PLA为环保型材料,收缩率小,打印温度185°左右,可以在不开启热床条件下打印。abs对温度要求就高一点,同时收缩率比PLA高,不易附着在打印平台上,一般打印温度在230左右,热床90-100.两种材料相比abs材料强度高,PLA硬度高,脆。简单点就是abs耐摔,耐腐蚀,一般用于零件打印。PLA易成型,但容易断裂,一般用于模型,玩具等方面。
关于线轨与光轴的选择:线轨的精度要高一点但价格也更贵,一根好一点的线轨差不多要100左右。如果经济允许可以选择线轨。但个人觉得对于桌面级的光轴够用。
附上打印件和marlin固件,还有什么问题可以在评论区提出,谢谢

002007rjocbhfwy38bbbjc.png
220601qg7q77gb979lqh4n.jpg
002014f4s5zqb6sx505mi0.png
215904x776wfw2fdnfb8gb.jpg
220431k5xk0h5cuh8xjjxd.jpg
220814pqbsqq0700n7a2i1.jpg
220935pf9f8nadwyddn8aj.jpg

51黑论坛_3D打印机打印件.zip

523.72 KB, 下载次数: 26

51黑论坛_Marlin-1.1.9.7z

1.48 MB, 下载次数: 21

评分

参与人数 1黑币 +60 收起 理由
admin + 60 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:723793 发表于 2020-6-26 10:15 | 显示全部楼层
#define EN  8     //步进电机使能端,低电平有效 #define X_DIR  5  //X轴 步进电机方向控制 #define Y_DIR  6  //Y轴 步进电机方向控制 #define Z_DIR  7  //Z轴 步进电机方向控制 #define X_STP  2  //X轴 步进控制 #define Y_STP  3  //Y轴 步进控制 #define Z_STP  4  //Z轴 步进控制  //函数: step 功能: 控制步进电机方向,步数。 //参数: dir 方向控制,dirpin对应步进电机的DIR引脚,  //无返回 void step(boolean dir,byte dirPin,byte stepperPin,int steps) { digitalWrite(dirPin,dir); delay(50); for(int i=0;i<steps;i++){ digitalWrite(stepperPin,HIGH); delayMicroseconds(800); digitalWrite(stepperPin,LOW); delayMicroseconds(800); } } void setup(){//将步进电机用到的IO管脚设置成输出 pinMode(X_DIR,OUTPUT);pinMode(X_STP,OUTPUT); pinMode(Y_DIR,OUTPUT);pinMode(Y_STP,OUTPUT); pinMode(Z_DIR,OUTPUT);pinMode(Z_STP,OUTPUT); pinMode(EN,OUTPUT); digitalWrite(EN,LOW); } void loop(){ step(false,X_DIR,X_STP,200); //X轴电机 反转1圈,200步为一圈 step(false,Y_DIR,Y_STP,200); //Y轴电机 反转1圈,200步为一圈 step(false,Z_DIR,Z_STP,200); //Z轴电机 反转1圈,200步为一圈 delay(1000); step(true,X_DIR,X_STP,200); //X轴电机 正转1圈,200步为一圈 step(true,Y_DIR,Y_STP,200); //Y轴电机 正转1圈,200步为一圈 step(true,Z_DIR,Z_STP,200); //Z轴电机 正转1圈,200步为一圈 delay(1000); }改成这个
回复

使用道具 举报

ID:723793 发表于 2020-6-26 10:15 | 显示全部楼层
#define EN  8     //步进电机使能端,低电平有效 #define X_DIR  5  //X轴 步进电机方向控制 #define Y_DIR  6  //Y轴 步进电机方向控制 #define Z_DIR  7  //Z轴 步进电机方向控制 #define X_STP  2  //X轴 步进控制 #define Y_STP  3  //Y轴 步进控制 #define Z_STP  4  //Z轴 步进控制  //函数: step 功能: 控制步进电机方向,步数。 //参数: dir 方向控制,dirpin对应步进电机的DIR引脚,  //无返回 void step(boolean dir,byte dirPin,byte stepperPin,int steps) { digitalWrite(dirPin,dir); delay(50); for(int i=0;i<steps;i++){ digitalWrite(stepperPin,HIGH); delayMicroseconds(800); digitalWrite(stepperPin,LOW); delayMicroseconds(800); } } void setup(){//将步进电机用到的IO管脚设置成输出 pinMode(X_DIR,OUTPUT);pinMode(X_STP,OUTPUT); pinMode(Y_DIR,OUTPUT);pinMode(Y_STP,OUTPUT); pinMode(Z_DIR,OUTPUT);pinMode(Z_STP,OUTPUT); pinMode(EN,OUTPUT); digitalWrite(EN,LOW); } void loop(){ step(false,X_DIR,X_STP,200); //X轴电机 反转1圈,200步为一圈 step(false,Y_DIR,Y_STP,200); //Y轴电机 反转1圈,200步为一圈 step(false,Z_DIR,Z_STP,200); //Z轴电机 反转1圈,200步为一圈 delay(1000); step(true,X_DIR,X_STP,200); //X轴电机 正转1圈,200步为一圈 step(true,Y_DIR,Y_STP,200); //Y轴电机 正转1圈,200步为一圈 step(true,Z_DIR,Z_STP,200); //Z轴电机 正转1圈,200步为一圈 delay(1000); }改成这个好了
回复

使用道具 举报

ID:723793 发表于 2020-6-26 10:16 | 显示全部楼层
#define EN  8     //步进电机使能端,低电平有效
#define X_DIR  5  //X轴 步进电机方向控制
#define Y_DIR  6  //Y轴 步进电机方向控制
#define Z_DIR  7  //Z轴 步进电机方向控制
#define X_STP  2  //X轴 步进控制
#define Y_STP  3  //Y轴 步进控制
#define Z_STP  4  //Z轴 步进控制

//函数: step 功能: 控制步进电机方向,步数。
//参数: dir 方向控制,dirpin对应步进电机的DIR引脚,

//无返回
void step(boolean dir,byte dirPin,byte stepperPin,int steps)
{
digitalWrite(dirPin,dir);
delay(50);
for(int i=0;i<steps;i++){
digitalWrite(stepperPin,HIGH);
delayMicroseconds(800);
digitalWrite(stepperPin,LOW);
delayMicroseconds(800);
}
}
void setup(){//将步进电机用到的IO管脚设置成输出
pinMode(X_DIR,OUTPUT);pinMode(X_STP,OUTPUT);
pinMode(Y_DIR,OUTPUT);pinMode(Y_STP,OUTPUT);
pinMode(Z_DIR,OUTPUT);pinMode(Z_STP,OUTPUT);
pinMode(EN,OUTPUT);
digitalWrite(EN,LOW);
}
void loop(){
step(false,X_DIR,X_STP,200); //X轴电机 反转1圈,200步为一圈
step(false,Y_DIR,Y_STP,200); //Y轴电机 反转1圈,200步为一圈
step(false,Z_DIR,Z_STP,200); //Z轴电机 反转1圈,200步为一圈
delay(1000);
step(true,X_DIR,X_STP,200); //X轴电机 正转1圈,200步为一圈
step(true,Y_DIR,Y_STP,200); //Y轴电机 正转1圈,200步为一圈
step(true,Z_DIR,Z_STP,200); //Z轴电机 正转1圈,200步为一圈
delay(1000);
}

这个给你改了
回复

使用道具 举报

ID:723793 发表于 2020-6-26 10:18 | 显示全部楼层
你这配置行啊,才占3%空间,动手吧,用舵机,实在不行用光驱,私聊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表