Контроллер бесколлекторного двигателя

BerliN

извините вклинюсь…а можно в nex формате, а то я с програмированием ВЫ 😕 😵

rulll

Перечитайте эту ветку. Будет полезным.

BerliN

Перечитал, прошивку blmk307 в nex формате не нашёл, а так хочется… 😦 😃

anm
BerliN:

Перечитал, прошивку blmk307 в nex формате не нашёл, а так хочется… 😦 😃

Для какой платы?

blakaraf
rulll:

Есть такое дело и на Меге и на 2313. 100% дело в софте. Надо ждать новую версию.

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

Схемки к сажалению нет, собирал по печатке, правда сделал ее не много по свободнее.

Посмотрел АСЕМБ 307, она помоему для АТ90 2313.
Поправте если не так.

ILUHA
blakaraf:

Схемки к сажалению нет, собирал по печатке, правда сделал ее не много по свободнее.

Посмотрел АСЕМБ 307, она помоему для АТ90 2313.
Поправте если не так.

Она действительно для 2313. Тем не менее rull спасибо за файл. Но я про Мегу завел дискуссию.
Такое ощущение что шим не подходит для мощных полевиков, типа 4905.

rulll
ILUHA:

Она действительно для 2313. Тем не менее rull спасибо за файл. Но я про Мегу завел дискуссию.
Такое ощущение что шим не подходит для мощных полевиков, типа 4905.

Привет!
Да не имеет значения мощные полевики или нет. Естественно мощные полевики нужно с драйверами пользовать. Я переделал всяко разно, и с мощными и в корпусе SO-8. Одинаковый эфект.
Кстати , если после подергивания разогнать двигло еще больше ( за счет Кв или напряжения питания) то это подергивание исчезает. Мое мнение что в программе есть динамическая ошибка , которая исчезает и появляется в зависимости от соотношения ширины импульса RC и оборотов двигателя.
Такую ошибку тяжело выловить…

ILUHA
rulll:

Привет!
Да не имеет значения мощные полевики или нет. Естественно мощные полевики нужно с драйверами пользовать. Я переделал всяко разно, и с мощными и в корпусе SO-8. Одинаковый эфект.
Кстати , если после подергивания разогнать двигло еще больше ( за счет Кв или напряжения питания) то это подергивание исчезает. Мое мнение что в программе есть динамическая ошибка , которая исчезает и появляется в зависимости от соотношения ширины импульса RC и оборотов двигателя.
Такую ошибку тяжело выловить…

Все дело в том, что на своих 2313 с соиками летаю без проблем, и ничего подобного не наблюдалось.
Насколько я понял в Меге принцип и костяк программы тот же что и в 2313, просто адаптирован под его перефирию. Так что ИМХО думаю глюк не в софте.
Прийдут соики- попробую Мегу с ними.
У мощных полевиков емкости затворов в 2-2,5 раза больше, особенно у п-канальных, возможно в этом и причина. Завтра попробую резюки 680 Ом поменять на 430 или меньше, думаю поможет .

Кстати подергиваний у меня и нет, движок просто резко встает как вкопанный, и БП показывает порядка 10А.

BerliN
anm:

Для какой платы?

Здравствуйте.МЕГА 8 ,плата от Алекса. 😃

ILUHA

Нашел я, как мне кажется, лекарство от моей проблемы(после продолжительных опытов с осцилографом):

  1. для больших полевиков: уменьшаем сопротивление (680Ом) у затворов П-канальников до 430 Ом или менее
  2. Не зря умный дятька Кронзе упомянул диоды шотки с каждой фазы на плюс при использовании контроллера на больших токах…1N5819 в SMD реально помогают.

…И не каких подергиваний, по крайней мере вплоть до 9А(мощнее пока мотор не принесли).

Удачи всем!!!

rulll
ILUHA:
  1. для больших полевиков: уменьшаем сопротивление (680Ом) у затворов П-канальников до 430 Ом или менее

У меня по 100 Ом стоят. лучше еще в 2 раза уменьшить. Так же резисторы последовательно с затвором желательно уменьшить до 10 Ом.

ILUHA
rulll:

У меня по 100 Ом стоят. лучше еще в 2 раза уменьшить. Так же резисторы последовательно с затвором желательно уменьшить до 10 Ом.

Спасибо! Попробую…

osnwt

