欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

stm32开发3D打印机(一)——介绍(已完成)

程序员文章站 2022-06-18 18:30:39
如何运用stm32开发3D打印机...

如何运用stm32开发3D打印机

首先介绍一下我是如何开发的

这是我第一次写博客,关于stm32开源3D打印机我将在今后的一年里陆续写完
首先介绍一下本人,写这篇文章是于2020年8月开始,同时本人现在是一名准大二大学生,专业是电气工程及其自动化,在大一时参与了一些实验和项目并自学使用stm32。

我于6月开始在淘宝寻找一块合适的3D打印机开发板,以diy一部3D打印机
起初我发现Dlion的主板挺好的,但是拓展端口过少,尽管可以使用。
后来我找到了BIGTREETECH 的 SKR-PRO-V1.1,这块主板各个方面都相当的优秀。
如下图所示
stm32开发3D打印机(一)——介绍(已完成)

我于6月下旬购买了BIGTREETECH 的 SKR-PRO-V1.2开发板,在7月上旬期末考试结束后开始开发,大概用了三个星期的时间开发完成,目前能够读取G代码,随后步进电机做出相应的运动。

首先使用的是 BIGTREETECH 的 SKR-PRO-V1.2 ,SKR-PRO-V1.2 与SKR-PRO-V1.1大致相同。

这里是引用于深圳市必趣科技有限公司 SKR-PRO-V1.1 的使用说明书
BIGTREETECH-SKR-PRO-V1.1 主板是深圳必趣科技有限公司 3D 打印 团队针对市面上主板存在的一些问题,推出的一款以 STM32F407ZGT6 为核心控制器的高性能 3D 打印机主控板。

然而这块主板

这里是引用于深圳市必趣科技有限公司 SKR-PRO-V1.1 的使用说明书
1)目前只支持必趣科技有限公司开源的 Marlin2.0 固件:
可到必趣科技有限公司开源网址:https://github.com/bigtreetech?tab=repositories 找到对应的主板进行下载。
2)Marlin2.0 固件更新方法:
下载好必趣科技有限公司开源的 Marlin2.0 固件后,使用 Visual Studio Code 打开工程进行编译,然后 找到 firmware.bin 文件,复制到 SD 卡中,然后复位主板等待 10 秒左右即可即可。(也可直接下载 firmware.bin)
详细步骤请参照教程:
https://www.dropbox.com/s/ppjfflhf3j5yzh2/MarlinV2.0%20SKRV1.1%20instruction.docx?dl=0

通过上述说明,可以知道这块SKR-PRO-V1.1是通过Visual Studio Code开源的,并将生成的文件复制到SD卡更新固件的。

然而目前只会用stm32的我,恰好发现了这块板的芯片是STM32F407ZGT6,所以我想这块板当成了stm32f4开发。

想法挺好的,但是其中遇到许多困难:

最主要的困难是,如果把这块板当成stm32使用keil5开发,那么这块板的资料恐怕就剩下PCB了,(上述引用中有这块板的Visual Studio Code开源代码下载地址,但是这些代码我几乎没有看,我对这些代码的印象只有多、乱、复杂)。

但我还是克服了并开发出这块板的stm32代码

  • 首先这块板内部已经下载好程序,所以我们要通过电脑使用CH340芯片与板子连接(如上图的TFT位置有RXD、TXD)。
  • 随后短接boot1(使boot1置高),按下复位键,即可开始烧录。
  • 使用keil5编译生成的hex文件通过Flymcu串行烧录。
  • 烧录完成后,就可使用。
    下面两张是烧录时的截图

stm32开发3D打印机(一)——介绍(已完成)
stm32开发3D打印机(一)——介绍(已完成)

下面是我的运行效果图

板子是这样的,目前热床温度和喷头温度还未使用,使用了4个a4988,TF卡,通过电脑使用CH340芯片与板子连接(左下方既是ch340与板子相连的4根线),电脑通过串口通信软件发送信息对其控制。
stm32开发3D打印机(一)——介绍(已完成)
连接后,板子启动,开启初始化,对部分端口、定时器、中断初始化,SD卡初始化完成后,随后进行文件系统FATFS初始化,如下图所示(其中前面连续出现了SPI_Init Finsh与finsh为TF卡初始化与FATFS初始化串口所发送的信息)
因为内部使用了usmart 的代码,所以可以直接调用函数(只需向串口发送信息)
(初始化时已对TF卡挂载)
随后发送了mf_scan_files(“0:”),这是打开TF卡目录的函数,然后板子通过串口返回TF卡目录信息。
stm32开发3D打印机(一)——介绍(已完成)
再通过mf_open(“0:/aa1.gcode”,1),打开aa1.gcode打印文件,再输入1即可开始打印。

前面的解析失败是正常现象。(因为目前代码只实现读取G0与G1指令,并解析F、X、Y、Z、E),a11.gcode文件下面有截图

stm32开发3D打印机(一)——介绍(已完成)
aa1.gcode打印文件前面的代码如下
stm32开发3D打印机(一)——介绍(已完成)
好吧跳过前面不能识别的,看看到下面的串口接收到了什么信息
获得数据:XXXXXXXXXXXXXXXXXXX(是指完成读TF卡一行代码)
cmdbuffer[]=XXXXXXXXXXXXXXXXXXXX(是指读取代码缓存的信息)
(F是速度,feedrate是速度缓存,destination[]中0、1、2、3分别指X、Y、Z、E轴的信息转换缓存)

stm32开发3D打印机(一)——介绍(已完成)
因为我还未安装温控,所以不能进行3D打印,但是我尝试了写字机器人,通过懒人代写软件生成了G代码,并进行执行(因为没有安装回弹,所以一直连笔,但尽管如此这精度还算是这样了)(a4988为全步,未开16细分)(5毛钱的笔芯,用线绑在那里,所以有这样的效果是不错了)
stm32开发3D打印机(一)——介绍(已完成)
生成的文件代码如下图所示
stm32开发3D打印机(一)——介绍(已完成)
stm32开发3D打印机(一)——介绍(已完成)
stm32开发3D打印机(一)——介绍(已完成)

介绍到这里就结束了,代码部分后续更新。。。。

本文地址:https://blog.csdn.net/Nico_jion/article/details/107944274