基于不器3D打印机_改装绘图机方案教程

 

重要说明:

没有买mega2560的板子,因为最近价格有些贵。12块的8266手上有几块。这个绘图机可能和大家都的不一样,只是一个玩具,验证性的原型机。

  • 这只是一个原型机,它的绘制速度非常慢,只有大约30mm/s。原因主要是用的不是C语言实现,而是micro python脚本语言实现。
  • 只能做个demo演示。限位开关都没有装,装了目前也用不上,原因是esp8266能用的脚太少,没有足够安全可用的GPIO, 换成esp32才能加。
  • 没有大量测试,除了慢,按照要求生成gcode它还是能工作的。

 

教程开始:

  1. 改装硬件部分

材料准备:

  1. 不器方案3D打印机相关配件。
  2. Esp8266 node-mcu一块。
  3. 一支写字笔,带弹簧的那种。

 

  1. 机器安装

完如下图,只用XYZ相关部分,不用安装挤出相关部件,但要安装打印头的铝块。

  

基于不器3D打印机_改装绘图机方案教程_第1张图片

基于不器3D打印机_改装绘图机方案教程_第2张图片

  1. 绘制笔改装

这种笔很常见,把笔打开,削掉一部分笔芯,然后把弹簧放在顶部,解决绘制过程中纸面不平的问题,由于笔尖有弹性可以自动补偿。这个是参考了大鱼。

绘制笔的安装,笔刚好能放进打印洞,然后用2根扎带穿过笔上端的孔,绕过打印头中间轴固定好笔。

  1. Ramp1.4/1.5连接esp8266控制板

esp8266只控制step/dir两种信号,共计6个,同时输出5V供电机驱动模块。42电机驱动使能脚全部接地。虽然esp8266有更多的GPIO脚,但是它们是复用的,使用了会引起一些问题,比如下载受影响。这6个脚是摸索出来的,可以安全使用。

X电机:

Xstep-> esp8266控制板D6也就是GPIO12

Xdir-> esp8266控制板D5也就是GPIO14

Y电机:

Ystep-> esp8266控制板D1也就是GPIO5

Ydir-> esp8266控制板D2也就是GPIO4

Z电机:

Zstep-> esp8266控制板D0也就是GPIO16

Zdir-> esp8266控制板D7也就是GPIO13

具体连接参考如下图:

  

基于不器3D打印机_改装绘图机方案教程_第3张图片

 

基于不器3D打印机_改装绘图机方案教程_第4张图片

基于不器3D打印机_改装绘图机方案教程_第5张图片

 

还有ramps的供电:

是用8266上的5V供电,也就是usb供的电。

    

基于不器3D打印机_改装绘图机方案教程_第6张图片

完整的电路连接:

基于不器3D打印机_改装绘图机方案教程_第7张图片

以上硬件完成后,

 

  1. 改装软件部分

大致流程是:

  • 先用inkscape生成svg矢量图,比如调整到合适的大小。
  • 然后用转换svg成gcode。
  • 下载gcode到esp8266上,它有4MB flash.
  • 调整XYZ工作点
  • 执行绘制程序,指定一下绘制文件名,运行脚本程序开始绘制。

 

A)矢量图编辑

矢量图编辑软件,选择的是开源免费的inkscape1.0.2.去官网下载。

如果拿一张图片制作矢量图,有时候还是很麻烦的,如果本身就是线条型图片,相对容易得多。如果能下到svg这样的矢量图最好。

以葫芦娃图片为例生成svg文件。

基于不器3D打印机_改装绘图机方案教程_第8张图片

插入inkscape,会自动弹出导入选择ok

基于不器3D打印机_改装绘图机方案教程_第9张图片

基于不器3D打印机_改装绘图机方案教程_第10张图片

 

进入path/trace bitmap

基于不器3D打印机_改装绘图机方案教程_第11张图片

选择autotrace效果比较好,OK后关掉

基于不器3D打印机_改装绘图机方案教程_第12张图片

 

点击红框内的path,进入路径模式,会显示path信息。如下图,说明路径信息已经生成。

基于不器3D打印机_改装绘图机方案教程_第13张图片

 

点击红框内,进入对象模式,点击图片,然后按del键删除图片,只保留path对象。

基于不器3D打印机_改装绘图机方案教程_第14张图片

然后如下图,只有path.

基于不器3D打印机_改装绘图机方案教程_第15张图片

调整大小,和位置。

基于不器3D打印机_改装绘图机方案教程_第16张图片

 

输出保存为svg文件。

基于不器3D打印机_改装绘图机方案教程_第17张图片

 

  1. 转换svg成gcode

 Inkscape  扩展插件gcodeplot有这个功能。

不过它原先是绘制区域的方式,我改了一下只描边,直接用命令行进行转换gcode。

转换工具代码:

