Обсуждаем электронику на колесах. Нужен увлажнитель воздуха для Камаза? Вам сюда.
Ответить

Конструктор ФУОЗ для одноцилиндрового двигателя

Вс ноя 01, 2020 19:35:40

После первых испытаний решил опубликовать отдельной темой свой проект.

«ФУОЗ одноцилиндрового двигателя» - https://yadi.sk/d/kNWy1ZMb03c2tg

Все началось с того, в процессе работы над созданием ФУОЗ на микроконтроллере для лодочного двигателя Ветерок был спроектирован некая совокупность программ, таблиц и прошивки, которые образовали ФУОЗ с параметрами:

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

В общем - 1000 слов не заменят одного видео. Все видео тут –
https://www.youtube.com/channel/UCGCiF0 ... 2dZJV_dDXA

Сразу оговорюсь – все эксперименты на Ваш страх и риск!!!

Re: Конструктор ФУОЗ для одногоцилиндрового двигателя

Вс ноя 01, 2020 20:17:56

Много слов и не о чем.
Сделайте например реальный проект для 2т.
Схема, что паять. Как программировать и т.д. и т.п. ... для папуасов.
И!!! По шагового потом объясните, что это и что то, и для чего.
Потом можно его обсуждать и ... чем он лучше Фуоз от Флэша?

Re: Конструктор ФУОЗ для одногоцилиндрового двигателя

Вс ноя 01, 2020 21:58:10

Много слов и не о чем.
Сделайте например реальный проект для 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Т двигателях - не складывается универсальный алгоритм. Да и универсальных входных каскадов и выходных тяжко придумать. Пример входных цепей и выходных привел.

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

Re: Конструктор ФУОЗ для одногоцилиндрового двигателя

Пн ноя 02, 2020 17:30:33

ВЫ хотя бы по пунктам коротко.
1. Загрузить это, сделать это
2. Загрузить это, сделать то.
и т.д.
...
5. Запускаем мотор.
Для непосвященных и не глубоко одаренных много непнятного.
Ну потом и подтянутся и тестировщики. Зима долгая для Ветерка :))

Re: Конструктор ФУОЗ для одногоцилиндрового двигателя

Вт ноя 03, 2020 18:06:42

Вот Вам подробная инструкция по ядру системы.

https://yadi.sk/i/4568fKjoXIW0-g

Схемотехника входного каскада и выходного зависит от конструкции датчика и системы зажигания.

Основной исходный файл прошивки причесал в части формата отображения.
Внес кучу информации в Главную разметочную таблицу.
Ссылка на скачивания все проекта не поменялась.

Ну что мне Вам еще сделать? Не нравиться, ну тогда ослепляйте прерывания, которые к слову могут произойти и от помехи и тем самым ослепив сами себя, пропустите полезный сигнал.

Добавлено after 2 hours 42 minutes 44 seconds:
Для madi044 по вопросу датчика.

В принципе как основа был датчик Холла. Для использования щелевого магнитного датчика или оптического есть два варианта.

Вариант 1. Схемотехнически преобразовать сигнал Вашего датчика к требуемой форме по моему описанию (приведено выше).

Вариант 2. Все как есть с простым преобразованием цифру до двух входных каналов и программу откорректировать.
Точнее не откорректировать, а снова даунгрейтить с другого двухканального, двухцилиндрового проекта, например с Ветерка. Собственно так и появился проект для одноцилиндрового двигателя. Главная разметочная таблица и управляющая программа все равно одни на все проекты. ДВС отличаются для них только оборотами и таблицами УОЗ. Весь трэш приходится на прошивку (селектор Событий и т.д.). Универсальность сделать не могу иным путем, кроме как стандартизации входных и выходных линий.

Мне кажется Вариант 1 проще....

Re: Конструктор ФУОЗ для одногоцилиндрового двигателя

Вт ноя 03, 2020 19:08:38

С.Н., Здравствуйте, возможна ли адаптация к индуктивным датчикам... Догадываюсь, что если используется только перепад импульса на входе, то можно - изменив полярность перепада при программировании входа. Если же опрос идёт постоянно - то сразу так нельзя. Между импульсами метки надо делать триггер...
=============
Пардон, уже ответили.. Спасибо.. Значит, схемотехника..

