问题标签 [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.
pic - 图 16F877 中的 PWM 分辨率
这里我使用 pic 16f877 MCU 和 mikroc 进行 pic 编译器来理解 PWM 信号。数据表说这个 MCU 在 PWM 中具有 10 位分辨率。我不明白这个决议是什么意思。这是否意味着如果我用它为电机供电,我可以获得 1024 种不同的速度。这是我在 mikroc 中编写的一个程序,用于逐渐增加 LED 的光并再次减少它。
但这不会给出预期的结果。LED 逐渐闪烁并突然关闭,然后再次逐渐闪烁。但是当我将行更改
while(i != 1023)
为 `while(i != 255) 时,它会给出预期的结果。
所以我想知道 10 位分辨率是什么意思,是我理解错了还是我做错了什么。
请帮忙....
arduino - Arduino电机速度控制
我正在使用模拟操纵杆和 Arduino 来使用两个 PWM 控制 X、Y 电机。
每个 PWM 控制相应电机的速度。
现在它可以工作但它并不平滑,我需要一个指数函数来使其平滑。
需要一个指数函数,将 PWM 稍微以指数方式改变为像这样的新值。
expFunction 应该替换为一个真正的函数,这个我不知道。
有人有想法,或者可以指出我正确的方向吗?
谢谢粗略
timer - Arduino mega 2560 pwm 定时器控制
我正在尝试使用由 mega 2560 控制的镜像振镜来引导激光。作为第一个测试,我希望激光通过等间隔跳跃沿一个轴移动,但我遇到了麻烦。我想知道我的代码中是否有任何明显的问题(我怀疑可能是这种情况,因为我是计时器和中断的新手)?
当我运行这段代码时,镜子确实实现了它应该的完整 5 度运动范围。问题是,镜子不是移动相等的间隔,而是在我认为是 while 循环的前两次迭代的情况下旋转了 0.8 度,然后镜子跳跃了大约 3.5 度的旋转。然后,在 while 循环的最后几次迭代中,镜子再次以小增量旋转 0.75 度。
我最初尝试对所有定时器和 PWM 设置使用我自己的设置,但这也不起作用:
使用第二个代码,镜子会旋转 1 度并保持原位。
编辑:我在 arduino 和镜子之间确实有一个电流增益电路,但我已经用函数发生器测试了那个电路和镜子。关闭函数发生器,它们工作正常。
python - RuntimeError: 无法访问 /dev/mem
我一直在尝试使用 Python GPIO PWM 来控制一组连接到我的 RPi 的 LED。当我运行 Python 脚本时,我收到以下错误:
我尝试以 root 身份运行脚本(使用 sudo 和实际以 root 身份登录)。所有其他 GPIO 功能都正常工作,我尝试通过 apt 进行更新和卸载/重新安装 python-rpi.gpio。这是我一直在运行的代码。
它基于此处找到的示例,但仍可能存在错误。我已经为此苦苦挣扎了很长时间,因此将不胜感激提供的任何帮助。谢谢!
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 我不知道我在做什么错(如果我是的话)或者我错过了什么?
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 控制
所以我的问题是:
为什么说明书中的屏蔽使用引脚 10 和 11 进行 PWM?它们对应于 2 个不同的计时器。为什么不是 9 和 10?
为了将 IR 与电机护罩一起使用,我应该配置 IR 库以使用什么计时器?
如果答案是 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 库使用此计时器
- Timer2
tone()
是 Arduino功能使用的 8 位定时器
而且,当然,IRremote库使用TIMER_RESET
,因此根据它使用的计时器,它可能会与关联的引脚冲突。
c - Arduino PWM 代码在一个引脚而不是另一个引脚上工作
我正在使用 Arduino UNO。以下代码适用于 PIN 10,但不适用于 PIN 6。任何人都可以提出原因。我知道每对 PWM 引脚使用不同的定时器,但我没有对任何定时器做任何事情!这是代码。
只需将led = 10
线路更改为led = 6
会导致代码停止工作,即 PIN 6 上的输出变为零,而不是预期的 PWM 波。
任何建议,将不胜感激。
vb.net - 使用 Vb.net 进行脉冲宽度调制 (PWM)
我可以使用带有布尔参数的函数来控制板上某些引脚的输出。是否可以使用 Vb.Net 发送 PWM 信号?
c - 使用 PIC 18 PWM 控制直流电机
我使用 PIC 18 微控制器使用 PWM 控制直流电机的速度。我已经设法使用下面的代码让它旋转。而且我已经测试过我的 H 桥是 100% 的功能。
然而,当我打开我的电路时,12V 到电机,5V 到逻辑,然后我使用我的 RS232 通信模块(我已经测试过并且它可以正确接收和传输)向电路发送命令,程序重置并台式电源上的电流降至 0A。有时马达会轻微地抖动,几乎就像它试图旋转一样,但随后停止了。
有什么想法我可能会出错吗?
microcontroller - 与 L293D morot Driver 和 Atmega8 接口时直流电机速度过低
我正在尝试使用 L293D 驱动器和不带 PWM 的 Atmega8 驱动 6v 直流电机。问题是我在将电机与 L293D 驱动器连接时速度非常低。但是,当我为电机提供直接 6V 直流电源时,它会很好地旋转。我在 L293D 的 V2(电机电源)引脚使用外部 6v 电源,但没有改善。在我用手转动转子之前,电机不会转动。不使用PWM还有问题吗?我的代码在这里: