|
0 / 0 / 0
Регистрация: 27.03.2017
Сообщений: 8
|
|
Arduino nano в качестве блока зажигания27.03.2017, 15:49. Показов 24817. Ответов 18
Здравствуйте, уважаемые форумчане. Я впервые держу в руках ардуинку, представление о том что она умеет имею только самое начальное, но учитывая то, какой мк она несет на борту, сразу стало понятно что эта штуковина должна без проблем справиться с моей задачей (так как видел блоки зажигания на меге8, а тут у нас 328). В программировании я профан вообще (не более школьного курса по паскалю и немного vbasic) поэтому прошу пинать меня, но не сильно, и если кто-то поможет в реализации проекта, буду очень обязан вам.
Итак что нужно получить от ардуино: Двигатель внутреннего сгорания имеет момент зажигания, для того чтоб топливо успевало вовремя сгорать и эффективно отдавать энергию, момент зажигания должен быть заблаговременным, для этого есть понятие Угол Опережения Зажигания (далее просто УОЗ), дело в том что для нормальной работы двигателя нужно чтобы этот УОЗ изменялся в зависимости от оборотов коленвала. Устройство это должно работать по такому принципу: на коленвале стоит металлическая пластина с вырезанными секторами 60 градусов и 120 градусов металла При вращении коленвала с этой шторкой, металлический сектор шторки входит в датчик (например оптический) после этого ардуино должно начать считать время нахождения сектора в датчике до момента выхода сектора из датчика, и из полученных данных (время прохождения 120 градусов через датчик) посчитать обороты двигателя в данный момент. Далее исходя из этого значения применить задержку зажигания на то количество времени (или градусов поворота коленвала) которое соответствует данным оборотам. Таблицу зависимости УОЗ от оборотов можно посчитать в экселе чтоб этим не забивать "голову" ардуино, задача чтоб он лишь измерял данные обороты и выдавал в коммутатор зажигания сигнал разряда на катушке с нужным отставанием. То есть без этой штуки зажигание работает просто "сектор металла зашел в датчик ->сигнал передается на коммутатор, начался заряд катушки" , "сектор вышел из датчика -> сигнал на коммутатор прерывается, коммутатор разряжает катушку и происходит искра. Задача ардуино вклиниться между датчиком и коммутатором, чтоб управлять сигналом заряда и разряда катушки в зависимости от того какие обороты коленвала в данный момент (то есть динамически изменяющийся сигнал от датчика на коммутатор) Надеюсь понятно пояснил, прошу еще раз прощения я в программировании не шарю и буду признателен если кто-то научит как составить примерно программу для того что мне требуется от ардуино... Если это платно, то укажите сколько и кто сделает или научит как делать Добавлено через 7 минут Еще добавлю что изначально у нас уже имеется определенный угол опережения зажигания (он заранее стоит максимальный для максимальных оборотов двигателя, и именно его далее надо убавлять ардуинкой если обороты ниже максимальных)
0
|
|
| 27.03.2017, 15:49 | |
|
Ответы с готовыми решениями:
18
Arduino Nano
|
|
Модератор
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
|
|
| 27.03.2017, 20:53 | |
|
amator1, картинки загружайте сюда
0
|
|
|
365 / 348 / 74
Регистрация: 18.03.2015
Сообщений: 1,293
|
||||||
| 28.03.2017, 13:53 | ||||||
1
|
||||||
|
0 / 0 / 0
Регистрация: 27.03.2017
Сообщений: 8
|
|
| 28.03.2017, 22:13 [ТС] | |
|
Спасибо Вам, что отозвались на мою просьбу! Сейчас читаю Ваш код, и понимаю как я сильно сглупил, в самом корне задачи... задержку выключения катушки задать нужно определенным углом, а не временем, что было с моей головой когда я это писал... В общем нужно задать массив данных (зависимость "данные обороты - на сколько градусов раньше подать искру" допустим таких пар будет 11 (по 500 оборотов)
0
|
|
|
365 / 348 / 74
Регистрация: 18.03.2015
Сообщений: 1,293
|
|
| 29.03.2017, 11:48 | |
|
Если работать в градусах, необходимо дополнительное оборудование, которое будет проворачивать трамблер. Зачем это? Можно же посчитать время задержки (опережения). Допустим, один оборот происходит за 360 миллисекунд. Что бы изменить угол на 10 градусов, необходимо подать искру на 10 миллисекунд позже. Можно и раньше, но может возникнуть ошибка при резком изменении оборотов. Величину ошибки сами считайте. Мне лень.
1
|
|
|
0 / 0 / 0
Регистрация: 27.03.2017
Сообщений: 8
|
||||||
| 29.03.2017, 22:11 [ТС] | ||||||
|
хм, логично, Спасибо!
учитывая, что мотор двухтактный и весьма древний, там кратность измерений и подбора угла, вполне достаточно равной 500 оборотам в минуту (на меге 8 работало так и вполне не плохо пока я его не спалил случайно по своей глупости) и то шикарно по сравнению с фиксированным УОЗ Тогда получается надо задать зависимость как я понимаю, мк считает количество миллисекунд, за которые через датчик проходит шторка (120град). Например при 1000 об/мин получается что шторка 120град проходит за 20мс, Правильно ли я понимаю что нужно задавать условие в программу, что если шторка прошла через датчик за 20мс, то значит мы понимаем что это 1000 оборотов в минуту, значит нужно принять отставание в данном случае 4,528мс и таких условий надо составить как минимум 11 (от 500 до 5500 оборотов) Вроде рассчитал время необходимого отставания к данным оборотам Обороты Отставание 500 10.652 мс 1000 4.528 мс 1500 2.516 мс и так далее Как задать ему эти условия? Добавлено через 2 часа 17 минут Если я Вас правильно понял, то программа должна выглядеть примерно вот так, только вписать еще 10 оставшихся условий IF?
Как я понял, оператор time ведет отсчет в микросекундах, а переменная Pause в миллисекундах ?
0
|
||||||
|
365 / 348 / 74
Регистрация: 18.03.2015
Сообщений: 1,293
|
|||||||||
| 30.03.2017, 11:08 | |||||||||
|
time = micros(); отсчет в микросекундах delay(Pause); пауза в миллисекундах delayMicroseconds(Pause); пауза в микросекундах Строка Pause = 10.615; работать не будет. Переменная Pause целая, а не дробная. int Pause; delay() и delayMicroseconds() с дробными числами (числа с плавающей запятой) не работают. Т.е. вместо delay(10.615) используйте delayMicroseconds(10615) Скетч для таблицы
1
|
|||||||||
|
0 / 0 / 0
Регистрация: 27.03.2017
Сообщений: 8
|
|||
| 30.03.2017, 21:29 [ТС] | |||
в программе все не целые миллисекунды переведены уже в микросекунды, но только я сделал кучу IF ELSE, разве можно вводить несколько подряд IF не внедряя ELSE ? если условие IF не выполняется?Добавлено через 12 минут И еще хотел спросить, не нужно ли делать какой-то сброс для счетчика time ? или он после выполнения условий и перехода в луп сам сбросится? (Имею ввиду не будет ли переполнения?)
0
|
|||
|
365 / 348 / 74
Регистрация: 18.03.2015
Сообщений: 1,293
|
||||
| 31.03.2017, 08:33 | ||||
|
1
|
||||
|
0 / 0 / 0
Регистрация: 27.03.2017
Сообщений: 8
|
||
| 01.04.2017, 17:08 [ТС] | ||
|
0
|
||
|
365 / 348 / 74
Регистрация: 18.03.2015
Сообщений: 1,293
|
|
| 02.04.2017, 09:38 | |
|
50 суток с момента подачи питания.
Переменная time (строка 16) примет отрицательное значение, не выполнится ни одно условие (строки 17, 18, 19), переменная Pause не изменится. В следующие пол оборота коленвала все продолжится как обычно.
1
|
|
|
0 / 0 / 0
Регистрация: 27.03.2017
Сообщений: 8
|
|
| 03.04.2017, 15:38 [ТС] | |
|
Спасибо, теперь прояснилось, но тут в другом теперь вопрос, с повышением оборотов, время прохождения одного оборота например на 5000 и на 5500 отличается лишь микросекундами, то есть значение time нужно брать в micros, но насколько мне известно он обнуляется через 70 минут, то есть получится так что двигатель после 70 минут начнет работать с вероятными перебоями (если обнуление произойдет в момент подсчета оборота) или я снова не прав?
0
|
|
|
365 / 348 / 74
Регистрация: 18.03.2015
Сообщений: 1,293
|
|||
| 06.04.2017, 10:35 | |||
|
0
|
|||
|
0 / 0 / 0
Регистрация: 27.03.2017
Сообщений: 8
|
|
| 26.05.2017, 20:14 [ТС] | |
|
Доброго времени суток, прошу прощения что не заходил. Был в отъезде. В общем вернувшись домой, как раз пришла плата и компоненты к ней. Проверяю программу, не работает, пробовал уже переназначить вход с датчика на цифровой пин вместо аналогового (чтоб минимизировать наводки) но ничего не помогает, сплошные прострелы зажигания, мотоцикл заводится с трудом, и стреляет в глушители. Лопатил форумы, но ничего толкового так и не нашел...
Я решил для отладки прокинуть вместо выхода на катушку, пьезоизлучатель, чтоб имитировать искру и должен сказать что этот процесс очень не стабильно выдает импульсы. Три дня копаюсь в коде и в других кодах что делают люди для авто, но так и не придумал ничего...
0
|
|
|
365 / 348 / 74
Регистрация: 18.03.2015
Сообщений: 1,293
|
||||||||||||||
| 28.05.2017, 10:59 | ||||||||||||||
|
Напишите следующий код.
Смотрите значения при открытой и закрытой шторке. Чем больше разница, тем лучше. Если разница значений слишком маленькая, сложно будет найти середину. Мудрите с оптопарой. Найдите среднее значение для переменной Porog. Поставьте в код полученное значение. Следующим кодом проверьте стабильность работы оптического датчика.
Если Вы используете цифровой пин, воля Ваша. Главное, что бы переменная Status стабильно изменялась при открывании и закрывании шторки. И еще: Мой код не совсем правильно отрабатывал угол замкнутого состояния контактов (УЗСК). У меня получилось, что УЗСК 120 градусов. Я не знаю, сколько он должен быть для двухтактных двигателей. Думаю в пределах 50 – 60 градусов. Для жигулевского двигателя 55 градусов. Для этого необходимо знать, какое значение переменной Status при открытой (закрытой) шторке? Т.е. «в какую сторону» работает оптопара.
0
|
||||||||||||||
|
0 / 0 / 0
Регистрация: 28.11.2017
Сообщений: 1
|
|
| 28.11.2017, 15:47 | |
|
Хочу присоединится к теме.
а почему не сделать отдельное отверстие и дополнительный датчик холла в качестве (только датчика тахометра) ? p/s. нужен знающий человек который за денежку поможет сделать зажигание на базе АРдуин
0
|
|
|
|
||
| 28.11.2017, 16:00 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 03.01.2019
Сообщений: 1
|
|
| 03.01.2019, 18:00 | |
|
amator1, так что по итогу? получилось?
0
|
|
|
0 / 0 / 0
Регистрация: 05.11.2018
Сообщений: 3
|
|
| 15.02.2019, 09:32 | |
|
Тоже интересно, планирую сделать на оптопаре для Юпитера 5, если все таки возьмусь то отпишу о результате
0
|
|
| 15.02.2019, 09:32 | |
|
Помогаю со студенческими работами здесь
19
Проблемы с Arduino Nano Arduino Nano, GPS Arduino Nano+ Bluetooth HC-05 Кардиодатчик + Arduino Nano W5500 и arduino NANO Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|