Arduino与SG90舵机握手

article/2025/8/19 0:01:49

Arduino教程传送门🧭🏔🌋🛤🏞🏜

Arduino与SG90舵机握手

    • 1.0 简介
    • 2.0 实验材料
    • 3.0 实验步骤
        • 3.1 根据原理图搭建电路
        • 3.2 新建sketch,拷贝如下代码并进行保存编译上传
        • 3.3 实验现象
    • 4.0 总结

1.0 简介

  • 舵机:是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的伺服控制系统。在高档遥控玩具,如飞机、潜艇模型,遥控机器人中已经得到了普遍应用。本篇通过官方驱动库和自定义函数来实现舵机控制。
  • 外形结构:主要是由外壳、无核心马达、四级减速齿轮、电路板和位置检测器所构成。
    在这里插入图片描述
    在这里插入图片描述
  • 工作原理
    其工作原理是由接收机或者单片机发出信号给舵机,其内部有一个基准电路,产生周期为20ms,宽度为1.5ms 的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。经由电路板上的IC 判断转动方向,再驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回信号,判断是否已经到达定位。
    舵机转动的角度是通过调节PWM「脉冲宽度调制」信号的占空比来实现的。标准的PWM信号的周期固定为20ms,理论上脉宽分布应该在1ms到2ms之间,实际上可由0.5ms到2.5ms之间,脉宽与转角0°—180°相对应。不同厂家不同型号的舵机也会有所差异。
    在这里插入图片描述

在这里插入图片描述

  • SG90舵机(180°)相关参数见下表:
    在这里插入图片描述

2.0 实验材料

  • Arduino Uno R3开发板
  • USB数据线
  • 三根公母线
  • SG90舵机
  • 一台安装Arduino开发环境的电脑

3.0 实验步骤

3.1 根据原理图搭建电路

舵机红色线接开发板5V,棕色线接开发板GND,橙色信号线接开发板数字引脚10。
实验原理图:
在这里插入图片描述

实验接线图:
在这里插入图片描述

3.2 新建sketch,拷贝如下代码并进行保存编译上传

代码1:


#include <Servo.h>						// 调用Servo库Servo servo_10;							// 定义Servo对象来控制void setup(){servo_10.attach(10);					// 控制线连接数字10
}void loop(){for (pos = 0; pos <= 180; pos ++) { 	// 0°到180°// in steps of 1 degreeservo_10.write(pos);             	// 舵机角度写入delay(5);                       	// 控制移动速度}for (pos = 180; pos >= 0; pos --) { 	// 从180°到0°servo_10.write(pos);              	// 舵机角度写入delay(5);                       	// 控制移动速度}
}

代码2:

int servopin = 10; //设置舵机驱动脚到数字口10
int myangle;//定义角度变量
int pulsewidth;//定义脉宽变量
int val;
void servopulse(int servopin, int myangle) /*定义一个脉冲函数,用来模拟方式产生PWM值*/
{pulsewidth = (myangle * 11) + 500; //将角度转化为500-2480 的脉宽值digitalWrite(servopin, HIGH); //将舵机接口电平置高delayMicroseconds(pulsewidth);//延时脉宽值的微秒数digitalWrite(servopin, LOW); //将舵机接口电平置低delay(20 - pulsewidth / 1000); //延时周期内剩余时间
}
void setup()
{pinMode(servopin, OUTPUT); //设定舵机接口为输出接口Serial.begin(9600);//设置波特率为9600Serial.println("servo=o_seral_simple ready" ) ;
}
void loop()//将0 到9 的数转化为0 到180 角度,并让LED 闪烁相应数的次数
{val = Serial.read(); //读取串口收到的数据if (val >= '0' && val <= '9') //判断收到数据值是否符合范围{val = val - '0'; //将ASCII码转换成数值,例'9'-'0'=0x39-0x30=9val = val * (180 / 9); //将数字转化为角度,例9*(180/9)=180Serial.print("moving servo to ");Serial.print(val, DEC);Serial.println();for (int i = 0; i <= 50; i++) //给予舵机足够的时间让它转到指定角度{servopulse(servopin, val); //引用脉冲函数}}
}

3.3 实验现象

代码1:
在这里插入图片描述
代码2:
在这里插入图片描述

4.0 总结

  • 用Arduino 控制舵机的方法有两种,代码1是直接利用Arduino 自带的Servo 函数进行舵机的控制,这种控制方法的优点在于程序编写,缺点是只能控制2 路舵机,因为Arduino 自带函数只能利用数字9、10 接口。代码2是通过Arduino 的普通数字传感器接口产生占空比不同的方波,模拟产生PWM 信号进行舵机定位,控制原理更加清晰。
  • Arduino 的驱动能力有限,所以当需要控制1 个以上的舵机时需要外接电源。
  • 在以后的博文中我们将学会用arduino常用传感器和执行器从而实现对外部世界进行感知,充分认识这个有机与无机的环境,科学地合理地进行创作和发挥效益,然后为人类社会发展贡献一点微薄之力

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

相关文章

C51单片机定时器2实现SG90舵机控制

谈起舵机最初的了解应用于航模&#xff0c;偶然的机会在网上看到有牛人使用多个舵机做人形机器人的关节&#xff0c;感觉这小东西很有趣&#xff0c;蒙发了买来学习学习的想法&#xff0c;这已经是多年前的事了&#xff0c;后来由于某些原因&#xff0c;这个想法直到今年才落地…

智能垃圾桶(七)——SG90舵机的介绍与使用(树莓派pico实现)

文章目录 一、SG90舵机的引脚介绍二、与pico引脚的对接三、舵机的使用原理四、Thonny程序五、效果展示一、SG90舵机的引脚介绍 舵机上会引出三根线:分别是GND(棕色线)、VCC(红色线)和SIG(黄色线),就是地线、电源线(5V)和信号线。千万不能接错! 二、与pico引脚的对接…

FPGA实现360°SG90舵机

SG90 SG90舵机需要注意区分90、180和360&#xff0c;今天要用的舵机是360的。 舵机是通过输入信号来控制转动的&#xff0c;360舵机不同于180舵机&#xff0c;它只有顺时针旋转、逆时针选择和停止&#xff0c;无法通过特定的信号来达到转动的角度。所以需要通过时间和转动速度…

PWM开发SG90

文章目录 2. PWM开发SG90 2.1 简介 2.3 控制舵机 2.4 遇见潇潇遇见你&#xff0c;不负代码不负卿 前言 2. PWM开发SG90 2.1 简介 PWM &#xff0c;英文名 Pulse Width Modulation &#xff0c;是脉冲宽度调制缩写&#xff0c;它是通过对一系列脉冲的宽度进 行调制&#xff0…

学习笔记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类型只有两个字面…