Micro servo 9g sg90 arduino

Содержание

Электроника

учебно-справочное пособие

Подключение и управление сервоприводом SG90 на Arduino UNO

Сервопривод является очень важным элементом при конструировании роботов и радиоуправляемых моделей. Это точный исполнитель, который имеет обратную связь, позволяющую точно управлять движениями механизмов. Другими словами, получая на входе значение управляющего сигнала, сервопривод стремится поддерживать это значение на выходе своего исполнительного элемента. Управление сервоприводом на Ардуино достаточно просто, но по углам поворота сервоприводы бывают на 180° и 360°, что следует учитывать в робототехнике.

Рис. 1 — Сервопривод Tower Pro 9g SG90

Сервопривод SG90 используется в основном для управления небольшими легкими механизмами, угол поворота которых ограничен диапазоном от 0° до 180°.

Устройство сервопривода

Сервопривод (рис. 2) состоит из датчика (скорости, положения и т.п.), блока управления приводом из механической системы и электронной схемы. Редукторы (шестерни) устройства выполняют из металла, карбона или пластика. Пластиковые шестерни сервомотора не выдерживают сильные нагрузки и удары.

Рис. 2 — Схема устройства сервопривода:
1 — разъем, 2 — встроенная плата, 3 — потенциометр, 4 — микромотор, 5 — выходной вал,

Сервомотор имеет встроенный потенциометр, который соединен с выходным валом. Поворотом вала, сервопривод меняет значение напряжения на потенциометре. Плата анализирует напряжение входного сигнала и сравнивает его с напряжением на потенциометре, исходя из полученной разницы, мотор будет вращаться до тех пор пока не выравняет напряжение на выходе и на потенциометре.

Рис. 3 — Управление сервоприводом с помощью широтно импульсной модуляции

Отличия сервопривода и шагового мотора

В отличие от шагового двигателя, сервопривод может работать с большими ускорениями и при переменной нагрузке. Также сервоприводы обладают более высокой мощностью. Шаговые двигатели не обладают обратной связью, поэтому может наблюдаться эффект потери шагов. В сервоприводах потери шагов исключены – все нарушения будут зафиксированы и исправлены. При всех этих явных преимуществах сервоприводы являются более дорогостоящими, чем шаговые двигатели, обладают сложной системой подключения и управления, требуют более квалифицированного обслуживания. Шаговые двигатели и сервоприводы не являются прямыми конкурентами – каждое из этих устройств занимает свою определенную сферу применения.

Технические характеристики сервопривода SG90:

  • Диапазон вращения: 180°.
  • Рабочее напряжение: 4,8 . 6 В.
  • Скорость вращения: 60° за 0,12 сек при 4,8 В.
  • Размеры: 22,2 × 11,8 × 31 мм.
  • Крутящий момент: 1,8 кгc·см при 4,8 В.
  • Масса: 9 г.
  • Температура использования: от -30°C до +60°C.

Схема подключения сервопривода

Коричневый провод Земля (Ground) — подключается к пину GND на плате Arduino. Может быть черный.
Красный провод Питание +5 В — подключается к выводу 5V на плате Arduino.
Желтый провод Сигнал — подключается к выводу с ШИМ (Широтно Импульсная Модуляция) Arduino. Может быть оранжевый, белый.

Программирование сервопривода

В первой строке скетча необходимо подключить библиотеку Servo, которая облегчает работу с различными сервоприводами и значительно упрощает программный код.

Затем, объявляем сервопривод. Ниже объявляется сервопривод с именем sm1 .

В функции setup() назначаем вывод Arduino для управления сервоприводом. Здесь используем вывод номер 9.

В функции loop() управляем положением сервопривода с помощью функции write .

Скетч №1

Программа начинается с подключения файла библиотеки Servo.h . Данный файл содержит все необходимые команды для управления сервоприводом. Далее, создается объект Servo с именем servo1 .

