Пятница, 26.04.2024, 00:42
Вы вошли как Гость | Группа "Гости"Приветствую Вас Гость | RSS
Главная | Пропорциональное управление на МК с нуля - Страница 39 - Форум | Мой профиль | Регистрация | Выход | Вход
Обитель RC-инженера
Форма входа
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: ВитГо  
Форум » Разработка электронных устройств » Разрабатываю ! » Пропорциональное управление на МК с нуля (пошаговое строительство пропорционального управления с нуля)
Пропорциональное управление на МК с нуля
uwrteyДата: Пятница, 22.11.2013, 19:12 | Сообщение # 571
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Залил нормальную прошивку - теперь вертолет не взлетает опять..
Видимо ШИМ не выводит максимальное число...
Скорее всего теряется пара единиц в математике....
Может перевести управление газом и курсом в дискретный режим?


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

Сообщение отредактировал uwrtey - Пятница, 22.11.2013, 19:12
 
ВитГоДата: Суббота, 23.11.2013, 23:32 | Сообщение # 572
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
акки для вертолета обязательно на полную должны быть заряжены..
и вертолет съедает их в среднем за 7-10 минут


Виталий (аka ВитГо)
 
uwrteyДата: Суббота, 23.11.2013, 23:40 | Сообщение # 573
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Да я снова зарядил аккумы, но это не помогло...
Это у меня в математике что то округляется и в итоге я получаю не 255 а 250 наверно....
Вот и не взлетает..
В понедельник проверю минимальное число ШИМ, при котором верт может взлететь...
Я уже задумался над тем что бы перевести газ и курс в дискретный режим...

А по хорошему не помешало - бы драйвер для полевиков прилепить....


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

Сообщение отредактировал uwrtey - Суббота, 23.11.2013, 23:41
 
ВитГоДата: Воскресенье, 24.11.2013, 07:58 | Сообщение # 574
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
гм.. взлетать должен уже при положении стика более половины...

Виталий (аka ВитГо)
 
uwrteyДата: Воскресенье, 24.11.2013, 09:51 | Сообщение # 575
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
У меня он медленно взлетает при выводе числа 255 в ШИМ.
И точно так-же взлетает при постоянном включении через полевики...
Вертолет-то фиговенький...

Может и правде еще драйвер попробовать + умножитель напряжения до 10 Вольт?
Или другим транзистором их открывать напряжением питания ( 7 Вольт )..
Ходя судя по заявленному графику, этому транзюку должно хватать 5 вольт.


не успеваю за своими мыслями......
 
uwrteyДата: Понедельник, 25.11.2013, 19:14 | Сообщение # 576
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Только что вывел число 250 в ШИМ - вертолет взлетает нормально...
Сейчас попробую 240 вывести...
Прикрепления: 250-PWM.zip (5.9 Kb)


не успеваю за своими мыслями......
 
uwrteyДата: Понедельник, 25.11.2013, 23:01 | Сообщение # 577
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Вывел 240 в ШИМ, но теперь вертолет не взлетел, зато он начал очень шустро ездить по полу, как катер на воздушной подушке.. biggrin
Похоже, на то, что при максимуме газа пропорционального управления на ШИМ выводится меньше 240...
( Так как вертолет там то-же ездит по полу, но не так интенсивно... )
Неужели в "пропорциональном" варианте у меня теряется ( округляется ) в математике?
Пойду код покурю....
Прикрепления: 240.rar (5.7 Kb)


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

Сообщение отредактировал uwrtey - Понедельник, 25.11.2013, 23:02
 
uwrteyДата: Вторник, 26.11.2013, 01:27 | Сообщение # 578
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Сейчас попробую найти ошибку

КРАТКО

Что касается пульта...

1) Снимаем показания переменного резистора с помощью 10-ти битного АЦП ( у нас получается число от 0 до 1023 )

2) Превращаем это число длительность пригодную для формирования PPM ( длительность должна варьироваться от 700 до 2200 мкс ) http://www.rcdesign.ru/articles/radio/ppm_pcm
__так как наш таймер тикает каждые 0,5 мкс, то для этого к этому числу прибавляем 1000 и затем умножаем на 2
__У нас получается число от 2000 до 4046 ( то есть импульс будет в районе от 1000 мкс до 2023 мкс )

3) Передаем полученную длительность в радиоэфир

Что касается приемника:

1) Замеряем полученную длительность ГАЗА ( получается в районе от 1000 мкс до 2023 мкс )
__ Так как таймер приемника тикает каждые 0,5 мкс, то мы получаем число от 2000 до 4046

2) Превращаем полученное число в число пригодное для ШИМа моторов
__ШИМ для моторов организован на 8-ми битном таймере, а это значит, что максимальное число 255
__Для этого я делю это число на 2, а затем вычитаю 1000
__У меня получается число от 0 до 1023
__Сохраняем это число, что бы чуть позже преобразовать до нужного уровня.... ( *1 )

3) Так как вертолет имеет соосную схему несущих винтов, нужно микшировать ГАЗ и КУРС
__ Замеряем полученную длительность КУРСА ( получается в районе от 1000 мкс до 2023 мкс )
__ Так как таймер приемника тикает каждые 0,5 мкс, то мы получаем число от 2000 до 4046

4) Преобразую это число до такого-же уровня до которого преобразовал ГАЗ ( то есть от 0 до 1023 )
__Для этого я делю это число на 2, а затем вычитаю 1000
__У меня получается число от 0 до 1023

5) Теперь мне нужно получить из этого числа отклонение от полета прямо ( полет прямо это число 512 )
__То есть из полученного числа нужно вычесть 512 и получится число в районе от -512 до +511 ( хочется до +512, но не беда )

6) Если полученное число отрицательное, то повернуть нужно налево, а если положительно - направо
__Для дальнейших вычислений буду использовать модуль этого числа ( от 0 до 511 )

7) В микшере я упростил все донельзя....
__ при повороте я снижаю обороты одного мотора и НЕ увеличиваю обороты второго..
__ То есть на один мотор я вывожу значение ГАЗа а на второй мотор я вывожу значение ГАЗа за минусом значения КУРСа

8) Вот теперь то мне и нужно прочитать то число ГАЗа, которое я сохранил - то есть это число от 0 до 1023 ( *1 )
__Теперь нужно преобразовать до нужного уровня число ГАЗа то-есть число от 0 до 1023 до уровня от 0 до 255
__Для этого я делю прочитанное число на 4 и у меня получается число от 0 до 255
__Вывожу это число на один из моторов
__Теперь дело за вторым мотором...

9) Снова читаю сохраненное число ГАЗа - то есть это число от 0 до 1023 ( *1 )
__ Вычитаю из этого числа значение курса ( значение курса у меня от 0 до 511 ) ____0...1023 минус 0...511
__ Получается значение в диапазоне от -511 до 1023
__Отрицательные числа мне не нужны и по этому все, что меньше нуля заменяем нулем и у нас получается число от 0 до 1023

10) Теперь нужно преобразовать до нужного уровня полученное число, то есть число от 0 до 1023 до уровня от 0 до 255
__Для этого я делю прочитанное число на 4 и у меня получается число от 0 до 255
__Вывожу это число на второй мотор

Логически вроде все правильно... Но вот математически МК где то округляет.
Разбираюсь....

Добавлено (26.11.2013, 01:27)
---------------------------------------------
Можно конечно к каждому мотору тупо прибавить еще 10, а если число перевалит за 255, то заменить это число на 255...


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

Сообщение отредактировал uwrtey - Вторник, 26.11.2013, 01:21
 
uwrteyДата: Вторник, 26.11.2013, 09:08 | Сообщение # 579
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
И еще одна странность:
При полностью убранном газе у меня все равно вращаются лопасти, хотя по идее они должны стоять на месте...
Я тут подумал, что это переменный резистор не отрабатывает начальное и конечное положение, так как стик не доводит его до этих значений, но это еще нужно проверить....
Просто я не помню как я замерял сопротивление переменного резистора - скорее всего измерил общее и все, а надо было измерить то, которое изменяется при движении стика...


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

Сообщение отредактировал uwrtey - Вторник, 26.11.2013, 21:06
 
ВитГоДата: Четверг, 28.11.2013, 12:32 | Сообщение # 580
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
может у тебя и максимальное не генериться?

нужно сделать такую процедуру как калибровку - замерить минимальное значение на АЦП, замерить максимальное значение на АЦП (имеется ввиду с резистора) и потом от мин. до макс. разбить например на 255 значений для ШИМ..

проверь ! может у тебя действительно до максимума не регулируется длительность импульсов ?


Виталий (аka ВитГо)
 
uwrteyДата: Четверг, 28.11.2013, 16:23 | Сообщение # 581
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Я почему-то уверен, что так оно и есть.... smile
В пятницу проверю... А как-же мне быть тогда?
Надо будет в пульте прошивку менять... нужно же будет заново все пересчитывать... Блин...


не успеваю за своими мыслями......
 
ВитГоДата: Четверг, 28.11.2013, 22:59 | Сообщение # 582
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
нужно сделать калибровку стика
в принципе ничего сложного...

p.s. прошивку для пульта не так уж и просто написать... это ты еще с программирование пульта под модели не заморачивался :-))))


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


Ага, нужно подумать как не 0 вольт на АЦП превратить в самый короткий импульс...

А максимальное значение изменить проще, нужно отклонить стик на максимум и измерить сопротивление...
Потом это сопротивление взять за максимальное и пересчитать заново исходя из него...


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

Сообщение отредактировал uwrtey - Суббота, 30.11.2013, 10:44
 
uwrteyДата: Суббота, 30.11.2013, 16:06 | Сообщение # 584
Генерал-майор
Группа: Администраторы
Сообщений: 3270
Репутация: 11
Статус: Offline
Общее сопротивление переменного резистора 4,94 кОм ( почти 5 кОм )
Сопротивление при минимальном положении стика 0,57 кОм - вот по этому, моторы крутятся при убранном газе...
Сопротивление при максимальном положении стика 3,77 кОм - Вот где собака зарыта !!!

Добавлено (30.11.2013, 16:06)
---------------------------------------------
Что бы компенсировать недостаточное отклонение стика, можно в передатчике, при формировании длительности, вместо 1000 прибавить 1223...
А можно и в приемнике сделать что ни будь...


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

Сообщение отредактировал uwrtey - Суббота, 30.11.2013, 16:12
 
ВитГоДата: Суббота, 30.11.2013, 20:20 | Сообщение # 585
Полковник
Группа: Администраторы
Сообщений: 2422
Репутация: 20
Статус: Offline
ну можно и так...

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


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