PWM开发SG90

article/2025/8/19 0:00:27
文章目录
        

2. PWM开发SG90

2.1 简介

2.3 控制舵机

2.4 遇见潇潇遇见你,不负代码不负卿

前言

2. PWM开发SG90

2.1 简介

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

2.2 如何实现 PWM 信号输出
        1. 通过芯片内部模块输出,一般观察手册或者芯片 IO 口都会标明这个是否是 PWM
如下图增强 51 STC15w CPU

        2. 如果没有集成 PWM 功能,可以通过 IO 口软件模拟,相对硬件 PWM 来说精准度略差

2.3 控制舵机

     1. 什么是舵机
         如下图所示,最便宜的舵机sg90,常用三根或者四根接线,黄色为 PWM 信号控制
用处:垃圾桶项目开盖用、智能小车的全比例转向、摄像头云台、机械臂等
常见的有 0-90° 0-180° 0-360°
     2. 怎么控制舵机
        向黄色信号线“ 灌入 ”PWM 信号。
  •         PWM波的频率不能太高,大约50HZ,即周期=1/频率=1/50=0.02s20ms左右
                数据:
                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
  •        定时器需要定时20ms, 关心的单位0.5ms, 40个的0.5ms,初值0.5m cnt++
                1s = 10ms * 100
                20ms = 0.5ms * 40
      3. 编程实现
#include "reg52.h"sbit sg90_con = P1^1;
int jd;
int cnt = 0;void Delay2000ms() //@11.0592MHz
{unsigned char i, j, k;i = 15;j = 2;k = 235;do{do{while (--k);} while (--j);} while (--i);
}
void Time0Init()
{//1. 配置定时器0工作模式位16位计时TMOD = 0x01;//2. 给初值,定一个0.5出来TL0=0x33;TH0=0xFE;//3. 开始计时TR0 = 1;TF0 = 0;//4. 打开定时器0中断ET0 = 1;//5. 打开总中断EAEA = 1;
}
void Delay300ms() //@11.0592MHz
{unsigned char i, j, k;i = 3;j = 26;k = 223;do{do{while (--k);} while (--j);} while (--i);
}
void main()
{Delay300ms();//让硬件稳定一下Time0Init(); //初始化定时器jd = 1; //初始角度是0度,0.5ms,溢出1就是0.5,高电平cnt = 0;sg90_con = 1;//一开始从高电平开始//每隔两秒切换一次角度while(1){jd = 4; //135度 2ms高电平cnt = 0;Delay2000ms();jd = 1; //0度cnt = 0;Delay2000ms();}
}
void Time0Handler() interrupt 1
{cnt++; //统计爆表的次数. cnt=1的时候,报表了1//重新给初值TL0=0x33;TH0=0xFE;//控制PWM波if(cnt < jd){sg90_con = 1;}else{sg90_con = 0;}if(cnt == 40){//爆表40次,经过了20mscnt = 0; //当100次表示1s,重新让cnt从0开始,计算下一次的1ssg90_con = 1;}
}

2.4 遇见潇潇遇见你,不负代码不负卿


http://chatgpt.dhexx.cn/article/tXTYoRiT.shtml

相关文章

学习笔记12-SG90舵机

目录 一、简介接线 二、原理3、代码段3.1、sg90.c3.2、main.c 一、简介 舵机是一种位置&#xff08;角度&#xff09;伺服的驱动器&#xff0c;适用于需要角度不断变化并可以保持的控制系统&#xff0c;可以根据控制信号来输出指定的角度&#xff08;常见的有0-90、0-180、0-3…

PWM驱动sg90电机

关于PWM驱动sg90电机&#xff0c;不管是180还是360舵机都满足左侧的条件关系。 PWM周期为20ms&#xff0c;频率为50Hz 重装载值arr 1999 预分频值psc 7199 stm32f103主频72MHz TIM3_Int_Init(1999,7199);//Tout (arr1)(psc1)/TCLK;72000000/2000/720050PWM周期 (主频 / […

51单片机控制sg90舵机

2.1 简介 PWM&#xff0c;英文名Pulse Width Modulation&#xff0c;是脉冲宽度调制缩写&#xff0c;它是通过对一系列脉冲的宽度进 行调制&#xff0c;等效出所需要的波形&#xff08;包含形状以及幅值&#xff09;&#xff0c;对模拟信号电平进行数字编码&#xff0c;也就是说…

SG90舵机使用介绍

舵机控制 型号&#xff1a;SG90 接线 黄线&#xff1a;信号线 红线&#xff1a;电源线 棕线&#xff1a;地线 PWM周期 需要通过信号线往舵机输入PWM波&#xff0c;才能驱动舵机转动 PWM波的频率不能太高&#xff0c;大约50HZ&#xff0c;即周期1/频率1/500.02s&#xff…

51单片机sg90舵机

51单片机按键控制舵机旋转 一、舵机工作原理 1、这里介绍的sg90的可旋转角度为 0~180 2、sg90有三条线&#xff0c;橙色&#xff08;PWM&#xff09;红色&#xff08;5V&#xff09;棕色&#xff08;GND&#xff09; 3、PMW的范围为0.5ms2.5ms&#xff0c;相应的旋转角度为…

PWM开发SG90舵机

1. 简介 PWM,全称&#xff1a;Pulse Width Modulation,脉冲宽度调制缩写&#xff0c;它是通过宽度对一系列脉冲的宽度进行调制&#xff0c;等效出所需要的波形&#xff08;包含形状以及幅值&#xff09;&#xff0c;对模拟信号电平进行数字编码&#xff0c;也就是说通过调节占空…