Re: Конструктор ФУОЗ для одногоцилиндрового двигателя

Вт ноя 03, 2020 19:16:23

Компаратор 393 давно и прочно определился как промежуточное звено между индуктивным датчиком и контроллером.
Отличия лишь во входных фильтрах, как правило.

Re: Конструктор ФУОЗ для одногоцилиндрового двигателя

Вт ноя 03, 2020 19:29:18

С.Н., Хорошо, а более предметно.. Чтоб не влазить в основное тело программы:
1. В программе переназначаю вход МК на какую-нибудь переменную.
2. Дописываю подпрограмму получения этой переменной.
3. Для этой подпрограммы назначаю 2 дополнительных входа под датчики.
4 Подпрограмму оформляю в виде обработки прерывания.
Такое возможно? Или надо лопатить весь код?

Добавлено after 5 minutes 39 seconds:
Arwood, Ваши схемы видел, они на положительный сигнал с датчика... Как будем обрабатывать отрицательный сигнал... Конвертор питания очень не хочется делать.. Если есть какие-то схемы с этим требованием, если не трудно, выложите. Вроде догадался - оптроны на входе компарера... Отбой...
============
ПС И компаратор перевести в режим триггера, пришёл один сигнал - триггер взвёлся, другой - сбросился..Либо после компаратора NE555, с предустановкой в "1", правда, если заводка будет, когда между метками, первый оборот будет пропущен, но это вероятность у меня 4%-длина метки 15 град.. Ясно...
Последний раз редактировалось madi044 Вт ноя 03, 2020 20:04:05, всего редактировалось 2 раз(а).

Re: Конструктор ФУОЗ для одногоцилиндрового двигателя

Вт ноя 03, 2020 19:32:13

Ну что мне Вам еще сделать? Не нравиться, ну тогда ослепляйте прерывания, которые к слову могут произойти и от помехи и тем самым ослепив сами себя, пропустите полезный сигнал.

Вы сами поняли, что вы написали? :shock:
Проект от Флэша тестил на Ардуино. И так и сяк. Ардуино мощнее Атмеги8. И как вы писали, не надо паять "основу". И можно проще программировать, без программатора. Тестил два Ардуино. Один стер, второй как Ардуино. И можно легче было конструировать - Мозг - навоторы-силовая часть. Но так все это и осталось лежать к коробочке. Пока ....
А ваше, даже "умные" не могут понять, от чего начать плясать... И что в нем (в проекте) такого интересного...
Пппц

Re: Конструктор ФУОЗ для одногоцилиндрового двигателя

Вт ноя 03, 2020 19:41:45

asel .Проект нормальный и он работает и связь с пк стабильная.

Re: Конструктор ФУОЗ для одногоцилиндрового двигателя

Вт ноя 03, 2020 20:13:25

С.Н., Не совсем понятна полярность сигнала в щелевых датчиках... На месте метки - вырез пластины или наоборот - пластина? Другими словами - метка формирует "0" или "1"?

Re: Конструктор ФУОЗ для одногоцилиндрового двигателя

Вт ноя 03, 2020 20:27:40

madi044,30 градусов лог 0,а 330 градусов лог 1.

Re: Конструктор ФУОЗ для одногоцилиндрового двигателя

Вт ноя 03, 2020 20:49:50

asel .Проект нормальный и он работает и связь с пк стабильная.

Возможно.
Пока занимаюсь механикой и ... теорией-подготовкой.
От вас и от него. Хотелось бы простых тупых пошапговых инструкций и действий. Не хочется сушить мозг.(Зимой может и посушим).
Даже "кырым" не может понять простых вещей :))
1. может вы сможете объяснить , что там у Била Гейтса, раз вы уже его запустили.
2. Что там такого интересного? Нового.
3. Что там за датчик ДЗ. А если его нет и быть не может?
4. Что значит связь с ПК? Связь с ПК, как таковая , меня не интересует. Интересует вывод Графика на телефон в динамике. Сто раз объяснял зачем. Чтобы увидеть график и потом увидеть изменения в УОЗ при подключении МАР-сенсора. Потому как они разные, врезка разная и т.п. и т.д. Т.е. УОЗ от МАР сенсор нельзя высчитать математически. А только реальности. А потом уже коретировать график при работе с МАР сенсором.
РС.А сейчас футбол Шахтер-Боруссия :))

