Поворотники для радиоуправляемой модели
- Войдите на сайт для отправки комментариев
Ср, 04/02/2015 - 16:26
Добрый день!
Исходные данные:
- радиоуправляемая модель (сервопривод 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?
Подскажите начинающему :)
по сути хочется воссоздать Tamiya TLU-02
http://arduino.ru/Reference/AnalogRead
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
на выходе приемника надо не напряжение мерит, а смотреть на форму сигнала... И в зависимости от длительности уже веключать правый\левый поворотник. Почитайте, какой сигнал приходит на серву...
на выходе приемника надо не напряжение мерит, а смотреть на форму сигнала... И в зависимости от длительности уже веключать правый\левый поворотник. Почитайте, какой сигнал приходит на серву...
ТС не сказал что это выход на серву... если там действительно ШИМ на серву - то почему такие значения напряжения ? 0,2....0,3 ? а не , например , 1,0.....4,5 ? ( если мерить стрелочником конечно )
А что, обязательно мерять ШИМ для определения поворачивает или едет прямо?
Простые контакты на коромысле сервопривода поставить нельзя?
Ну или оптопары если с контактами возиться не хочется...
http://arduino.ru/forum/ishchu-ispolnitelya/pomogite-novichkusvet-dlya-r...
:) вот вам куча предложений
наверное то, что нужно мне!
Я бы советовал подключиться к сигнальным проводам, которые идут от приемника к сервомашинке рулевого привода и регулятору двигателя. Сигнал на управляющем проводе представляет собой импульсы определенной длительности. Длительность импульса указывает сервомашинке на какой угол она должна повернуться. 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()?
SU-27-16!
да, это выход на серопривод, там черный, красный, желтый
U черный, красный = 7,2 В.
U черный, желтый= 0,2 - 0,3 В.
Покажите как цеплять? Черный к порту GND, желтый - например на D6 к ардуине? И использовать pulseIn()?
да
вольтметром ШИМ мерить - не надо :)
замерьте длительность при положении прямо, пусть 1500 микросекунд, тогда в программе анализ - длительность < 1200 - левый поворотник вкл , длительность >= 1200 и <= 1800- поворотники выкл , длительность > 1800 - правый поворотник вкл
благодарю, 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); }Полагаю, паралельно можно вешать серву? А то я хотел зачем-то серву к МК цеплять :)
Напряжеметром ШИМ мерить больше не буду, просто надо же было с чего-то начинать :)
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...
вопрос не понял.... земля к земле, жёлтый от сервы к пину int pin = 7; ( подключение ард к упрЛинии сервы будет параллельным, да )
для этого unsigned long duration; хватит int duration; - бережём память - http://arduino.ru/Reference ТИПЫ ДАННЫХ
поправился с оформлением. ДА паралельно серве, а то я пока все отсоединил :)
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?
Там же внизу IDE есть строка:
Там же внизу IDE есть строка:
Подскажите где? Или версия IDE не та?
Версия 1.5.8, для ранних версий можете посмотреть функцию подсчета свободной ОЗУ http://robocraft.ru/blog/arduino/531.html.
спасибо! только '.' уберите из ссылки, иначе 404-ая :)