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

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
с программированым таймингом.
Кто знает как правильно программировать это дело,
ато мотор пиликает как ворабей.

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

13 days later
blakaraf

Добрый вечер ВСЕМ.
Достал наконецтоки Attiny2313 и собрал на ней коитроллер,
Так как AT90s2313 сняли с производства и в продаже их у нас нет.
Проблема в прошивке.
Кто занимался с этой версией, как переделать прошывку для АТТини2313.
На сайте у Конзе об этом говорится но я в программировании не очень.
Если у кого нибудь есть рабочая прошивка для АТТини,
большая просьба, пожалуйста поделитесь.

blaknik@mail.ru

😃 Разобрался в чем дело.
Научился компилить в АВЕЕРЕ эту Attiny ивсе заработало, я даволен.
Далее буду пробовать МЕГУ8.

Всем кто откликнулись и помогли СПАСИБО.
Ну а те кто нет тоже…

😃 Да забыл отметить,
перемотанный мотор от сидюка винт ЕР-9060 батарея 3 липешки тяга 370г, крутит 9,45 мин.

nokia27

а кто нибудь пробовал регулятор делать на готовых микросхемах драйверах бесколлекторников, типа ML4425,4426,4428

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

ну и что на Р-канальных сделана силовая часть, а так наверно должен нормально работать

ML4425 продается в чип-дипе, хочу попробовать

ML4425.rarML4428.rarML4426.rar

Alex_belogor

Доброго и с наилучшими!
Ув. nokia27!
Пробовали! Путь заблудшего отступника. Ответ не очень положительный, даже больше отрицательный!!! 😦
В ЧИП-ДИП она стоит около 250р, за такие бабки можно два АТ90S2313 купить (у нас в продаже по 100руб недели 2 назад приобретал) и сваять два типа “Сороченко 4428”, и самое главное, там в схемном решении где ключи по идее должны подключаться к минысу, обратите внимание на 2х Ваттный резистор 470 мОм, вот в нем то самая большая проблема, Без него эта байда работать не будет, обратная связь однако. Хотя если особо не требовать тагово-маршевые характеристики, а лишь бы крутился, да ещё поставитть вместо переменного резистора скорости транзистор (оптопапра и т.д.), и прилепить к нему регулятор скорости коллектороного мотора и его ШИМом управлять сопротивлением p-n перехода и скорость можно регулировать передатчиком.
Уже пройденный этап. Не заморачивайтесь, сваяйте сразу как минимум Сороченко или подобное и больше не думайте.
Удачи!!

7 days later
anm

Проверял на днях контроллер на плате Сороченко 4428 с прошивкой 3.07_2 с перемотанным мотором. Работает замечательно. Мотор держал в руках и заметел одну особенность. При оборотах близких к максимальным наблюдается не большой рывок, после этого меняется звук от мотора.

10 days later
valera_o

Отцы-демократы, скажите, пожалуста, какие мин. обороты у неперемотанного сд движка с этим контроллером и какие мах.? Если нетрудно.

10 days later
graham

На руках mega8-16ai и 90s2313-10pi. Прочитал все на этом форуме, подскажиет какие лучше собрать регуляторы на этих МК и какие прошивки взять? Некоторые схемы, например вот эта
ни в Eagle ни в Pcad открыть не погучается, это только у меня или там действительно мусор?

graham
osnwt:

Eagle 4.16 открывает эту схему.

Спасибо, буду качать новою версию.

anm
anm:

Проверял на днях контроллер на плате Сороченко 4428 с прошивкой 3.07_2 с перемотанным мотором. Работает замечательно.

Проверил еще один вариант платы с прошивкой 3.07_2, все работает.
В архиве плата и 2 прошивки с токовой защитой и без.
blmc.rar

graham

а кто-нибудь понял зачем идет сигнал на AIN0, который в .inс файлах пределяется как c_comp? Что-то я в программе его использования не нашел, перечитал доки которые есть по управлению брашлессами, вроде достаточно только следить за переходом ЭДС через 0, тогда зачем этот общий сигнал?

rulll
graham:

а кто-нибудь понял зачем идет сигнал на AIN0, который в .inс файлах пределяется как c_comp? Что-то я в программе его использования не нашел, перечитал доки которые есть по управлению брашлессами, вроде достаточно только следить за переходом ЭДС через 0, тогда зачем этот общий сигнал?

Это вход опорного напряжения компаратора. Собственно с этим напряжением и сравнивается ЭДС наводимая в обмотке БК. Полезно этот вход блокировать емкостью 0,1мкФ.

На этом сайте есть статья о БК. Там расписано.

graham
rulll:

Это вход опорного напряжения компаратора. Собственно с этим напряжением и сравнивается ЭДС наводимая в обмотке БК. Полезно этот вход блокировать емкостью 0,1мкФ.

На этом сайте есть статья о БК. Там расписано.

Читал эту статью в прошлом году 😦 забылось все…
А что значит блокировать? Последовательно подключить или между землей и входом?

rulll
graham:

А что значит блокировать? Последовательно подключить или между землей и входом?

между землей и входом