Суббота, 20.04.2024, 04:27
Вы вошли как Гость | Группа "Гости"Приветствую Вас Гость | RSS
Главная | Пропорциональное управление на МК с нуля - Страница 21 - Форум | Мой профиль | Регистрация | Выход | Вход
Обитель RC-инженера
Форма входа
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: ВитГо  
Форум » Разработка электронных устройств » Разрабатываю ! » Пропорциональное управление на МК с нуля (пошаговое строительство пропорционального управления с нуля)
Пропорциональное управление на МК с нуля
ВитГоДата: Воскресенье, 21.04.2013, 10:19 | Сообщение # 301
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
а в чем проблема то ?

не пойму..

у тебя есть:
- ручка управления курсом (RUD): ее значение от 0 до 1023 середина 512
- ручка управления тягой (THR): значение от 0 до 1023

соответственно значение тяги каждого канала вычисляем как значение тяги [+\-] значение курса
THR1=THR+RUD
THR2=THR-RUD

далее делаем из беззнакового значения RUD - значение со знаком RUDS=RUD-512

после этого берем значение THR и складываем\вычитаем из него RUDS

после возможно понадобиться ограничить расходы по каналам мин. 1000 (мкс), макс 2000 (мкс)

как то так, точно сказать не смогу, нужно пробовать

либо делать механизм микширования как это сделано в нормальных аппах - но там уже математика, только ради микширования двигателей делать как то нет смысла...


Виталий (аka ВитГо)
 
uwrteyДата: Воскресенье, 21.04.2013, 17:48 | Сообщение # 302
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
если честно, то я ни чего не понял .. sad

Цитата
соответственно значение тяги каждого канала вычисляем как значение тяги [+\-] значение курса
THR1=THR+RUD
THR2=THR-RUD


например
THR= 1023 ( полный газ )
RUD = 512 ( (курс) летим прямо )

THR1=1023+512=1535
THR2=1023-512=511

что такое THR1 и THR2 ?

Цитата
далее делаем из беззнакового значения RUD - значение со знаком RUDS=RUD-512


RUDS=RUD-512 => 512-512=0

Цитата
после этого берем значение THR и складываем\вычитаем из него RUDS


1023-0=1023 - и что это я получил ?

... ничего не понял sad


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Воскресенье, 21.04.2013, 17:51
 
ВитГоДата: Воскресенье, 21.04.2013, 18:00 | Сообщение # 303
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
нее !! не так

полный газ THR=1023 - это значение ручки управления тягой

летим прямо RUDS=RUD-512=512 (середина стика руд) - 512 (константа!)=0

THR1 И THR2 - это расчитываемое значение канального импульса на приемник для управления моторами

THR1=THR+RUDS=1023
THR2=THR-RUDS=1023

Например меняем курс: RUD=1023, RUDS=1023 - 512 = 511
THR1=THR+RUDS= 1023+511=1534
THR2=THR-RUDS=1023-511=512

Далее все как ранее: к значениям THRx прибавляем 1000 (у нас диапазон должен быть от 1000 до 2000 мкс) и после этого ОБЯЗАТЕЛЬНО проверяем выход значения канала за максимум минимум и ограничиваем их краями если выход за диапазон произошел
THR1=THR1+1000
THR2=THR2+1000

1000<THR1<2000
1000<THR2<2000

В итоге на выходе
THR1=2000 (мы получили 1534 + 1000 >2000 - значит ограничиваем значением 2000)
THR2=1512 (мы получили 512 + 1000 =1512 - допустимое значение, не ограничиваем !)

вот и вся математика :-)


Виталий (аka ВитГо)
 
uwrteyДата: Воскресенье, 21.04.2013, 22:54 | Сообщение # 304
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
вот, что непонятно:

первое:

а если например меняем курс в другую сторону ?
RUD=0, RUDS=0 - 512 = -512
THR1=THR+RUDS= 1023+(-512)=511
THR2=THR-RUDS=1023-(-511)=1535

