Проект "Безколлекторная Лама4"

Volante24
MPetrovich:

Блин, ну не получается у меня так цитировать текст сообщения, как Вы! Научили бы, что ли?

Да я это по-пещерному – отвечаю, она дает цитату. Вырезаю, что не надо. А вставить новый кусок так – ставите quote в квадратных скобках, чтобы открыть цитату (а там может стоять все, что угодно), а чтобы закончить “цитату” ставите /quote в квадратных скобках.

Не понял, как всё-таки отследить, сам факт наличия или отсутвия вращения мотора?

Нет, реальное вращение программно не отследить, это только "железо " может. Но для работы стиков и программного достаточно, в вертолете мотор сам не остановится, пока его не выключат. А если он, наоборот, вращается по инерции, то и пускай. Для запуска ESC сам определяет, есть ли уже у мотора достаточная скорость, по эдс индукции.

Я сам в ассемблере, особенно ассемблере микроконтроллеров, почти ноль, но для этих задач там не так все сложно. Список команд есть, можно делать по аналогии с тем, что в программе уже есть. Сложности, скорее, в обращении с таймерами, портами, прерываниями, инициализация. А просто регулярная часть программы – это несложно. Так что добавлять алгоритмы обработки уже имеющегося сигнала – простейшее упражнение. Я пока разобрался, как немецкая программа работает, и как там нужно что сделать для таких усовершенствований, довольно понятно. Для регулировки расходов нужно лишь уменьшить 150 в -150*16 в двух строчках (желательно еще кое-что сделать, но необязательно). А дополнительное “триммирование” можно делать, изменяя константы 10 и 20 в последней части программы – только оно вряд ли будет хорошо работать в широком диапазоне. Но это просто для примера. А вот введение “proportional” по-хорошему потребовало бы более серьезного изменения.

MPetrovich

Вчера полетал на даче. Зажигал на пустом пока огороде. Вот когда я смог оценить КПД моторов в полной мере. На одной батарее отлетали больше получаса! Перерывы были только на передачу пульта из рук в руки и установке верта ровно для старта, поскольку летал не только я, а ещё мой 12-летний племянник и его батя. Главное, что я вынес из этих чумовых полётов - это то, что на улице без управления верхним ротором на сооснике делать нечего. Малейший бриз на высоте больше 5м сносит его нафиг и никакие усилия и впирания стиков на максимум не дают ничего, кроме перехлёстов. Моторы не греются совсем, то ли прикатались, то ли из-за обдува, но не греются и всё. Пр очередном падении с 5-6м оторвало провод питания одного ESC и на этом экстрим завершился.

MPetrovich
Volante24:

Нет, реальное вращение программно не отследить, это только "железо " может. Но для работы стиков и программного достаточно, в вертолете мотор сам не остановится, пока его не выключат. А если он, наоборот, вращается по инерции, то и пускай. Для запуска ESC сам определяет, есть ли уже у мотора достаточная скорость, по эдс индукции.

А отчего не использовать эту самую ЭДС и для своих целей? Снять с выводов мотора и отслеживать наличие импульсов ЭДС на них. Снимать молжно даже с одного вывода, синхронизируя по частоте питающего мотор напряжения, поскольку эта частота в регуляторе постоянна. Допустим, прошёл спад питающего импульса - снимаем наличие ЭДС, нет ЭДС - добавляем длительности РРМ, есть ЭДС - пропускаем до следующего прерывания.

Volante24:

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

Где посмотреть-то этот список команд?

Volante24
MPetrovich:

Вчера полетал на даче. На одной батарее отлетали больше получаса!

Вот это здорово! В какой это конечной конфигурации?

Главное, что я вынес из этих чумовых полётов - это то, что на улице без управления верхним ротором на сооснике делать нечего.

В принципе, я на большее и не рассчитывал. Вчера к ночи тоже полетал во дворе – пока еще на старых двигателях. В полный штиь даже очень неплохо, по сравнению с квартирой. Даже и двигается вперед-назад, если надо, но вяло, и больше как лягушка, прыжками.