控制SG90舵机

1. 什么是舵机 如下图所示&#xff0c;最便宜的舵机sg90&#xff0c;常用三根或者四根接线&#xff0c;黄色为PWM信号控制 用处&#xff1a;垃圾桶项目开盖用、智能小车的全比例转向、摄像头云台、机械臂等 常见的有0-90、0-180、0-360 VCC:接电压端 GND:接地端 PWM信号&#…

STM32控制SG90舵机

简介 通过使用STM32控制SG90舵机进行转动 PWM输出&#xff1a;PC6 定时器&#xff1a;TM3&#xff0c;通道1 接线如下&#xff1a; 控制原理及PWM配置 舵机的控制一般需要一个20ms的时基脉冲&#xff0c;该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分 PWM周…

【mcuclub】舵机-SG90

一、实物图&#xff08;SG90&#xff09; 二、原理图 编号名称功能1GND电源地&#xff08;棕色线&#xff09;2VCC电源正&#xff08;红色线&#xff09;3I/O信号线&#xff08;黄色线&#xff09; 三、简介 舵机&#xff08;英文叫Servo&#xff09;&#xff0c;是伺服电机的…

STM32外设系列—sg90(舵机)

文章目录 一、sg90简介二、引脚连接三、控制方法四、程序设计4.1 配置定时器4.2 编写控制程序 五、360舵机 一、sg90简介 首先介绍说一下什么是舵机。舵机是一种位置&#xff08;角度&#xff09;伺服的驱动器。适用于一些需要角度不断变化的&#xff0c;可以保持的控制系统。…

java基本类型与包装类型

基本数据类型&#xff1a;byte&#xff0c;int&#xff0c; short&#xff0c; long&#xff0c; boolean&#xff0c;char&#xff0c; float&#xff0c;double等 包装类型 &#xff1a; Byte&#xff0c;Integer&#xff0c;Short&#xff0c;Long&#xff…

java基本类型与包装类型区别

java基本类型与包装类型区别 Java中基本类型都有固定的存储空间&#xff0c;不像其他大多数语言那样随机器硬件架构的变化而变化&#xff0c;这种占存储空间大小的不变性是java程序比其他大多数语言编写的程序更具可移植性的原因之一。 java中基本类型和包装类的区别&#xff1…

【包装类型】

文章目录 包装类八种基本类型及其包装类手动装箱/拆箱自动装箱/拆箱整数型常量池 Integer方法 包装类 我们已经知道&#xff0c;Java的数据类型分两种&#xff1a; 基本类型&#xff1a;byte&#xff0c;short&#xff0c;int&#xff0c;long&#xff0c;boolean&#xff0c;…

Java为什么要有基本数据类型和包装类型

作为面向对象语言为代表的Java, 在很多任务场景中经常看到它的身影。那么&#xff0c;Java为什么要有基本数据类型和包装类型&#xff1f; 这个问题看似简单&#xff0c;其实也不好回答。毕竟这个问题不仅你我感觉到困惑&#xff0c;许多大佬也感觉到困惑&#xff0c;一些人希望…

基本类型和包装类型的区别详解

六年前&#xff0c;我从苏州回到洛阳&#xff0c;抱着一幅“海归”的心态&#xff0c;投了不少简历&#xff0c;也“约谈”了不少面试官&#xff0c;但仅有两三个令我感到满意。其中有一位叫老马&#xff0c;至今还活在我的手机通讯录里。他当时扔了一个面试题把我砸懵了&#…

Boolean类型(基本与包装类型)

前面的话 当 Number、String、Boolean使用new操作符时&#xff0c;它们就不仅仅是基本类型了&#xff0c;变成了基本的包装类型&#xff0c;即引用类型。Boolean类型应该算是这三种类型中最简单的类型&#xff0c;这篇文章将介绍Boolean类型。 定义 Boolean类型只有两个字面…

34、Java 中有了基本数据类型,为什么还需要有包装类型?包装类型是啥?

文章目录 一、引入&#xff08;基本数据类型弊端&#xff09;二、包装类(1) 模拟包装类的实现(2) 包装类&#xff08;Wrapper Class&#xff09;(3) 自动装箱、自动拆箱① 自动装箱② 自动拆箱 三、整数类型包装类细节 ☆ 一、引入&#xff08;基本数据类型弊端&#xff09; &…

包装类和基本类型

什么是包装类 所谓包装类&#xff0c;就是能够直接将简单类型的变量表示为一个类&#xff0c;在执行变量类型的相互转换时&#xff0c;我们会大量使用这些包装类。 包装类 包装类有以下用途 1.集合不允许存放基本数据类型&#xff0c;故常用包装类 2.包含了每种基本类型的相…

包装类型和基本类型

包装类型和基本类型 Java中有八种基本数据类型&#xff0c;分别对应着八大包装类型&#xff0c;因为包装类型的实例都存在于堆中&#xff0c;所以包装类型也称为引用类型。 基本类型属于原始数据类型&#xff0c;变量中存储的就是原始值。包装类型属于引用数据类型&#xff0…

Java 的八大基本类型及其包装类型(超级详细)

Java 中有八种内置的基本数据类型&#xff0c;他们分别是 byte、short、int、long、float、double、char 和 boolean&#xff0c;其中&#xff0c;byte、short、int 和 long 都是用来表示整数&#xff0c;float 和 double 是用来表示浮点数的&#xff0c;那它们之间有什么区别和…