ФУОЗ на базе AC-CDI

Обсуждаем электронику на колесах. Нужен увлажнитель воздуха для Камаза? Вам сюда.
Аватара пользователя
mikeymause
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Чт фев 11, 2010 04:11:59
Откуда: Крым
Контактная информация:

Re: ФУОЗ на базе AC-CDI

Сообщение mikeymause »

ПС. Всегда просил Флэша выкладывать "базовую" программу, а потом уже к ней разные "добавки".

вот тоже запутался в этих версиях, елки палки :shock: надо как то разложить по полкам, сток, сток + что-то там, и т.д.
При безальтернативном выборе из двух противоположных сущностей обе будут являть собой исключительную х...ю.
Реклама
asel
Опытный кот
Сообщения: 750
Зарегистрирован: Вт янв 06, 2015 11:00:44

Re: ФУОЗ на базе AC-CDI

Сообщение asel »

Разбираться тяжело. На пальцах? Разбирайтесь, потом спрашивайте. Мы ссылки не сохраняем.
Далее. В предыдущем посте написал немного бредятины. Но не все :)) Разбираемся потихоньку.
Больше меня беспокоит - гистерезис и предсказание. Нужно ли оно мне?
Также всетаки будет интересно, какой реально вычислит угол между метками программа. Еще в связи с этим, включать работу от второй метки по обороту ниже определенного. Ну и ослепление и отключение DC переписать как надо. (У меня лодочный. Задачи немного другие).
Пока начал заниматься с платой. И немного ...
Не нравится куча деталей на входе. Могу не "вписаться" в плату..
Решил уменьшить.
Фото.[img][img]http://img.radiokot.ru/files/102788/thumbnail/21ed4bd4fv.jpg[/img][/img]
Итого. Минус два диода. Два резистора.
По идее -даже можно убрать и еще стабилитроны и паралельный резистор (но это посмотрим по плате)
Реклама
Аватара пользователя
Flash.#13
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Сб апр 12, 2014 23:46:03
Откуда: Киев

Re: ФУОЗ на базе AC-CDI

Сообщение Flash.#13 »