https://github.com/chuanjinpang/esp8266_upy_plotter_controller_fireware/tree/main/svg-gcodeplot

转换命令:

python3 gcodeplot.py   -Z 2.5 -Z 0 -t 0.125 your_file_name.svg

转换结果:

生成带注释的your_file_name.svg.gcode

和一个不带注释,更紧凑的rmc_your_file_name.svg.gcode

由于上传速度慢,一般使用rmc_your_file_name.svg.gcode

 

 

参数说明:

 

 -Z|--lift-delta-z=z: amount to lift for pen-up (millimeters) Z轴提笔高度,相对于z-work的。如果板子很平,可以设置得比较小。

 -z|--work-z=z: z-position for drawing (millimeters) Z轴工作高度,一般设置为0.因为没有限位。

 -t|--tolerance=x: ignore (some) deviations of x millimeters or less [default 0.05] 绘制精度,越小越精细,当然gcode文件也会越大。绘制时间也会越久。

 

基于不器3D打印机_改装绘图机方案教程_第18张图片

 可以用些软件查看生成的gcode 绘制结果。这个网页查看不错:https://ncviewer.com/

 

  1. 下载gcode到esp8266上

相关windows软件下载地址:

https://github.com/chuanjinpang/esp8266_upy_plotter_controller_fireware/tree/main/upy_windows_tool

可以使用MicroPython File Uploader,将gcode文件上传到esp8266上。

选择好串口,打开串口,选择要上传的文件,发送。

说明:不要使用uPyCraft上传,它好像会自动去掉\r\n这样的行,然后python逐行读取gcode会出现问题。

基于不器3D打印机_改装绘图机方案教程_第19张图片

 

上传完毕后,可以在uPyCraft/device文件夹下看到相对的xx.gcoe文件。

基于不器3D打印机_改装绘图机方案教程_第20张图片

  1. 调整XYZ工作点

这一步本来是不必要的,但是因为没有装限位器,所以要手工把X,Y,Z调整到合适的位置。

原代码如下位置为XY的零点。Z零点就是在纸面工作位置上。

基于不器3D打印机_改装绘图机方案教程_第21张图片

E执行绘制程序

个人喜欢用uPyCraft操作upy。简单快捷。

将绘制程序上传,py文件用uPyCraft上传没有问题。

绘制程序只有3个文件:

stepper.py

 

实现42步进驱动 A4988 或者TMC2225,驱动dir/step/en.

 

step(self, count)实现方向转动step,负值是反向,正值是挂电正向转step.

 

由于8266实际可用GPIO脚太少,只有6个可安全任意使用,其它脚会引起一些问题,比如使用GPIO15影响下载,运行后下载就状态不对了。

 

 

corexy.py

 

实现corexy的位置控制,

 

set_xy(self,ex,ey)驱动X,Y轴位置

 

set_z(sz,ez)驱动Z轴位置

 

注意这里Z轴是独立的,不是corexy的部件,原因是Z本身是独立的,如果是激光绘制,就没有Z轴步进的概念,只有一个控制信号。

 

可能将来会做一个激光雕刻的原型机。

 

draw_gcode.py

实现gcode绘制

 

draw_gcode_file(cxy,sz,gp,"3rect.svg.gcode")绘制指定的gcode.

 

由一个gcode_parse来解析gcode,支持最多4个参数。

 

def cxy_run_gcode_file(cxy,sz,gp,file_name)

 

解析器单独运行,负责解析,然后调用cxy_run_xyz()驱动3轴运行。

 

def cxy_run_one_gcode(cxy,sz,gp,line):

    update,x,y,z= gp.parse_one_gcode(line)

    if update:

        return cxy_run_xyz(cxy,sz,x,y,z)  

    else :

        return x,y,z  

 

 

在主绘制程序文件draw_gcode.py中,指定一下要绘制的gcode文件名:

draw_gcode_file(cxy,sz,gp,"rmc_plane_v.svg.gcode")

具体代码如下:然后点击>下载并运行。

基于不器3D打印机_改装绘图机方案教程_第22张图片

  1. 等待绘制完成

绘制有点慢,下面好像画了30分钟?

 

基于不器3D打印机_改装绘图机方案教程_第23张图片

  1. 调试

为啥用upy进行原型机开发,原因是快速,交互性调试。开发效率高,除了运行慢。

 

stepper.py 里面是步进电机控制的,可以来测试单个电机的操作。

基于不器3D打印机_改装绘图机方案教程_第24张图片

 

可以在console里面直接输入

sx = Stepper(14, 12, 13, speed=10000,name="x")

sx.step(100)进行交互性调试,这也是python方便强大的地方。

 

Corexy.py一样,有一个调试程序,也可以直接在console里面交互性调试。

基于不器3D打印机_改装绘图机方案教程_第25张图片

 

你可能感兴趣的:(DIY,干货,python)