Управление без радиуправления.
Как бы ШИМ - широтно-импульсная модуляция, напряжение всегда одно и тоже, только оно либо есть либо нет. Почитайте про ШИМ, желательно наверное не википедию, я там нихрена не понял, и про принципы работы сервопривода/сервомашинки.
Это я понимаю. Но оно либо есть, либо его нет только в отдельный момент времени. И чем дольше (чем дольше рабочий цикл) оно есть тем ближе значение напряжения будет к тому что возникает в отдельный взятый момент. Ведь так?)
Читал тут arduino.ru/Tutorial/PWM
Нет, не правильно понимаете, почитайте тут www.rcdesign.ru/articles/radio/tx_intro
Тут у нас уже несколько каналов.
С приемника с отдельного канала подается только один сигнал.
Так будет выглядеть сигнал с одного канала приемника?
Гуглить нужно PPM (Pulse-position modulation)
Так будет выглядеть сигнал с одного канала приемника?
Нет, не так. Один канал с приёмника действительно можно рассматривать как ШИМ с длительностью импульса от от 1 до 2мс и периодом повторения 20мс, но несколько каналов должны быть синхронизированы.
T.S. в библиотеке ардуино есть стандартная библиотека Servo используйте её, вполне адекватно работает, для ленивых arduino.ru/Reference/Library/Servo
делал и совтовый шим на ардуино, если надо скину проект, только там нужно таймер задействовать. в библиотеке всё вполне норм работает.
Один канал с приёмника действительно можно рассматривать как ШИМ с длительностью импульса от от 1 до 2мс и периодом повторения 20мс
Да) Так у меня и задача стоит такая, что бы с ардуино у меня шло 4 ШИМа и ими я бы регулировал работу платы.
Возникает такой вопрос: должны ли эти 4 ШИМа быть синхронизированы или плате важна лишь длинна импульса каждого сигнала?
T.S. в библиотеке ардуино есть стандартная библиотека Servo используйте её, вполне адекватно работает, для ленивых arduino.ru/Reference/Library/Servo
Именно ею и пользуюсь) но вся проблема в том чтобы подобрать такие значения, с помощью этой библиотеки, чтобы плата подумала что я отклонил ручку управления “вправо-низ”.
или плате важна лишь длинна импульса каждого сигнала?
вожна длительность каждого, и с хорошей точностью… плюс минус 4 мкС вызывают дёргание сервы
а 4 мкС это погрешность ардуиновской библиотеки micros()
Именно ею и пользуюсь) но вся проблема в том чтобы подобрать такие значения, с помощью этой библиотеки, чтобы плата подумала что я отклонил ручку управления “вправо-низ”.
Надо посмотреть какие стандартные значения используются в куке для арминга (“вправо-низ” думаю что это оно, хотя с куком не знаком) и такие же выдавать в каналы. ТОлько вот заведете Вы моторы, а дальше что?
вожна длительность каждого, и с хорошей точностью… плюс минус 4 мкС вызывают дёргание сервы
а 4 мкС это погрешность ардуиновской библиотеки micros()
подергивание действительно есть. небольшое, но есть…
хотелось бы узнать, нужна ли синхронизация импульсов с каждого канала ПРИЕМНИКА? или приемник обычно выдает просто ШИМ на выходе ИЗ КАЖДОГО КАНАЛА уже заранее раскодировав сигнал?
Надо посмотреть какие стандартные значения используются в куке для арминга (“вправо-низ” думаю что это оно, хотя с куком не знаком) и такие же выдавать в каналы.
А как это можно посмотреть? Будь у меня пульт и приемник - я бы знал какие значения должны быть, но увы)
ТОлько вот заведете Вы моторы, а дальше что?
Есть Трансиверы NRF24L01 2.4GHz. С их помощью можно соединить два контроллера. Написать программку для управления с компьютера не сложно будет если разберусь с работой данной платы)
А как это можно посмотреть? Будь у меня пульт и приемник - я бы знал какие значения должны быть, но увы)
Почитать ветку про кук контроллер, полагаю что там должно быть это
(“вправо-низ” думаю что это оно,
по каналу питча 1000мкС по каналу рола 2000мкС
приемник обычно выдает просто ШИМ на выходе ИЗ КАЖДОГО КАНАЛА уже заранее раскодировав сигнал?
так и есть… на каждом канале свой “чистый” сигнал.
хотелось бы узнать, нужна ли синхронизация импульсов с каждого канала ПРИЕМНИКА? или приемник обычно выдает просто ШИМ на выходе ИЗ КАЖДОГО КАНАЛА уже заранее раскодировав сигнал?
А как это можно посмотреть? Будь у меня пульт и приемник - я бы знал какие значения должны быть, но увы)
Синхронизация импульсов каналов между собой не требуется. Главное - длительность импульса. На каждом канале приемника длительность импульса пропорциональна положению ручки передатчика. Крайние положения ручки = 1мс и 2мс. Четыре варианта крайнего положения двух каналов перебрать несложно. В чем вопрос?!
по каналу питча 1000мкС по каналу рола 2000мкС
.
Крайние положения ручки = 1мс и 2мс. Четыре варианта крайнего положения двух каналов перебрать несложно. В чем вопрос?!
Предполагаю что вы ни так поняли меня. 1мс и 2 мс - это действительно крайнее положение ручки.
Но мне конкретно нужно что-то вроде этого)
Начинаю думать, что наверно действительно стоит приобрести пульт с приемником…
Кук он ведь доступен в исходниках. Можете просто отключить арминг движков при включении, это должно быть несложно. Правда взлететь это Вам не поможет, действительно быстрее купить пульт чем сделать и отладить полноценное управление с компа.
Предполагаю что вы ни так поняли меня.
я вас правильно понял, на нормальном пульте будет как я написал. но в вие например АРМ можно сделать по отдельному каналу например, может и в куке можно…?
В вие тоже АРМ не сделать одним каналом, должны быть соблюдены условия, как то газ в нуле, датчики откалиброваны, коптер находится не под углом, и т.д. и КУК без управления руками (аппой) никуда не полетит, ну разве что в хозяина, оставте вы это дело от греха подальше, разберитесь (по написанному) как оно работает (по какаим принципам) и купите аппаратуру…
я вас правильно понял, на нормальном пульте будет как я написал. но в вие например АРМ можно сделать по отдельному каналу например, может и в куке можно…?
Пробовал ставить 1мс и 2мс . Газ 1мс и другие по 2мс. Не включается…
купите аппаратуру…
Видимо придется. Куплю, а там уже буду снимать показания с приемника и пытаться их воспроизвести.
для ардуино есть библиотека Servo. Ею элементарно просто вы можете повторить сигнал канала приемника.
myservo.write(0); - “ручка в нуле”
myservo.write(255); - “ручка на максимуме” .
Смотрите примеры.
для ардуино есть библиотека Servo. Ею элементарно просто вы можете повторить сигнал канала приемника.
myservo.write(0); - “ручка в нуле”
myservo.write(255); - “ручка на максимуме” .
Смотрите примеры.
Да. Только не 255, а 180.
Пробовал. Пытался подобрать значения так чтобы было похоже на нужное мне отклонение. Перебрал все множество от 10 до 80 для газа и для других каналов от 120 и до 180 - бесполезно
Газ 1мс и другие по 2мс. Не включается…
Дык, не правильно, газ 1мс, направление (YAW) 2мс, а остальные 1.5мс (т.е. среднее значение).
Дык, не правильно, газ 1мс, направление (YAW) 2мс, а остальные 1.5мс (т.е. среднее значение).
Да! Получилось!)
Огромное спасибо всем за помощь)
Ардуина по умолчанию своей библиотекой крутит серву на 180 градусов, так что значения “угла” для регулей надо подбирать свои. Вроде как от 60 до 120, не помню.
Есть Трансиверы NRF24L01 2.4GHz
Я, конечно, понимаю, что 2 доллара - это не 70 за аппу. Но вы в курсе параметров этих трансиверов?
мощность - 0 dBm - это 1 mW. То есть - ну, пару метров, если повезёт - 10.
Если чешутся руки и возникает стойкое отвращение к готовым приёмопередатчикам - присмотритесь к модулям RFM22.