|
本帖最后由 点点&木木 于 2019-4-13 11:02 编辑 介绍 我在一年多前就开始了这个项目。它应该是第一个Make with Ada项目,但它从硬件和软件方面变得最具挑战性。
CNC和Gcode CNC代表计算机数字控制。它是多轴机床的自动控制,例如车床,铣床,激光切割机或3D打印机。 大多数CNC机床都是通过Gcode语言操作的。该语言提供了沿不同轴移动机床的命令。 以下是一些命令示例: M17 ; Enable the motorsG28 ; Homing. Go to a known position, usually at the beginning of each axis G00 X10.0 Y20.0 ; Fast positioning motion. Move to (X, Y) position G01 X20.0 Y30.0 F50.0 ; Linear motion. Move to (X, Y) position at F speed (mm/sec) G02/G03 X20.0 Y10.0 J-10.0 I0.0 ; Circular motion. Starting 上面的Gcode将生成此工具动作:
大多数时候,机械师将使用软件从CAD设计文件生成Gcode。在我的例子中,我使用了Inkscape (矢量图形编辑器)和一个从图形生成Gcode 的插件。这是我在我的机器上使用的Gcode的一个例子:make_with_ada.gcode。 硬件 为了实现精确的运动,CNC机床使用特殊类型的电动机:步进电机。使用适当的电子驱动器,每当驾驶员接收到一个步进信号时,步进电机就会旋转一个小的固定角度。 电机的旋转运动通过导螺杆转换为线性运动。凭借电机和导螺杆两者的特性,我们可以确定移动一毫米所需的步数。然后,CNC控制器使用该信息将运动命令转换为要在每个电机上执行的精确步数。
为了创建我自己的小型数控机床,我使用了旧DVD驱动器和软盘驱动器的微型步进电机。我将它们安装在其中一个DVD驱动器的外壳上。电机由Pololu的低压步进驱动器驱动,软件运行在STM32F4Discovery上。
软件 我的CNC控制器受到Grlb 项目的极大启发。除了我的控制器在STM32F4(ARM Cortex-M4F)上运行并且Grbl在Arduino(AVR 8位)上运行这一事实外,主要区别在于使用Ada语言提供的任务和Ravenscar运行时。 嵌入式应用程序运行在3个任务中: Gcode解释器:此任务等待来自UART端口的Gcode命令,解析它们并将所有运动命令转换为绝对线性运动(运动块)。圆内被转换为将近似圆的线性运动列表。 规划器:此任务将运动块作为输入,并将每个块分成多个段。段是具有恒定速度的运动块的一部分。通过设置块内每个段的速度,规划器可以创建加速和减速配置文件(如视频中所示)。 步进器:这是一个周期性任务,将为电机产生步进信号。任务的频率取决于运动所需的进给速率和计划器计算的加速度曲线。频率越高意味着每秒步数越多,因此运动速度越高。
Gcode模拟器和机器接口 为了能够快速评估我的Gcode /Stepper算法并能够控制我的CNC机器,我开发了一个本机(Linux / Windows)应用程序。
应用程序的中心部分显示了Gcode的模拟运动。左上方按钮矩阵提供CNC机床的手动控制,例如“向左移动”10 mm。左侧文本视图显示了要模拟/执行的Gcode。底部文本视图(此屏幕截图中的空白)显示了计算机发送给我们的消息。 在微控制器中运行的Ada代码和在仿真工具中运行的代码是100%相同的。这非常容易地开发,测试和验证Gcode解释器,运动规划器和步进器算法。 代码---
ACNC-master.zip
(2.29 MB, 下载次数: 61)
|
| 感谢楼主分享这些有趣的项目。 |
| 感谢分享,正准备做这方面的东西 |
微信公众号
手机版