Но вот на видео видел, как такие же стрекозы летают вовсю, и с приличной скоростью. Может быть, для этого нужно летать без флайбара? Вы не пробовали его снимать или уменьшать грузики?

MPetrovich
Volante24:

Вот это здорово! В какой это конечной конфигурации?

А в той, что на фото, которые я размещал здесь. Только поаккуратнее упакован.

Volante24:

Но вот на видео видел, как такие же стрекозы летают вовсю, и с приличной скоростью. Может быть, для этого нужно летать без флайбара? Вы не пробовали его снимать или уменьшать грузики?

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

Volante24
MPetrovich:

Где посмотреть-то этот список команд?

Поищите googleом ATTINY13, сразу найдете описание, PDF на 100 с чем-то страницах, на стр. 161 и 162 таблица с командами. А также есть очень полезный тьюториал от AVR. Спецы, наверное, еще что-нибудь получше посоветуют.

А отчего не использовать эту самую ЭДС и для своих целей? Снять с выводов мотора и отслеживать наличие импульсов ЭДС на них. Снимать молжно даже с одного вывода, синхронизируя по частоте питающего мотор напряжения, поскольку эта частота в регуляторе постоянна. Допустим, прошёл спад питающего импульса - снимаем наличие ЭДС, нет ЭДС - добавляем длительности РРМ, есть ЭДС - пропускаем до следующего прерывания.

Нет, буквально так не пройдет. Нужно же знать, когда ESC включает и когда выключает свой PWM. Он-то это знает, но чтобы его спросить, нужно внутрь программы лезть, а этого никто не может. А иначе нужно подпитываться к выводу самого процессора или затворам ключей, ну или вроде того, Питающая частота там вовсе не фиксирована, только на малый интервал времени. Короче, полно мороки, а для чего? Вращается мотор, или нет – проще датчик поставить,

MPetrovich:

А в той, что на фото, которые я размещал здесь. Только поаккуратнее упакован.

Аккумулятор один или два?

MPetrovich
Volante24:

А также есть очень полезный тьюториал от AVR.

А шо це такэ?

Volante24:

Нет, буквально так не пройдет. Нужно же знать, когда ESC включает и когда выключает свой PWM. Он-то это знает, но чтобы его спросить, нужно внутрь программы лезть, а этого никто не может. А иначе нужно подпитываться к выводу самого процессора или затворам ключей, ну или вроде того, Питающая частота там вовсе не фиксирована, только на малый интервал времени. Короче, полно мороки, а для чего? Вращается мотор, или нет – проще датчик поставить

Так зачем лезть в регулятор? Ведь когда ESC включает обмотку видно на проводе. При чём здесь ШИМ? Даже если частота не фиксированная, можно легко привязаться к фронту или спаду импульса, от изменения частоты и длительности ничего не измениться.
Датчик поставить вовсе не проще. К тому же алгоритм обработки его сигнала будет повторять алгоритм обработки сигнала противоЭДС на одном питающем мотор проводе.
Я вообще наловчился делать так: включаю передатчик и медленно триммером газа довожу до момента, когда моторы начинают дёргаться, потом немножко сдвигаю триммер назад и дальше уже работаю стиком. При самом нижнем положении стика моторы ещё вращаются, но верт начинает резко терять высоту. Когда садиться, то ещё молотит лопастями. Я убираю триммер газа вниз и верт глохнет.

Volante24:

Аккумулятор один или два?

Один, конечно.

Volante24
MPetrovich:

Полюбуйтесь на красавца.

Уже пора перерисовывать V3 в V8

MPetrovich
Volante24:

Уже пора перерисовывать V3 в V8

Я считаю, что лучше по праву добавить надпись “TURBO”.

Нарыл в сети книжку на русском “Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL”(2004), автор Евстифеев. Однако, там нет про АTiny13, есть только 11, 12, 26 и пр. Но про архитектуру и систему команд вполне можно почитать. Обидно, что нет ни одного примера куска программы с разбором. Я не очень люблю такие издания, являющиеся по сути усечёнными переводами даташитов.
Смотрел сегодня разные регуляторы для б/к моторов и пришёл к выводу, что накрайняк можно обойтись без программного ограничения тока через регуль. Существуют маломощные регули (до 10А), в которых уже предусмотрена защита от перегрузки и перегрева. Если использовать регулятор с защитой по току, срабатывающей, скажем, при 4А, то можно просто установить их. Единственный вопрос, который мне не ясен - как проявляет себя эта защита? То ли она срабатывает как отсечка тока до нуля с последующим прерзапуском выкл/вкл питания, то ли ток доходит до определённого порога и дальше просто не увеличивается. Я склонен считать, что скорее первый вариант, поскольку регули маломощные и малогабаритные и если достаточно долго держать на максимальном токе, то просто погорят ключи.

Хотел ещё спросить знающих людей - как подключается отдельный гироскоп? Меня интересует откуда приходит сигнал на вход и куда уходит с выхода? По картинкам у гиры два разъёма двойной и торйной. Двойной, надо думать питание, а торйной вход+выход+земля. Так или нет? Подскажите, сведущие в этом вопросе.

Volante24
MPetrovich:

Хотел ещё спросить знающих людей - как подключается отдельный гироскоп? Меня интересует откуда приходит сигнал на вход и куда уходит с выхода? По картинкам у гиры два разъёма двойной и торйной. Двойной, надо думать питание, а торйной вход+выход+земля. Так или нет? Подскажите, сведущие в этом вопросе.

Простейшие гиро, которые я держал в руках (и сейчас держу), просто включаются между серво и приемником – они должны модифицировать длительность PPM импульса. Соответственно, все как у птичек. Два обычных тройных провода, один папа, другой мама.

У меня большой регулятор тоже с защитой, по-моему, просто тепловой. Отрубает полностью, вроде потом снова врубает, если сбросить газ и снова дать. Для вертолета такое не пойдет. Пороговых ограничителей тока, по-моему, никогда не делают.

Вы с английским в ладах? Все, что я использовал для информации и обучения, было на английском (взято, по-моему, с сайта AVR). Там прямо и примеры программ, с пояснениями. Но тут нашел у себя в букмарках русский url с обучением микроконтроллерам, правда, я туда не лазал.

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

PigTail

на русском можно посмотреть www.gaw.ru, www.avr.h15.ru, www.avr123.nm.ru

sergej-08

Всем привет !!!
Чайниковский вопрос - есть ли разница между в-тайл миксерами от разных производителей для применения в схеме, предложенной уважаемым автором темы ? Конкретнее - если вместо www.hobbycity.com/hobbycity/…/uh_viewItem.asp?idPr… (у них какой-то хронический затык с его поставкой ) применить www.hobbycity.com/hobbycity/…/uh_viewItem.asp?idPr… ?
Заранее - спасибо !!!

PigTail

Должон потянуть, мне тут прошивка на тини13 попадалась с в-миксером, если надо поищу ссыдку

М_Ф
sergej-08:

Всем привет !!!
Чайниковский вопрос - есть ли разница между в-тайл миксерами от разных производителей для применения в схеме, предложенной уважаемым автором темы ? Конкретнее - если вместо www.hobbycity.com/hobbycity/…/uh_viewItem.asp?idPr… (у них какой-то хронический затык с его поставкой ) применить www.hobbycity.com/hobbycity/…/uh_viewItem.asp?idPr… ?
Заранее - спасибо !!!

У меня есть и тот и другой. Оба работают.

MPetrovich
PigTail:

на русском можно посмотреть www.gaw.ru, www.avr.h15.ru, www.avr123.nm.ru

Не знаю как принято у AVRовцев, а у PICовцев я практически с ходу нашёл подробные примеры программ на ассемблере с разбором каждой строчки. На сайтах же, которые указаны выше ничего похожего нема. Или я не понял где смотреть, или там этого нет. Если не прав, то ткните меня носом - буду благодарен. А вообще, если на этом форуме кто-то решиться открыть ликбез по программированию, то думаю тема будет иметь немалый спрос.
На праздники возил свой верт на просторы степей в Липецкую область. Ещё раз убедился, что против ветра летать невозможно. Нужно управление вторым ротором, иначе вся дурь б/к моторов идёт на взмывание верта вверх до неразличимости в небе, а ветер ещё больше ускоряет вертикальное перемещение плюс ещё и сносит черти куда. Оттого спускать верт на землю жуткое мучение, а ронять его метров с 50 отчего-то жалко. Полёты кончились тем, что сожрало половину зубов на шестерне внешнего вала и верт стал крутиться по часовой стрелке. Сегодня наконец заменил вал.

есть ли разница между в-тайл миксерами от разных производителей для применения в схеме, предложенной уважаемым автором темы ?

Я вот что подумал: а зачем вообще эти миксеры, если они ни фига не воспринимают сигнал с гироскопа? Не проще поставить по гироскопу на каждый мотор и они будут пропорционально компенсировать угловое ускорение путём изменения длительности импульсов РРМ соответствующих моторов. Только включить их нужно “навстречу”, т.е. чтобы один отслеживал хвост, а другой нос. По весу и по размеру проигрыша быть не должно.

Volante24
MPetrovich:

Не проще поставить по гироскопу на каждый мотор и …

А зачем весь этот кибуц?

Не знаю как принято у AVRовцев, а у PICовцев я практически с ходу нашёл подробные примеры программ на ассемблере с разбором каждой строчки. На сайтах же, которые указаны выше ничего похожего нема. Или я не понял где смотреть, или там этого нет.

Ну вот тут я что-то нашел:

babelfish.altavista.com/…/trurl_pagecontent?lp=ja_…

Там внизу есть AVR super introduction (NO.1 и дальше, правда, почему-то по нисходящей). Это, правда, не по-русски; номинально на английском, но лишь номинально, английский там такой, что впору караул кричать, по-моему просто машинный перевод с японского. Мне кажется, руководство я видел где-то в другом месте, это лишь потому, что примеры прямо из нашей RC жизни.

MPetrovich:

Не знаю как принято у AVRовцев, а у PICовцев я практически с ходу нашёл подробные примеры программ на ассемблере с разбором каждой строчки. На сайтах же, которые указаны выше ничего похожего нема.

По-моему, здесь:

www.avr-asm-tutorial.net/avr_en/index.html

и дальше. смотрим в Index самое первое, Beginner’s introduction to AVR assembler language:

www.avr-asm-tutorial.net/avr_en/…/index.html

Ну и, наверное, все прочее тоже.

MPetrovich

Ну, блин, ты и нашёл! Я по английски понимаю по одному-два слова из предложения, а ты хочешь, чтобы я такой объём текста переварил!
Скажите мне лучше, господа программеры, на чём-таки программируется AVR - на СИ, на Ассемблере или ещё на чём? Я не въезжаю. Понимаю, что компилятору наплевать на чём ты пишешь, лишь бы он сам мог тебя перевести, но мне-то как быть? Учить Си? Это то ещё удовольствие! И ещё вопрос - написав по примрам программу для какого-нибудь AVRа, могу ли я перетранслировать её в программу для нужного мне чипа? Или надо курочить всю программу от иницмализации до последнего бита в регистрах?

Volante24
MPetrovich:

Ну, блин, ты и нашёл! Я по английски понимаю по одному-два слова из предложения, а ты хочешь, чтобы я такой объём текста переварил!

Я ж не знал! Ну, раньше или позже все одно придется выучить, это как раз самый безболезненный путь. Так что дерзай. Да и в любом случае, ты же не хочешь вместо Go to, писать “пошел на …”!

Скажите мне лучше, господа программеры, на чём-таки программируется AVR - на СИ, на Ассемблере или ещё на чём?

Я тот еще специалист, но скажу: кто на Ассемблере, а кто на С. Я бы сказал – начинайте на ассемблере, и удовольствие (как в Лего играть!), и полезно. А если пойдет, то продвинутые программы можно на С.

И ещё вопрос - написав по примрам программу для какого-нибудь AVRа, могу ли я перетранслировать её в программу для нужного мне чипа?

Можно, но с некоторыми изменениями. Если в программа использует четвертый таймер, а в ATTINY13 он лишь один с двумя счетчиками – ясно, придется что-то переобозначать. Но мнемоника у всего там вроде такая, что это проследить и сделать несложно. Ну, названия выводов на пины меняются, наверное, инициализацию чипа и портов нужно подогнать. Но, насколько я понимаю, собственно команды одни и те же.

CrazyElk

MPetrovich

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

  2. forum.ixbt.com/?id=48 место обитания не злобных любителей AVR и ARM. (Помогите начать работать с микроконтроллерами). www.avr123.nm.ru - краткий курс бойца на AVR. Сайт несколько странный по дизайну и стилю но многим новичкам по их отзывам помог (оценить сам не могу не новичек).

  3. Си учить. Если не стоит задача супер все контролировать или вытесать код микронных размеров в ассемблер лезть не стоит ниже аргументирую почему.

  4. если написана программа для AVRа то для чипа того же или близкого семейства в 90% случаев все сведется к замене одного фала описателя чипа и/или коррекции макро определений. Если это принципиально другой чип и/или если программа использует блоки котрые принципиально в чипе отсутствуют переписывать. Насколько много и сложно зависит болше от того насколько “качественно” написано - качество приходит с опытом. Надо писать и читать теорию. Как пример - новички сплошь и рядом по коду раскидывают “магические числа”. Надо буфер на 10 символов или скажем для выбранного чипа делить надо частоту на 8 так везде так и пишут 10 и 8 (а то и 5+5 напишут ) жизнь идет чип и потребности меняются и выясняется что программа всем хороша но на новой технической базе надо везде буфер сделать 15, а делитель скажем 5 - начинаются мучения по поиску какие именно из 10 щедро разбросанных по коду надо менять на 15 (в том числе и пресловутые 5+5 надо отыскать) и какие из 8 относятся к делителю а какие просто рядом стояли. Чуть более опытный в самом начале определяет константу BUFFER_SIZE и SCALE_DIVIDER и использует имена а не магические значения - вся коррекция- заменить в одном месте в определение число. Есть аналогичные правила на структуру программы … если им следовать то первоначальное написание несколько удлиняется, но переделка и портирование становятся намного легче. Разумный баланс дело навыка.

  5. Займетесь микропроцессорами подружитесь с Jtag и отладкой программы в кристалле. Don’t Think! Look == Не гадай, посмотри - правило экономящее кучу времени при поиске ошибок. Не только в микроконтроллерах в программирование вообще - отладчик лучший друг программиста и им надо пользоваться. + к этому лутше 2 раза прочитать/перечитать КАК должно работать в документации чем 20 пытаться угадать как это может работать X-переменируя.

По поводу почему С а не ассемблер.

Изучая Ассемблер вы хорошо изучите как именно думает микроконтроллер, как он устроен, какие в нем есть блоки и как именно к ним обращаются в какой момент на каких ножках и в ответ на какие действия/команды что появятся, вы доподлинно будете знать как именно что и где размещено в память, какая она бывает … как … . Это безусловно полезно но не обязательно, а часто для решения конкретных задач совершенно излишне. Грубо говоря Ассемблере это подробная технологическая карта по шагам куда надо двигать инструмент, когда пускать когда поднимать чтобы скажем отфрезеровать окружность . КАК делать с опорой на конкретные чипы и инструкции. Как пример чтобы сложить два целых числа

a=b+c;
(не то чтобы единственно возможный и самый правильный алгоритм но как пример)
Загрузить значение переменной b из памяти в регистр. (помним где место расположения переменной b в памяти)
Загрузить значение с из памяти в регистр. (помним где место расположения переменной c в памяти)
Сложить регистры (отмечая в уме регистр куда поместит результат процессор)
Сохранить значение регистра где резуьтат сложения в память по тому адресу где расположена переменная a (адрес переменной a в памяти)
(УФ готово сложили)