Re: Конструктор ФУОЗ для одногоцилиндрового двигателя

Вт ноя 03, 2020 21:17:04

madi044,30 градусов лог 0,а 330 градусов лог 1.

Оппаньки :shock: , а что, отсчёт ведётся от начального угла до ВМТ? Тогда точно надо переходить на оптику, у меня выступ в районе 15-30 градусов. Махинации с преобразованием сигналов не катят... Либо оптика, либо лопатить весь код.. Ни то, ни другое мне не подходят. Жаль... Посмотрю алгоритм ДПДЗ, в этом польза.

Re: Конструктор ФУОЗ для одногоцилиндрового двигателя

Вт ноя 03, 2020 22:33:43

1. В программе переназначаю вход МК на какую-нибудь переменную.
2. Дописываю подпрограмму получения этой переменной.
3. Для этой подпрограммы назначаю 2 дополнительных входа под датчики.
4 Подпрограмму оформляю в виде обработки прерывания.
Такое возможно? Или надо лопатить весь код?


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

Если нужен контроль двух датчиков в таком же ключе, надо добавлять и сдвиговую цепочку и расширять селектр Событий Events. Обычно у меня он 8 разрядный - по 4 бита на линию.

АЦП у меня усредняется.

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

У меня два процесса - основной цикл: АЦП, UART -бесправные процессы, их может прервать в любое время основная часть программы, которая вся сделана на прерываниях. В основной цикл лепите что хотите, но не использовать определенные регистры и не запрещать прерывания.

Добавлено after 5 minutes 32 seconds:
С.Н., Не совсем понятна полярность сигнала в щелевых датчиках... На месте метки - вырез пластины или наоборот - пластина? Другими словами - метка формирует "0" или "1"?


А вот тут я видать не смогу коорректно комментировать. Я имел ввиду щелевой индукционный датчик. Опять таки видел один, которые дает два импульса - положительный и отрицательный. Крутые фронты и медленный спад. Их и ловил оптопарами. Флэш также по моему делал.

Добавлено after 13 minutes 14 seconds:
Ну что мне Вам еще сделать? Не нравиться, ну тогда ослепляйте прерывания, которые к слову могут произойти и от помехи и тем самым ослепив сами себя, пропустите полезный сигнал.

Вы сами поняли, что вы написали? :shock:
Проект от Флэша тестил на Ардуино. И так и сяк. Ардуино мощнее Атмеги8. И как вы писали, не надо паять "основу". И можно проще программировать, без программатора. Тестил два Ардуино. Один стер, второй как Ардуино. И можно легче было конструировать - Мозг - навоторы-силовая часть. Но так все это и осталось лежать к коробочке. Пока ....
А ваше, даже "умные" не могут понять, от чего начать плясать... И что в нем (в проекте) такого интересного...
Пппц


Во первых, эти грабли я уже проходил.

Во вторых процессоры Atmega8 в целом не слабее Atmega328p. У него памяти меньше и все. Говорят, что даже цоколевка одинаковая (не проверял).
То, что вы все 4Мгц кварц на него ставите - это Ваше проблема.

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

Добавлено after 12 minutes 20 seconds:
[/uquote
3. Что там за датчик ДЗ. А если его нет и быть не может?
4. Что значит связь с ПК? Связь с ПК, как таковая , меня не интересует. Интересует вывод Графика на телефон в динамике. Сто раз объяснял зачем. Чтобы увидеть график и потом увидеть изменения в УОЗ при подключении МАР-сенсора. Потому как они разные, врезка разная и т.п. и т.д. Т.е. УОЗ от МАР сенсор нельзя высчитать математически. А только реальности. :))


3. Это на 4Т этого нету. НА 2Т - есть. На 4Т предложите другой параметр и им будет изменение давления. Дайте ТТХ на сигнал датчика и получите замену ДПДЗ.
4. А что Вы там на телефоне увидите на улице вне лаборатории и управляя мотоциклом? Так,что я считаю, что связь с ПК нужна только на стенде. Ну или такую систему телеметрии надо создавать, не каждый НИИ справится.

Re: Конструктор ФУОЗ для одногоцилиндрового двигателя

Вт ноя 03, 2020 22:58:19

