您好,欢迎进入山西润盛进出口有限公司!

咨询服务热线

15383419322

R/C伺服电机FPGA

发布时间:2023-12-22 11:17人气:

FPGA适用于控制R / C伺服电机

R / C伺服(“遥控伺服电机”)由一个电机,一些电子设备和一组装在一个小盒子中的齿轮组成。单轴从伺服器出来。您可以通过向伺服器发送脉冲来精确控制轴的旋转角度。轴旋转角度限制为大约270度(它不能旋转一整圈,而只能旋转3/4圈)。

这是一个伺服器的图片(已被咬住,但已说明了我们的目的)。

有用的信息链接包括:

  • RC伺服控制
  • RC飞机伺服系统使用指南
  • 遥控伺服器101

R / C Servos用于:

  • 在遥控模型中(汽车,飞机…)。
  • 在机器人技术中。

伺服系统有3条线:

  • 黑色:地面。
  • 红色:电源(+ 5V)。
  • 白色:旋转控制(使用PWM)。

白线上的PWM控制脉冲长度需要在1ms到2ms之间。1.5ms的脉冲使轴在其旋转范围的中间旋转。即使不需要更改角度位置,也需要定期发送新脉冲(每10到20ms),否则伺服将停止尝试保持该脉冲。

让我们以8位分辨率(256步,从0到255)控制一个伺服器。这意味着我们需要产生一个1ms(0)到2ms(255)的脉冲,分辨率为1ms / 256 = 3.9µs。分钟使用25MHz时钟(周期为40ns),第一步是对时钟进行分频,以产生周期的“滴答声”,使其尽可能接近3.9µs。

parameterClkDiv=98;//25000000/1000/256=97.56 reg[6:0]ClkCount;regClkTick; always@(posedgeclk)ClkTick<=(ClkCount==ClkDiv-2); always@(posedgeclk)if(ClkTick)ClkCount<=0; elseClkCount<=ClkCount+1;

使用“ ClkTick”,我们实例化一个12位计数器,该计数器在每个滴答处递增。

reg[11:0]PulseCount; always@(posedgeclk)if(ClkTick)PulseCount<=PulseCount+1;

每个滴答持续3.9µs,因此256个滴答持续1ms,12位计数器“ PulseCount”每16ms翻转一次。正是我们需要定期产生新的脉冲。产生PWM脉冲当“ PulseCount”等于0时,我们开始每个脉冲。当“ PulseCount”在256和511之间时,我们结束每个脉冲。这将在1ms和2ms之间产生脉冲。假设“ RCServo_position”是8位位置值(从0到255),我们在其前面连接一个“ 0001”以创建一个范围为256 ot 511的12位值。最后,我们将这12位与“ PulseCount”进行比较以产生脉冲。

regRCServo_pulse; always@(posedgeclk)RCServo_pulse=(PulseCount<{4'b0001,RCServo_position});

  • 联系方式
  • 传 真:
  • 手 机:15383419322
  • 电 话:15383419322
  • 地 址:山西太原市杏花岭区解放路 175 号万达中心 A 座 33 楼 3301 室
友情链接
plc控制器
自动化设备
自动化设备
伺服驱动器
在线咨询

咨询电话:

15383419322

  • 微信扫码 关注我们

Copyright © 2022-2024 山西润盛进出口有限公司 版权所有 晋ICP备2021008479号-14

晋公网安备 14010702070906号

扫一扫咨询微信客服
15383419322