Ten poradnik jest częścią: Silniki serwo
Wszystkie powiązane filmy dotyczące serwomotorów znajdują się tutaj. Linki do innych filmów znajdują się poniżej tego artykułu.
Kontrola serwomotoru Arduino za pomocą potencjometru
W tym samouczku zbadamy, jak kontrolować serwomotor za pomocą potencjometru z Arduino. Celem jest stworzenie prostego obwodu, w którym pozycja serwa jest dostosowywana na podstawie obrotu potencjometru. Pod koniec tego projektu będziesz miał działający model, który płynnie zmienia kąt serwa od 0 do 180 stopni w miarę obracania potencjometru. To doskonały sposób na zrozumienie podstaw analogowego wejścia i kontroli serw w Arduino.
Aby to osiągnąć, użyjemy płytki Arduino, serwomotoru i potencjometru. Potencjometr działa jako rezystor zmienny, dostarczając analogowy sygnał wejściowy do Arduino, które następnie określi pozycję serwomotoru. Ten projekt jest nie tylko zabawny, ale także edukacyjny, ponieważ ilustruje kluczowe pojęcia w elektronice i programowaniu. Aby uzyskać bardziej szczegółowe wyjaśnienie, koniecznie sprawdź wideo (w wideo o 00:00).
Wyjaśnienie sprzętu
W tym projekcie głównymi komponentami są płytka Arduino, serwomotor i potencjometr. Arduino jest mózgiem operacji, przetwarzającym dane wejściowe i kontrolującym dane wyjściowe. Serwomotor to element, który fizycznie poruszy się w zależności od poleceń, które otrzymuje od Arduino. Potencjometr o wartości od 1k om do 1M om pozwala użytkownikom na dostarczenie zmiennego sygnału wejściowego, który przekłada się na ruch serwomotoru.
Silnik serwo działa, odbierając sygnał PWM (modulacja szerokości impulsu), który wskazuje pożądaną pozycję. Potencjometr, po obróceniu, zmienia swoje oporności, która jest odczytywana przez Arduino jako napięcie analogowe. Silnik serwo działa przy 5V. Nie działa przy 3,3V. To napięcie jest następnie mapowane na zakres ruchu silnika serwo, co pozwala na płynny ruch od 0 stopni do 180 stopni.
Szczegóły karty katalogowej dla serwomotoru SG90
| Producent | Paralaksa |
|---|---|
| Numer części | SG90 |
| Napięcie logiczne/IO | 5 V |
| Napięcie zasilania | 4,8-6 V |
| Prąd wyjściowy (na kanał) | ~500 mA |
| Prąd szczytowy (na kanał) | 1 A |
| Wskazówki dotyczące częstotliwości PWM | 50 Hz |
| Progi logiki wejściowej | 0,5 V (niski), 2,5 V (wysoki) |
| Spadek napięcia / RDS(on)/ nasycenie | 0,5 V przy 500 mA |
| Limity termiczne | 0°C do 60°C |
| Pakiet | Serwo standardowe 9g |
| Notatki / warianty | Powszechnie stosowane w aplikacjach RC |
- Upewnij się, że serwomechanizm nie przekracza swojego maksymalnego prądu.
- Użyj radiatora, jeśli serwomechanizm działa ciągle pod dużymi obciążeniami.
- Podłącz potencjometr do pinu analogowego, aby uzyskać dokładne odczyty.
- Zachowaj ostrożność w kwestii synchronizacji sygnału PWM do sterowania serwomechanizmem.
- Sprawdź zakres ruchu serwomechanizmu, aby uniknąć przeszkód fizycznych.
Instrukcje dotyczące okablowania