а как работать с отрицательными числами ?

второе:

Цитата
Далее все как ранее: к значениям THRx прибавляем 1000 (у нас диапазон должен быть от 1000 до 2000 мкс)

зачем? регуля ведь не будет... тинька сама будет управлять моторами с помощью ШИМа

третье:

Цитата
после этого ОБЯЗАТЕЛЬНО проверяем выход значения канала за максимум минимум и ограничиваем их краями если выход за диапазон произошел

это уже нелинейная зависимость получится ... wacko


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Воскресенье, 21.04.2013, 22:56
 
ВитГоДата: Понедельник, 22.04.2013, 00:04 | Сообщение # 305
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
Цитата (uwrtey)
а если например меняем курс в другую сторону ?
RUD=0, RUDS=0 - 512 = -512
THR1=THR+RUDS= 1023+(-512)=511
THR2=THR-RUDS=1023-(-511)=1535

а как работать с отрицательными числами ?


а чем тебя пугают отрицательные числа ? в принципе все тоже самое..

.
Цитата (uwrtey)
зачем? регуля ведь не будет... тинька сама будет управлять моторами с помощью ШИМа

ну и что ? по радиоканалу ведь короткие импульсы могут и не пройти.. поэтому при передаче использовать стандартные значения длительностей каналов, а вот приемник уже пусть что хочет то и делает с ними :-)

Цитата (uwrtey)
это уже нелинейная зависимость получится ...


почему? линейная ! просто с ограничением ! :-)


Виталий (аka ВитГо)
 
uwrteyДата: Понедельник, 22.04.2013, 00:29 | Сообщение # 306
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Цитата (ВитГо)
а чем тебя пугают отрицательные числа ? в принципе все тоже самое..

не знаю как с ними работать ( складывать и вычитать )


не успеваю за своими мыслями......
 
ВитГоДата: Понедельник, 22.04.2013, 06:34 | Сообщение # 307
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
почитай теорию :-)

http://ru.wikipedia.org/wiki....81%D1%8 2%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%87%D0%B8%D1%81%D0%BB%D0%B0)

вообще ничего там страшного нет, команды те же...

ну или делать просто отдельный флаг - для того чтобы понять для какого двигателя нужно складывать и для какого нужно вычитать константу...


Виталий (аka ВитГо)
 
uwrteyДата: Понедельник, 22.04.2013, 07:35 | Сообщение # 308
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
ссылка не работает.. sad

не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Понедельник, 22.04.2013, 07:36
 
ВитГоДата: Понедельник, 22.04.2013, 14:12 | Сообщение # 309
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
смотреть про дополнительный код http://kuzelenkov.narod.ru/mati/book/inform/inform5.html
http://inf1.info/additionalcode


Виталий (аka ВитГо)
 
uwrteyДата: Вторник, 23.04.2013, 21:38 | Сообщение # 310
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
спасибо! осмысляю..

не успеваю за своими мыслями......
 
uwrteyДата: Среда, 24.04.2013, 10:43 | Сообщение # 311
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Почитал, написано все понятно - вроде даже, что-то понял biggrin

вот схему нарисовал по этому поводу



хочу тут разобрать один пример:

значение RUD=12 ( в машинном коде это 1100 )
MIDDLE_RUD=512 ( в машинном коде это 1000000000 )
считаем:
12-512=-500
1100-1000000000=1111111000001100 ( в человеческом понимании это 65036 )
самый старший бит - единица, а это значит, что это число отрицательное! smile
теперь вычислим, то самое отрицательное число:
( помним о том, что система у нас двухбайтовая )
0-1111111000001100=111110100 ( в человеческом понимании это 500 )

а если число отрицательное, то будем считать не так :

THR1=RUD+MIDDLE_RUD
THR2=DUD-MIDDLE_RUD

а наоборот:

THR1=RUD-MIDDLE_RUD
THR2=DUD+MIDDLE_RUD

