
大家好
我认为,如果您使用的是arduino + nema 17,那么您将很难同时启动多个引擎。
解决此问题的方法有很多,最简单的方法就是使用NemaStepper库。 该库多次简化了此任务,主要优点是它不会停止程序。 它与所有其他库一起安装。 根据MIT许可分发。
好吧,让我们开始吧。 我们将从连接开始。
我们将使用带有500卢布速卖通的Simple Nema 17,L298N驱动程序和arduino uno。 它们是:



- 在示例中,我将显示四个连接到arduino的驱动程序,尽管仅使用一个。
- 关于如何在Internet上连接Nema 17的教程很多,因此在此不再详细介绍。
因此,我们将电动机连接到驱动器:


该库是面向对象的。 让我们看一个打开一个电动机的例子:
NemaStepper Stepper1(2, 3, 4, 5, 200, 10, false); void Setup(){ Stepper1.SetStepCount(100);
所有库方法都可以在库源代码文件中找到(库头中有说明)。
*有关示例中代码的更多信息。
现在举个例子。
该库有一个内置示例(目前仅在其中),使您可以一次用串行控制三个电动机。
本示例对端口接受以下命令。
让我们拆开。
让我们从头开始-连接库:
接下来,声明三个具有以下参数的电动机:
1.第一针
2.第二针
3.第三针
4.第四针
5.每转的步数-大多数Nema 17发动机有200。
6.启动速度
7.指示停止后是否握住轴的值(如果为true,则驾驶员会变成烧烤炉)
NemaStepper Stepper1(2, 3, 4, 5, 200, 10, false); NemaStepper Stepper2(6, 7, 8, 9, 200, 10, false); NemaStepper Stepper3(10, 11, 12, 13, 200, 10, false);
下一个端口初始化:
void setup() { Serial.begin(9600); }
然后,重要! 在主循环中,您需要使用Step()命令更新引擎的位置。
void loop() { if (IsStepperEnabled == true){ Stepper1.Step(); Stepper2.Step(); Stepper3.Step(); } GetCommandFromSerial(); }
以下是一个子例程,该子例程从端口接收数据,打开/关闭电动机,设置速度,制动和旋转。
void GetCommandFromSerial() { if (Serial.available() > 0) {
因此,让我们尝试将其下载到板上。
上传了吗?
然后,我们进入端口监视器,并从代码中输入命令。
每个命令以/结尾。
前三个字符是团队的名称。
在名称和/-参数之间。
让我们用命令“ EMS /”打开电动机(启用电动机)。
然后,将使用命令“ SS160 /”(设定速度)将电动机1的速度指示为60,其中60为速度。
最后,使用命令“ MV1100 /”(MoVe)打开第一个电动机,其中100是转数。
一切正常。 万岁。
其余的马达也一样。
好吧,从哪里获得图书馆。
可以通过以下链接感谢创建者来下载该库,并指示其实际价格:
获取NemaStepper感谢您的阅读,希望我的文章对您有所帮助。
当我在寻找解决方案时,它才是唯一合适的库。