问题标签 [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 投票
2 回答
2015 浏览

pic - 图 16F877 中的 PWM 分辨率

这里我使用 pic 16f877 MCU 和 mikroc 进行 pic 编译器来理解 PWM 信号。数据表说这个 MCU 在 PWM 中具有 10 位分辨率。我不明白这个决议是什么意思。这是否意味着如果我用它为电机供电,我可以获得 1024 种不同的速度。这是我在 mikroc 中编写的一个程序,用于逐渐增加 LED 的光并再次减少它。

但这不会给出预期的结果。LED 逐渐闪烁并突然关闭,然后再次逐渐闪烁。但是当我将行更改 while(i != 1023)为 `while(i != 255) 时,它会给出预期的结果。

所以我想知道 10 位分辨率是什么意思,是我理解错了还是我做错了什么。

请帮忙....

0 投票
0 回答
1415 浏览

arduino - Arduino电机速度控制

我正在使用模拟操纵杆和 Arduino 来使用两个 PWM 控制 X、Y 电机。

每个 PWM 控制相应电机的速度。

现在它可以工作但它并不平滑,我需要一个指数函数来使其平滑。

需要一个指数函数,将 PWM 稍微以指数方式改变为像这样的新值。

expFunction 应该替换为一个真正的函数,这个我不知道。

有人有想法,或者可以指出我正确的方向吗?

谢谢粗略

0 投票
0 回答
2779 浏览

timer - Arduino mega 2560 pwm 定时器控制

我正在尝试使用由 mega 2560 控制的镜像振镜来引导激光。作为第一个测试,我希望激光通过等间隔跳跃沿一个轴移动,但我遇到了麻烦。我想知道我的代码中是否有任何明显的问题(我怀疑可能是这种情况,因为我是计时器和中断的新手)?

当我运行这段代码时,镜子确实实现了它应该的完整 5 度运动范围。问题是,镜子不是移动相等的间隔,而是在我认为是 while 循环的前两次迭代的情况下旋转了 0.8 度,然后镜子跳跃了大约 3.5 度的旋转。然后,在 while 循环的最后几次迭代中,镜子再次以小增量旋转 0.75 度。

我最初尝试对所有定时器和 PWM 设置使用我自己的设置,但这也不起作用:

使用第二个代码,镜子会旋转 1 度并保持原位。

编辑:我在 arduino 和镜子之间确实有一个电流增益电路,但我已经用函数发生器测试了那个电路和镜子。关闭函数发生器,它们工作正常。

0 投票
1 回答
5816 浏览

python - RuntimeError: 无法访问 /dev/mem

我一直在尝试使用 Python GPIO PWM 来控制一组连接到我的 RPi 的 LED。当我运行 Python 脚本时,我收到以下错误:

我尝试以 root 身份运行脚本(使用 sudo 和实际以 root 身份登录)。所有其他 GPIO 功能都正常工作,我尝试通过 apt 进行更新和卸载/重新安装 python-rpi.gpio。这是我一直在运行的代码。

它基于此处找到的示例,但仍可能存在错误。我已经为此苦苦挣扎了很长时间,因此将不胜感激提供的任何帮助。谢谢!

0 投票
3 回答
3168 浏览

pwm - 我的 BBB 中的 PWM 编程问题

背景:买了一个BBB并进行了一些实验,设法控制了LED和继电器。问题:无法从伺服中获得预期的行为,它一直在逆时针旋转原因:不知道,我在这里问的是什么:)

事实:BBB 与 Angstrom 外部 5V DC 连接到 BBB 和伺服伺服:Tower Pro sg90(非常常见的伺服)并且它正在工作,因为我在我的 RC 汽车中尝试过它。

程序:按照网络上的 som 教程(并使用 Adafruit_BBIO 库),我正在尝试使我的伺服工作,例如转 0、90、180 等,所以这就是我正在做的事情:

执行上述操作,伺服系统会不停地旋转 CCW。我可以读取 50Hz (60Hz) 和 1.66V 甚至尝试使用电平转换器所以我得到〜 2.5V 我不知道我在做什么错(如果我是的话)或者我错过了什么?

0 投票
3 回答
26405 浏览

timer - Arduino Uno PWM 引脚冲突

我基于 L298N 芯片构建了这个电机屏蔽来控制坦克的两个电机。一个电机使用引脚 5 和 6,另一个电机使用引脚 10 和 11。

在尝试添加TSOP 4838以使用红外遥控器控制油箱时,我注意到反向移动引脚 10/11 上的电机只能在全速下工作 - 即引脚 11 上的高 (255) 值。低于该值不会在引脚 11 上输出任何内容(这些引脚上的测量电压为 0 V)。

对于遥控器,我使用这个库IR接收器连接在引脚 2 上(但引脚无关紧要)。问题是库代码本身。启用 IR 监听的线路irrecv.enableIRIn();是导致问题的原因。我了解到内部 Arduino 定时器和屏蔽用于 PWM 的引脚存在冲突。

这是反向驱动电机的代码:

现在,我在这里发现Arduino Uno上的计时器使用的引脚是:

  • 引脚 5 和 6:由 Timer0 控制
  • 引脚 9 和 10:由 Timer1 控制
  • 引脚 11 和 3:由 Timer2 控制

所以我的问题是:

  1. 为什么说明书中的屏蔽使用引脚 10 和 11 进行 PWM?它们对应于 2 个不同的计时器。为什么不是 9 和 10?

  2. 为了将 IR 与电机护罩一起使用,我应该配置 IR 库以使用什么计时器?

  3. 如果答案是 2,则应取消注释中的一行IRremoteInt.h。我猜 Uno 会else在第 68 行使用分支,尽管那里只有 timer1 和 timer2。我想知道为什么 timer0 不能用于 Uno。

虽然我想留下切割痕迹并重新焊接作为最后的选择,但另一种可能性是更改屏蔽使用的引脚,但是哪个?而且我猜这也将与将定时器配置为在默认值之外的其他引脚上进行 PWM 配对,但我对定时器/中断一无所知,而且我对 Arduino 和 C 的了解有限。

我提出了一个很长的问题,因为我想学习的不仅仅是解决问题,所以请随意解释而不是问什么。

在寻找解决方案时,我还发现使用PWM或定时器时要记住的其他冲突:

  • Timer0是一个 8 位的定时器,最大可以保持 255 的值。它被delay()and使用millis(),所以乱用会有后果
  • Timer1是一个 16 位定时器,它最多可以容纳 65535(一个无符号的 16 位整数)。Arduino Servo 库使用此计时器
  • Timer2tone()是 Arduino功能使用的 8 位定时器

而且,当然,IRremote库使用TIMER_RESET,因此根据它使用的计时器,它可能会与关联的引脚冲突。

0 投票
0 回答
1109 浏览

c - Arduino PWM 代码在一个引脚而不是另一个引脚上工作

我正在使用 Arduino UNO。以下代码适用于 PIN 10,但不适用于 PIN 6。任何人都可以提出原因。我知道每对 PWM 引脚使用不同的定时器,但我没有对任何定时器做任何事情!这是代码。

只需将led = 10线路更改为led = 6会导致代码停止工作,即 PIN 6 上的输出变为零,而不是预期的 PWM 波。

任何建议,将不胜感激。

0 投票
0 回答
501 浏览

vb.net - 使用 Vb.net 进行脉冲宽度调制 (PWM)

我可以使用带有布尔参数的函数来控制板上某些引脚的输出。是否可以使用 Vb.Net 发送 PWM 信号?

0 投票
1 回答
1943 浏览

c - 使用 PIC 18 PWM 控制直流电机

我使用 PIC 18 微控制器使用 PWM 控制直流电机的速度。我已经设法使用下面的代码让它旋转。而且我已经测试过我的 H 桥是 100% 的功能。

然而,当我打开我的电路时,12V 到电机,5V 到逻辑,然后我使用我的 RS232 通信模块(我已经测试过并且它可以正确接收和传输)向电路发送命令,程序重置并台式电源上的电流降至 0A。有时马达会轻微地抖动,几乎就像它试图旋转一样,但随后停止了。

有什么想法我可能会出错吗?

0 投票
1 回答
724 浏览

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

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