这是一个普遍的问题,我相信它可能是一个数学问题,但它适用于Arduino平台。
我正在做一个球悬浮项目,它将乒乓球悬挂在管子的设定点上,用激光位置传感器读取球位置,该传感器给出与球位置相关的模拟电压。对于管长度的操作范围,传感器输出非常线性。
然后我用PWM控制风扇作为%,这是用锅手动调节的,我在管上以1英寸的增量标记了刻度。
基本上我制作了一个传感器电压输出值表,与电机中不同位置的电机PWM%值有关。
我制作了一个关于这两个变量的图表,它令人惊讶地非常线性。我在excel中做了一个趋势线,得到了一个Y = 3.0265X + 15.05
的线方程X是传感器位置(以伏特为单位),Y是以%为单位的PWM值,
我遇到问题的部分是从模拟引脚获取模拟电压,该模拟电压在arduino中为0到1023,并将其与PWM连接到模拟写入电机(0到255之间的值)
我知道analogRead()是和ADC,所以我将0到1023的值转换为电压(5.0 * analogvalue)/ 1023;
这将给我伏特,但我不明白如何将其与PWM相关联,例如传感器电压的变化与PWM到电机的变化。我认为我走在正确的轨道上,但没有把点连在一起。
任何帮助将不胜感激!
由于
答案 0 :(得分:2)
一般而言,PWM百分比与电源电压的电压直接相关。也就是说,如果你有一个5伏的Arduino,并且PWM百分比是75%,输出应该是3.75伏,只要你有一个能够“过滤”单个脉冲的输出电路。
请记住,PWM值在0到255范围内,因此您需要将所需的“analogRead()”值(范围为0到1023)除以系数4才能生成使用PWM输出正确的电压。