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

В данном примере показано как можно управлять углом поворота сервомотора с помощью потенциометра.

НАМ ПОНАДОБИТСЯ
  • Плата Arduino Uno
  • Сервомотор
  • Потенциометр
  • Провода
  • Макетная плата
СХЕМА ПОДКЛЮЧЕНИЯ
potenciometr_servo
 Для управления сервомотором используется библиотека Servo. В скетче показано использование основных команд управления:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <Servo.h> //подключаем библиотеку сервомотора
 
Servo myservo1;    // создаём обьект myservo1 
 
void setup(){
  myservo1.attach(11); // Подключаем цифровой вывод (pin 11) к сервомотору
  Serial.begin(9600);      // Задаем скорость работы монитор порта 
}
 
void loop()
{
  myservo1.write(0); // отправляем данный угол поворота в сервомотор
  Serial.println (myservo1.read());   //отправляем в порт монитора значение угла поворота с сервомотора
  delay(1000); // Задержка 1 с.
 
  myservo1.write(45); // отправляем данный угол поворота в сервомотор
  Serial.println (myservo1.read());   //отправляем в порт монитора значение угла поворота с сервомотора
  delay(1000); // Задержка 1 с.
 
  myservo1.write(90); // отправляем данный угол поворота в сервомотор
  Serial.println (myservo1.read());   //отправляем в порт монитора значение угла поворота с сервомотора
  delay(1000); // Задержка 1 с.
 
  myservo1.write(135); // отправляем данный угол поворота в сервомотор
  Serial.println (myservo1.read());   //отправляем в порт монитора значение угла поворота с сервомотора
  delay(1000); // Задержка 1 с.
 
  myservo1.write(180); // отправляем данный угол поворота в сервомотор
  Serial.println (myservo1.read());   //отправляем в порт монитора значение угла поворота с сервомотора
  delay(1000); // Задержка 1 с.
}

В скетче не показана еще одна команда отключения сервомотора:
myservo1.detach(); — Отключает сервопривод от цифрового вывода.

Теперь покрутим потенциометр:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <Servo.h> //подключаем библиотеку сервомотора
 
Servo myservo1;    // создаём обьект myservo1 
int analogPin = 0; // Присваиваем имя analogPin аналоговому выводу А0, к которому подключена средняя ножка потенциометра 
int analogValue;   // переменная считывания данных с аналогового входа
 
void setup(){
  myservo1.attach(11); // Подключаем цифровой вывод (pin 11) к сервомотору
  Serial.begin(9600);      // Задаем скорость работы монитор порта 
}
 
void loop()
{
  analogValue = analogRead(analogPin); // Записываем в переменную analogValue данные с аналогового входа А0 
  analogValue = map(analogValue, 0, 1024, 0, 180); // Преобразуем диапазон данных из 0-1024 в 0-180 для управления сервомотором
  //analogValue = analogValue /5.689; //вместо функции map можно просто разделить данные на коэф.
  myservo1.write(analogValue);        // отправляем получившийся угол поворота в сервомотор
  Serial.println (myservo1.read());   //отправляем в порт монитора значение угла поворота с сервомотора
  delay(10); // Задержка 10 мс.
}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Навигация по записям