Все началось с того, в процессе работы над созданием ФУОЗ на микроконтроллере для лодочного двигателя Ветерок был спроектирован некая совокупность программ, таблиц и прошивки, которые образовали ФУОЗ с параметрами:
1. Помехозащищенный алгоритм обработки сигналов датчиков зажигания. «Глотает» импульсные помехи длинной менее заданной!!! Может быть излишне строгий, но работающий алгоритм раскодировки сигналов входных датчиков по 4 ключевым моментам времени и по всем каналам сразу – «скользящее» окно сравнения. 2. Реализация двухкоординатной зависимости УОЗ – обороты и, например – ДПДЗ. 3. 32 узловые точки по координате «Обороты» с линейной интерполяцией между узлами. 4. До 32 кривых в семействе УОЗ(обороты, X), переключаемых по внешнему параметру X, например – от ДПДЗ . 5. Все параметры храняться в FLASH памяти контроллера. 6. Возможна адаптация как к TCI, так и к CDI. 7. Входные датчики – или ДХ или щелевые – способные сгенерировать метку известной длины М градусов. Метка должна завершаться за N (N <M) градусов до ВМТ. В таком случае система сможет обеспечить УОЗ в диапазоне N…(M-3) градусов. В режиме старта и до нижнего табличного значения искрообразование на N градусах. 8. Верхний диапазон частоты вращения ~ 10- 12 тыс. 1/мин (зависит от параметров п.1). 9. Программная часть состоит из прошивки (ассемблер) для Atmega 328P (готовые платформы Arduino из AliExpress - что бы не паять SMD, а просто впаять в плату как микруху ядро МК) и управляющей программы для ПК (Windows). Управляющая программа (с исходниками на Lazarus) одна на всех (зафиксированы общие флаги и система команд для обмена между прошивками и программой по UART).
Испытано в лаборатории на макете лодочного мотора Ветерок с реальным процессом искрообразования и одновременной работой программы на PC.
Проект пока не закрытый и не универсальный. На каждый двигатель приходится корректировать базовые константы прошивки. Сейчас есть адаптированные прошивки систем УОЗ (обороты, ДПДЗ) для Ветерка (лодочный 2 цилиндра с раздельным CDI зажиганием), двигателя МС-40 (лодочный, 2 цилиндра с одновременным TCI зажиганием), Просто одноцилиндровый двигатель (публикуется тут). Законченных принципиальных схем нет, поскольку это просто конструктор.
Однако нашелся смелый доброволец, который подогнал проект, не без помощи конечно, к своему 4Т мотику и испытал его. Огромную благодарность в этой связи с этим хочу выразить товарищу fcftdbx
Много слов и не о чем. Сделайте например реальный проект для 2т. Схема, что паять. Как программировать и т.д. и т.п. ... для папуасов. И!!! По шагового потом объясните, что это и что то, и для чего. Потом можно его обсуждать и ... чем он лучше Фуоз от Флэша?
Много слов и не о чем. Сделайте например реальный проект для 2т. Схема, что паять. Как программировать и т.д. и т.п. ... для папуасов. И!!! По шагового потом объясните, что это и что то, и для чего. Потом можно его обсуждать и ... чем он лучше Фуоз от Флэша?
А если нет у меня другого 2Т двигателя? На Ветер уже сделал и схему и прошивку. Жду, когда сломается стоковый механизм ОЗ, да и руки не сильно "чешутся" ломать работающую вещь, ведь Ямахи из него не получиться, да и вопрос с питанием не решен - не хочу аккумулятор ставить на мелкомотор.
И это реально один двигатель 2Т, который видел живьем в своей жизни.
Далее, не претендую на лучше или хуже, чем у других. Вот Флэш на 4МГц "вытягивают" контроль на высоких оборотах - это достойно уважения. У меня просто другой подход.
Видео на 4Т мопеде (даже не знаю что за мопед) сегодня снял человек. ФУОЗ работает. Вроде стабильно и не глохнет и газует легко и не чуть не хуже или лучше, чем на прошивке Флэша (по словам испытателя). Специально просил подержать ручку газа на ~2300 1/мин - обороты не бегают. Что еще надо? А между прочим, как я понял, он просто три провода от Ардуинки в один из вариантов схемы Флэша воткнул вместо Mega8. Входные датчики оказались такими же, к и в базовом проекте. До того с человеком прошел за 20 минут процесс адаптации (обучения) и все.. он сам дальше "топает".
В сервере размещено все от начального файла разметка на Excell (первый и тяжелый шаг) -> исходник main.asm -> компилятор С.bat -> прошивальщик для Arduino совместимой платформы W.bat (надо COM порт указать) -> самонастраивающаяся оболочка UOZ.exe, с помощью которой происходит работа с таблицами.
Код сложный, но открытый и читабельный. Насмешкой выглядит форматирование. Писал в AtmelStudio 7 - там все "пучком". В блокнотах и прочих табуляции как хотят, так и ставятся.
Комментариев много. Активно используются макросы и переопределения, что как мне кажется лучше чем "mov r29,r20" - вот и помни, где что лежит и как называется.
Да осознаю что инструкция нужна.... но сам не готов еще, потому, что не силен в нюансах 2Т и 4Т двигателях - не складывается универсальный алгоритм. Да и универсальных входных каскадов и выходных тяжко придумать. Пример входных цепей и выходных привел.
Размещая тему, готов пробовать обсуждать нюансы адаптации проекта под конкретный ДВС, а вот хватит ли времени на все на это - вот вопрос вопросов. Тут еще эта пандемия....
ВЫ хотя бы по пунктам коротко. 1. Загрузить это, сделать это 2. Загрузить это, сделать то. и т.д. ... 5. Запускаем мотор. Для непосвященных и не глубоко одаренных много непнятного. Ну потом и подтянутся и тестировщики. Зима долгая для Ветерка
Схемотехника входного каскада и выходного зависит от конструкции датчика и системы зажигания.
Основной исходный файл прошивки причесал в части формата отображения. Внес кучу информации в Главную разметочную таблицу. Ссылка на скачивания все проекта не поменялась.
Ну что мне Вам еще сделать? Не нравиться, ну тогда ослепляйте прерывания, которые к слову могут произойти и от помехи и тем самым ослепив сами себя, пропустите полезный сигнал.
Добавлено after 2 hours 42 minutes 44 seconds: Для madi044 по вопросу датчика.
В принципе как основа был датчик Холла. Для использования щелевого магнитного датчика или оптического есть два варианта.
Вариант 1. Схемотехнически преобразовать сигнал Вашего датчика к требуемой форме по моему описанию (приведено выше).
Вариант 2. Все как есть с простым преобразованием цифру до двух входных каналов и программу откорректировать. Точнее не откорректировать, а снова даунгрейтить с другого двухканального, двухцилиндрового проекта, например с Ветерка. Собственно так и появился проект для одноцилиндрового двигателя. Главная разметочная таблица и управляющая программа все равно одни на все проекты. ДВС отличаются для них только оборотами и таблицами УОЗ. Весь трэш приходится на прошивку (селектор Событий и т.д.). Универсальность сделать не могу иным путем, кроме как стандартизации входных и выходных линий.
С.Н., Здравствуйте, возможна ли адаптация к индуктивным датчикам... Догадываюсь, что если используется только перепад импульса на входе, то можно - изменив полярность перепада при программировании входа. Если же опрос идёт постоянно - то сразу так нельзя. Между импульсами метки надо делать триггер... ============= Пардон, уже ответили.. Спасибо.. Значит, схемотехника..
Компаратор 393 давно и прочно определился как промежуточное звено между индуктивным датчиком и контроллером. Отличия лишь во входных фильтрах, как правило.
С.Н., Хорошо, а более предметно.. Чтоб не влазить в основное тело программы: 1. В программе переназначаю вход МК на какую-нибудь переменную. 2. Дописываю подпрограмму получения этой переменной. 3. Для этой подпрограммы назначаю 2 дополнительных входа под датчики. 4 Подпрограмму оформляю в виде обработки прерывания. Такое возможно? Или надо лопатить весь код?
Добавлено after 5 minutes 39 seconds: Arwood, Ваши схемы видел, они на положительный сигнал с датчика... Как будем обрабатывать отрицательный сигнал... Конвертор питания очень не хочется делать.. Если есть какие-то схемы с этим требованием, если не трудно, выложите. Вроде догадался - оптроны на входе компарера... Отбой... ============ ПС И компаратор перевести в режим триггера, пришёл один сигнал - триггер взвёлся, другой - сбросился..Либо после компаратора NE555, с предустановкой в "1", правда, если заводка будет, когда между метками, первый оборот будет пропущен, но это вероятность у меня 4%-длина метки 15 град.. Ясно...
Последний раз редактировалось madi044 Вт ноя 03, 2020 20:04:05, всего редактировалось 2 раз(а).
Ну что мне Вам еще сделать? Не нравиться, ну тогда ослепляйте прерывания, которые к слову могут произойти и от помехи и тем самым ослепив сами себя, пропустите полезный сигнал.
Вы сами поняли, что вы написали? Проект от Флэша тестил на Ардуино. И так и сяк. Ардуино мощнее Атмеги8. И как вы писали, не надо паять "основу". И можно проще программировать, без программатора. Тестил два Ардуино. Один стер, второй как Ардуино. И можно легче было конструировать - Мозг - навоторы-силовая часть. Но так все это и осталось лежать к коробочке. Пока .... А ваше, даже "умные" не могут понять, от чего начать плясать... И что в нем (в проекте) такого интересного... Пппц
С.Н., Не совсем понятна полярность сигнала в щелевых датчиках... На месте метки - вырез пластины или наоборот - пластина? Другими словами - метка формирует "0" или "1"?
asel .Проект нормальный и он работает и связь с пк стабильная.
Возможно. Пока занимаюсь механикой и ... теорией-подготовкой. От вас и от него. Хотелось бы простых тупых пошапговых инструкций и действий. Не хочется сушить мозг.(Зимой может и посушим). Даже "кырым" не может понять простых вещей 1. может вы сможете объяснить , что там у Била Гейтса, раз вы уже его запустили. 2. Что там такого интересного? Нового. 3. Что там за датчик ДЗ. А если его нет и быть не может? 4. Что значит связь с ПК? Связь с ПК, как таковая , меня не интересует. Интересует вывод Графика на телефон в динамике. Сто раз объяснял зачем. Чтобы увидеть график и потом увидеть изменения в УОЗ при подключении МАР-сенсора. Потому как они разные, врезка разная и т.п. и т.д. Т.е. УОЗ от МАР сенсор нельзя высчитать математически. А только реальности. А потом уже коретировать график при работе с МАР сенсором. РС.А сейчас футбол Шахтер-Боруссия
Оппаньки , а что, отсчёт ведётся от начального угла до ВМТ? Тогда точно надо переходить на оптику, у меня выступ в районе 15-30 градусов. Махинации с преобразованием сигналов не катят... Либо оптика, либо лопатить весь код.. Ни то, ни другое мне не подходят. Жаль... Посмотрю алгоритм ДПДЗ, в этом польза.
1. В программе переназначаю вход МК на какую-нибудь переменную. 2. Дописываю подпрограмму получения этой переменной. 3. Для этой подпрограммы назначаю 2 дополнительных входа под датчики. 4 Подпрограмму оформляю в виде обработки прерывания. Такое возможно? Или надо лопатить весь код?
В программе нет такой переменной. Есть сдвиговая цепочка, биты которой заполняются алгоритмом защиты при случайном или преднамеренном изменении входной линии. Если в конце процедуры защиты определили, что это новое значение, в другой переменной Events происходит сдвиг другой цепочки 4 бита- динамика линии во времени. По динамике решаем что сейчас произошло.
Если нужен контроль двух датчиков в таком же ключе, надо добавлять и сдвиговую цепочку и расширять селектр Событий Events. Обычно у меня он 8 разрядный - по 4 бита на линию.
АЦП у меня усредняется.
Если речь идет о вспомогательных датчиках, вполне можно в основном цикле устроить их опрос и организовать реакцию системы на них.
У меня два процесса - основной цикл: АЦП, UART -бесправные процессы, их может прервать в любое время основная часть программы, которая вся сделана на прерываниях. В основной цикл лепите что хотите, но не использовать определенные регистры и не запрещать прерывания.
С.Н., Не совсем понятна полярность сигнала в щелевых датчиках... На месте метки - вырез пластины или наоборот - пластина? Другими словами - метка формирует "0" или "1"?
А вот тут я видать не смогу коорректно комментировать. Я имел ввиду щелевой индукционный датчик. Опять таки видел один, которые дает два импульса - положительный и отрицательный. Крутые фронты и медленный спад. Их и ловил оптопарами. Флэш также по моему делал.
Ну что мне Вам еще сделать? Не нравиться, ну тогда ослепляйте прерывания, которые к слову могут произойти и от помехи и тем самым ослепив сами себя, пропустите полезный сигнал.
Вы сами поняли, что вы написали? Проект от Флэша тестил на Ардуино. И так и сяк. Ардуино мощнее Атмеги8. И как вы писали, не надо паять "основу". И можно проще программировать, без программатора. Тестил два Ардуино. Один стер, второй как Ардуино. И можно легче было конструировать - Мозг - навоторы-силовая часть. Но так все это и осталось лежать к коробочке. Пока .... А ваше, даже "умные" не могут понять, от чего начать плясать... И что в нем (в проекте) такого интересного... Пппц
Во первых, эти грабли я уже проходил.
Во вторых процессоры Atmega8 в целом не слабее Atmega328p. У него памяти меньше и все. Говорят, что даже цоколевка одинаковая (не проверял). То, что вы все 4Мгц кварц на него ставите - это Ваше проблема.
В третьих, правда до конца еще сам себя не убедил, но в моем проекте главная особенность - возможность повторения человеком, который в программировании не шарит. Читайте описание и выполняйте шаг за шагом. Не надо специальных программных средств.
[/uquote 3. Что там за датчик ДЗ. А если его нет и быть не может? 4. Что значит связь с ПК? Связь с ПК, как таковая , меня не интересует. Интересует вывод Графика на телефон в динамике. Сто раз объяснял зачем. Чтобы увидеть график и потом увидеть изменения в УОЗ при подключении МАР-сенсора. Потому как они разные, врезка разная и т.п. и т.д. Т.е. УОЗ от МАР сенсор нельзя высчитать математически. А только реальности.
3. Это на 4Т этого нету. НА 2Т - есть. На 4Т предложите другой параметр и им будет изменение давления. Дайте ТТХ на сигнал датчика и получите замену ДПДЗ. 4. А что Вы там на телефоне увидите на улице вне лаборатории и управляя мотоциклом? Так,что я считаю, что связь с ПК нужна только на стенде. Ну или такую систему телеметрии надо создавать, не каждый НИИ справится.
.. процессоры Atmega8 в целом не слабее Atmega328p. У него памяти меньше и все. ....
Весьма ценное замечание. Жаль, что ваш проект абсолютно несовместим с индуктивными датчиками. Будем с Флешем допиливать его программу. Я там показал ему некоторые упрощения - согласился..Не судьба...
.. процессоры Atmega8 в целом не слабее Atmega328p. У него памяти меньше и все. ....
Весьма ценное замечание. Жаль, что ваш проект абсолютно несовместим с индуктивными датчиками. Будем с Флешем допиливать его программу. Я там показал ему некоторые упрощения - согласился..Не судьба...
Вам схему нарисовать перехода? Две отпопары, RS тригер - все. Положительные входной импульс устанавливает тригер, отрицательный сбрасывает. Можно по крайней мере попробовать.
Одна проблема - лишняя схема не очень хорошо в условиях помех. Я могу сегодня сделать двухвходовый вариант. Один вход для первого положительного импульса датчика, второй для второго отрицательного. У меня же есть проект для 2Т двигателя с таким датчиком и одним выходным импульсом - одновременно в два "горшка" искра идет. Это ни чем не отличается от Вашего варианта. Надо?
...Насмешкой выглядит форматирование. Писал в AtmelStudio 7 - там все "пучком". В блокнотах и прочих табуляции как хотят, так и ставятся. ..
В блокноте шрифт не моноширинный, пропорциональный, косые черты сжимает, например. А также количество пробелов в табуляции настраивается.В Нотепаде++ по умолчанию 4 пробела на табуляцию..
...Насмешкой выглядит форматирование. Писал в AtmelStudio 7 - там все "пучком". В блокнотах и прочих табуляции как хотят, так и ставятся. ..
В блокноте шрифт не моноширинный, пропорциональный, косые черты сжимает, например. А также количество пробелов в табуляции настраивается.В Нотепаде++ по умолчанию 4 пробела на табуляцию..
Мне кстати редактор, встроенный в Far нравиться. Он правда настроен на ассемблер Intel.... Ну в целом хорошо
Нет, видимо, я плохо обрисовал суть проблемы...У меня метка (выступ на колоколе)начинается за 30 градусов до ВМТ и заканчивается на 15 градусах до ВМТ. Ваш ФУОЗ формирует искру в пределах метки. Когда-то, лет 8 назад, на своём мопеде 72 см3 я поменял коммутатор на аналоговый ФУОЗ с питанием от 12В, т.е. с преобразователем (как у Флеша в посту 1). Стало гораздо лучше, но хотелось получше.. Вот и набрёл на ветку Флеша. Для того, чтобы поставить ваш ФУОЗ, нужно или пилить выступ, или ставить диск, или колхозить колокол. В запасниках у меня лежит более мощный генератор, осталось докупить колокол. Я сторонник минимальных переделок, хотя на заводе могут на станках сделать все детали. Поэтому, без переделок ваш ФУОЗ на мой мопед не встанет - смотрел код - там много надо переделывать - не имеет смысла. А по поводу схемы, спасибо, я сам могу и нарисовать, и рассчитать и спаять.. Я только начинающий в программировании (стаж 2 месяца) - для меня затруднительно было читать ваш код (не критика, просто моё субъективное мнение). Смотришь на слово и догадываешься, либо это ключевое слово (а там может, или название регистра или дефайн из инклуда), а может и название регистра или ячейка памяти... Особенно, когда по 12 символов.. Поиском ищешь совпадения..Если бы были какие-то символы принадлежности в именах - читалось бы легче.. Макросы в 1 строку? Ну, ладно, просто отлаживать легче было. Работает, да и ладно.. Наверно, у меня требования завышенные...
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения