1

我需要帮助排除我的步进电机控制设置。我正在尝试以给定的速度将步进电机旋转一定角度。我连接并按如下方式对设置进行了编程,但我无法让步进电机移动。我怀疑这是我的代码,但是,我在网上找到了很少的编码资源。我将不胜感激任何帮助和/或建议。

连接和接线:

连接和接线

MATLAB程序:

clear all;  clc;
MainRasp = raspi('192.168.1.134', 'pi','raspberry');
ENA = 4;
DIR = 17;
PUL = 18;

configurePin(MainRasp, PUL, 'DigitalOutput');
configurePin(MainRasp, DIR, 'DigitalOutput');
configurePin(MainRasp, ENA, 'DigitalOutput');

writeDigitalPin(MainRasp, PUL, 1);
writeDigitalPin(MainRasp, DIR, 0);
writeDigitalPin(MainRasp, ENA, 1);

angle = 40;
steps_per_rev = 100;
micro_step = 8;

angle_per_step = 360/(steps_per_rev*micro_step);
numSteps = floor(angle/angle_per_step);

for step = 1:numSteps
    writeDigitalPin(MainRasp, PUL, 1);
    pause(0.001);
    writeDigitalPin(MainRasp, PUL, 0);
    pause(0.001);    
end

更新:我的连接和程序是正确的。我发现我使用的步进电机驱动器(DM320T)需要 PUL 的 4-5v(高)数字信号电压。但是,树莓派数字引脚输出 0-3.3v。实际上,DM320T 仍将其读取为低电平。

结果,我改用了 Arduino Micro,它的数字引脚电压为 0-5v,能够提供 PUL 的要求。

感谢所有发表评论的人。

4

1 回答 1

2

快速总结:如果您将 Pi 的 3.3V 电源轨连接到 320T 上的 OPTO 引脚,而不是将 Pi 的 5V 电源连接到 320T 上的 OPTO 引脚,这将起作用。此外,以您所做的方式连接 5V 引脚可能会损坏 Pi,因为它可能导致 Pi GPIO 引脚上的电压 > 3.3V。当您将 OPTO 连接到 Pi 的 5V 电源轨时,Pi 的大约 3.2V 的 GPIO“高”输出显然不足以阻止电流流过 DM320T 的光隔离器(5V - 3.2V 足以为发光供电二极管),因此即使在高输出的情况下,Pi 的 GPIO 也无法关闭光隔离器。但是当 OPTO 只有 3.3V 时,高 GPIO 输出会阻止电流流过光隔离器,但低 GPIO 输出却允许!

长答案:

我使用具有标称 3.3V GPIO 输出的 Pi Zero W 以两种方式控制带有 DM320T 板(由 StepperOnline 出售)的步进电机。第一种方式不涉及外部元件,第二种方式涉及额外的光隔离器。

初步评论:我不建议在电机电源侧和光隔离逻辑侧之间连接接地。这不是必需的,并且可能会破坏光隔离的目的,具体取决于您的电源设置方式。所以摆脱它。如果电机电源和 Pi 电源已经共用一个接地,则此注意事项不适用,但一般没有理由共用此接地。

第二条评论:如果 GPIO 的输入电压高于 3.3V,Pi 可能会损坏。以您显示的方式将 +5 连接到 OPTO 可能会损坏 Pi,因为在连接到 Pi GPIO 引脚的 PUL、ENA 和 DIR 上看到的电压基本上是 5V 减去内部光电两端的电压降320T 中的隔离二极管,在我的测试中超过 4V。一旦电流流入 GPIO,由于 320T 的内部电阻,电压会下降,但这仍然不是安全的情况,可能会损坏 Pi。

第一种方法,无附加组件:确保 320T 的逻辑侧和电机电源侧之间没有接地。将 320T OPTO 连接到 Pi 3.3V 电源(例如引脚 1)。将 320T PUL 连接到 Pi 上的 GPIO,并以合理的速率在 Pi 上输出脉冲。即使 320T 上的 DIR 和 ENA 未连接,电机也应该旋转,因为 ENA 默认启用。首先对此进行测试并验证它是否正常工作。注意:Pi GPIO 上的低输出会导致电流流过 320T 的光隔离器,并被 320T 视为“开启”。所以基本上脉冲的感觉是相反的。这应该不是问题,但在构建脉冲时要注意这一点。虽然 320T 需要在逻辑电源输入 OPTO 上使用 5V 电源,但我尝试过的样品可以使用 Pi 的 3.3V 电源输入。您发现的其他一些 320T 很可能无法在此配置中工作,您必须使用下面的替代方法。但根据我对电路的检查,它通常应该在 Pi 的 3.3V 输入到 320T 上的 OPTO 的情况下可靠地工作。

第二种方法,使用外部组件:使用额外的 817 光隔离器,很容易用来自 Pi 的 +5 为 320T逻辑侧电源输入 (OPTO)供电,并将 320T的 PUL、ENA 和 DIR 线灌入输出单独的 817 的一侧(引脚 4 到 PUL、ENA 或 DIR,引脚 3 到逻辑侧接地)。通过一个电阻(比如 330 欧姆)将 Pi 的单独 GPIO 输出连接到 817 的输入端。当 GPIO 变为高电平时,光隔离器将触发并打开输出,将 320T 信号拉低。注意:至关重要的是,来自 Pi 的 +5 只能到达 817 的输出端。如果以某种方式将 +5V 置于 GPIO 输入上,您可能会损坏 Pi 上的输入,或者可能损坏整个 Pi。

这两种方法在我的测试中都能可靠地工作。

提醒:320T 的光隔离逻辑输入端没有理由将地连接到电机控制端。

于 2021-05-22T19:47:44.460 回答