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

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

3天内不再提示

如何使用单片机控制伺服电机?

科技观察员 来源:英锐恩 作者:英锐恩 2023-07-06 10:53 次阅读

伺服电机是我们常用的一种电机,在本文的案例中,将学习如何使用单片机控制伺服电机,案例以PIC16F877A单片机作为接口的连接与控制示例。

什么是伺服电机?

伺服电机是一种根据给定指令运行的特殊电机。它提供了精确的角度控制,这也意味着与其他电机通电即旋转不同。伺服电机仅旋转到一定程度或直到需要下一次旋转,在这之前电机会停止不动并等待下一条指令,才能执行进一步的动作。所以,伺服电机需要借助伺服机电路进行控制才能按要求旋转,它的角旋转和最终运动由位置反馈决定,其控制线的输入也决定了输出轴所需的位置。

伺服电机与PIC16F877A接口的伺服电机电路图:

20220401182021.jpg

它有一个非常简单的电路图。伺服电机的控制线直接连接到单片机的RB0引脚。该销将提供电机所需的角位移。在这个项目中,假设我们正在使用一个角旋转被限制在0°-180°的伺服电机。我们可以通过使用宽度变化的脉冲以最高精度控制电机的旋转以达到所需的角度。

每20毫秒(20000微秒)后向伺服电机提供一个脉冲。电机的角位置由该脉冲的长度决定。角度位置0°、90°和180°在代码中演示。

下面是用于控制伺服电机的PIC单片机接口的C代码,我们在编译器中编写以下与PIC接口的伺服电机代码:

void Rotation0() //0度

{

unsigned int i;

for(i=0;i<50;i++)

{

PORTB.F0 = 1;

Delay_us(800); //800us 脉冲

PORTB.F0 = 0;

Delay_us(19200);

}

}

void Rotation90() //90度

{

unsigned int i;

for(i=0;i<50;i++)

{

PORTB.F0 = 1;

Delay_us(1500); //1500us 的脉冲

PORTB.F0 = 0;

Delay_us(18500);

}

}

void Rotation180() //180 度

{

unsigned int i;

for(i=0;i<50;i++)

{

PORTB.F0 = 1;

Delay_us(2200); //2200us 的脉冲

PORTB.F0 = 0;

Delay_us(17800);

}

}

void main()

{

TRISB = 0; // PORTB作为输出端口

do

{

Rotation0(); //0度

Delay_ms(2000);

Rotation90(); //90度

Delay_ms(2000);

Rotation180(); //180度

}while(1);

}

代码开头已经声明了电机角旋转0°、90°和 180°的各个函数。在本教程中,我们没有使用PIC16F877A的实际脉冲宽度调制功能来生成脉冲。而是,脉冲是在程序延迟的帮助下产生的。特定角度的延迟持续时间等于电机旋转到相应角度所需的脉冲长度。也就是说,对于0°角,脉冲宽度约为800ms,因此在PORT引脚RB0设置为高时引入了800ms的延迟。同样,旋转90°需要1500ms的脉冲,180°角度需要2200ms。

在主程序中,将PORTB设置为输出端口,三个函数都被调用,它们之间有2000ms的延迟。该程序使电机以某种模式旋转,比如0°–90°–180°–0°等等。这将在无限循环“do-while”循环中持续运行,直到程序中止。

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

    关注

    6001

    文章

    43973

    浏览量

    620855
  • 伺服电机
    +关注

    关注

    82

    文章

    1838

    浏览量

    56289
收藏 人收藏

    评论

    相关推荐

    求教 如何用51单片机控制伺服电机 正反转一定圈数

    电机型号是多摩川TBL-i IITS4609N
    发表于 10-08 10:58

    伺服电机控制平台

    静儿对伺服电机进行精确控制。但是这些设备不仅体积庞大,而且价格昂贵。而随着单片机的功能日渐强大,完全可以取代电脑,和PLC。只是单片机抗干扰
    发表于 11-11 18:25

    单片机控制伺服驱动器控制交流伺服电机。用什么单片....

    单片机控制伺服驱动器控制交流伺服电机。用什么单片机
    发表于 04-21 21:02

    labview和单片机控制伺服电机

    labview做上位单片机做下位控制伺服电机,求帮助。。。
    发表于 09-27 15:00

    单片机控制伺服电机控制系统

    有没有人有相关的资源呀,分享分享
    发表于 09-28 10:21

    8098 单片机伺服电机PWM 调速控制

    8098 单片机伺服电机PWM 调速控制  摘 要 本文介绍应用8098 单片机丰富的接口功能, 采用数字调制的方法来实现直流
    发表于 04-13 15:09 130次下载

    应用8098单片机实现直流伺服电机PWM调速控制

    摘要:本文介绍应用8098单片机丰富的接口功能,采用数字调制的方法来实现直流伺服电机的PWM调速控制。关键词:单片机 PWM调制波 数字调制
    发表于 08-06 12:42 146次下载

    交流伺服电机单片机控制及其应用

    摘要:介绍了用单片机实现对伺服电机控制的一种方案,能实现对伺服电机变速、匀速运动的平稳
    发表于 08-08 17:00 562次下载

    基于单片机的交流伺服电机控制系统

    基于单片机的交流伺服电机控制系统,下来看看
    发表于 04-26 09:43 27次下载

    交流伺服电机单片机控制及其应用

    交流伺服电机单片机控制及其应用,下来看看。
    发表于 04-26 10:41 34次下载

    基于单片机控制的交流伺服电机转速控制系统的设计与实现

    设计 一种单片机控制下 的交流伺服 电机转 速系统 ,详细介绍它 的硬件组 成原理及其软件实现过程 ,实现 了对通用交流伺服
    发表于 11-08 17:34 29次下载
    基于<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>系统的设计与实现

    如何使用单片机对实现伺服电机控制的方法说明

    介绍了用单片机实现对伺服电机控制的一种方案 ,能实现对伺服电机变速、匀速运动的平稳
    发表于 03-14 08:00 103次下载
    如何使用<b class='flag-5'>单片机</b>对实现<b class='flag-5'>伺服</b><b class='flag-5'>电机</b><b class='flag-5'>控制</b>的方法说明

    单片机控制伺服电机和舵机的详细资料说明

    伺服电机是指在伺服系统中控制机械元件运转的发动机,是一种补助马达间接变速装置。伺服电机可以
    发表于 07-23 17:37 10次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>控制</b><b class='flag-5'>伺服</b><b class='flag-5'>电机</b>和舵机的详细资料说明

    交流伺服电机单片机控制及其应用.

    交流伺服电机单片机控制及其应用.(村田电源技术(上海有限公司 (研发中心)-引言伺服电机属于一
    发表于 09-16 15:42 71次下载
    交流<b class='flag-5'>伺服</b><b class='flag-5'>电机</b>的<b class='flag-5'>单片机</b><b class='flag-5'>控制</b>及其应用.

    stm32单片机控制伺服电机转动固定角度

    stm32单片机控制伺服电机转动固定角度在用伺服电机进行二维平台移动时,会涉及让二维平台移动一个
    发表于 11-18 20:21 83次下载
    stm32<b class='flag-5'>单片机</b><b class='flag-5'>控制</b><b class='flag-5'>伺服</b><b class='flag-5'>电机</b>转动固定角度