差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
r_c伺服电机 [2020/07/09 10:25] zili |
r_c伺服电机 [2022/04/26 13:14] (当前版本) gongyusu |
||
---|---|---|---|
行 1: | 行 1: | ||
###R/C伺服电机 | ###R/C伺服电机 | ||
+ | |||
+ | [[RC_servos|R/C伺服电机]] | ||
+ | |||
[[https://www.fpga4fun.com/RCServos.html|R/C Servos]]\\ | [[https://www.fpga4fun.com/RCServos.html|R/C Servos]]\\ | ||
\\ | \\ | ||
行 14: | 行 17: | ||
有用的信息链接包括: | 有用的信息链接包括: | ||
- | * RC伺服控制 | + | * [[http://www.epanorama.net/documents/motor/rcservos.html|RC伺服控制]] |
- | * RC飞机伺服系统使用指南 | + | * [[http://www-cdr.stanford.edu/dynamic/servo/|RC飞机伺服系统使用指南]] |
- | * 遥控伺服器101 | + | * [[http://www.cs.wisc.edu/~bolo/shipyard/servos101.html|遥控伺服器101]] |
\\ | \\ | ||
R / C Servos用于: | R / C Servos用于: | ||
行 23: | 行 26: | ||
\\ | \\ | ||
- | \\ | ||
####电气连接和PWM脉冲 | ####电气连接和PWM脉冲 | ||
伺服系统有3条线: | 伺服系统有3条线: | ||
行 37: | 行 39: | ||
####来自FPGA的PWM脉冲 | ####来自FPGA的PWM脉冲 | ||
- | 让我们以8位分辨率(256步,从0到255)控制一个伺服器。这意味着我们需要产生一个1ms(0)到2ms(255)的脉冲,分辨率为1ms / 256 = 3.9µs。 | + | 让我们以8位分辨率(256步,从0到255)控制一个伺服器。这意味着我们需要产生一个1ms(0)到2ms(255)的脉冲,分辨率为1ms / 256 = 3.9µs。\\ |
+ | \\ | ||
+ | **分钟** | ||
\\ | \\ | ||
- | #####**分钟** | ||
使用25MHz时钟(周期为40ns),第一步是对时钟进行分频,以产生周期的“滴答声”,使其尽可能接近3.9µs。\\ | 使用25MHz时钟(周期为40ns),第一步是对时钟进行分频,以产生周期的“滴答声”,使其尽可能接近3.9µs。\\ | ||
行 60: | 行 63: | ||
每个滴答持续3.9µs,因此256个滴答持续1ms,12位计数器“ PulseCount”每16ms翻转一次。正是我们需要定期产生新的脉冲。\\ | 每个滴答持续3.9µs,因此256个滴答持续1ms,12位计数器“ PulseCount”每16ms翻转一次。正是我们需要定期产生新的脉冲。\\ | ||
\\ | \\ | ||
- | #####**产生PWM脉冲** | + | **产生PWM脉冲** |
+ | \\ | ||
当“ PulseCount”等于0时,我们开始每个脉冲。当“ PulseCount”\\ | 当“ PulseCount”等于0时,我们开始每个脉冲。当“ PulseCount”\\ | ||
在256和511之间时,我们结束每个脉冲。这将在1ms和2ms之间产生脉冲。\\ | 在256和511之间时,我们结束每个脉冲。这将在1ms和2ms之间产生脉冲。\\ | ||
行 71: | 行 75: | ||
</code> | </code> | ||
- | 那就是所有人!完整的代码可以在这里找到。\\ | + | 那就是所有人!完整的代码可以在[[https://www.fpga4fun.com/files/RCServo.zip|这里]]找到。\\ |
如您所见,控制R / C伺服器所需的硬件很少,因此FPGA可以同时控制多个。\\ | 如您所见,控制R / C伺服器所需的硬件很少,因此FPGA可以同时控制多个。\\ | ||
\\ | \\ |