问题标签 [pwm]

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 回答
296 浏览

matlab - 如何使块强制模拟步骤在给定时间发生?

问题

有没有办法让块强制模拟步骤在给定时间发生?

例如,即使用户在他的模型中选择了 1e-2 的模拟步长(固定步长模拟),如果他使用我的模块,那么模拟步长会在 2.5e-4 秒发生吗?


语境

我正在开发一个 PWM 发生器块 [1],我最初的方法有一个大问题。为了更好地解释这一点,我画了一个简单的图表: 作为

黑色的信号是我希望块生成的信号(方形信号,周期 T,在 DT 秒内的值为 1,其中 D 是介于 0 和 1 之间的常数)。蓝色星号是在模拟步骤时间采样的点(假设固定步骤模拟)。蓝线是块实际生成的,因为在第 5 步和第 6 步模拟步骤之前,值 1 将保持不变。

这种步进时间与信号值变化的不同步会在信号的平均值中引入误差(因为它会保持比预期为 1 的时间更长的时间)。在最坏的情况下,这个错误将是 s/T,其中 s 是模拟步长,T 是要生成的信号的周期(我可以发布推导,但我不知道如何在这里写方程这很简单)。解决此问题的直接方法是减小步长,但这并不总是可行的,具体取决于 PWM 的周期。

如果有办法强制模拟步骤发生在 0、DT 和 T 秒,那么蓝色和黑色信号的平均值将完全相同。

如果这需要更多澄清,请说出来。提前致谢。

1 - PWM 是一个周期性方波信号,在其周期内,在给定的时间内保持值为 1,其余时间保持值为 0,因此具有介于 0 和 1 之间的任意平均值。

0 投票
1 回答
812 浏览

vb.net - 通过visual basic 2010在arduino上改变pwm

所以我在 vb 2010 上制作了一个用户界面,允许用户在文本框中键入他们想要的 0-255 之间的值的 PWM。我希望能够获取该值并尽可能多地更改它,但似乎有一个问题,我只能发送一个值而无需再次调试程序。我用作测试的 LED 似乎没有以我在文本框中使用的 PWM 的等效亮度响应。我希望能够使用某种 switch 语句以 8 个独立的继电器作为最终目标来控制它。任何帮助都会非常好我当前的代码:VB

0 投票
1 回答
455 浏览

arduino - 使用 Arduino MEGA 和 Ethernet Shield 读取 PWM

我在一个项目中,我必须用 4 个 Arduino MEGA 2560 读取 16 个 PWM 信号的 DC(1ms-2ms),每个 4 个 PWM。读完之后,我应该将这 16 个值发送到计算机。最初的想法是使用 4 个 Arduino Ethernet Shield 连接到路由器,然后上电脑。另一种选择是通过 USB 将 4 Arduino 直接连接到计算机并使用每个 Serial.print 执行它。这两个选项中的哪一个可以给我更好的结果?我必须强调时间很重要,接收 16 个 PWM 值的时间少于 20 毫秒是最佳的。问候和感谢。

0 投票
1 回答
1814 浏览

arduino - servo library, understanding PWM writing.

I don't understand how multiple PWM outputs are supposed to work. Look at the pic. enter image description here

In the first(1) case we are using short signal width which would be close to motor staying still. In this case, as can be seen, short pulses follow each other, so does the code.

when motor4 ended it's output, motor1 starts it's pulse again causing non-problem consequent pulses.

In the second(2) case pulse is wider which corresponds to setting motor speed close to maximum. After motor1 finishes generating width, it's time for motor2 to generate one. But when it does, motor1's period comes to end and it has to start generate width again, but arduino is busy generating pulse of motor2.

How does PWMs work in this case?

0 投票
2 回答
1185 浏览

c++ - 为 400hz PWM 使用 4 个 16 位定时器

我正在处理基于 arduino mega 的四轴飞行器,并试图为 4 个电机制作 PWM 频率 - 每个电机 400hz。
我发现了一个有趣的解决方案,其中使用 4 个 ATmega2560 16 位定时器来控制 4 个带 PWM 的 ESC,因此它可以达到 400hz 的频率。700 到 2000µs 是 ESC 处理的正常脉冲宽度。
1 秒/REFRESH_INTERVAL = 1/0.0025 = 400hz。

问题是要使其工作每个 PWM 应由 1 个 16 位定时器控制。否则,比如说,1 个计时器上的 2 个 escs 将提供 200hz。所以所有的 16 位定时器都忙于控制 4 个 ESC,但我仍然需要从接收器读取输入 PPM。为此,我至少需要一个我不再拥有的 16 位计时器。
它仍然是一个 8 位定时器空闲位,它只能读取 0..255 个数字,而正常的数字 escs 操作是 1000..2000 等等。