естественно с опытом человек пишет инструкции не задумываясь да и код этот можно оформить проще но не в этом суть. Смысл примера в том что на ассемблере вы формулируете не то что хочется сделать - сложить числа, а подробно описываете как именно это сделать конкретному процессору на его языке. В ассемблере есть безусловно облегчающие программирование технологические приемы макросы, библиотеки … контроллеры собраны в семейств и наборы команд у них до безобразия похожи … но тем не мнение это подробная инструкция КАК

С в отличие от ассемблера это инструкция не КАК, а рассказ ЧТО надо сделать. На С вы пишите ЧТО именно надо сделать a=b+c; и все. КАК это сделать на конкретном процессоре решает компилятор. И смею заверить очень неплохо это делает. Не многие люди и в редких ситуациях способны написать инструкцию КАК лутше современного компилятора. Если добавить сюда то что для С производители подготавливают и раздают библиотеки ЧТО может сделать чип или КАК делать на том или ином чипе стандартную операцию именно для Си чаще всего то если вы не собираетесь заниматься жестокой оптимизацией пишите ЧТО надо делать а не КАК. Как это сделать современный компилятор разберется. И грамотно написанная программа ЧТО делать переносится намного проще не то чтобы внутри семейства а и между типами если нет принципиальной невозможности гораздо проще с AVR на ARM или PIC перенести Си. чем подробный план ASM КАК это делает конкретный AVR переизложить в ASM в инструкци КАК это сделать PIC-у.

Бесплатый сыр естественно бывает только в мышеловках. Создатели стандартных библиотек для контроллеров и их семейств на Си закладываются на гораздо более широкий спектор возможных случаев чем может встретится в конкретной программе - поэтому код библиотечных функций может быть излишне большим с точки зрения потребностей конкретной программы. Тут оптимизации конечно возможны НО но жизнь идет и то что еще вчера казалось нереальным случаем (ну скажем ввод даных в научном формате и работа с плавающей точкой) сегодня становится неизбежной необходимостью. Так что излишняя оптимизация 10 раз может выйти боком. При том что для одиночных поделок разница в цене между скажем ATTiny13 пол доллара и несколько десятков байт оперативной памяти и ARM7 десять долларов и 32 килобайта оперативной памяти (про скорости и перечень переферии даже не говорим) совершено не оправдывает месяц ухищрений потраченный на то чтобы втиснуть именно в десяток батйт оперативки программу котрая с огромным запасом ложится в килобаты ARM-а и ли ATMega. ТОже самое не стоит фантазировать как программно эмулировать USB порт дергая ножки контроллера (а это возможно и хорошие примеры есть и иногда это даже оправданно) если он есть готовый в железе с библиотеками как его применять и примерами у старшего чипа. В современном любительском электронном мире проще взять кристалл/микроконтроллер с запасом и сосредоточится на формулировке ЧТО делать, чем выцарапывать такты, байты и центы подробно расписывая КАК это сделать именно на этом дешевеньком и простом чипе. (в массовом производстве конечно другое дело экономия месячными усилиями доллара на миллионой партии дает миллион долларов 😃 но на одиночной поделки всего то доллар будет. Вопрос удовольствия - а я смог - это естественно отдельная песня)

Сорри если излишне подробно и много.

WBR CrazyElk

М_Ф
MPetrovich:

Я вот что подумал: а зачем вообще эти миксеры, если они ни фига не воспринимают сигнал с гироскопа? Не проще поставить по гироскопу на каждый мотор и они будут пропорционально компенсировать угловое ускорение путём изменения длительности импульсов РРМ соответствующих моторов. Только включить их нужно “навстречу”, т.е. чтобы один отслеживал хвост, а другой нос. По весу и по размеру проигрыша быть не должно.

У меня вот гироском за 100$. Буду летать на одном. С двумя дороговато 😁