楼主: 驴友花雕
|
[项目] 【花雕学编程】Arduino动手做(226)---L298N驱动42步进电机 |
实验开源代码
|
本帖最后由 驴友花雕 于 2024-8-26 16:47 编辑 代码说明: 1、该程序首先包括 Arduino Stepper 库。步进库与 Arduino IDE 打包在一起,负责对发送到电机的脉冲进行排序。
2、包含库后,我们定义一个名为 stepsPerRevolution 的变量。顾名思义,它是您的电机额定每转的步数。在我们的例子中是 300。
3、接下来,我们创建 Stepper 库的对象。Stepper 类的构造函数将电机和 Arduino 引脚连接的每转步数作为参数。
4、在代码的设置部分,我们通过调用 setSpeed() 函数来设置步进电机的速度,并初始化串行通信。
5、最后,在代码的循环部分,我们只需调用 step() 函数,该函数使电机以 setSpeed() 函数设置的速度转动特定数量的步数。将负数传递给此函数将反转电动机的旋转方向。
6、请注意,step() 是一个阻塞函数。这意味着它将等到电机完成移动后,将控制权传递给程序中的下一行。例如,如果您将速度设置为 1 RPM 并在 100 步电机上调用 step(100),则此功能将需要整整一分钟才能完成。 |
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验二百二十六:正反转PWM调速双H桥L298N模块驱动42步进电机 项目实验之七:最简九行驱动程序 实验开源代码
|
上述代码的工作原理。 首先包括 Stepper.h 库,其中包含步进电机速度和方向控制所需的函数。 然后定义电机旋转一圈所需的步数。在这种情况下,我在全步模式下使用电机,步进电机类型移动 200 步以旋转 360 度。该值根据您使用的步进电机类型而变化,例如,如果它是 28BYJ-48 步进电机,则该值将为 48。 接下来,您需要创建 Stepper 类的新实例,该实例将电机和 Arduino 引脚连接的每转步数作为参数。 在 setup() 部分中,我们使用 setSpeed() 函数以 rpm 为单位设置电机的旋转速度。 在 loop() 部分中,首先使用 step() 方法顺时针旋转电机,并将每转的步数解析为其中的参数。因此,电机将以每转 200 次的步长旋转。为了逆时针旋转电机,我们将在 step() 方法中解析每转的步数,并带有负号。在两种类型的旋转之间,我们将有一个延迟。 |
实验开源代码
|
代码说明 首先包括 AccelStepper.h 库,然后定义电机接口类型。电机接口类型设置为 4,因为我们在全步模式下使用 4 线步进电机。 接下来,创建一个 AccelStepper 类的新实例,该实例具有适当的电机接口类型和与 Arduino 的连接。 在 setup() 部分中,定义最大速度(以每秒步数为单位)。 在 loop 部分,首先使用 setCurrentPosition(0) 方法将步进电机的当前位置设置为零。 while 循环会持续运行,直到循环内的条件变为 false。因此,在这种情况下,我们检查步进电机的当前位置是否不等于 400 步。虽然情况并非如此,但我们以 setSpeed() 方法设置的每秒 200 步的恒定速度运行步进电机,直到电机达到 400 步,即 2 转。runSpeed() 方法以 setSpeed() 方法设置的速度移动电机。 2 转后,电机延迟 1 秒,然后将电机的当前位置设置为零,并使用另一个 while 回路以每秒 600 步的速度向后运行电机,直到电机达到 -200 步或 1 转。 |
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed