Шум в приемнике вертолета

Обсуждаем контроллеры компании Atmel.
Ответить
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Сообщение uwrtey »

в качестве умножителя можно использовать тот-же макс 232 :)

Или проще выпаять оригинальные gfp70n03 http://www.datasheet4u.net/datasheet/G/ ... r.pdf.html
и попробовать на них...

gfp70n03
Изображение

это интереснее чем IRF540
Изображение
не зная броду не лезь к вольтмоду
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Сообщение uwrtey »

А бывают такие драйвера, которые сами повышают напряжение?
Хотя наверное вряд ли.. :)
не зная броду не лезь к вольтмоду
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Сообщение uwrtey »

Я заменил полевики IRF540N на GFP70N03 теперь вертолет пытается взлететь!
Он только начинает отрываться от пола и тут -же срабатывает ватчдог, который глушит моторы..
( Ватчдог у меня настроен на 1 секунду!!! )
Блин, надо с этим провалом в осциллограмме разобраться.... От куда-же он?
Но опять-же на полном газу очень большой ток потребления, возможно элементарно нехватка мощности АКБ...
Сейчас дозаряжу аккумулятор и попробую снова...

***************************************************************************************

И еще один прикол я нашел... ( как оказалось на работу не влияет, но все таки он есть )
В инициализации сторожевого таймера

Код: Выделить всё

     ldi temp, (1<<WDCE)|(1<<WDE)                                          ; разрешение изменений и включение     
     out WDTCR,temp                                                                 ; выводим в регистр WDTCR
     ldi temp, (1<<WDIE)|(1<<WDP2)|(1<<WDP1)|(0<<WDP0)    ; включение ( настроен на прерывание ) и задаем периуд 1 Сек.
     out WDTCR,temp                                                                 ; выводим в регистр WDTCR 
В ТИНИ2313 нет регистра WDTCR !!! ( это я скопипастил из примера для МЕГИ. )
в тини этот регистр называется WDTCSR
Очень странно, что компилятор не выругался на меня... И прожевал это как будто так и надо...
Дак самое странное то, что программа работает так как я задумал...
После исправления ошибки ни чего не изменилось! Видимо компилятор сам исправил ошибку... :)
не зная броду не лезь к вольтмоду
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Сообщение uwrtey »

Я зарядил АКБ и вертолет полетел!
Теперь осталось залить нормальную прошивку и посмотреть как этот вертолет управляется...
не зная броду не лезь к вольтмоду
Реклама
Эиком - электронные компоненты и радиодетали
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Сообщение uwrtey »

Залил нормальную прошивку - теперь вертолет не взлетает опять..
Видимо ШИМ не выводит максимальное число...
Скорее всего теряется пара единиц в математике....
Может перевести управление газом и курсом в дискретный режим?
не зная броду не лезь к вольтмоду
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Сообщение uwrtey »

Я подал постоянное напряжение на моторы ( через полевики ) - вертолет взлетел...
Я вывел в ШИМ число 255 - вертолет взлетает..
Но когда я заливаю нормальную прошивку - вертолет отказывается взлетать - не достаточно оборотов..
Видимо в ШИМ не выводится максимальное число... Наверное ошибка в математике.. ( округляется при расчетах )
Тут я решил узнать какое минимальное число нужно для ШИМа что-бы вертолет взлетел
Вывел 250 - взлетает
Вывел 240 - не взлетает, но зато ездит как катер на воздушной подушке...
...
Сейчас попробую найти ошибку

КРАТКО

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

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
__Вывожу это число на второй мотор

Логически все правильно... Но вот математически МК где то округляет.
Разбираюсь....
не зная броду не лезь к вольтмоду
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Сообщение uwrtey »

Ох, забыл написать! Вертолет наконец-то полетел.. Правда летает он низко и близко и управляется плохо..
не зная броду не лезь к вольтмоду
Ответить

Вернуться в «AVR»