Поскольку нынче модно делать регуляторы на разной элементной базе, решил попробовать и я 😉

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

Хотелось бы детально посмотреть, какие функции реально существуют. И как моделисты привыкли их программировать. Я бы и сам выбрал жертву для изучения, но вдруг это окажется не самый навороченный регулятор? 😜 А мне бы хотелось посмотреть, что из возможного необходимо заложить в схемотехнику.

ILUHA
osnwt:

Поскольку нынче модно делать регуляторы на разной элементной базе, решил попробовать и я 😉

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

Хотелось бы детально посмотреть, какие функции реально существуют. И как моделисты привыкли их программировать. Я бы и сам выбрал жертву для изучения, но вдруг это окажется не самый навороченный регулятор? 😜 А мне бы хотелось посмотреть, что из возможного необходимо заложить в схемотехнику.

Да вот вродерегулятор не плохой, никто не жалуется.

blakaraf

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

osnwt
ILUHA:

Да вот вроде регулятор не плохой, никто не жалуется.

За ссылку спасибо, но вопрос был не в том, каких функций минимально необходимо и достаточно, а что вообще бывает.

Например, я не увидел там функции ограничения тока двигателя (есть номинал регулятора, но если я хочу ограничиться меньшим током?). Не понятно, какое там управление оборотами: open loop или closed loop? В первом случае PWM duty cycle задается только сигналом канала газа, и при возрастании нагрузки (шага винта вертолета, например) обороты упадут. Во втором случае канал газа определяет именно обороты, которые будут поддерживаться постоянными независимо от нагрузки, автоматически компенсируя изменение шага винта увеличением PWM duty cycle.

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

blakaraf:

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

Все немного наоборот.

Язык ассемблера - это просто мнемонические названия машинных команд процессора, соответствие один к одному (одна мнемоника - один машинный код). На нем писать наиболее эффективно, если программист достаточно квалифицирован и знает особенности системы команд. Языки высокого уровня, в том числе, C не понимаются непосредственно процессором. Программа, написанная на них, переводится в машинные коды с помощью компиляторов. Эффективность перевода зависит от компилятора, а также от того, насколько программист, пишущий на нем, представляет, во что превратится его программа (или, другими словами, в какие примерно конструкции машинного языка превратятся операторы языка высокого уровня). Это не обязательно, но может существенно поднять эффективность перевода в отдельных случаях.

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

Если написать компилятор с языка C сможет сейчас любой студент соответствующей специальности (конечно, он будет примитивным, но работать сможет), то обратное преобразование однозначно невозможно. Если говорить о неоднозначном, то такую задачу решают очень и очень давно. Лет 20 назад, когда я учился в ВУЗе, сотрудники кафедры занимались анализом кода и попыткой перевести машианный код в конструкции языка высокого уровня (говорят, для анализа буржуйских, в частности, американских системных программ компьютеров или даже систем вооружений - популярная тема была в то время). Если такое достаточно просто получалось для программ, полученных компиляцией с того же языка (а компиляторы тогда были не слишком оптимизирующие), то для ассемблерных (как прошивка BB13) это почти невозможно. Во всяком случае, то, что получится, будет сложнее для понимания, чем хорошо прокомментированный оригинал на ассемблере.

Почему программа BB13 написана на ассемблере? Дело в том, что ATmega8 имеет недостаточно аппаратных ресурсов для качественной реализации управления двигателем. Безусловно, можно все написать через bit-banging (жонглирование битами портов) без всяких таймеров, PWM-модуляторов и т.п. периферии процессора при достаточной тактовой частоте процессора. Что частично и сделано в проекте на AT90S2313. Но намного удобнее писать с использованием аппаратуры. Например, не формировать PWM через определенные интервалы времени самому (вот где важна точность представления, во что превратится программа на С в то время, как время исполнения ассемблерных команд точно известно), а просто записать в соответствующий регистр микроконтроллера PWM duty cycle - одно число, - и получить на выходе тот же результат. Процессор при этом свободен и может заниматься задачами управления, а не черновой работой. Mega8 в этом плане куда больше начинена периферией, но у нее нет трех идентичных каналов PWM для управления полумостами. Есть более приспособленные для этого контроллеры. Например, в ATmega48/88/168, нужные каналы PWM уже имеются, плюс множество других вкусностей, например, для бездатчикового определения положения ротора, чего не хватает в ATmega8. Корпус такой же, цена, практически, такая же, есть средства аппаратной отладки по одному проводу, и др.