asel думаю такое упрощение схемы даже лучше, ранее был случай когда мото давал слабый сигнал, и плохо заводился, пока не выкинули диод на входе, это почти целый вольт экономит, а оптрон и так сам себе диод. Гистерезис отвечает за устранение многократного переключения туда-сюда на границе между метками, например если переход стоит на 1200 об/мин, и мотор на 1300/мин переключился на раннюю метку, затем обороты упали и снова 1200/мин, и чтобы он не дергался между ними постоянно, гистерезис запрещает этот переход скажем до 1000/мин. Предсказание последнее время кажется не только ненужным но и вредным режимом, на практике в динамических режимах двигатель на нем работает хуже чем без него. Сейчас как раз занимаюсь очередным патчем, хочу все упростить и выбросить лишнее, как писали выше, давно нужно было этим заняться, вот уже зима приходит :(
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
asel
Опытный кот
Сообщения: 750
Зарегистрирован: Вт янв 06, 2015 11:00:44

Re: ФУОЗ на базе AC-CDI

Сообщение asel »

Flash.#13
Спасибо. Начал паять плату. Пока, естественно, только МК. Сваяю, запущу на стенде, проверю, отчитаюсь.
Предсказание? Это при наборе оборотов, угол немного опережает графиковый? Т.е. запоминается предыдущий оборот, и к нему плюсуется?
В предыдущей версии , с одним датчиком тоже было? Но эта подпрограмка была попроще.
Я ее переделал в "стабилизацию" оборотов на низких и хх. Т.е. если оборот "упал", то угол в этом обороте по предыдущему обороту. И наоборот. Не знаю, получился ли толк с нее. (Об этой идее где то на каком то форуме нашел).
ПС. И естесно, интересно замерить длину метки. Если только при пуске подергать, то не измерит?
Хотя , всетаки планирую переписать , чтобы счет от второй метки "включался" от оборотов.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Flash.#13
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Сб апр 12, 2014 23:46:03
Откуда: Киев

Re: ФУОЗ на базе AC-CDI

Сообщение Flash.#13 »

Стабилизация в коде так же была, МК считает усредненный угол этого и предыдущего оборота, чтобы не было слишком резких скачков изменения УОЗ. А вот предсказание позволяло загнать искру раньше первого импульса с датчика, проблема в нестабильности самого двигателя, такой расчет на целый оборот вперед корректно работает только на стенде где обороты мало плавают, попутно создавая проблему перехода на датчик и слепую зону электромагнитных помех во время искры, когда длительная искра не дает считать импульс. А на практике мотор без этого режима вел себя лучше, проблемы с нестабильностью были хуже чем выигрыш от угла выше датчика.
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
Реклама
asel
Опытный кот
Сообщения: 750
Зарегистрирован: Вт янв 06, 2015 11:00:44

Re: ФУОЗ на базе AC-CDI

Сообщение asel »

Flash.#13
Да. Путаемся в терминах.
Понятно о "предсказании" (т.е. это искра выше датчика). , которое появилось почти в самом начале темы. (Еле его вырезал тогда из программы. Ну и еще много , связанное с ним лишнее).

А это что? Тут и "разгон и замедление".

;коррекция предсказания оборота
mov R6,R10 ;копируем оборот
mov R5,R9 ;и ст.
cp R10,R12 ;сравнимваем с предыдущим
cpc R9,R11 ;и ст.
breq rovno ;если равны,нет рассчета
brlo razgon
;замедление
sub R10,R12
sbc R9,R11
lsr R9
ror R10 ;1/2 оборота расч.
add R10,R6
adc R9,R5
brvc rovno ;нет переполнения
ser R16 ;РОН=0xFF
mov R10,R16 ;если переполнение
mov R9,R16 ;реж.холостые
rjmp rovno
razgon: ;рост оборотов
sub R12,R10
sbc R11,R9
lsr R11
ror R12 ;1/2 оборота расч.
sub R10,R12
sbc R9,R11
rovno:
mov R12,R6
mov R11,R5
;R10:R9-рассчетный 180°
;R12:R11-текущий
;R6:R5-текущий

Я переписал это переписал на "стабилизацию" оборотов. Правильно ли, нужно ли?
cpi R21, 172 ;перейти если меньше 1400об
brlo troling ;на стабилизацию оборотов
rjmp raschet
troling:
mov R6,R10 ;копируем оборот
mov R5,R9
cp R10,R12 ;сравнимваем с предыдущим
cpc R9,R11
breq rovno1 ;если равны,нет рассчета
mov R10,R12 ;задержка будет по предыдущему обороту
mov R9,R11
rovno1:
mov R12,R6 ;запоминаем оборот текущий оборот
mov R11,R5
;R10:R9-текущий
;R12:R11-предыдущий
;R6:R5-текущий для сравнения с предыдущим

raschet:

;рассчет УОЗ
mov R5, R9 ;копируем реал оборот
mov R6, R10 ;копируем

ПС. В последней версии один светодиод. Паяю плату, хочу впаять еще один, для контроля второй метки. Чтобы каждый диод ..на свою. метку. Ну и порты выходы перекинуть на конец процессора , на РВ0 и РВ1. Плата у меня прямоугольником.
Реклама
Аватара пользователя
Flash.#13
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Сб апр 12, 2014 23:46:03
Откуда: Киев

Re: ФУОЗ на базе AC-CDI

Сообщение Flash.#13 »

Это код стабилизации предсказания оборотов, в режиме "выше метки" он помогает замедлять изменение предсказываемого угла, там когда мотор набирает или сбавляет обороты, то угол считается не по тому что кажется коду, а средний между предыдущим и тому что ожидается, в реале этот код чуть стабилизирует ситуацию с предсказанием, но все равно недостаточно хорошо. Еще ФУОЗ не может стабилизировать обороты, он будет пытаться изменять угол искры, это скорее приведет к сильно раннему или позднему зажиганию, но при накате с горки обороты никак не упадут, и не факт что даже холостые таким макаром сможет удержать, ведь механика двигателя управляет парадом, и при регулярном уводе угла еще свечу закопотить может продуктами недогорания. Лучше уточнить этот момент у знающих моторы, лично мне кажется что удерживать углом обороты на холостых приведет к "троению" движка.
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
asel
Опытный кот
Сообщения: 750
Зарегистрирован: Вт янв 06, 2015 11:00:44

Re: ФУОЗ на базе AC-CDI

Сообщение asel »

Flash.#13
Ваша подпрограмма (читал на форумах) и четко ее построчно проверил.
Это для мото. Когда при резком "газе" , например идет набор оборотов. МК считает оборот, а на самом деле, за счет ускорения, величина оборота конечная уже больше, и поэтому плюсуется добавка в график . Т.е угол будет не по расчитаному обороту МК, а в плюс. Т.е. угол возмется из графика на оборот выше.
Поэтому и строится график в диапазоне средних оборотов через 100оборотов.

О стабилизации оборотов. Например на хх. Вы ничего не делаете, стоите. А мотор туда сюда. "дергается".
Пример. Карбюратор настроен. Но углом вы можете обороты или выше или ниже. И например, оборот "упал", МК посчитает, и выдаст определенный угол из графика относительно этого оборота. Но нам же нужно, что бы обороты были стабильные!!Без "туда-сюда". Поэтому, мы берем (программой) угол раньше, чем для этого оборота. Что подразумевает обороты чуть выше. И в итоге пытаемся обороты мотора стабилизировать. (Это нужно только на хх и ниже средних. Объединение этих двух идей - стабилизации и "предсказания" ?? Можно, но стабилизация и "предсказание" должно быть разделено программно оборотами. Мне "предсказание" не нужно, как и искра выше первой метки)
ПС. Плату спаял для МК. Проверим и Попробую запустить (есть моторчик с датчиком). Потом нужно немного переписать программу (хочу два светодиода, и по плате нужно их включить наоборот. и порты..). Ну и ...далее будет. :))
asel
Опытный кот
Сообщения: 750
Зарегистрирован: Вт янв 06, 2015 11:00:44

