发 帖  
原厂入驻New
[问答] 测试PWM设置失败
70 PWM LCD
分享
嗨,伙计们,好吧,再把我的头发剪掉,可能错过了明显的,但是我以前没有用过PWM模块。AM试图驱动从PIC16F1455引脚5(RC5,PWM1)业余爱好伺服。频率需要低至50赫兹,但相当宽容。它可以上升到可能接近150赫兹之前,伺服只是平了反叛。因为在我计划使用日立驱动的LCD显示器的项目中,我把时钟降低到1兆赫。因此,所有这些,并设置预分频器为64,PWM应该有一个~61Hz的频率-良好的工作范围内的伺服。附上的代码,只是为了测试PWM设置,这显然是我失败了。这对我来说都是新的——我到底做错了什么?伺服没有任何反应,虽然我至少听到一些低频发生在偶然(大概20赫兹ISH?)坦克先行,伊恩
0
2020-4-21 10:17:42   评论 分享淘帖 邀请回答

相关问题

4个回答
这个论坛上经常讨论驱动一个爱好的R/C伺服器的话题。有一两次深入的讨论,讨论了几种实现方法。其他大多数讨论似乎都不过是让伺服器以粗略的方式移动的黑客。看过之后在汇编语言代码你张贴你是非常真实的,因为这是“…“我所能提供的最好线索是,您的代码需要产生一个最小宽度为0.5毫秒,最大宽度为2.5毫秒的脉冲。为了让伺服臂旋转稳定,任何脉冲在时间上的分辨率需要达到1.0微秒或更高。PIC16F1455的PWM功能块不能同时具有20毫秒周期和1.0微秒的脉冲宽度分辨率。您需要发现或进入一种可以同时实现两者的方法。这是可能的,并在这个论坛上讨论了几种方法。你可以在这里找到这些讨论,或者在网上搜索其他方法。
2020-4-21 10:37:23 评论

举报

因为你的PIC没有完整的CCP模块或者16位PWM,所以没有好的选择。然而,最好的选择是:在48MHz下运行Fosc。在187.5KHz的增长率下,将TMR2预分频器设置为1:64。在750Hz的翻转率下,将PR2设置为249。在定时器2ISR中,将占空比设置为50Hz,在15次中将占空比设置为非零。在ISR中,如果需要的脉冲宽度大于1.333ms,设置100%占空比,从脉冲宽度中减去1.333ms。在ISR中用Fosc/64的计数(PWM分辨率)定义脉冲宽度,以便进行简单的数学计算。如果是,为什么不使用XC8和MLA USB堆栈?如果使用PIC与支持输出比较的CCP模块或16位PWM模块一起使用,则更有意义,因此您不必用小块构建伺服脉冲。
2020-4-21 10:46:38 评论

举报

嗨,我认为1.33毫秒是一个尴尬的选择定时器周期。在伺服运动信号的有效范围中间需要中断处理,因此可能导致伺服运动的一个步骤。采用10位PWM分辨率,使用PWMxDCH和PWMxDCL寄存器。2.56毫秒的PWM重复周期应该在PWM信号中给出2.5微秒的分辨率。400个分辨率步长在1-2毫秒之间,800个分辨率步长在0.5毫秒和2.5毫秒之间。根据制造和型号,模型伺服致动器可以在1-2毫秒的脉冲宽度范围之外具有部分运动范围。为了实现这一点,PWM时钟。需要100kHz的频率,但这只能在24MHz至25MHz的系统时钟频率范围内实现。使用48MHz锁相环,然后使用CPUDIV分频器,有多种可能实现这一点。不要降低PIC的CPU时钟频率以匹配日立显示控制。相反,通过调用宏:NOP();或_u._us(1);关于,Mysil;
2020-4-21 11:05:28 评论

举报

由于占空比更新被缓冲,并且直到下一个PR2匹配(即,滞后一个PWM周期)才生效,只要PR2<255,100%占空比脉冲可以容易地无缝地延伸到下一个PWM周期。然而,这样做的代码比您的建议更复杂,所以如果不需要更高的CPU速度,并且应用程序不需要那么多的分辨率,那么最好简化它。
2020-4-21 11:18:18 评论

举报

只有小组成员才能发言,加入小组>>

113个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表