0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

深度解析基于FPGA控制的舵机程序

2oON_changxuemc 来源:互联网 作者:佚名 2018-01-25 08:54 次阅读

舵机

一个常见的舵机有三个连接线。

黑色:电源

红色:电源(5伏直流)

白色:控制引脚(PWM)

PWM控制舵机位置。伺服系统每20毫秒要有一个脉冲,以便获得正确的角度信息。脉冲宽度决定了舵机的角度运动范围。也就是说,我们可以通过发送1毫秒脉冲设置舵机到一端位置,发送2毫秒脉冲将其设置到另一个位置。

深度解析基于FPGA控制的舵机程序

控制波形

我们设计一个四个输入,一个输出的模块,如下图所示

控制模块

Clk:时钟信号

reset:复位信号

button_l:用于PWM占空比的增加

button_r:用于PWM占空比的减小

Pwm:输出信号驱动舵机。

首先,应该生成具有20毫秒周期的PWM信号,由于使用50MHz的时钟产生PWM,为了产生20ms信号,我们将定义一个名为counter的变量和一个名为upper的常数,它表示计数上边界。

Upper boundary : 20ms/20ns = 1000 000

constant upper :integer:=1000000;

………………………..

process(clk,reset)

begin

if reset = '1' then

pwm_reg

counter

duty_cycle

elsif clk='1' and clk'event then

pwm_reg

counter

duty_cycle

end if;

end process;

counter_next

控制信号占空比的值应是1毫秒至2毫秒之间。我们将定义两个常数命名dcycle_max和dcycle_min说明上下边界。

dcycle_max:显示脉冲宽度的最大值。

(2ms/clock period=2 ms/ 20 ns=100000)

dcycle_min:显示脉冲宽度的最小值。

(1ms/clock period=1 ms/ 20 ns=50000)

脉宽(占空比)在每个PWM周期中改变,因此我们定义了一个称为tick的变量。当tick为“1”时,占空比将发生变化。

signal tick : std_logic;

tick

定义了一个称为duty_in的常数,用于改变占空比。

VHDL代码

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

entity servo_pwm is

Port ( clk : in STD_LOGIC;

reset : in STD_LOGIC;

button_l : in STD_LOGIC;

button_r : in STD_LOGIC;

pwm : out STD_LOGIC);

end servo_pwm;

architecture Behavioral of servo_pwm is

constant period:integer:=1000000;

constant dcycle_max:integer:=100000;

constant dcycle_min:integer:=50000;

constant duty_in:integer:=200;

signal pwm_reg,pwm_next:std_logic;

signal duty_cycle,duty_cycle_next:integer:=0;

signal counter,counter_next:integer:=0;

signal tick:std_logic;

begin

process(clk,reset)

begin

if reset = '1' then

pwm_reg

counter

duty_cycle

elsif clk='1' and clk'event then

pwm_reg

counter

duty_cycle

end if;

end process;

counter_next

tick

process(button_l,button_r,tick,duty_cycle)

begin

duty_cycle_next

if tick='1' then

if button_l ='1' and duty_cycle >dcycle_min then

duty_cycle_next

elsif button_r ='1' and duty_cycle

duty_cycle_next

end if;

end if;

end process;

pwm

pwm_next

end Behavioral;

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21301

    浏览量

    593100
  • 控制模块
    +关注

    关注

    2

    文章

    118

    浏览量

    18630
  • 舵机
    +关注

    关注

    17

    文章

    239

    浏览量

    40384

原文标题:FPGA控制舵机程序