Re: ФУОЗ на базе AC-CDI

Сообщение asel »

.....
asel
Опытный кот
Сообщения: 750
Зарегистрирован: Вт янв 06, 2015 11:00:44

Re: ФУОЗ на базе AC-CDI

Сообщение asel »

Вычистил :)) Вроде работает.
Теперь далее доводим до ума

Добавлено after 5 hours 39 minutes 34 seconds:
Немного довел до того чего хотел.
Возможно кривовато, но сидел целый день. Иначе завтра забуду все. (поменял регистры, как в старых версиях. Надо "преемственность)
Так и не понял, почему импульс флайбэк удлиняется "скачком" при уменьшении оборотов и переходе на второй импульс. Но жить можно.
Лишнего ничего нет вроде. Естественно можно еще "доковырять" или упростить "все эти паузы - задержки"
Пришлось оставить "искру" при совпадении R25 и R23 (задержка из таблицы и длина метки), иначе программа "улетала". Возможно нельзя делить на 0 или умножать. Увы не программист, и как проще сделать, не знаю.
Описывать не буду. Спрашивайте, если чтото не ясно.
Вложения
CDI.asm
(20.6 КБ) 260 скачиваний
CDI.asm
(19.32 КБ) 262 скачивания
Аватара пользователя
Flash.#13
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Сб апр 12, 2014 23:46:03
Откуда: Киев

Re: ФУОЗ на базе AC-CDI

Сообщение Flash.#13 »

asel вырезая "лишнее" теряется совместимость с программой правки углов, и если подождете пару дней, то успею доделать свою версию кода. Фактический точно так же вырезается большинство лишних вещей как вы и сделали у себя, только хочу переработать блок раннего импульса.
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
asel
Опытный кот
Сообщения: 750
Зарегистрирован: Вт янв 06, 2015 11:00:44

Re: ФУОЗ на базе AC-CDI

Сообщение asel »

Flash.#13
Пользую 24.exe.
Спешить не нужно. Это же моя тест версия. Базовая идея. Так и писал. Которую можно или еще подчистить или что то добавить, но не наворачивая. Главная задача была - ослепление по первому импульсу и флэшбэк по первому импульсу, и как ослепить отдельно второй вход. Вроде получилось. Хотя есть еще варианты.
В вашей "правке углов" , еще и привязка к вых порту....
Версию с расчетом метки можно загрузить, вычислить точно длину метки "угол". А потом это число внести в мою программу в R23, и потом скомпилировать с помощью 24.exe.

Надо еще придумать и вписать watchdog от зависания. Ну и может еще ...какая идея придет.

ПС. Вообще, прикидывая.. Идея второй метки в этой программе не решает проблему на хх и чуть выше.
Потому как оборот всеравно расчитывается по первой метке. А он может существенно отличать от реального, т.е. скорости движения маховика от начала расчета (первой метки) к концу расчета (той же первой метки). И всеравно мы выбираем угол (задержку) из таблицы по "этому" обороту. Хотя и привязываем его ко второй метке. Может расчет от первой до второй метки также перевести оборот и использовать или для коррекции или вообще для выдачи искры.
Т.е. перевести программу "наоборот". На низких оборотах расчет оборота от первой - до второй метки, и соответственно искра. А на оборотах выше Х, переходить на расчет оборота по первой метке и соответственно искре по этому обороту. Вот будет правильно. Т.е. при пуске, хх, и чуть выше искра только от второй метки. Даже пуск будет легче. Не нужно крутить целый оборот, расчитывая оборот.
Если маховик стоит перед первой меткой,крутим - первая, вторая ... и получай искру.
..Это я к тому, что раз перешли к двум меткам , нужно идти дальше ... :)))
Аватара пользователя
Flash.#13
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Сб апр 12, 2014 23:46:03
Откуда: Киев