выходит, что я все понял... wacko ( аж сам не понял, как понял biggrin )
Прикрепления: 3410495.gif (11.0 Kb)


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Среда, 24.04.2013, 23:21
 
uwrteyДата: Среда, 24.04.2013, 21:42 | Сообщение # 312
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
ладно, с математикой вроде разобрались...

Тогда я снова задам вопрос:
Цитата
зачем добавлять 1000? регуля ведь не будет... тинька сама будет управлять моторами с помощью ШИМа

на что Ты мне ответил:
Цитата
ну и что ? по радиоканалу ведь короткие импульсы могут и не пройти.. поэтому при передаче использовать стандартные значения длительностей каналов, а вот приемник уже пусть что хочет то и делает с ними :-)


Дак, это и есть приемник smile
Мы ведь с передатчиком уже разобрались - он у нас отсылает данные с трех АЦП и синхроимпульс в стандартном виде!!!
И сейчас рассматриваем код приемника..
Вот я и говорю, что 1000 добавлять наверно не нужно smile ???

и еще меня смутило значение RUD ( от 0 до 1023 )
оно ведь у нас уже в стандартном виде PPM smile от 1000 до 2023
конечно это не проблема и тысячу можно отнять, но все-же...


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Среда, 24.04.2013, 23:15
 
ВитГоДата: Четверг, 25.04.2013, 06:10 | Сообщение # 313
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
аа, ну на стороне приемника конечно ничего прибавлять не нужно..

просто во всех аппаратурах микширование каналов (а то что мы делаем с каналами двигателей - это и есть микширование) - выполняется на стороне передатчика !
то есть приемник - это просто приемник ! принял пачку ppm, и раздал исполнителям !! все !! никакого микширования в приемнике нет (потому что заранее нельзя предсказать для чего приемник будет применяться - для самолета, вертолета, планера, или еще для чего...)

в твоем случае микширование на стороне приемника, в принципе ничего страшного, потому что понятно что в другое место кроме верталета ты его ставить не будешь :-)

1000-1023 - не большая разница, ею можно и пренебреч, либо ограничить пределом 1000-2000... разницу даже не заметишь


Виталий (аka ВитГо)
 
uwrteyДата: Четверг, 25.04.2013, 22:31 | Сообщение # 314
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Цитата (ВитГо)
просто во всех аппаратурах микширование каналов - выполняется на стороне передатчика !

Точно... Я и не подумал...

______________________________________________________

А с каким значением RUD работать ?

со значением от 2000 до 4046? или разделить на 2 вычесть 1000 и работать с значением от 0 до 1023 ?

У нас в передатчике было так:

Значение АЦП+1000*2

Как правильнее организовать приемную сторону ?

в наличии есть кварц на 16 и на 20 мгц ( 20 тут ни как не подходит, значит на 16 )

........ скорее всего буду высчитывать >> разделить на 2 вычесть 1000 и работать с значением от 0 до 1023

_____________________________________

Кстати, а как синхронизировать? ...
То, что по синхроимпульсу - это понятно! smile
Но какое правило должно соблюдаться для синхроимпульса? ( например синхроимпульс не может быть короче чем 10 мс )
мне ведь нужно сначала определить, что синхроимпульс - это и есть синхроимпульс.


не успеваю за своими мыслями......

Сообщение отредактировал uwrtey - Четверг, 25.04.2013, 22:31
 
ВитГоДата: Пятница, 26.04.2013, 18:53 | Сообщение # 315
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
ну для твоего случая - синхроимпульс всегда по длительности больше 13 мс.. (2 мс * 3 канала =6 мс, общая длинна пакета 20 мс)

после синхроимпульса - считываем каналы


Виталий (аka ВитГо)
 
Форум » Разработка электронных устройств » Разрабатываю ! » Пропорциональное управление на МК с нуля (пошаговое строительство пропорционального управления с нуля)
Поиск:


Copyright MyCorp © 2024
Сделать бесплатный сайт с uCoz