那么如果我对 pwm 和 ppm 读数都使用相同的 16 位计时器会发生什么?它会起作用吗?会不会大幅度降低速度?
我有 arduino 与 Raspberry Pi 一起工作,它控制数据过滤、调试和其他东西,将 ppm 读数移动到 Raspberry 是否更好?

0 投票
1 回答
909 浏览

interrupt - STM32F4 PWM斜坡

我正在做一个项目,我想将 pwm 占空比从 0 提高到 50%。我的周期是 16000 个计数或 1ms(16MHz 默认定时器计数)。由于某种原因,它不是在每个周期更新占空比,而是更新它的速度要慢得多。我想知道是不是因为我在定时器中断中计算新的占空比?这是我正在使用的:

0 投票
1 回答
1448 浏览

timer - STM32F030 PWM 设置问题

我试图让 PWM 在我的 STM32030R8T6 的两个引脚上运行,它在 Nucleo 开发板上,我正在使用 Keil。为了学习,我大部分时间都在关注这个网站上的材料,但随着该网站使用不同的 MCU 进行了改编。设置 PWM 真的没什么,所以我不太确定我做错了什么,我知道计时器正在工作,因为板载 LED 每秒闪烁 1.5 次,但是当我监控 Ch1 和Ch2 输出引脚与我的示波器我什么也没得到。我很确定这些引脚在备用功能推挽中设置正确,因为它们的设置与正在运行并显示 24 MHz 的 MCO 引脚相同(尽管我的廉价示波器在确定这一点时存在一些问题......)。我' 已经附上了我所有相关的,甚至远程可能相关的代码。为了您的方便:

UM0360 参考手册(STM32F030...)

我也会发布指向 Nucleo 用户手册和设备数据表的链接,但我不能发布超过两个链接,因为这是我的第一个问题,我的声誉不到十。

感谢您对我可能做错的事情的任何帮助,我敢肯定这是愚蠢的。

0 投票
1 回答
2475 浏览

c - 树莓派 B+ 硬件 PWM

树莓派 B+ 有四个硬件 PWM。如何在 C/C++ 中使用它们。解决方案越简单 - 越好。

我用 WiringPi 找到了一个可行的解决方案

此解决方案仅适用于一个 PWM 输出 (GPIO18)。我认为这是因为 WiringPi 是为以前版本的树莓派设计的(B+ 型在 GPIO12、GPIO13 和 GPIO19 上有新的 PWM)。

为了控制常规 GPIO,我找到了解决方案:

但是没有办法控制硬件PWM。

产品https://www.pololu.com/product/2753引用了 python 库——这正是我想要的。

请不要软件 PWM 建议。

谢谢

弗拉多

0 投票
1 回答
1176 浏览

python - 在等待输入时执行无限循环

我正在做一个小项目,它相当简单,所以我希望有人能帮助我。

我正在使用树莓派通过一些非常粗糙的 PWM 来调暗单个 LED。

我的 PWM 代码如下所示:

基本上,为了让 LED 以“停留”确定的亮度保持点亮,我需要那段代码来永远循环下去。

我想做的是使用类似的东西

这样当 PWM 代码循环时,我可以输入一个新的值来调整 LED 的亮度。

到目前为止,我所做的所有努力都导致了以下结果之一:

a: 调光循环只执行一次并停止等待输入 b: 调光循环将无限执行但不允许进一步输入

你们中的一个好人可以为我提供一个代码示例来解释我如何实现这一目标吗?

对于那些感兴趣的人,最终我想做的是通过插座设置dwell的值并使用更好的PWM输出形式来驱动LED筒灯。宝贝步骤:)

0 投票
1 回答
1442 浏览

python - 程序完成后树莓派 python pwm 继续

我有一个正在研究的机器人,并且正在使用 PWM 控制它。我控制它的方式是使用设置 PWM 然后退出的脚本。我需要它来设置 PWM 然后继续运行。我需要它退出的原因是因为每次 x 和 y 值更改时我只是通过 ssh 连接调用此脚本。程序退出后正常数字输出继续,但 PWM 与我设置的方式不同。

到目前为止,这是我的代码。它包含许多打印语句,试图帮助我找出问题所在。

它的调用方式是 with sudo python setMotors.py x y。有没有办法在程序退出后保持 PWM 运行,或者有更好的方法?