Тестер сервоприводов своими руками

Тестер сервоприводов мне понадобился, когда я разрабатывал робота, играющего в Piano Tiles 2 на планшетном компьютере. Можно здесь глянуть на его работу. Механические «пальцы» данного робота приводятся в движения четырьмя сервоприводами. Сервопривод должен работать в узком диапазоне углов вращения (примерно 20-30 градусов) для того, чтобы движения «пальцев» точно синхронизировались с движением плиток по экрану планшета. Для точного подбора крайних значений («палец нажимает на плитку» и «палец поднят вверх»), можно было бы обойтись и подбором величин прямо в программе робота, но проще, быстрее и точнее сделать это с помощью тестера.

Для наглядности, я записал короткое видео с примером работы данного тестера.

Данный тестер состоит всего из трёх основных элементов — китайский Arduino Nano V3.0, переменный резистор, включенный по схеме потенциометра и цифровой 4-х значный дисплей, управляемый с помощью драйвера TM1637 по протоколу I2C. Всё это собрано на беспаечной макетной плате с помощью типовых проводников типа «папа-папа» (male-male).

Схема_1Для начала средний вывод потенциометра соединим с любым аналоговым входом Nano (в моем случае A0), крайние выводы потенциометра к земле (GND) и к питанию 5V. Таким образом у нас получится управляемый делитель напряжения, выдающий на среднем выводе потенциометра аналоговый сигнал от 0 до 5 Вольт, в зависимости от положения движка.

Далее, подключим модуль дисплея TM1637 к питанию, для этого нужно соединить выводы питания (5V и GND) c соответствующими выводами Arduino Nano. Управляющие лапки DIO и CLK можно цеплять на любые выводы Arduino Nano, так как будет использоваться библиотека, в которой протокол I2C реализован программно. В моем случае я соединил лапку DIO с пином D3, а CLK c пином D2.

Типовой разъем сервопривода состоит из трёх контактов, коричневый — земля (GND), красный — питание (5V) и желтый — управление (PWM). Соответственно подцепим контакты питания к одноименным контактам Arduino Nano, а желтый провод подключим к любому пину с ШИМ (PWM), в моем случае это D5. На данный пин будем выводить сигнал широтно-импульсной модуляции, управляющий сервоприводом. Угол поворота сервопривода определяется длительностью положительной части импульса и обычно лежит в пределах от 500 до 2500 микросекунд.

Теперь для проверки собранного Вами девайса, подключите Arduino Nano к компьютеру через разъем USB и прошейте простенькую программу, использующую библиотеки «Servo.h» и «TM1637.h».

#include <Servo.h>
#include "TM1637.h"

#define CLK 2 //Подключаем пины соответственно лапкам модуля
#define DIO 3
TM1637 tm1637(CLK,DIO);// создаем экземпляр класса TM1637
Servo S1; //объявляем экземпляр класса сервопривод
byte angle = 90;//переменная, которая будет хранить угол поворота сервы
byte old_angle = 91;//
int V = 0;
void setup()
{
  tm1637.init();//инициализируем дисплей, (хотя что мешало создателям библиотеки инициализировать его в конструкторе TM1637 tm1637(CLK,DIO);?)
  tm1637.set(BRIGHT_TYPICAL);//яркость дисплея
  pinMode(A0,INPUT);// объявляем пин А0 как вход, сюда будем подавать аналоговое напряжение с потенциометра
  pinMode(5,OUTPUT); 
  S1.attach (5); //прикручиваем серву к пину D5
}

void loop() {
V=analogRead(A0);//читаем напряжение с потенциометра
angle = map(V, 0, 1023, 0, 180);//преобразуем в угол
if (angle!=old_angle) // если потенциометр крутился, то...
  {
  tm1637.display(angle);// ... отображаем значение угла на дисплее
  S1.write(angle);// ... крутим сервопривод
  old_angle=angle;//... запоминаем последнее значение угла, чтобы в следующий раз не дергать серву и дисплей, если потенциометр не крутился
  }
}

Если после прошивки на экране отображается какое-либо число от 0 до 180, то значит всё собрано верно. Можно подключать сервопривод и тестировать его.

Стоимость данного тестера:
китайский клон Arduino Nano — от 120 до 200 рублей;
дисплей ТМ1637 — 85-150 рублей;
макетная плата — 100-300 рублей;
резистор — от 10 до 100 рублей;

ИТОГО: 315-715 рублей. А если учесть, что ничего не запаяно и если тестер не нужен, то его можно разобрать, то стоимость вообще падает до нуля. Обычно все эти компоненты уже имеются в арсенале любого микроконтроллерщика (ардуинщика).

Метки , , , , , , , , , , , , , , , , , , , , , , , , , , , . Закладка постоянная ссылка.

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

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