Мой вопрос в самом начале был связан с тем, что я хочу сделать регулятор с нуля, на несколько иной элементной базе, и с написанной с самого начала прошивкой. В силу наличия у той самой базы больше специализированных аппаратных возможностей код программы можно (и нужно) писать на C, так как там не будет критически важных участков, которые надо сделать во что бы то ни стало в считанные микросекунды. Ассемблер я очень люблю (и писал в своей жизни, наверное, диалектах на 10-12, если не больше, ассемблеров и мнемокодов, а ковырял и того больше). Но задачи управления удобнее писать на C, если есть ресурсы. При этом можно реализовать гораздо более точное управление с развитыми возможностями (скажем, возможность подстройки режима старта под конкретный двигатель, подстройки коэффициентов обратной связи для closed loop, и т п.), не боясь, что это помешает собственно коммутации фаз.

Получится с этой идеи что-то, или нет - я узнаю в обозримом будущем, как получу заказанные контроллеры, сделаю плату и займусь написанием прошивки. Затратная цена такого варианта будет, думаю, примерно на $1 больше. А плюсов при таком подходе (включая софт на C) будет куда больше.

ILUHA
osnwt:

Получится с этой идеи что-то, или нет - я узнаю в обозримом будущем, как получу заказанные контроллеры, сделаю плату и займусь написанием прошивки. Затратная цена такого варианта будет, думаю, примерно на $1 больше. А плюсов при таком подходе (включая софт на C) будет куда больше.

Будем ждать с нетерпением…

blakaraf

Уважаемый osnwt спасибо за отзыв.
Я задал этот вопрос пото му что во всех прошивках все что то
надо дописывать что то менять, а патом все это компилировать.
Все компиляторы что спустил с инета для этого дела понимают Си.
Единственный авезровский студио4 принимает и асемблер,
но при компиляции некоторых исходников ругается.
Складывается впечатление как будто в исходнике ошибки.
Я уже говорил что в программировании не силен можно сказать вообще дуб.
Но желание научится есть, так как элэктронщик по професии, может пригодится.
Набрал кучу программ, еще большую кучу описаний по програмированию и теперь перижовываю.
Присоединяюсь к ИЛЮХЕ.
Будем ждать с большим нетерпением.

osnwt
blakaraf:

Все компиляторы что спустил с инета для этого дела понимают Си.
Единственный авезровский студио4 принимает и асемблер,
но при компиляции некоторых исходников ругается.

  1. Программы-трансляторы с языка ассемблера, как правило, называют также - ассемблерами, а не компиляторами. Под компиляторами обычно понимают трансляторы с языков высого уровня (C, Pascal, Basic и др.).

  2. Ассемблеров для AVR гораздо больше, чем один (из AVR Studio). В состав AVR Studio входит avrasm от Atmel - производителя контроллеров. Есть еще ассемблер от IAR Systems, ассемблер с открытым исходным текстом gavr… Есть, вероятно, и другие. Мнемоники команд процессоров там одни и те же, но может отличаться способ записи текста (к примеру, кто-то требует двоеточие после метки, кто-то - нет) и набор псевдо-операторов управления трансляцией (макрокоманды, команды условной трансляции и управления листингом, и т.п.).

  3. Исходники для BB13 написаны под ассемблер avrasm. Но там активно используется условная трансляция (включение в состав программы определенных участков текста в зависимости от каких-то условий). Это псевдо-операторы ассемблера .if и др. Ранние версии avrasm не поддерживали условную трансляцию, и на указанные строчки вылетала куча ошибок. Рекомендую взять свежую версию AVR Studio 4 с atmel.com (распространяется бесплатно) и использовать avrasm2 версии 2.1.2 из ее состава. Он поддерживает всё, и с ним программа ассемблируется нормально.

blakaraf

Привет всем.
Поповоду прошивки Lak3P-315.asm
с программированым таймингом.
Кто знает как правильно программировать это дело,
ато мотор пиликает как ворабей.
Просьба, опишите пожалуйста.
Ато по ангглиски не очень.

Спасибо.

anm
blakaraf:

Привет всем.
Поповоду прошивки Lak3P-315.asm
с программированым таймингом.
Кто знает как правильно программировать это дело,
ато мотор пиликает как ворабей.

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