Re: ФУОЗ на базе AC-CDI

Сообщение Flash.#13 »

А чем AVR студия не угодила? Четвертая версия вовсе бесплатна на сайте разработчика. По поводу счета искры изначально было два режима: запуск мотора и нормальная работа. Счетчика с кварцем 4МГц меги8 достаточно для обработки скоростей до 460/мин, а ниже происходит переполнение, для чего был введен режим "холостые", хотя фактический большинство малокубатурных моторов на такой скорости заглохли или заводятся стартером, то есть режим "холостые" это когда мотор заглох, и расчеты там идут от значения переполнения "0xFF", что на практике вполне неплохо себя показало. Наращивание разрядности счетчика программно возможно, но неоправданно по отношению к скорости МК. С вводом второй "поздней" метки появилась возможность заводится без первого "раннего" импульса, но есть два пути, либо считать задержку-константу например 5 градусов после импульса, и выдавать искру, и после выхода в нормальные обороты переходить на штатный счет с ранней метки, либо делать полноценную математику таблицы от обоих меток, чтобы МК сам определял какая сейчас лучше подходит для искры. Мне изначально больше нравился второй вариант, ведь у МК есть время для этих расчетов, но ранее Альтиум убедительно объяснял, что если МК будет переключатся между метками в процессе работы, то мы неизменно получим "ступеньку" угла в момент переключения, и это может ощущаться. Альтиум отстаивал первый вариант, заводится с поздней метки, и после выхода в рабочий режим переходить полностью на раннюю. В обоих вариантах есть нюанс, в момент запуска мотора наиболее оптимально использовать расчет математики с таблицы по поздней метке, а не константу в 3-5 градусов, потому что углы на разных моторах разные, и не исключено что в одном желательно сразу давать искру по импульсу, а в другом нужно ждать более 5ти градусов, а грубая константа попросту не сможет это учесть, когда точный счет с таблицы углов(которая и так в памяти МК) полностью решит этот вопрос. Остается открытым вариант работы самого мотора, разрешить ли МК после выхода в рабочие обороты принимать решение об использовании обоих меток для искры, или использовать позднюю метку сугубо для старта.
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
asel
Опытный кот
Сообщения: 750
Зарегистрирован: Вт янв 06, 2015 11:00:44

Re: ФУОЗ на базе AC-CDI

Сообщение asel »

Flash.#13
Много слов и я ничего не понял.
1. На малых оборотах, при неравномерном вращении (рывках) конечная расчетная величина оборота , расчитанная по первой метке очень далека от реального (т.е. скорости маховика в момент прохождения первой метки). А задержку на выдачу искры мы берем из таблицы ... и угол искры получается в итоге неправильный.
2. Насчет таблиц и как их заполнять. Тоже дилемма. Например метка 30 и 5 градусов от ВМТ. Но реально импульс приходит раньше и плюс зависит от оборотов (изза индуктивного датчика). Т.е , например на 600 оборотах импульс придет в 6 градусов, а на 1200 уже в 9 градусов. И при том, что это величина не постоянная, а зависит от чувствительности датчика, которые на моторах разные.
3.Что нужно. На оборотах до Х, расчитываем величину оборота от первой до второй метки. И соответсвенно искру. После величины оборотов Х, переходим на расчет задержки на искру по расчету оборота от первых импульсов.
Величина оборотов X перехода , также может подбираться индивидуально.
Сложностей не должно быть. Просто все нужно обмозговать, простую логику математики расчетов и переходов.
4. Так будет правильно. Попробую сам пока, если получится.
Считаем импульсы от 1 до второй метки (т.е. 25 градусов. 360/25=14,4 раза меньше. Не хватит частоты 4мгц? Ну мы же не будем считать при 6000оборотах? ), и сразу или с задержкой выдаем искру соответственно посчитанным импульсам счетчика.
Пс. Почему ваша версия ......не имеет смысла. (разобрался)
Потому, что выдача импульса на искру все равно привязана к расчитанному обороту по первой метке. И от того, что к расчету прибавили, а потом тоже отняли в итоге ничего не изменилось.
asel
Опытный кот
Сообщения: 750
Зарегистрирован: Вт янв 06, 2015 11:00:44

