脉冲宽度调制PWM舵机SG90、超声波测距

PWM开发SG90

  • 简介

    PWM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及赋值),对模拟信号电平进行数字编码,也就是说通过调节占空比的变化来调节信号、能量等的变化,占空比就是指在一个周期内,信号处于高电平的时间占据整个信号周期的百分比,例如方波的占空比就是50%。

    1. 脉冲宽度调制
    2. 通过占空比编码模拟信号
    3. 占空比一个周期内,高电平占据时长的百分比

    在这里插入图片描述

控制舵机

  • 什么是舵机

    如下图所示,最便宜的舵机sg90,常用三根或者四根接线,黄色为PWM信号控制。

    用处:垃圾桶项目开盖、只能小车的全比例转向、摄像头云台、机械臂等

    常见的有0-90°、0-180°、0-360°

    在这里插入图片描述

  • 怎么控制舵机

    向黄色信号线输入PWM信号。

    PWM波的频率不能太高,大约59Hz,即周期=1/频率=1/50=0.02s=20ms

    数据:

    0.5ms-------------0度;2.5% 对应函数中占空比为250

    1.0ms------------45度;5.0% 对应函数中占空比为500

    1.5ms------------90度;7.5% 对应函数中占空比为750

    2.0ms-----------135度;10.0% 对应函数中占空比为1000

    2.5ms-----------180度;12.5% 对应函数中占空比为1250

    0.5为最大公约数,设置定时器为0.5ms,40个0.5ms为20ms一个周期

  • 编程实现

    在这里插入图片描述

    #include "reg52.h"
    #include <intrins.h>
    
    sbit pwm = P1^1;
    
    int cnt = 0;
    int jd = 0;
    
    void time0_init()//定时器初始化函数
    {
         
    	//1.选择定时器模式
    	TMOD &= 0xF0;
    	TMOD |= 0x01;
    	//2.给定定时器初值 0.5ms溢出
    	TL0 = 0x33;
    	TH0 = 0xFE;
    	//3.开启定时器
    	TR0 = 1;
    	TF0 = 0;
    	//开启中断
    	EA = 1;
    	ET0 = 1;
    
    }
    void time0_inter() interrupt 1
    {
         
    	//4.溢出后cnt++,同时还原初值
    	cnt++;
    	TL0 = 0x33;
    	TH0 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值