В функции setup() указываем, что сервопривод подключен к выводу 10 контроллера.

В главной функции loop() , мы даем различные команды для серводвигателя, выдерживая паузы между командами.

Сервопривод SG90 принимает заданные положения очень быстро, чтобы замедлить его поворот необходимо использовать цикл поворота с шагом в 1-2° и задержкой между каждым шагом (скетч №2).

Скетч №2

Управление сервоприводом с помощью потенциометра

Arduino UNO позволяет не только управлять, но и считывать показания с сервопривода. Для этого используется команда myservo.read() , которая считывает текущее положение вала сервопривода ( myservo — имя сервопривода.

Пример управления сервоприводом с помощью потенциометра показано в скетче №3.

Скетч №3

Пояснения к коду:

  1. Оператор as=map(ap,0,1023,0,180) масштабирует аналоговые данные потенциометра (0–1023) в значения угла положения сервопривода (0–180°)
  2. Оператор serv3.write(as) передает значение углового положения вала сервопривода.
  3. Значения с потенциометра и углового положения вала выводятся на монитор порта.

Сервоприводы часто используются в различных проектах на Ардуино для различных функций: повороты конструкций, движение частей механизмов. Так как сервопривод постоянно стремится удерживать заданный угол поворота, то повышается расход электроэнергии. Это особенно чувствительно в автономных роботах, питающихся от аккумуляторов или батареек.

Попытки управления сервой вне её конечных точек приводит к увеличению потребления тока и такого следует избегать.

В некоторых сервоприводах часто в положении 0 и 180° слышен характерный треск или жужжание. Это означает, что механическая часть сервопривода уже находиться в предельной позиции, но датчик считает, что заданная позиция еще не достигнута.

Проблему можно решить подбором скорректированных позиций. Например, часто вместо позиции 0° нужно использовать позицию поворота сервопривода в 10-15° градусов, а конечную 165-170°. Это позволит избежать лишних перегрузок и шума при достижении крайних точек.

Следует обращать внимание на напряжение, которое используется при работе сервопривода. Если значение напряжения превышает допустимые значения из технических характеристик сервопривода, механические части могут выйти из строя или зубчатые колеса сервопривода провернутся в положение превышающее максимальные значения и механизм не сможет продолжать движение в обратном направлении. Иными словами, завышенное напряжение скорее всего не приведет к сгоранию мотора сервопривода, но повредит механические части зубчатых механизмов.

Источники

Электроника © ЦДЮТТ • Марсель Арасланов • 2021

Источник

Клёвый код

Скриптописание и кодинг

Решаем задачи Абрамян на C. Matrix78

Matrix78. Дана матрица размера $$M \times N$$. Упорядочить ее строки так, чтобы их минимальные элементы образовывали убывающую последовательность.

Решаем задачи Абрамян на C. Matrix77

Matrix77. Дана матрица размера $$M \times N$$. Упорядочить ее столбцы так, чтобы их последние элементы образовывали убывающую последовательность.

Решаем задачи Абрамян на C. Matrix76

Matrix76. Дана матрица размера $$M \times N$$. Упорядочить ее строки так, чтобы их первые элементы образовывали возрастающую последовательность.

Решаем задачи Абрамян на C. Matrix75

Matrix75. Дана матрица размера $$M \times N$$. Элемент матрицы называется ее локальным максимумом, если он больше всех окружающих его элементов. Поменять знак всех локальных максимумов данной матрицы на противоположный. При решении допускается использовать вспомогательную матрицу.

Решаем задачи Абрамян на C. Matrix74

Matrix74. Дана матрица размера $$M \times N$$. Элемент матрицы называется ее локальным минимумом, если он меньше всех окружающих его элементов. Заменить все локальные минимумы данной матрицы на нули. При решении допускается использовать вспомогательную матрицу.

Решаем задачи Абрамян на C. Matrix73

Matrix73. Дана матрица размера $$M \times N$$. После последнего столбца, содержащего только отрицательные элементы, вставить столбец из нулей. Если требуемых столбцов нет, то вывести матрицу без изменений.

Решаем задачи Абрамян на C. Matrix72

Matrix72. Дана матрица размера $$M \times N$$. Перед первым столбцом, содержащим только положительные элементы, вставить столбец из единиц. Если требуемых столбцов нет, то вывести матрицу без изменений.

Решаем задачи Абрамян на C. Matrix71

Matrix71. Дана матрица размера $$M \times N$$. Продублировать столбец матрицы, содержащий ее минимальный элемент.

Решаем задачи Абрамян на C. Matrix70

Matrix70. Дана матрица размера $$M \times N$$. Продублировать строку матрицы, содержащую ее максимальный элемент.

Решаем задачи Абрамян на C. Matrix69

Matrix69. Дана матрица размера $$M \times N$$ и целое число $$K$$ $$(1 \le K \le $$N$$)$$. После столбца матрицы с номером $$K$$ вставить столбец из единиц.

Источник

Tutorial: How To Control the Tower Pro SG90 Servo with Arduino UNO

I write this tutorial to show you how to control the direction, position, and speed of the SG90 9G Micro servo motor with the Arduino UNO board. I know that if you’re a hobbyist with some experience in robots is very easy to control this servo motor, but like always, you couldn’t miss anything in the field. Even so, if this tutorial is boring for you, here is a list of cheap projects for Arduino UNO.

Tutorial: How To Control the Tower Pro SG90 Servo with Arduino UNO

How the tutorial is organized:

  1. I start the tutorial with a short overview of the parts needed to control the servo motor;
  2. Then I did an overview of the Tower Pro SG90 servo;
  3. I break down into components the servo motor to show you the parts;
  4. Finally, I went to the practice part to show you how to wire TowerPro SG90, writes the Arduino sketch, and some hacks for the servo motor.

A servo motor allows a precise control of the angular position, velocity, and acceleration. It’s like you’re at the steering wheel of your car. You control precisely the speed of the car and the direction.

This very strict control of the angular position, velocity, and acceleration can’t be done without a sensor for position feedback. This sensor sounds the alarm when the motor is spinning. But even so, there is something more sophisticated that controls all the stages of the servo motor. It’s a dedicated controller that makes the tiny things inside the servo to move with military precision.

A feedback sensor, a controller, and a motor. I’m just asking – why we need a servo motor? These servos are essential parts if we need to control the position of objects, rotate sensors, move arms and legs, drive wheels and tracks, and more.

1. Hardware Required

This is not a complex project, but we still need some parts. Luckily, all the components are cheap and available worldwide.

To control the TowerPro SG90 servo, you will need the following parts:

    1 x TowerPro SG90 servo motor (price

$5)
1 x Arduino UNO (price

2. The Tower Pro SG90 Servo

The Tower Pro SG90 servo is one of the cheapest servo motors that you can find on the market. Even it’s cheap, less than $5, don’t try to rotate the servo motor by hand because this may damage the motor.

Let’s make a short overview of the SG90 specifications.

You need torque to control the position of an object, for example, and this little box that weight 0.32 oz (9.0 g) can provide at 4.8V a torque of 25.0 oz-in (1.80 kg-cm). At 4.8V, the speed of the servo is 0.12 sec/60°. All these specifications are really impressive for this little plastic box. Well, there are other high-end servos with a bit more muscle than the SG90 servo, but these high-end servos can’t beat the price of the SG90 servo. SG90 is cheap enough to throw away when they break.

3. Take a look inside of the SG90 micro servo

Inside SG90 servo

4. How to wire TowerPro SG90, the Arduino sketch, and some hacks

Considering that you already have an Arduino UNO, the SG90 servo, and the six wires, your circuit should look like this (plus bonus the scheme):

Arduino SG Servo Motor Control Schema

Arduino SG Servo Motor Control Circuit

It would be something to note here. The servo motor has three leads, with one more than a DC motor. Each lead has a color code. So you have to connect the brown wire from the micro servo to the GND pin on the Arduino. Connect the red wire from the servo to the +5V on the Arduino. And finally, connect the orange wire from the SG90 servo to a digital pin (pin 9) on the Arduino.

Arduino makes the things simple. In this tutorial, I use the SG90 servo powered directly from the Arduino via USB. And you can do the same.

The Arduino sketch

Below you can find the Arduino sketch that controls the servo’s direction, the position of the motor and the speed of the SG90 servo. Before reaching the Arduino code, I want to write few words about the file. This library makes our life easier. It contains all the functions required for controlling the SG90 servo.

Источник

Using the SG90 Servo Motor With an Arduino

Hi guys, today, I will show you how to use a servo motor with an Arduino. This tutorial is ideal for beginners because it is easy and it gives them the foundation to build interesting projects like robots for which servos are commonly used.

Servo motors are high torque motors which are commonly used in robotics and several other applications due to the fact that it’s easy to control their rotation. Servo motors have a geared output shaft which can be electrically controlled to turn one (1) degree at a time. For the sake of control, unlike normal DC motors, servo motors usually have an additional pin asides the two power pins (Vcc and GND) which is the signal pin. The signal pin is used to control the servo motor, turning its shaft to any desired angle.

SG90 Servo motor

For this tutorial, we will be using the popular SG90 servo motor and our goal will be to rotate the servo motor from one end to the other.

Servo’s have high current requirement so when using more than one servo motor with the Arduino, it is important to connect their power connections to an external power supply as the Arduino may not be able to source the current needed for the servo. Since we will be using just one servo in this tutorial its fine to power it with an Arduino.

Required Components

The following components are required to build this project:

Each of these components can be bought via the link attached to them.

Schematics

The schematics for this project is quite simple as we will be connecting just the servo motor to the Arduino.

Servo motors generally have three pins/wires, this includes the VCC, GND, and the Signal pin. The Signal pin is the one used to feed the control signal from the microcontroller to the servo, to get the servo rotate to a particular angle.

Connect the Servo to the Arduino as shown in the schematics below.

Schematics

For emphasis, the connection is further described below.

SG90 Servo – Arduino

The signal pin was connected to the digital pin 8 of the Arduino because it is a PWM pin. Servo directions are sent from the microcontroller to the servo motor as PWM pulses.

With the connection all done, we can now proceed to write the code for the project.

The code for this project is quite easy thanks to the very comprehensive and concise servo.h library developed by the Arduino team to facilitate the use of servo motors in Arduino projects. The library makes it easy to turn the servo at different angles using a single command. The library comes pre-installed in the Arduino IDE removing the need for us to download and install.

We start the code for the project by including the libraries that we will use which in this case is the servo.h library.

Next, we create an object of the library, to be used as a reference for controlling our servo motor throughout the code.

With this done, we proceed to the void setup() function. we start the function by attaching the servo object created to pin D8 of the microcontroller, after which we center the servo, turning it to zero degrees.

With that done, we are ready to move the servo in any direction we desire, and we will be doing this under the void loop function. Thanks, to the servo.h library all we need to do, to rotate the servo to an angle we desire, is to pass the desired angle as an argument into the servo.write() function. To demonstrate this, a for-loop was used to turn the servos at several angles in one direction and another loop was used to turn the servo back to where it started.

The complete code for the project is available below and can be downloaded from the download section at the end of the tutorial.

Copy the code above and upload to your Arduino and servo motor setup, after a few time, you should see the servo motor start turning as shown in the gif below.

Demo

That’s it for this tutorial guys, the code above can be expanded in several ways for use in different projects involving servo motors, what cool thing will you be building with the servo motor? feel free to share via the comment section.

The video tutorial for this project can be watched on youtube.

Источник

Adblock
detector