问题标签 [motordriver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2138 浏览

c - 带直流电机/编码器的 PID 反馈和位置控制器

我很难让 PID 反馈和定位同时运行。

我计算 RPM 的想法是:

  1. 使用中断启动定时器并计数编码器脉冲。
  2. 使用一些简单的数学转换为 RPM。
  3. 重置使用的变量并重新开始。

我可以计算 RPM,但我只能在计算后调用我的 PID 控制器(但我想等待多长时间才能获得良好的分辨率。)这会导致代码非常混乱。有没有更简单的方法或我缺少的东西?

关于我的应用程序的信息: 我正在使用直流电机/双磁编码器对 Atmel ATmega328P 进行编程,每转约 600 个脉冲(在减速机之后)。我想调用 GoToTarget(#) 并让电机在更新 PID 参数时转到该位置。此外,它必须是双向的。

0 投票
2 回答
1830 浏览

usb - 通过 USB 控制步进电机

我在做一个USB设备是为了控制步进电机。我在使用并行端口之前已经这样做了。因为这些端口在当前的主板上不存在,所以我决定在我的设备和 PC(主机)之间实现 USB 通信。为了实现我的目标,我为具有 12Mbps USB 模块的设备赋予了飞思卡尔微控制器。我的 USB 设备必须在给定时间接收 4 个字节(每个电机驱动器一个),因为每个字节都是应该移动引擎的一个步骤。在PC(主机)中,用户的应用程序处理带有信息的文本文件,并使轨迹坐标以一定的速率为每个电机发送字节(实现电机的加速度和速度的时间是微不足道的)。

使用并行端口是一项简单的任务,因为每个字节都是按用户应用程序确定的时间顺序发送的。

对全速USB协议进行了一些研究,了解到帧每1ms发送一次。那么您可以每 1ms 发送 4 个字节或更多字节,但我无法像使用并行端口那样管理时间。我的微控制器每帧最多可以发送 64 个字节(基于传输文件类型 Control、Bulk、Int、Iso ..)。

问题1:

我想知道以什么方式可以比每 1 毫秒更快地发送 4 字节数据包?

问题2:

对于这些类型的设备,哪种类型的传输可以为我提供建议?

谢谢。

0 投票
1 回答
335 浏览

microcontroller - 带有游戏手柄的 Stellaris 伺服控制

我正在寻找一种解决方案,通过连接到我的笔记本电脑的游戏手柄来控制 3 个或更多伺服系统,我想使用的 MCU 是德州仪器的 Stellaris 启动板或 MSP430。我几乎在所有地方都进行了搜索,但仍然没有找到答案,该项目是一个电脑控制的望远镜支架。

提前感谢您的任何建议!

0 投票
1 回答
724 浏览

microcontroller - 与 L293D morot Driver 和 Atmega8 接口时直流电机速度过低

我正在尝试使用 L293D 驱动器和不带 PWM 的 Atmega8 驱动 6v 直流电机。问题是我在将电机与 L293D 驱动器连接时速度非常低。但是,当我为电机提供直接 6V 直流电源时,它会很好地旋转。我在 L293D 的 V2(电机电源)引脚使用外部 6v 电源,但没有改善。在我用手转动转子之前,电机不会转动。不使用PWM还有问题吗?我的代码在这里:

0 投票
2 回答
8821 浏览

c - 如何用 atmega 32 pwm 控制电机

一段时间以来,我一直在研究如何使用我的 atmega32 以快速 pwm 模式控制电机(控制其速度)。我需要使用 8 位 Timer0,因为其他计数器还有其他用途。我想我知道如何初始化这个任务的计时器:

但随之而来的问题。我根本不知道下一步该做什么,在我的主要做什么。

我的确切项目是驾驶一辆带加速的遥控汽车。因此,当我要求汽车向前行驶时,它必须以固定加速度从停止加速到最大速度。我不知道任何大会,所以如果你能帮助我,请在 C 中完成。任何帮助将不胜感激。

0 投票
1 回答
159 浏览

c - 在 C 中的 Struct 中为步进电机返回数组值

我正在尝试使用 rabbit 4000 处理器旋转步进电机。我有一个保存结构的队列,并创建了一个函数来创建运行 4 绕组步进电机所需的二进制位序列。我试图将序列从结构中的函数传递给将用它填充队列的生产者。问题是我没有将预期值放入队列中。我是否误解了如何从函数返回结构,还是需要单独分配数组值?相关的代码块是:

程序的屏幕输出:

Hola Consumer
Hola Producer
Breaking Funct with: 1,0,0,0 函数
调用后的值:收到 235,0,24,23
(1a= 0: 1b= 1: 2a= 0:2b= 0) 0
put 235,0 ,24,23
中断函数
:0,0,1,0 函数调用后的值:
收到 236,41,237,0 (1a= 0: 1b= 0: 2a= 0:2b= 1) 1
put 236,41,237,0

我的问题是函数调用后从破坏函数到值的值应该是相同的。

0 投票
1 回答
688 浏览

c# - Stellaris 步进电机 RDK USB 串行接口与 PC 应用程序 - 数据包格式

我正在使用 TI-Luminary Micro 的 Stellaris 步进电机 RDK。如果需要,将我移至正确的论坛。我正在使用 USB 串行接口将设备与使用 C# 开发的应用程序连接起来。目前我坚持从我的应用程序发送控制命令。我可以通过发送以下命令来启动和停止步进电机。但我想设置目标步数/秒。我无法理解如何用所需的目标步骤形成命令控制数据包。因此,任何有关此的帮助表示赞赏。

代码:

谢谢,

巴拉吉

0 投票
1 回答
7311 浏览

arduino - Arduino 项目 - LDR 和 ServoMotor 同步和旋转

我做一个家庭项目只是为了好玩,我对 Arduino 很陌生,但我知道基础知识。

我正在创建一个自动百叶窗,它会在黑暗时打开,在明亮时关闭。

因此,百叶帘的百叶窗在光传感器检测到黑暗时会旋转到打开位置,当光传感器检测到光时会旋转到关闭位置。

我在用着:

arduino uno r3/连续伺服电机/led/LDR(光传感器)/10k电阻/

此代码适用于标准伺服电机。我希望它与连续伺服电机一起工作,因为你可以“更好地控制它”,它就是我所拥有的。

我想我需要一个类似这样的 if 语句:

如果光传感器检测到黑暗则将伺服电机旋转一定角度然后停止,如果光传感器检测到光则将伺服电机旋转一定角度然后停止。

0 投票
1 回答
866 浏览

arduino - 中断适合我的机器人使用吗?

所以我有这个旧的电动轮椅,我想把它改装成机器人。我用 2x12 的 sabertooth 替换了原来的电机驱动器,我正在使用 Arduino micro 与它交谈。电机轴一直抛出,所以我在背面连接了一个磁铁和一个霍尔效应传感器,作为旋转编码器。我目前的目标是能够告诉机器人向前移动一定量的脚然后停止。我写了一些代码来线性地做到这一点,但这并没有那么好。然后我了解了中断,这听起来正是我所需要的。所以我尝试了这一点,但在几个不同的层面上都出了问题。

第一级:我似乎从来没有能够正确地驱动电机,就像任何时候我在循环内发出命令来打开它们,或者如果语句他们决定做他们想做的事情并且偶尔和不可预测地移动

第二级:我觉得中断正在中断自己,我设置的东西是阻止轮子向前移动,因为我可以告诉它向前移动 14 个旋转编码器咔嗒声,一个轮子将继续移动超过 1000 次咔嗒声,而另一个停止

第三级:有几次我想我把中断放错了,因为当我上传代码时,窗口将停止识别 Arduino,我的驱动程序会中断,直到我在按下复位按钮后上传闪烁草图,该按钮也重新加载并修复了我的驱动程序。然后,如果我删除了其中一个中断,它将正常上传。

第四级:当电机打开时,我的霍尔效应传感器似乎无法正常工作。他们往往会在几秒钟内从 1 次点击跳到 200 次点击。这反过来又淹没了我的串行端口并使 Arduino ide 崩溃。

所以你可以看到系统中的某个地方存在一些缺陷,无论是我不知道的硬件还是软件。我是否以正确的方式接近这一点,还是有一些我不知道的 Arduino 秘密会让我的生活更轻松?如果我接近这个权利,你可以看看我下面的代码,看看我做错了什么。

0 投票
3 回答
12566 浏览

matlab - 使用 Simulink 控制 Arduino 步进电机

嗨,我对 Arduino 和电子产品很陌生,所以请多多包涵。

我有一个使用 Matlab 和 Simulink 控制步进电机的项目。现在我只想让事情启动并运行。我已经用一个简单的步进电机代码连接了原理图,它可以工作(这在没有 Matlab 的情况下完成)。我的问题是如何使用 Simulink 和 Matlab 让电机运行?

当我尝试运行 Simulink 模型时,我得到了这个错误

我的步进电机驱动板是 ULN2003APG ULN2003APG,我的电机是 在此处输入图像描述.

我已经下载了 Matlab 的 Arduino 硬件支持包,并且已经将服务器程序上传到 Arduino 以启用 Matlab 和 Arduino 之间的通信。

我不知道是什么导致了我得到的错误。任何帮助将不胜感激!

如果有任何现有指南或任何涵盖此类主题的示例,您可以将我重定向到它们。

(如果需要为板子写一个新的驱动程序,请给我一些教程,我可以在那里阅读。)

提前致谢。

编辑!

以下是我为尝试运行 Simulink 模型所做的分步操作:

1:完成教程中的步骤。

2:下载Arduino 的 MATLAB 支持包

3:将 arduino uno 连接到 PC,打开 Arduino IDE 并从步骤 2 上传 adioes.pde。

4:打开Matlab更改工作路径(如果不是则报错)

5:从下载的 Arduino 支持包中打开现有示例...\ArduinoIO\examples\stepper_sim.mdl

6:更改COMPORT并单击Tools/Run on Target Hardware/Prepare to run,然后单击Tools/Run on Target Hardware/Run

之后我得到了我的错误。

这是 simulink 模型的另一幅图像: 在此处输入图像描述