问题标签 [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.
bash - 尝试使用 PWM 控制我的 BBB 上的伺服,伺服不动
当我尝试将伺服器与 BBB 一起使用时,使用以下命令尝试移动它,伺服器不会移动。
我正在使用视差连续旋转伺服(http://www.parallax.com/product/900-00008)。我将伺服输出连接到 BBB 的地(左侧接头上的针脚 1,如果以太网端口在顶部),输入连接到 +3v(针脚 3),pwm 连接到针脚 14。
atmega - 使用 PWM 的 50hz 正弦查找表
有人可以指导我如何在 Atmega32 中使用 PWM 生成查找表以生成 50 hz 正弦波。
这是我到目前为止所做的,但对要做什么感到困惑。
50 Hz 正弦波,因此 20 ms 时间段 256 个样本(分割数)
我需要增加的步骤 = 20 ms/256 = 0.078125 ms(PWM 信号周期)
角度步进率 = 360/256 = 1.40625
正弦波的幅度应为 1。
embedded - 如何获得更高的 PWM 频率?
我正在使用 C18 编译器提供的库来打开和设置 PWM 使用的占空比。我注意到在 100% 占空比下我可以获得的最大 PWM 频率约为 13.5 KHz。占空比越低,PWM 频率越高。如何在 100% 占空比的情况下实现更高的 PWM 频率?是否有可能至少获得超过 13.5 KHz 的频率?我只是不知道我错过了什么,也许有人可以在这里提供帮助,我正在使用 PIC18F87J1。
这是我正在使用的关于 PWM 的代码片段。
感谢您的帮助,谢谢!
c - 无法在 dsPIC33F 上初始化 PWM
我可能只是用这些寄存器之一看不到森林,但我无法让 PWM 在dsPIC33FJ32MC102微控制器上工作(警告:大 PDF)我'米玩弄。我已经遵循了数据表和进一步的应用说明(警告:另一个 PDF)甚至代码示例,但我看不出我做错了什么,尽管在我的测试台上我得到了高输出的 Vcc 和接地低输出。我已将故障引脚都绑定到 Vcc 并禁用了注册键码,因此我的更改应该会看到一些效果。我究竟做错了什么?
c - 树莓派 PWM 驱动的 LED 停止按钮
我是使用树莓派编程的新手,我的任务是建立一个用按钮激活并由同一个按钮停止的“警报”。现在我想包括一个 PWM 驱动的 LED,从高到低衰减。对我来说的问题是,我不知道如何通过按下按钮摆脱循环。
我实际上来自德国,所以不幸的是我的评论是德国人。但我希望你们能帮助我:/
pic - PIC上奇怪的PWM寄存器
我必须为 dsPIC33FJ128MC804 编写一些代码,并且在 PWM 库(ad hoc ...)中有一个分配给 DTCON1。然而,数据手册根本没有提到这个寄存器,而只提到了 PWM 模块 1 和 2 的 P1DTCON1 和 P2DTCON1;尽管如此,在 p33FJ128MC804.h 文件中定义了 DTCON1!
所以,问题是:这个寄存器在做什么?它同时控制 PxDTCON1?
arduino - What is the exact frequency of PWM signals produced from Arduino pins
In http://arduino.cc/en/Reference/analogWrite it says,
" The frequency of the PWM signal on most pins is approximately 490 Hz. On the Uno and similar boards, pins 5 and 6 have a frequency of approximately 980 Hz. Pins 3 and 11 on the Leonardo also run at 980 Hz. "
I want now to check that frequency. Simply I typed this command analogWrite(9,127)
, which will generate PWM signal with duty cycle 50%.
Then I used the pulseIn built-in Arduino function (pulseIn descriotion) and typed this command pulseIn(9,HIGH)
to measre the period in which the signal is HIGH. It returns in average 1010 us.
So the period time is 2020 (1010 for the High period and 1010 for the low period) and consequently the PWM frequency from that pin is 495.04 ~ 495Hz.
The same is done with pin number 5. The High period is 506 uS, The full period is 1012 uS, The PWM frequency from that pin is 988.14 Hz ~ 988 Hz.
So, What is the exact PWM frequency ?!
The following pictures is snapshots for the Arduino sketch and the results
The Arduino sketch
When I pressed '1' multiple times
When I pressed '0' multiple times
embedded - 如何在没有毛刺的情况下在 AVR 中实现零占空比 PWM?
我正在尝试在 ATmega2560 上使用硬件 PWM,在快速 PWM 模式下使用 TC0(一个 8 位定时器)。我需要动态调整占空比,这包括零占空比。然而,这似乎并不容易,甚至是不可能的。引用数据表:
OCR0A 寄存器的极值代表在快速 PWM 模式下生成 PWM 波形输出的特殊情况。如果 OCR0A 设置为 BOTTOM,则每个 MAX+1 个定时器时钟周期的输出将是一个窄尖峰。将 OCR0A 设置为 MAX 将导致输出持续高电平或低电平(取决于 COM0A1:0 位设置的输出极性)。
因此,将 OCR0A 设置为 0 (=BOTTOM) 实际上不会导致占空比为零,我的测试证实了这一点。需要采取其他一些方法。
首先,我已经教过如何使用上面引用中描述的 OCR0A=MAX 特殊情况。结合临时切换到反转模式,这将导致零占空比。但是,由于 COM0A1:0 位不是双缓冲的(并且不与 OCR0A 同步),如果在输出为高电平时切换模式(它将一直保持高电平直到下一次溢出),这可能会导致输出出现毛刺)。OCR0A 更改和模式更改的顺序似乎无关紧要,两者都可能出现故障。
我还考虑了另一种解决方案,通过设置 COM0A1:0=0 来关闭 PWM。这将立即将输出设置为 PORT 寄存器中的值,该值将为零。但是仍然存在从零输出回到非零占空比的问题。根据我在数据表中读到的内容,将 COM0A1:0 设置为重新启用 PWM 会立即将输出引脚切换到 PWM 的输出,这可能是一个不正确的值,直到下一次比较匹配或定时器溢出。因此,出现故障。
将 PWM 整体反相可能是适用的,但随后问题就变成了实现全占空比,并存在对称问题。
请注意,在通过 PORT 强制引脚输出时,不能保持启用 PWM 波形生成,如数据表中所述:
比较输出模式 (COM0x1:0) 位有两个功能。波形发生器使用 COM0x1:0 位来定义下一次比较匹配时的输出比较 (OC0x) 状态。此外,COM0x1:0 位控制 OC0x 引脚输出源。
没有办法让 PWM 运行一个周期左右并在它准备好时切换到它 - 启用 PWM 会立即强制引脚输出。
更新。相位校正(中心对齐)PWM 模式没有这个问题,在我的情况下是可以接受的。我已经尝试过并确认它适用于零占空比和全占空比。
arduino - 如何在定时器中断产生的 PWM 输入上使用 DAC?
我正在使用 12 位线性 LTC2631 DAC,并希望通过 I2C 将我的 PWM 信号转换为模拟信号。我目前无法提出算法,以及 DAC 需要如何编程以接收 PWM 输入然后生成输出。我正在使用 Pro Micro 3.3V 板。
任何帮助将不胜感激,包括我可以阅读的互联网内容?
谢谢!
embedded - PIC (dsPIC33EP 512MU810):高速 PWM 模块
我正在尝试使用内置(硬件)高速 PWM生成 10% 占空比 - 1kHz PWM,时钟为 80Mhz(F_osc) 。
根据文档,基期(PTPER 的数字)由下式计算
PTPER = F_osc / [(F_pwm) x (PWM_Clk_Prescale)]
代入 F_osc = 80Mhz、F_pwm = 1khz 和 Prescale = 8,我得到的计数是 PTPER=10,000。
但是,从我在示波器上的输出中,我可以看到我的PWM 频率为 ~2khz。.
我做错什么了吗?下面是我的代码——