вот присел (((.
Как писал простое решение не сложной задачи - поддержка холостого хода .
Эбу Микры обладает неплохой математикой и алгоритмом поддержки оборотов х.хода.
Там можно задать условия и используя ШИМ модуляцию для управления клапаном - принято еще называть PWM Closed Loop idle valve.
Принцип простой и применяется даже там где требуется очень точная регулировка - к примеру в дизелях регулировка давления топлива в топливной рее.
Это двух проводной соленоид который не просто хлопает открыто закрыто, а из-за шим модуляции сердечник открывает канал клапана но держит сечение таким какой нужно системе управления.
Вот я решил использовать это но без применения клапана .
Серва газа управляется у нас через передатчик управления.
С приемника идет подобный же шим как и шим с эбу на клапан холостого хода, возможно его параметры будут отличаться от сигнала серво ( а так и будет) . Так вот задача на ардуино сделать микшер двух сигналов - с приемника и с эбу.
Причем пока я не дам команду закрыть заслонку микшер не должен воспринимать потуги ЭБУ микры на регулировки х.хода ( там все под авто и некоторые моменты нам не то что ненужны а вредны - типа режим торможения двигателем).
Хотя такие режимы можно в ЭБУ повыключать но все же - нам не нужны никакие процессы по поддержанию оборотов пока мы не закроем заслонку.
Вот как только мы закрыли заслонки данные ШИМ прописаны в микшере он начинает его корректировать опираясь на сигнал поступающий с ЭБУ микры ( там тоже шим) . условно у нас на серво идет ШИМ 300 ( условных попугаев) , вот микшер начинает корректировать 300 смотря на сигнал с эбу и опираясь куда он пытается сдвинуть обороты шимом . условно с эбу ситуация когда наши обороты устраивают он держит тоже пусть 500 шим . Как только ему надо прибавить или убавить обороты то сигнал увеличивается или уменьшается по длительности.
Микшер пересчитывает увеличение или уменьшение сигнала с ЭБУ и добавляет в опорное для сервы ( на выходе ) какое то значение . К примеру Эбу стал смещать ШИМ с 500 до 700 - опорный шим закрытой заслонки сервы сместиться с 300 на 320 к примеру и наоборот при уменьшении.
Но как только я тронул ручку газа и дал команду поднять обороты - микшер перестает корректировать сигнал с ЭБУ и отрабатывает только команды с передатчика \приемника.
Вроде несложный алгоритм . но у меня такие посредственные знание Си и на ардуино просто под свои нужды редактировал готовые скетчи что застопорился.
Взял за основу это -
http://rc-master.ucoz.ru/publ/19-1-0-25Есть дубль этого скетча тут
http://www.junradio.com/index/kak_poluchit_chislovoe_znachenie_shiriny_shim_signala/0-281Но сайт говеный , забит рекламой и банерами которые даже не дают читать пытаясь напихать вирей в комп.
И засел . Скетчь работает с индикатором по линии I2C но у меня нет такого индикатора и собрал 8-ми разрядный вариант под другую билиотеку.
Но поправить код для вывода на индикатор ( нужно только для отладки и наглядного понимания при настройке и отладке как готового микшера так вообще системы управления двигателем).
Так вот попытка поправить скетчь под другую библиотеку выливается в проблемы которым не нахожу описания.
К примеру начинает ругаться на строку - PCintPort::attachInterrupt(PWM_PIN, calc, CHANGE);
Не нравиться функция calc хотя она нигде не объявлена и если внутренняя команда не нашел описания как она работает и какие условия нужны .
Короче какой день туплю , дымлю и пр.....
Писать с нуля скетчь - рука не поднимается пока из-за минимума понимания процесса.
Хотя процесс интересный и занимаюсь на работе в свободные минуты.
------------------------------------
В целом для запуска системы это не нужно . выставлю упором обороты х.хода и все дальше эбу углом зажигания подкорректирует х.ход ну и топливом в зависимости от ситуации. Просто это улучшательство с заделом на будущее.