вот тоже запутался в этих версиях, елки палки
ФУОЗ на базе AC-CDI
- mikeymause
- Первый раз сказал Мяу!
- Сообщения: 28
- Зарегистрирован: Чт фев 11, 2010 04:11:59
- Откуда: Крым
- Контактная информация:
Re: ФУОЗ на базе AC-CDI
ПС. Всегда просил Флэша выкладывать "базовую" программу, а потом уже к ней разные "добавки".
вот тоже запутался в этих версиях, елки палки
надо как то разложить по полкам, сток, сток + что-то там, и т.д.
вот тоже запутался в этих версиях, елки палки
При безальтернативном выборе из двух противоположных сущностей обе будут являть собой исключительную х...ю.
- Реклама
Re: ФУОЗ на базе AC-CDI
Разбираться тяжело. На пальцах? Разбирайтесь, потом спрашивайте. Мы ссылки не сохраняем.
Далее. В предыдущем посте написал немного бредятины. Но не все
Разбираемся потихоньку.
Больше меня беспокоит - гистерезис и предсказание. Нужно ли оно мне?
Также всетаки будет интересно, какой реально вычислит угол между метками программа. Еще в связи с этим, включать работу от второй метки по обороту ниже определенного. Ну и ослепление и отключение DC переписать как надо. (У меня лодочный. Задачи немного другие).
Пока начал заниматься с платой. И немного ...
Не нравится куча деталей на входе. Могу не "вписаться" в плату..
Решил уменьшить.
Фото.[img][img]http://img.radiokot.ru/files/102788/thumbnail/21ed4bd4fv.jpg[/img][/img]
Итого. Минус два диода. Два резистора.
По идее -даже можно убрать и еще стабилитроны и паралельный резистор (но это посмотрим по плате)
Далее. В предыдущем посте написал немного бредятины. Но не все
Больше меня беспокоит - гистерезис и предсказание. Нужно ли оно мне?
Также всетаки будет интересно, какой реально вычислит угол между метками программа. Еще в связи с этим, включать работу от второй метки по обороту ниже определенного. Ну и ослепление и отключение 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
asel думаю такое упрощение схемы даже лучше, ранее был случай когда мото давал слабый сигнал, и плохо заводился, пока не выкинули диод на входе, это почти целый вольт экономит, а оптрон и так сам себе диод. Гистерезис отвечает за устранение многократного переключения туда-сюда на границе между метками, например если переход стоит на 1200 об/мин, и мотор на 1300/мин переключился на раннюю метку, затем обороты упали и снова 1200/мин, и чтобы он не дергался между ними постоянно, гистерезис запрещает этот переход скажем до 1000/мин. Предсказание последнее время кажется не только ненужным но и вредным режимом, на практике в динамических режимах двигатель на нем работает хуже чем без него. Сейчас как раз занимаюсь очередным патчем, хочу все упростить и выбросить лишнее, как писали выше, давно нужно было этим заняться, вот уже зима приходит 
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
Re: ФУОЗ на базе AC-CDI
Flash.#13
Спасибо. Начал паять плату. Пока, естественно, только МК. Сваяю, запущу на стенде, проверю, отчитаюсь.
Предсказание? Это при наборе оборотов, угол немного опережает графиковый? Т.е. запоминается предыдущий оборот, и к нему плюсуется?
В предыдущей версии , с одним датчиком тоже было? Но эта подпрограмка была попроще.
Я ее переделал в "стабилизацию" оборотов на низких и хх. Т.е. если оборот "упал", то угол в этом обороте по предыдущему обороту. И наоборот. Не знаю, получился ли толк с нее. (Об этой идее где то на каком то форуме нашел).
ПС. И естесно, интересно замерить длину метки. Если только при пуске подергать, то не измерит?
Хотя , всетаки планирую переписать , чтобы счет от второй метки "включался" от оборотов.
Спасибо. Начал паять плату. Пока, естественно, только МК. Сваяю, запущу на стенде, проверю, отчитаюсь.
Предсказание? Это при наборе оборотов, угол немного опережает графиковый? Т.е. запоминается предыдущий оборот, и к нему плюсуется?
В предыдущей версии , с одним датчиком тоже было? Но эта подпрограмка была попроще.
Я ее переделал в "стабилизацию" оборотов на низких и хх. Т.е. если оборот "упал", то угол в этом обороте по предыдущему обороту. И наоборот. Не знаю, получился ли толк с нее. (Об этой идее где то на каком то форуме нашел).
ПС. И естесно, интересно замерить длину метки. Если только при пуске подергать, то не измерит?
Хотя , всетаки планирую переписать , чтобы счет от второй метки "включался" от оборотов.
- Flash.#13
- Держит паяльник хвостом
- Сообщения: 965
- Зарегистрирован: Сб апр 12, 2014 23:46:03
- Откуда: Киев
Re: ФУОЗ на базе AC-CDI
Стабилизация в коде так же была, МК считает усредненный угол этого и предыдущего оборота, чтобы не было слишком резких скачков изменения УОЗ. А вот предсказание позволяло загнать искру раньше первого импульса с датчика, проблема в нестабильности самого двигателя, такой расчет на целый оборот вперед корректно работает только на стенде где обороты мало плавают, попутно создавая проблему перехода на датчик и слепую зону электромагнитных помех во время искры, когда длительная искра не дает считать импульс. А на практике мотор без этого режима вел себя лучше, проблемы с нестабильностью были хуже чем выигрыш от угла выше датчика.
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
- Реклама
Re: ФУОЗ на базе AC-CDI
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. Плата у меня прямоугольником.
Да. Путаемся в терминах.
Понятно о "предсказании" (т.е. это искра выше датчика). , которое появилось почти в самом начале темы. (Еле его вырезал тогда из программы. Ну и еще много , связанное с ним лишнее).
А это что? Тут и "разгон и замедление".
;коррекция предсказания оборота
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
Это код стабилизации предсказания оборотов, в режиме "выше метки" он помогает замедлять изменение предсказываемого угла, там когда мотор набирает или сбавляет обороты, то угол считается не по тому что кажется коду, а средний между предыдущим и тому что ожидается, в реале этот код чуть стабилизирует ситуацию с предсказанием, но все равно недостаточно хорошо. Еще ФУОЗ не может стабилизировать обороты, он будет пытаться изменять угол искры, это скорее приведет к сильно раннему или позднему зажиганию, но при накате с горки обороты никак не упадут, и не факт что даже холостые таким макаром сможет удержать, ведь механика двигателя управляет парадом, и при регулярном уводе угла еще свечу закопотить может продуктами недогорания. Лучше уточнить этот момент у знающих моторы, лично мне кажется что удерживать углом обороты на холостых приведет к "троению" движка.
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
Re: ФУОЗ на базе AC-CDI
Flash.#13
Ваша подпрограмма (читал на форумах) и четко ее построчно проверил.
Это для мото. Когда при резком "газе" , например идет набор оборотов. МК считает оборот, а на самом деле, за счет ускорения, величина оборота конечная уже больше, и поэтому плюсуется добавка в график . Т.е угол будет не по расчитаному обороту МК, а в плюс. Т.е. угол возмется из графика на оборот выше.
Поэтому и строится график в диапазоне средних оборотов через 100оборотов.
О стабилизации оборотов. Например на хх. Вы ничего не делаете, стоите. А мотор туда сюда. "дергается".
Пример. Карбюратор настроен. Но углом вы можете обороты или выше или ниже. И например, оборот "упал", МК посчитает, и выдаст определенный угол из графика относительно этого оборота. Но нам же нужно, что бы обороты были стабильные!!Без "туда-сюда". Поэтому, мы берем (программой) угол раньше, чем для этого оборота. Что подразумевает обороты чуть выше. И в итоге пытаемся обороты мотора стабилизировать. (Это нужно только на хх и ниже средних. Объединение этих двух идей - стабилизации и "предсказания" ?? Можно, но стабилизация и "предсказание" должно быть разделено программно оборотами. Мне "предсказание" не нужно, как и искра выше первой метки)
ПС. Плату спаял для МК. Проверим и Попробую запустить (есть моторчик с датчиком). Потом нужно немного переписать программу (хочу два светодиода, и по плате нужно их включить наоборот. и порты..). Ну и ...далее будет.
Ваша подпрограмма (читал на форумах) и четко ее построчно проверил.
Это для мото. Когда при резком "газе" , например идет набор оборотов. МК считает оборот, а на самом деле, за счет ускорения, величина оборота конечная уже больше, и поэтому плюсуется добавка в график . Т.е угол будет не по расчитаному обороту МК, а в плюс. Т.е. угол возмется из графика на оборот выше.
Поэтому и строится график в диапазоне средних оборотов через 100оборотов.
О стабилизации оборотов. Например на хх. Вы ничего не делаете, стоите. А мотор туда сюда. "дергается".
Пример. Карбюратор настроен. Но углом вы можете обороты или выше или ниже. И например, оборот "упал", МК посчитает, и выдаст определенный угол из графика относительно этого оборота. Но нам же нужно, что бы обороты были стабильные!!Без "туда-сюда". Поэтому, мы берем (программой) угол раньше, чем для этого оборота. Что подразумевает обороты чуть выше. И в итоге пытаемся обороты мотора стабилизировать. (Это нужно только на хх и ниже средних. Объединение этих двух идей - стабилизации и "предсказания" ?? Можно, но стабилизация и "предсказание" должно быть разделено программно оборотами. Мне "предсказание" не нужно, как и искра выше первой метки)
ПС. Плату спаял для МК. Проверим и Попробую запустить (есть моторчик с датчиком). Потом нужно немного переписать программу (хочу два светодиода, и по плате нужно их включить наоборот. и порты..). Ну и ...далее будет.
Re: ФУОЗ на базе AC-CDI
.....
Re: ФУОЗ на базе AC-CDI
Вычистил
Вроде работает.
Теперь далее доводим до ума
Добавлено after 5 hours 39 minutes 34 seconds:
Немного довел до того чего хотел.
Возможно кривовато, но сидел целый день. Иначе завтра забуду все. (поменял регистры, как в старых версиях. Надо "преемственность)
Так и не понял, почему импульс флайбэк удлиняется "скачком" при уменьшении оборотов и переходе на второй импульс. Но жить можно.
Лишнего ничего нет вроде. Естественно можно еще "доковырять" или упростить "все эти паузы - задержки"
Пришлось оставить "искру" при совпадении R25 и R23 (задержка из таблицы и длина метки), иначе программа "улетала". Возможно нельзя делить на 0 или умножать. Увы не программист, и как проще сделать, не знаю.
Описывать не буду. Спрашивайте, если чтото не ясно.
Теперь далее доводим до ума
Добавлено after 5 hours 39 minutes 34 seconds:
Немного довел до того чего хотел.
Возможно кривовато, но сидел целый день. Иначе завтра забуду все. (поменял регистры, как в старых версиях. Надо "преемственность)
Так и не понял, почему импульс флайбэк удлиняется "скачком" при уменьшении оборотов и переходе на второй импульс. Но жить можно.
Лишнего ничего нет вроде. Естественно можно еще "доковырять" или упростить "все эти паузы - задержки"
Пришлось оставить "искру" при совпадении R25 и R23 (задержка из таблицы и длина метки), иначе программа "улетала". Возможно нельзя делить на 0 или умножать. Увы не программист, и как проще сделать, не знаю.
Описывать не буду. Спрашивайте, если чтото не ясно.
- Flash.#13
- Держит паяльник хвостом
- Сообщения: 965
- Зарегистрирован: Сб апр 12, 2014 23:46:03
- Откуда: Киев
Re: ФУОЗ на базе AC-CDI
asel вырезая "лишнее" теряется совместимость с программой правки углов, и если подождете пару дней, то успею доделать свою версию кода. Фактический точно так же вырезается большинство лишних вещей как вы и сделали у себя, только хочу переработать блок раннего импульса.
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
Re: ФУОЗ на базе AC-CDI
Flash.#13
Пользую 24.exe.
Спешить не нужно. Это же моя тест версия. Базовая идея. Так и писал. Которую можно или еще подчистить или что то добавить, но не наворачивая. Главная задача была - ослепление по первому импульсу и флэшбэк по первому импульсу, и как ослепить отдельно второй вход. Вроде получилось. Хотя есть еще варианты.
В вашей "правке углов" , еще и привязка к вых порту....
Версию с расчетом метки можно загрузить, вычислить точно длину метки "угол". А потом это число внести в мою программу в R23, и потом скомпилировать с помощью 24.exe.
Надо еще придумать и вписать watchdog от зависания. Ну и может еще ...какая идея придет.
ПС. Вообще, прикидывая.. Идея второй метки в этой программе не решает проблему на хх и чуть выше.
Потому как оборот всеравно расчитывается по первой метке. А он может существенно отличать от реального, т.е. скорости движения маховика от начала расчета (первой метки) к концу расчета (той же первой метки). И всеравно мы выбираем угол (задержку) из таблицы по "этому" обороту. Хотя и привязываем его ко второй метке. Может расчет от первой до второй метки также перевести оборот и использовать или для коррекции или вообще для выдачи искры.
Т.е. перевести программу "наоборот". На низких оборотах расчет оборота от первой - до второй метки, и соответственно искра. А на оборотах выше Х, переходить на расчет оборота по первой метке и соответственно искре по этому обороту. Вот будет правильно. Т.е. при пуске, хх, и чуть выше искра только от второй метки. Даже пуск будет легче. Не нужно крутить целый оборот, расчитывая оборот.
Если маховик стоит перед первой меткой,крутим - первая, вторая ... и получай искру.
..Это я к тому, что раз перешли к двум меткам , нужно идти дальше ...
Пользую 24.exe.
Спешить не нужно. Это же моя тест версия. Базовая идея. Так и писал. Которую можно или еще подчистить или что то добавить, но не наворачивая. Главная задача была - ослепление по первому импульсу и флэшбэк по первому импульсу, и как ослепить отдельно второй вход. Вроде получилось. Хотя есть еще варианты.
В вашей "правке углов" , еще и привязка к вых порту....
Версию с расчетом метки можно загрузить, вычислить точно длину метки "угол". А потом это число внести в мою программу в R23, и потом скомпилировать с помощью 24.exe.
Надо еще придумать и вписать watchdog от зависания. Ну и может еще ...какая идея придет.
ПС. Вообще, прикидывая.. Идея второй метки в этой программе не решает проблему на хх и чуть выше.
Потому как оборот всеравно расчитывается по первой метке. А он может существенно отличать от реального, т.е. скорости движения маховика от начала расчета (первой метки) к концу расчета (той же первой метки). И всеравно мы выбираем угол (задержку) из таблицы по "этому" обороту. Хотя и привязываем его ко второй метке. Может расчет от первой до второй метки также перевести оборот и использовать или для коррекции или вообще для выдачи искры.
Т.е. перевести программу "наоборот". На низких оборотах расчет оборота от первой - до второй метки, и соответственно искра. А на оборотах выше Х, переходить на расчет оборота по первой метке и соответственно искре по этому обороту. Вот будет правильно. Т.е. при пуске, хх, и чуть выше искра только от второй метки. Даже пуск будет легче. Не нужно крутить целый оборот, расчитывая оборот.
Если маховик стоит перед первой меткой,крутим - первая, вторая ... и получай искру.
..Это я к тому, что раз перешли к двум меткам , нужно идти дальше ...
- Flash.#13
- Держит паяльник хвостом
- Сообщения: 965
- Зарегистрирован: Сб апр 12, 2014 23:46:03
- Откуда: Киев
Re: ФУОЗ на базе AC-CDI
А чем AVR студия не угодила? Четвертая версия вовсе бесплатна на сайте разработчика. По поводу счета искры изначально было два режима: запуск мотора и нормальная работа. Счетчика с кварцем 4МГц меги8 достаточно для обработки скоростей до 460/мин, а ниже происходит переполнение, для чего был введен режим "холостые", хотя фактический большинство малокубатурных моторов на такой скорости заглохли или заводятся стартером, то есть режим "холостые" это когда мотор заглох, и расчеты там идут от значения переполнения "0xFF", что на практике вполне неплохо себя показало. Наращивание разрядности счетчика программно возможно, но неоправданно по отношению к скорости МК. С вводом второй "поздней" метки появилась возможность заводится без первого "раннего" импульса, но есть два пути, либо считать задержку-константу например 5 градусов после импульса, и выдавать искру, и после выхода в нормальные обороты переходить на штатный счет с ранней метки, либо делать полноценную математику таблицы от обоих меток, чтобы МК сам определял какая сейчас лучше подходит для искры. Мне изначально больше нравился второй вариант, ведь у МК есть время для этих расчетов, но ранее Альтиум убедительно объяснял, что если МК будет переключатся между метками в процессе работы, то мы неизменно получим "ступеньку" угла в момент переключения, и это может ощущаться. Альтиум отстаивал первый вариант, заводится с поздней метки, и после выхода в рабочий режим переходить полностью на раннюю. В обоих вариантах есть нюанс, в момент запуска мотора наиболее оптимально использовать расчет математики с таблицы по поздней метке, а не константу в 3-5 градусов, потому что углы на разных моторах разные, и не исключено что в одном желательно сразу давать искру по импульсу, а в другом нужно ждать более 5ти градусов, а грубая константа попросту не сможет это учесть, когда точный счет с таблицы углов(которая и так в памяти МК) полностью решит этот вопрос. Остается открытым вариант работы самого мотора, разрешить ли МК после выхода в рабочие обороты принимать решение об использовании обоих меток для искры, или использовать позднюю метку сугубо для старта.
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
Re: ФУОЗ на базе AC-CDI
Flash.#13
Много слов и я ничего не понял.
1. На малых оборотах, при неравномерном вращении (рывках) конечная расчетная величина оборота , расчитанная по первой метке очень далека от реального (т.е. скорости маховика в момент прохождения первой метки). А задержку на выдачу искры мы берем из таблицы ... и угол искры получается в итоге неправильный.
2. Насчет таблиц и как их заполнять. Тоже дилемма. Например метка 30 и 5 градусов от ВМТ. Но реально импульс приходит раньше и плюс зависит от оборотов (изза индуктивного датчика). Т.е , например на 600 оборотах импульс придет в 6 градусов, а на 1200 уже в 9 градусов. И при том, что это величина не постоянная, а зависит от чувствительности датчика, которые на моторах разные.
3.Что нужно. На оборотах до Х, расчитываем величину оборота от первой до второй метки. И соответсвенно искру. После величины оборотов Х, переходим на расчет задержки на искру по расчету оборота от первых импульсов.
Величина оборотов X перехода , также может подбираться индивидуально.
Сложностей не должно быть. Просто все нужно обмозговать, простую логику математики расчетов и переходов.
4. Так будет правильно. Попробую сам пока, если получится.
Считаем импульсы от 1 до второй метки (т.е. 25 градусов. 360/25=14,4 раза меньше. Не хватит частоты 4мгц? Ну мы же не будем считать при 6000оборотах? ), и сразу или с задержкой выдаем искру соответственно посчитанным импульсам счетчика.
Пс. Почему ваша версия ......не имеет смысла. (разобрался)
Потому, что выдача импульса на искру все равно привязана к расчитанному обороту по первой метке. И от того, что к расчету прибавили, а потом тоже отняли в итоге ничего не изменилось.
Много слов и я ничего не понял.
1. На малых оборотах, при неравномерном вращении (рывках) конечная расчетная величина оборота , расчитанная по первой метке очень далека от реального (т.е. скорости маховика в момент прохождения первой метки). А задержку на выдачу искры мы берем из таблицы ... и угол искры получается в итоге неправильный.
2. Насчет таблиц и как их заполнять. Тоже дилемма. Например метка 30 и 5 градусов от ВМТ. Но реально импульс приходит раньше и плюс зависит от оборотов (изза индуктивного датчика). Т.е , например на 600 оборотах импульс придет в 6 градусов, а на 1200 уже в 9 градусов. И при том, что это величина не постоянная, а зависит от чувствительности датчика, которые на моторах разные.
3.Что нужно. На оборотах до Х, расчитываем величину оборота от первой до второй метки. И соответсвенно искру. После величины оборотов Х, переходим на расчет задержки на искру по расчету оборота от первых импульсов.
Величина оборотов X перехода , также может подбираться индивидуально.
Сложностей не должно быть. Просто все нужно обмозговать, простую логику математики расчетов и переходов.
4. Так будет правильно. Попробую сам пока, если получится.
Считаем импульсы от 1 до второй метки (т.е. 25 градусов. 360/25=14,4 раза меньше. Не хватит частоты 4мгц? Ну мы же не будем считать при 6000оборотах? ), и сразу или с задержкой выдаем искру соответственно посчитанным импульсам счетчика.
Пс. Почему ваша версия ......не имеет смысла. (разобрался)
Потому, что выдача импульса на искру все равно привязана к расчитанному обороту по первой метке. И от того, что к расчету прибавили, а потом тоже отняли в итоге ничего не изменилось.
Re: ФУОЗ на базе AC-CDI
Поэксперементировал...
;=определяем задержку искры=
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 метке.
Идея бредовая, но пока не вижу, как по другому , в этой программе, на малых оборотах привязаться к расчету оборота от первой до второй метки. Чтобы на малых оборотах мотор работал четко только от второй метки.
;=определяем задержку искры=
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
Мне кажется так будет только хуже, как только мотор сможет завестись, у него появится повторяемость и стабильность оборотов, там достаточно много механики и вся она создает инерцию на валу, ну не может поршень вот так резко встать клином, нестабильность существует только при заводке кик-стартером, даже от электро ее нет. По поводу примера, команда умножения 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
asel и автор темы Flash.#13, Вы на стенде все откатывает или на транспорте ? думаю тоже стендик собрать.
При безальтернативном выборе из двух противоположных сущностей обе будут являть собой исключительную х...ю.
- Flash.#13
- Держит паяльник хвостом
- Сообщения: 965
- Зарегистрирован: Сб апр 12, 2014 23:46:03
- Откуда: Киев
Re: ФУОЗ на базе AC-CDI
mikeymause на реальном мото (Lifan 162FMJ, китаец 150куб.,4т) до сих пор стоит версия со второй страницы, одна из самых древних, а 2.0 тестировалась только на стенде и спустя год оказалось что на мото она не работает. Из-за чего сейчас делается исправление версии 2.0
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
- mikeymause
- Первый раз сказал Мяу!
- Сообщения: 28
- Зарегистрирован: Чт фев 11, 2010 04:11:59
- Откуда: Крым
- Контактная информация:
Re: ФУОЗ на базе AC-CDI
все понял, тоже на прошивке с первой или второй страницы. пока все огонь.
При безальтернативном выборе из двух противоположных сущностей обе будут являть собой исключительную х...ю.
Re: ФУОЗ на базе AC-CDI
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. И зачем мне тогда второй импульс, если с него толку ... только "заводить".
стенд очень много чего показывает, чего не увидишь и не поймешь... что с мотором не так. и хочешь еще лучше.
Последняя рабочая , это когда решили проблему "без отдачи". А потом уже перешли на две метки... пока "кривые".
...........................
Переписал еще один "кусок".
Было
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. И зачем мне тогда второй импульс, если с него толку ... только "заводить".