文章出处:【微信号:changxuemcu,微信公众号:畅学单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    舵机控制例程、原理介绍

    电子发烧友网站提供《舵机控制例程、原理介绍.zip》资料免费下载
    发表于 02-23 14:02 0次下载

    如何使用单片机控制舵机的转动

    单片机是一种集成电路,它可以被编程以控制外部电子设备的运行。舵机是一种能够转动到特定位置的电动机,常用于模型、机器人以及其他需要精确控制位置的应用中。本文将详细介绍如何使用单片机控制
    的头像 发表于 12-29 10:15 687次阅读

    舵机三根线分别是什么?一文解析舵机各线缆对应关系

    最近,经常有同学问我关于舵机线路的问题,包括舵机三根线分别是什么线、每根线的颜色是什么、舵机接线应该怎么接,以及四线舵机都有什么线等。为了更好地解答大家的疑惑,我特地撰写了这篇文章,希
    的头像 发表于 12-27 10:56 1597次阅读
    <b class='flag-5'>舵机</b>三根线分别是什么?一文<b class='flag-5'>解析</b><b class='flag-5'>舵机</b>各线缆对应关系

    方向控制舵机值及限幅

    个数为:Duty_mid=45 600; 注意一定是让舵机到达理论中值后再安装转向机构,还需要借助按键找出舵机的左右极限值,并且在程序内部要写限幅,保护舵机
    的头像 发表于 11-14 17:05 390次阅读
    方向<b class='flag-5'>控制</b>中<b class='flag-5'>舵机</b>值及限幅

    51单片机控制舵机的教程 按键控制舵机转动的程序代码

    舵机一般由舵盘、减速齿轮组、位置反馈电位器、直流电机、控制电路板等组成。一般情况下舵机的信号线为黄色或者白色,电源主要常见为4.2-7.4V,不同的供电将直接影响舵机的扭矩标准。
    的头像 发表于 10-31 16:49 3028次阅读
    51单片机<b class='flag-5'>控制</b><b class='flag-5'>舵机</b>的教程  按键<b class='flag-5'>控制</b><b class='flag-5'>舵机</b>转动的<b class='flag-5'>程序</b>代码

    基于CW32F030C8T6的舵机控制应用

    基于CW32F030C8T6的舵机控制应用
    的头像 发表于 10-25 16:52 448次阅读
    基于CW32F030C8T6的<b class='flag-5'>舵机</b><b class='flag-5'>控制</b>应用

    德晟舵机PWM信号控制原理

    现在常用的舵机控制信号主要有 PWM 信号和串口总线信号两种:其中 PWM 信号控制比较简单,但是功能只有一个即控制舵机转动;串口总线信号
    的头像 发表于 10-16 15:51 730次阅读
    德晟<b class='flag-5'>舵机</b>PWM信号<b class='flag-5'>控制</b>原理

    C语言深度解析

    C语言深度解析,本资料来源于网络,对C语言的学习有很大的帮助,有着较为深刻的解析,可能会对读者有一定的帮助。
    发表于 09-28 07:00

    舵机控制原理资料

    舵机控制原理
    发表于 09-21 09:33 1次下载

    PWM信号控制舵机原理

    PWM信号控制舵机原理
    发表于 09-21 09:32 4次下载

    stm32插上舵机线后不停的自动复位重启是怎么回事?

    很大的困扰,下面就来详细解析一下这个问题。 首先,我们先来了解一下舵机舵机是一种能够精确控制转动角度的电动机械装置,通常用于模型、机器人等领域。
    的头像 发表于 09-14 14:22 1923次阅读

    深度解析如何管控SMT回流焊炉温曲线

    深度解析如何管控SMT回流焊炉温曲线
    的头像 发表于 06-21 09:48 825次阅读
    <b class='flag-5'>深度</b><b class='flag-5'>解析</b>如何管控SMT回流焊炉温曲线

    基于FPGA的CAN总线控制器的设计

    今天给大侠带来基于FPGA的CAN总线控制器的设计,由于篇幅较长,分三篇。今天带来第一篇,上篇,CAN 总线协议解析以及 CAN 通信控制程序
    的头像 发表于 05-18 09:21 913次阅读
    基于<b class='flag-5'>FPGA</b>的CAN总线<b class='flag-5'>控制</b>器的设计

    基于89C51单片机的舵机按键控制程序程序

    基于89C51单片机的舵机按键控制程序程序
    发表于 05-16 09:09 2次下载

    基于89C51单片机的舵机扇形摇摆源程序

    基于89C51单片机的舵机扇形摇摆源程序
    发表于 05-15 11:12 2次下载