Схема работает следующим образом:
1) К J1 и J2 подсоединяется датчик заднего (R, Rear) цилиндра
2) К J3 и J4 подсоединяется датчик переднего (F, Front) цилиндра
3) К J5 подсоединяется +12V от аккумулятора, к J6 подсоединяется -12V от аккумулятора ("земля")
4) К J9 это выход на переднюю катушку, J10 это выход на заднюю катушку
5) TP 1-5 это тестовые точки используемые при настройке платы.
6) Переключатель SW1. Верхние два контакта (LIMITERD0, LIMITERD1) служат для выбора одного из 4-х ограничений по оборотам (6000, 6500, 7000, 7500 оборотов в минуту) при превышении которых отключается искра в переднем (F) цилиндре, от чего обороты двигателя снижаются до заданного диапазона отсечки и передний цилиндр опять включается. Нижние три контакта (CURVED0 - CURVED2) служат для переключения одной из 8-ми кривых угла опережения зажигания.
Входы-выходы каналов зажигания квази-раздельны (то есть раздельны по входной и выходной частям аппаратно и программно в программе процессора). Одним словом при пропадании сигнала датчика одного из цилиндров мотор будет работать на оставшемся цилиндре (на одном).
Импульсы от входных датчиков попадают на усилители-формирователи, далее на вход процессора. После обработки программой с выходов процессора сигнал для катушек зажигания проходит через каскад раскачки на выходные IGBT транзисторы. Входа для буст-сенсора нет.
Программа работает на внутренних аппаратных таймерах, коих 5. По два используется для формирования задержки импульса в каждом канале, а один используется для обоих каналов. Вся программа написана в прерываниях, коих 7 (два прерывания на входы от датчиков и 5 на таймеры), основной цикл программы только считывает данные о перемычках ограничения оборотов и выбора кривой зажигания. Программа написана на ассемблере, измеренное время обсчёта данных для загрузки в таймеры примерно 280мкС. Данные кривых зажигания задаются параметрически, то есть отрезками кривых. Программа считает обороты, затем смотрит в какой диапазон данной кривой попадает полученное значение частоты вращения коленвала и считает данные для таймеров по формуле. После чего запускаются таймеры по окончании счёта которых формируются прерывания и искра...
Для изменения кривой надо только перепрописать 8 точек в теле программы. Точки по оси частот не детерминированы, то есть могут сдвигаться отдельно для каждой кривой, то есть могут быть заданы точки в 0, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000 оборотов в минуту и, к примеру, для другой кривой в 0, 100, 200, 500, 3000, 5000, 5200, 8000. То есть шаг кривой на наиболее критичных участках можно уменьшать.
Обороты в программе задаются в частоте вращения коленвала в Герцах (то есть оборотах в СЕКУНДУ). Частота 1 Герц соответствует 1 х 60 = 60 оборотам в МИНУТУ.
Блок имеет защиту от "переполюсовки" по питанию (диод, стабилитрон и самовосстанавливающийся предохранитель 1А (R17 на схеме). Стабилизатор U5 выдает +5V для усилителей-формирователей и светодиодов (которые моргают, индицируя работу блока), стабилизатор U6 выдает +3.3 на процессор (на самом деле ядро процессора питается от +2.5V внутреннего стабилизатора). Частота ядра процессора 32Mhz, что, учитывая его RISC архитектуру, даёт производительность 16MIPS (миллионов инструкций в секунду). На схеме два кварцевых генератора. X1 (32768Hz) тактирует внутренние таймеры для обеспечения стабильных временных характеристик импульсов зажигания независимых от тактовой частоты ядра процессора (частота генератора X1 (8MHz) внутри процессора умножается на 4 что и даёт частоту тактирования ядра 32Mhz). Процессор 16-ти разрядный PIC24FJ64GA004 фирмы Microchip.
Вот типа того, потом ещё допишу