.. процессоры Atmega8 в целом не слабее Atmega328p. У него памяти меньше и все. ....
Весьма ценное замечание. Жаль, что ваш проект абсолютно несовместим с индуктивными датчиками. Будем с Флешем допиливать его программу. Я там показал ему некоторые упрощения - согласился..Не судьба... :(

Re: Конструктор ФУОЗ для одногоцилиндрового двигателя

Ср ноя 04, 2020 08:11:13

.. процессоры Atmega8 в целом не слабее Atmega328p. У него памяти меньше и все. ....
Весьма ценное замечание. Жаль, что ваш проект абсолютно несовместим с индуктивными датчиками. Будем с Флешем допиливать его программу. Я там показал ему некоторые упрощения - согласился..Не судьба... :(


Вам схему нарисовать перехода?
Две отпопары, RS тригер - все. Положительные входной импульс устанавливает тригер, отрицательный сбрасывает. Можно по крайней мере попробовать.

Одна проблема - лишняя схема не очень хорошо в условиях помех. Я могу сегодня сделать двухвходовый вариант. Один вход для первого положительного импульса датчика, второй для второго отрицательного. У меня же есть проект для 2Т двигателя с таким датчиком и одним выходным импульсом - одновременно в два "горшка" искра идет. Это ни чем не отличается от Вашего варианта. Надо?

Re: Конструктор ФУОЗ для одногоцилиндрового двигателя

Ср ноя 04, 2020 09:30:25

...Насмешкой выглядит форматирование. Писал в AtmelStudio 7 - там все "пучком". В блокнотах и прочих табуляции как хотят, так и ставятся. ..
В блокноте шрифт не моноширинный, пропорциональный, косые черты сжимает, например. А также количество пробелов в табуляции настраивается.В Нотепаде++ по умолчанию 4 пробела на табуляцию..

Re: Конструктор ФУОЗ для одногоцилиндрового двигателя

Ср ноя 04, 2020 09:59:48

...Насмешкой выглядит форматирование. Писал в AtmelStudio 7 - там все "пучком". В блокнотах и прочих табуляции как хотят, так и ставятся. ..
В блокноте шрифт не моноширинный, пропорциональный, косые черты сжимает, например. А также количество пробелов в табуляции настраивается.В Нотепаде++ по умолчанию 4 пробела на табуляцию..

Мне кстати редактор, встроенный в Far нравиться. Он правда настроен на ассемблер Intel.... Ну в целом хорошо

Re: Конструктор ФУОЗ для одногоцилиндрового двигателя

Ср ноя 04, 2020 10:01:13

...Две отпопары, RS тригер - все.
Нет, видимо, я плохо обрисовал суть проблемы...У меня метка (выступ на колоколе)начинается за 30 градусов до ВМТ и заканчивается на 15 градусах до ВМТ. Ваш ФУОЗ формирует искру в пределах метки. Когда-то, лет 8 назад, на своём мопеде 72 см3 я поменял коммутатор на аналоговый ФУОЗ с питанием от 12В, т.е. с преобразователем (как у Флеша в посту 1). Стало гораздо лучше, но хотелось получше.. Вот и набрёл на ветку Флеша.
Для того, чтобы поставить ваш ФУОЗ, нужно или пилить выступ, или ставить диск, или колхозить колокол. В запасниках у меня лежит более мощный генератор, осталось докупить колокол. Я сторонник минимальных переделок, хотя на заводе могут на станках сделать все детали. Поэтому, без переделок ваш ФУОЗ на мой мопед не встанет - смотрел код - там много надо переделывать - не имеет смысла.
А по поводу схемы, спасибо, я сам могу и нарисовать, и рассчитать и спаять.. Я только начинающий в программировании (стаж 2 месяца) - для меня затруднительно было читать ваш код (не критика, просто моё субъективное мнение). Смотришь на слово и догадываешься, либо это ключевое слово (а там может, или название регистра или дефайн из инклуда), а может и название регистра или ячейка памяти... Особенно, когда по 12 символов.. Поиском ищешь совпадения..Если бы были какие-то символы принадлежности в именах - читалось бы легче.. Макросы в 1 строку? Ну, ладно, просто отлаживать легче было. Работает, да и ладно.. Наверно, у меня требования завышенные...
Ответить