Привет SAHA T , еще раз перечитал твой первый пост да и не спалось чего-то. Вот посмотри чего наваял, если есть баги форумчане исправят.
Если отталкиваться от уже установленных 20градусов, то задачу можно решить «в лоб».
Смотри рисунок.
В шторке датчика нужно сделать вырез (или лепесток ) в те же пресловутые 20 градусов. Точку А датчика установить в нулевой угол опережения (смотри точки и направление вращения).
Теперь сам принцип работы:
Применяем: таймер 1 – отсчет отрезка АВ (длинны активной чисти шторки) для определения числа оборотов.
Таймер 2 – отсчет отрезкаАС4;АС3;АС2;АС1 (момент искрообразования)
1. При старте двигателя
датчик проходит точку А
запуск таймера1 (начало считывания отрезка АВ)
запуск таймера2 (отсчет отрезка АС…), в начальный момент значение таймера минимально – происходит искрообразование
датчик проходит точку В
останавливаем таймер1 (закончили считывание отрезка АВ), теперь программно считаем обороты двигателя и заносим значения угла опережения в таймер2
2. При работе двигателя цикл 1 работы повторяется, но изменяется значение в таймере2 (при повышении оборотов оно увеличивается) и соответственно момент искрообразования в точке С постепенно сдвигается от точки А к точке В.
Вот примерно где-то так. У нас искрообразование отрывается не от конча шторки, а от начала.
И еще прикол может получиться, при поломке блока его можно будет закоротить и ехать дальше с постоянным углом опережения 20градусов (главное чтобы датчик и коммутатор выдавал искру в точке В шторки без блока оперижения).
Если чего-то не то исправте.