Questions tagged «pwm»

PWM是信号调制的一种形式,它允许数字输出近似于模拟信号。使用它来解决有关使用PWM引脚(标有〜)的问题。

1
Arduino上PWM输出的频率是多少
当您使用analogWrite()时,Arduinos用于正常PWM的频率是多少? 不同的Arduino模型是否有所不同?我对Mega 2560特别感兴趣,但也想知道两个型号之间是否一致。 我看过使用500 Hz的Arduino的引用,这似乎很慢。
22 pwm 


5
如何在输出引脚上输出真实的模拟电压
关于我的程序,它是一个程序,先进行一些计算,然后使用analogWrite函数根据结果输出电压。但是我的问题是我基于一个误解来完成编程,这种误解是通过PWM的AnalogWrite函数确实会输出一个模拟电压,而实际上它只是“模拟”了模拟电压。 这是我的代码的相关部分: int pwmOutput = 11; int pwm = 0; void compareNewOldVoltageYes(void) { if(pv_Vnew > pv_Vold && pwm != 255) { ++pwm; //increasing value } else if(pwm != 0) { --pwm; //decreasing } } void compareNewOldVoltageNo(void) { if(pv_Vnew > pv_Vold && pwm != 0) { --pwm; } else if(pwm != …

2
将PWM频率设置为25 kHz
我目前可以使用以下代码将四个PWM引脚设置为31 kHz左右: void setup() { TCCR1B = TCCR1B & B11111000 | B00000001; // Set PWM frequency for D9 & D10: pinMode(pwmPin9, OUTPUT); // Sets the pin as output pinMode(pwmPin10, OUTPUT); // Sets the pin as output TCCR2B = TCCR2B & B11111000 | B00000001; // Set PWM for D3 & D11 …
12 pwm  frequency 

2
增加PWM位分辨率
我想提高Arduino Uno的PWM位分辨率。此刻它是8位,我认为太低了。在不丧失中断和延迟能力的情况下是否有可能? 高恩 编辑此设置提供16位结果 void setupPWM16() { DDRB |= _BV(PB1) | _BV(PB2); /* set pins as outputs */ TCCR1A = _BV(COM1A1) | _BV(COM1B1) /* non-inverting PWM */ | _BV(WGM11); /* mode 14: fast PWM, TOP=ICR1 */ TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS11); /* prescaler: clock / 8 */ ICR1 …


3
精确控制水温
我有以下设置: Arduino Duemilanove 小型热水器与光继电器连接(PWM正常) 防水DS18B20温度传感器 未知水量(但温度传感器和加热器始终在水下)。 如何根据温度传感器的读数准确控制水温?准确地说,我指的是达到温度传感器的精度(在这种情况下为±0.5°C)。一切都应该在Arduino上运行,因此没有额外的数据存储或处理能力。对于调试,我显然可以使用计算机。 我已经尝试过运行PID,但似乎真的很难 避免超调-最初或在添加(冷)水时超过目标温度 加入冷水后要适当稳定。
9 pwm  pid 

1
如果Arduino Uno只有6个数字PWM引脚,如何支持多达12个伺服器?
根据此: 伺服库在大多数Arduino板上最多支持12个电机,在Arduino Mega上最多支持48个电机。在Mega以外的板上,使用该库会禁用引脚9和10上的AnalogWrite()(PWM)功能,无论这些引脚上是否有Servo。在Mega上,最多可以使用12个伺服器,而不会影响PWM功能。使用12到23个电机将禁用引脚11和12上的PWM。 然而,根据此: 数字I / O引脚14(其中6个提供PWM输出) 那么,如果Uno只有6个可提供PWM输出的数字I / O引脚,那么如何控制6个以上的伺服器呢?

2
pulseIn()的计时精度如何?
我一直在使用该pulseIn()函数来处理基于PWM的二进制数据编码。它非常适合区分长度明显不同的脉冲,例如500us与1500us。这就足以处理典型的红外遥控器。 但是,我想制作自己的IR系统,该系统可以使用2个以上的脉冲长度,以便可以更快地进行数据传输。理想情况下,我想使用8种不同的脉冲长度进行八进制编码(例如200us,400us,600us等)。 我注意到pulseIn()虽然(+/- 10%)返回的值有很大的不同。我希望至少其中一些是由红外发射器和接收器模块引入的,但是我没有足够的设备来验证这一点。 假设我可以减轻这种外部误差,是否pulseIn()有足够的精度来区分此类相似的脉冲?
8 pwm  pulsein  timing 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.