Поворотники для радиоуправляемой модели

eax
Offline
Зарегистрирован: 04.02.2015

Добрый день!

Исходные данные:

- радиоуправляемая модель (сервопривод HS-422)

- пульт управления 2-канальный HK-GT2 2.4 ГГц

- приемник для пульта Hobby King HK-GT2R

- МК arduino nano v3.0

Задание:

При повороте рулевым колесом с пульта управления HK-GT2, включать соответствующий поворотник.

Что пока знаю:

Замерил напряжение на ch1 у приемника HK-GT2R (черный, желтый).

В среднем положении U=0,25В.

При поворте влево U=0,2В.

При поворте вправо U=0,3В.

Вопрос, как можно анализировать МК-ом эти 0,2 - 0,3 В?

К каким пинам МК подключать? К А0?

Подскажите начинающему :)

 

eax
Offline
Зарегистрирован: 04.02.2015

по сути хочется воссоздать Tamiya TLU-02

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012
SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

0,25 V -> 0,25*1024/5=51

0,20 V -> 0,20*1024/5=41

0,35 V -> 0,35*1024/5=71

маленький диапазон входного сигнала, нужно операционником усилить в раз 10

roman2712@mail.ru
Offline
Зарегистрирован: 16.01.2014

на выходе приемника надо не напряжение мерит, а смотреть на форму сигнала... И в зависимости от длительности уже веключать правый\левый поворотник. Почитайте, какой сигнал приходит на серву...

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

roman2712@mail.ru пишет:

на выходе приемника надо не напряжение мерит, а смотреть на форму сигнала... И в зависимости от длительности уже веключать правый\левый поворотник. Почитайте, какой сигнал приходит на серву...

ТС не сказал что это выход на серву... если там действительно ШИМ на серву - то почему такие значения напряжения ? 0,2....0,3 ? а не , например , 1,0.....4,5 ? ( если мерить стрелочником конечно )

SergKT
Offline
Зарегистрирован: 04.08.2014

А что, обязательно мерять ШИМ для определения поворачивает или едет прямо?

Простые контакты на коромысле сервопривода поставить нельзя?

Ну или оптопары если с контактами возиться не хочется...

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

http://arduino.ru/forum/ishchu-ispolnitelya/pomogite-novichkusvet-dlya-r...

:) вот вам куча предложений

eax
Offline
Зарегистрирован: 04.02.2015

наверное то, что нужно мне!

Я бы советовал подключиться к сигнальным проводам, которые идут от приемника к сервомашинке рулевого привода и регулятору двигателя. Сигнал на управляющем проводе представляет собой импульсы определенной длительности. Длительность импульса указывает сервомашинке на какой угол она должна повернуться. 0.8 мс - это примерно 0 градусов, 2.3 мс - 180 градусов. Промежуток между импульсами примерно 10-20 мс. Аналогичными сигналами управляется регулятор двигателя. 0.8 мс - полный вперед, 2.3 мс - полный назад. Ну или наоборот. В стандартных библиотеках есть функция pulseIn(), котора определят длительность импульса, который подается на ногу ардуины. Подключите ардуину двумя цифровыми входами параллельно серве и регулятору на сигнальные провода. Поставьте в цикле опрос двух ног при помощи функции pulseIn() и, в зависимости от полученной длительности импульсов, решайте куда повернута серва и тормозит ли двигатель.

http://www.avislab.com/blog/wp-content/uploads/2012/07/servo_pulse.png

Покажите как цеплять? Черный к порту GND, желтый - например на D6 к ардуине? И использовать pulseIn()?

eax
Offline
Зарегистрирован: 04.02.2015

SU-27-16!

да, это выход на серопривод, там черный, красный, желтый

U черный, красный = 7,2 В.

U черный, желтый= 0,2 - 0,3 В.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Покажите как цеплять? Черный к порту GND, желтый - например на D6 к ардуине? И использовать pulseIn()?

да

вольтметром ШИМ мерить - не надо :)

замерьте длительность при положении прямо, пусть 1500 микросекунд, тогда в программе анализ - длительность < 1200 - левый поворотник вкл , длительность >= 1200 и <= 1800- поворотники выкл , длительность > 1800 - правый поворотник вкл

 

eax
Offline
Зарегистрирован: 04.02.2015

благодарю, SU-27-16!

То, что  мне нужно!

Если, кому интересно, мои цифры:

лево = 1810

центр = 1480

право = 1142

скетч:

int pin = 7;
unsigned long duration;
 
void setup()
{
  pinMode(pin, INPUT);
  Serial.begin(9600);
}
 
void loop()
{
  duration = pulseIn(pin, HIGH);
  Serial.println(duration);
  delay(250);
}

Полагаю, паралельно можно вешать серву? А то я хотел зачем-то серву к МК цеплять :)

Напряжеметром ШИМ мерить больше не буду, просто надо же было с чего-то начинать :)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...

вопрос не понял.... земля к земле, жёлтый от сервы к пину int pin = 7; ( подключение ард к упрЛинии сервы будет параллельным, да )

для этого unsigned long duration; хватит int duration; - бережём память  - http://arduino.ru/Reference ТИПЫ ДАННЫХ

eax
Offline
Зарегистрирован: 04.02.2015

поправился с оформлением. ДА паралельно серве, а то я пока все отсоединил :)

eax
Offline
Зарегистрирован: 04.02.2015

SU-27-16 пишет:

http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...

вопрос не понял.... земля к земле, жёлтый от сервы к пину int pin = 7; ( подключение ард к упрЛинии сервы будет параллельным, да )

для этого unsigned long duration; хватит int duration; - бережём память  - http://arduino.ru/Reference ТИПЫ ДАННЫХ

Раз заговорили о памяти... Разъяните плиз...

IDE внизу пишет: Размер скетча в двоичном коде: 3 074 байт (из 30 720 байт максимум) - при unsigned long duration;

И Размер скетча в двоичном коде: 3 188 байт (из 30 720 байт максимум) при int duration;

Это, видимо, Флеш-память...

А мы заговорили об экономии оперативной памяти... А где ее контроль в IDE?

 

ruselec
Offline
Зарегистрирован: 05.02.2015

Там же внизу IDE есть строка:

Global variables use 188 bytes (9%) of dynamic memory, leaving 1 860 bytes for local variables. Maximum is 2 048 bytes.
 

 

eax
Offline
Зарегистрирован: 04.02.2015

ruselec пишет:

Там же внизу IDE есть строка:

Global variables use 188 bytes (9%) of dynamic memory, leaving 1 860 bytes for local variables. Maximum is 2 048 bytes.
 

 

Подскажите где? Или версия IDE не та?

ruselec
Offline
Зарегистрирован: 05.02.2015

Версия 1.5.8, для ранних версий можете посмотреть функцию подсчета свободной ОЗУ http://robocraft.ru/blog/arduino/531.html.

eax
Offline
Зарегистрирован: 04.02.2015

спасибо! только '.' уберите из ссылки, иначе 404-ая :)