[
Именно этим (написанием прошивки) сейчас и занимаюсь. Но не для PIC, а для AVR (Tiny24).
Планируется опора только на штатный импульс 18 град. до ВМТ. Опережение на оборотах выше 4 тыс. - за счёт задержки импульса от штатного датчика на 359....330 град. На оборотах ниже 4 тыс. задержка 0...8 град. Задержки задаются таблично. :
моя первая версия как раз такой и была. Опиралась на штатный импульс, либо его "позднила" на оборотах ниже 4000, либо опережала на оборотах выше 4000 путём задержки на те самые 330-359 гр.
Преимущество этой версии-то, что она "пляшет"от штатного угла. (хочется надеяться, что он у всех скутеров=18 гр)
И надо сказать, эта версия работала, я даже ездил на ней, но выявились несколько недостатков.
1)во время разгона при переходе границы 4000 об каждый раз слышен звук "тррррр", строчит, короче. Особенно под хорошей нагрузкой, иногда может не преодолеть сразу этот порог. Связано с тем, что в это время происходит смена алгоритмов (один на задержку, другой на опережение.)что приводит к кратковременным перебоям в искрообразовании. Устраняется программно путём дописания отдельной процедуры обработки этой ситуации.
2)при переходе 4000 получается мгновенный скачок угла опережения от 15гр до 25, практически отвесная линия. Вызвано это сложностями формирования задержки менее 5 градусов относительно импульса датчика(время выполнения программы начинает сказываться) . Данный недостаток будет не так заметен на AVR, так как он в 4 раза быстрее пика на той же частоте, ну, и 20 мгц кварец поставить.
3)При задержках , близких к 359 гр возникает одна нехорошая вещь: контроллер её отмеряет, исходя из померенной длительности предыдущего оборота. И за время этого оборота что-то может измениться.В частности, в случае разгона новый импульс с датчика может придти не в 360 гр, как его ожидают, а скажем, на 5 гр раньше.(355гр) Если контроллер при этом отсчитывал задержку, скажем, 357 градусов, то он прозевает этот импульс, отчего собьётся очередной подсчёт, и искру выставит с запозданием. На слух это воспринимается как кратковременное тррр при резком повороте ручки газа и некоторая задержка разгона. То есть, имеют место, как я и ожидал, динамическая ошибка предсказания положения коленвала.
Указанные недостатки мной не были устранены. Предполагаю, что последний можно устранить, ориентируясь на информацию о длительности не только предыдущего оборота, но и того, который был до него, оценивая их разность, можно корректировать.