Aby skonfigurować to ustawienie, musisz połączyć komponenty w następujący sposób:
Podłącz środkową nóżkę potencjometru (wycieraczkę) do analogowego pinu Arduino.A0. Dwa pozostałe piny potencjometru powinny być podłączone do5ViGNDna Arduino. Dla silnika serwo podłącz czerwony przewód do5V, czarny przewód doGND, a żółty lub biały przewód do pinu cyfrowego9na Arduino. To ustawienie pozwala potencjometrowi dostarczać analogowy sygnał do Arduino, które będzie kontrolować pozycję serwomotoru na podstawie tego sygnału.
Upewnij się, że wszystkie połączenia są zweryfikowane i że serwomechanizm nie jest zablokowany w swoim zakresie ruchu. Jeśli używasz innego modelu Arduino, potwierdź, że przypisania pinów dla wejścia analogowego i wyjścia serwomechanizmu są zgodne.
Przykłady kodu i przewodnik
Poniżej znajduje się fragment kodu, który inicjalizuje serwomechanizm i odczytuje wartość potencjometru:
#include
Servo myservo; // create servo object to control a servo
int pos = 0; // variable to store the servo position
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
W tym kodzie dołączamy bibliotekę Servo i tworzymy obiekt serwomechanizmu o nazwiemyservoSerwo jest podłączone do pinu9, co pozwala nam na kontrolowanie go za pomocą tego pinu.
void loop() {
int sensorValue = analogRead(A0); // read the potentiometer
pos = map(sensorValue, 0, 1023, 0, 180); // map to servo position
myservo.write(pos); // move servo to position
delay(15); // waits 15ms for the servo to reach the position
}
W funkcji loop odczytujemy wartość potencjometru z pinuA0i przemapuj go z zakresu (0-1023) do zakresu serwomechanizmu (0-180 stopni). Serwomyservo.write(pos)komenda następnie przemieszcza serwomechanizm do żądanej pozycji w oparciu o obrót potencjometru.
Demonstracja / Czego się spodziewać
Kiedy uruchomisz ten program, powinieneś zobaczyć, jak serwomotor płynnie przemieszcza się od 0 do 180 stopni, gdy obracasz potencjometr. Jeśli serwo nie porusza się zgodnie z oczekiwaniami, sprawdź okablowanie i upewnij się, że potencjometr działa prawidłowo. Dodatkowo upewnij się, że Arduino jest prawidłowo zasilane, a kod został przesłany bez błędów. Możesz oczekiwać, że serwo będzie odzwierciedlać pozycję potencjometru w czasie rzeczywistym (w wideo o 02:00).
Znaczniki czasowe wideo
- 00:00- Wprowadzenie do projektu
- 01:30- Wyjaśnienie konfiguracji sprzętowej
- 03:45- Instrukcje dotyczące okablowania
- 05:00- Przegląd kodu
- 07:30- Demonstracja ukończonego projektu
Ten poradnik jest częścią: Silniki serwo
- Controlling a Servo with Push Buttons Using Arduino
- Control a Servo Motor with a Push Button: Move Servo and Return SPB-1
- Control a Servo Motor with a Push Button: Move Servo in One Direction SPB-2
- Controlling a Servo Motor with a Push Button: Move Servo While Button Is Pressed (SPB-3)
- Controlling a Servo with a Potentiometer Using Arduino
- Controlling a Servo with Potentiometer and LCD1602 using Arduino
- Controlling Servo Motors Using an Infrared Remote with Arduino
- Kontrolowanie pozycji serwomechanizmu za pomocą gestów ręcznych dla Arduino
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- How to Use Continuous 360° Servo with Arduino
- Arduino Code and Video for PCA9685 16-Channel 12-Bit Servo Controller V1
- Build an Arduino Servo Toggle Switch with a Push Button
/**
*Original source: Arduino IDE
* Arduino Project: Controlling the servo position
* This code is used with a video tutorial for Robojax.com
* Published on April 24, 2017, from Ajax, ON, Canada.
* Written/Edited by Ahmad Shamshiri
* Watch the video on YouTube: https://youtu.be/kZ9b31gVemc
* View tutorial page for this code https://robojax.com/RJT8
* Controlling a servo position using a potentiometer (variable resistor)
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards
int pos = 0; // variable to store the servo position
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
}
Zasoby i odniesienia
Brak zasobów.
Pliki📁
Karta katalogowa (pdf)
-
sg90_serveo_motor_datasheet
sg90_serveo_motor_datasheet.pdf0.13 MB