Re: ФУОЗ на базе AC-CDI

Сообщение asel »

Поэксперементировал...
;=определяем задержку искры=
norm:
mov R21, R9 ;скопируем значение счетчика 16-бит
com R21 ;инвертируем число
;теперь имеем 255 значений счетчика оборотов,

заменил на..
;=определяем величину оборота=
norm:
mov R21, R11 ;скопируем значение счетчика 16-бит
com R21 ;инвертируем число
ldi R16,14
mov R5,R16
mov R6,R21
mul R5,R6
mov R21,R0
cpi R21,165
brlo bigger ;если больше 1300об,то
mov R21, R9 ;оборот по первой метке
com R21
bigger:
;теперь имеем 255 значений счетчика оборотов,

т.е. величину оборота берем по второй метке. От 1 до второй =25градусов. И умножаем на 14. Надо на 14.4, но я не знаю, как это написать в проге. В итоге мы имеем "правильную" величину оборота в настоящий момент, а не расчитанный от первой до первой метки. Если оборот выше 1300, переходим на расчет оборота по первой метке. В итоге, из таблицы мы берем по этому (новому) расчету правильную задержку, соответсвенно этому обороту.
Все работает. Но длина метки в R23 должна стоять правильная, или на 1 меньше.
Итого. Ну хоть выбираем правильную задержку соответственно правильному обороту.

Идем далее и ... запутался . .... "второй импульс"
В программе...
sub R25,R23 ;"табл."-"метка"
;далее расчет на "запаздывание",второй имп.дат.
mov R5,R9 ;сохраним регистры
mov R6,R10 ;счетчика
rcall matematika;R5R6*R25=R7R8
add R8,R12
adc R7,R11 ;+счт.длина метки
;теперь имеем R7R8 значение задержки
;запишем в регистр сравнения счетчика
out OCR1AH, R7 ;HighByte
out OCR1AL, R8 ;LowByte
Нам нужно, по величине "правильного" оборота R11R12x14 вычислить задержку и вписать в R7R8. А сейчас получается, что мы расчитываем уоз по задержке R25 (из таблицы) по "неправильному" обороту, расчитанному по 1 метке.

Идея бредовая, но пока не вижу, как по другому , в этой программе, на малых оборотах привязаться к расчету оборота от первой до второй метки. Чтобы на малых оборотах мотор работал четко только от второй метки.
Аватара пользователя
Flash.#13
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Сб апр 12, 2014 23:46:03
Откуда: Киев

Re: ФУОЗ на базе AC-CDI

Сообщение Flash.#13 »

Мне кажется так будет только хуже, как только мотор сможет завестись, у него появится повторяемость и стабильность оборотов, там достаточно много механики и вся она создает инерцию на валу, ну не может поршень вот так резко встать клином, нестабильность существует только при заводке кик-стартером, даже от электро ее нет. По поводу примера, команда умножения mul выводит за два такта результат в регистры R0:R1, и если все это нужно только для сравнения, проще сразу сравнивать значение счетчика. Любая операция умножения даст погрешность кратную множителю, вот умножая на "14" мы получим результаты 14;28;42;56 итд., доля счетчика и снова х14 чего-то там. И самое некрасивое что углы разных датчиков разные. И в результате заводя мотор получаем схему по которой нужно все равно поймать два импульса, ранний и поздний, чтобы посчитать что мотор ниже 460/мин, и затем дать задержку в 2-3 градуса. А как это сделано на заводских экземплярах? Там на низкий скорости просто джут второго позднего импульса, и жмякают искру. Только такая схема часто дает отдачу, часто не хватает пару градусов задержки. В общем считаю что лучше всего для старта ловить именно поздний импульс, затем считать задержку как при переполнении счетчика "0xFF", и выдерживать табличное значение. Оно и раньше так работало, только считалось от первой ранней метки, и было неплохо, даже с таким счетом отдачи было меньше чем в стоке. А дальше мотор заводится и переходим на штатную работу. Для реальных моторов при оборотах от 1500/мин вторая поздняя метка уже не используется при любом раскладе.
Последний раз редактировалось Flash.#13 Ср ноя 06, 2019 18:16:55, всего редактировалось 1 раз.
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
Аватара пользователя
mikeymause
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Чт фев 11, 2010 04:11:59
Откуда: Крым
Контактная информация:

Re: ФУОЗ на базе AC-CDI

Сообщение mikeymause »

asel и автор темы Flash.#13, Вы на стенде все откатывает или на транспорте ? думаю тоже стендик собрать.
При безальтернативном выборе из двух противоположных сущностей обе будут являть собой исключительную х...ю.
Аватара пользователя
Flash.#13
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Сб апр 12, 2014 23:46:03
Откуда: Киев

Re: ФУОЗ на базе AC-CDI

Сообщение Flash.#13 »

mikeymause на реальном мото (Lifan 162FMJ, китаец 150куб.,4т) до сих пор стоит версия со второй страницы, одна из самых древних, а 2.0 тестировалась только на стенде и спустя год оказалось что на мото она не работает. Из-за чего сейчас делается исправление версии 2.0
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
Аватара пользователя
mikeymause
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Чт фев 11, 2010 04:11:59
Откуда: Крым
Контактная информация:

Re: ФУОЗ на базе AC-CDI

Сообщение mikeymause »

все понял, тоже на прошивке с первой или второй страницы. пока все огонь.
При безальтернативном выборе из двух противоположных сущностей обе будут являть собой исключительную х...ю.
asel
Опытный кот
Сообщения: 750
Зарегистрирован: Вт янв 06, 2015 11:00:44

Re: ФУОЗ на базе AC-CDI

Сообщение asel »

mikeymause
стенд очень много чего показывает, чего не увидишь и не поймешь... что с мотором не так. и хочешь еще лучше.
Последняя рабочая , это когда решили проблему "без отдачи". А потом уже перешли на две метки... пока "кривые". :))
...........................
Переписал еще один "кусок".
Было
noiskr:
sub R25,R23 ;"табл."-"метка"
;далее расчет на "запаздывание",второй имп.дат.
mov R5,R9 ;сохраним регистры
mov R6,R10 ;счетчика
rcall matematika;R5R6*R25=R7R8
add R8,R12
adc R7,R11 ;+счт.длина метки

Это неправильно!! Здесь мы берем расчитанный оборот по первой метке (неправильный) и вычисляем задержку по R25-R23. И потом эту задержку добавляем к правильной величине R11R12.
Переписал так.
noiskr: ;иначе счет
;далее расчет на "запаздывание",второй имп.дат.
mov R5,R11 ;сохраним регистры
mov R6,R12 ;счетчика
rcall matematika;R5R6*R25=R7R8
add R8,R12
adc R7,R11 ;+счт.длина метки

Просто. Берем оборот/14.4 25 градусов (от первой до второй метки) , вычисляем задержку по задержке из таблицы R25 и просто плюсуем ее к R11R12 (от первой метки до второй). Просто и понятно.
Скоро дойдет до того что от R23 в подпрограмме второй метки останутся рожки да ножки.
Далее .. нужно проверить (на стенде!!!), нужно ли..
cp R25,R23 ;если равны
brne noiskr
rjmp iskra ;искра без задержки

Флэш, лучше бы помог умножить на 14.4 (дробное). Я не бумбум. В проге пишу по шаблонам из интернета. Такой никак не найду. Число умножить на дробное.
mov R21, R11 ;скопируем значение счетчика 16-бит
com R21 ;инвертируем число
ldi R16,14.4

ПС. Флэш. Если знаете как сделать по другому.... Да, наверно есть, но это будет совсем другая программа.
Пока идем по тому что есть, и просто.
Еще раз!! Задача - "заводка" по второй метке меня не интересует.
Задача - работа на хх и чуть выше , по второй метке из расчета скорости движения маховика (т.е. оборотов) от первой до второй метки. Тут же и решается проблема "заводки".
Вы пишете и сами себе противоречите. Что при пуске скорость маховика неравномерная, соответственно и расчитанный оборот неправильный по первой метке.
То что умножив на 14 или 14.4 погрешность. Да есть. Но используем это только на оборотах до 1200-1300. И уж погрешность будет намного меньше , чем измеряя оборот по первой метке, когда мотор дергается и работает рывками и т.п. А от величины оборота мы берем из таблицы число задержки уоз ..
Ищу как умножить на 14.4. Все варианты программ в отдельных папках. Так что сравнивать потом реально на моторе , нет проблем.
ПС2. И зачем мне тогда второй импульс, если с него толку ... только "заводить".
Ответить

Вернуться в «АвтоМотоВело»