[uquote="asel",url="/forum/viewtopic.php?p=3921211#p3921211"]..При чем тут "колеса".:[/uquote] При том, что дорога сглаживает ваши колебания скорости. Даже если заглохнете, то можете завестись на скорости... Пардон, вы же водномоторник - вас не касается.. [uquote="asel",url="/forum/viewtopic.php?p=3921211#p3921211"]... Но в итоге, она получилась только для легкого пуска.[/uquote] Ну да, у меня свыше 2000 переходит на 1-ую.. [uquote="asel",url="/forum/viewtopic.php?p=3921211#p3921211"]...Меня интересует стабильность оборотов от 1100 до 1500. ...[/uquote] Там надо гистерезис дорабатывать - идея есть, но руки пока не доходят. [uquote="asel",url="/forum/viewtopic.php?p=3921211#p3921211"]...Микропроцессор всегда расчитывает величину оборота от первой (65градусов) до второй (40 градусов ) метки.[/uquote]Полностью код переделывать...[uquote="asel",url="/forum/viewtopic.php?p=3921211#p3921211"]... Насколько точно будут ступеньки-шаги оборотов в графике. Не будет ли наложения. ..[/uquote]Сюрреализм какой-то.. Как они могут наложиться... Можете все 32 точки свалить на низА, а можете равномерно распределить...[uquote="asel",url="/forum/viewtopic.php?p=3921211#p3921211"]...Может напишешь формулу.. второй метки..[/uquote] Вопроса не понял.. Формулу 2-ой метки чего? Зависимости чего от чего? Если по оборотам - то делите длину метки (в дискретах, у меня-21)на 512 и умножаете на то, что счётчик вам насчитал за оборот. Получаете количество импульсов, которое он вам выдаст за время прохождения длины метки (между 1 и2-ой перерывчик небольшой Более понятней, сначала разделить на 512, а потом умножить на длину метки... За пол оборота насчитывается 256 дискрет , за оборот, соответственно,512...Формулы в программе на 2-ую метку не существует... Есть длина метки , забитая константой. С ней идёт сравнение... Все углы подготовлены зараннее в таблице, чтобы МК не занимался дурной работой перевода мксек в угол, а потом обратно... Думайте в долях, %, а не в мксек.
asel.В графе обороты ставите 1000 об(угол 12 градусов или какой у вас на холостом ходе),а ниже 1500 об и в пределах этих значений будет одинаковый уоз.Да и вы холостой ход записываете в 5-6 ячейках,а не в двух ячейках.
Последний раз редактировалось fcftdbx Пн ноя 09, 2020 18:01:23, всего редактировалось 1 раз.
1. В расчете первый... ;расчет на "запаздывание" mov R16,R9 ;сохраним регистры mov R17,R10 ;счетчика Зачем? Если дальше нет никаких манипуляций с R9 и R10. Это лишнее 2. Постараюсь подробно, на пальцах. Потому как надоело крутить-вертеть программу. Поехали.. 1. Дат1. Читаем tcnt1h запоминаем в R9. Обнуляем счетчик. 2.Из R9 получаем R21 и по R21 из таблицы берем задержку и ее в R25. 3..Расчет по первому. Умножаем-делим R25 и число записываем в счетчик ... на сравнение, на искру. 4. Сраниваем R25 c R23 (длина метки) и ждем датчик2. 5.Датчик2. Читаем tcnt1h. Делим умножаем на длину метки и записываем опять в R9 И вот дальше интересно. 6.Расчет по второй. Опять в расчете участвует R25. Это значение взято по первому импульсу, или уже из расчета по второму импульсу (R9 в п.5). ПС. Что я сделал. Сдвинул шторку, чтобы вторая метка была на мах. Уоз. Просто убрал в п.1 запоминание в R9, п.2, п.3, п.4. Т.е. хочу получить расчет величины оборота по длине шторки. Ну и далее расчет и искра по метке2. Пока на стенде не проверял. И вопрос в посте был.. Т.к. длина шторки 25 градусов ,нарушится и на сколько дискретизация по 0.7 градуса. Переводя число импульсов от второй метки tcnt1h в R9, потом в R21. Т.е. чисто математически. Потому что на стенде осциллографом тяжело проверить. (Хотя уже придумал. Записать в таблицу значения углов ступеньками , например 0, 30. Чтобы было четко видно, что с каждым оборотом (из табличного) импульс искры резко сдвигается. )
[/b]R9,R10 служат только для хранения оборотов, если захотите дописать программу и вам нужно будет дописать программу, получите проблемы. Да и незачем эти регистры превращать во временные - будет путаница..
Значение R25 обновляется в каждом главном цикле контроллера, т.е. в новом цикле контроллера оно может измениться. (в расчёте по Д2). И вот тут, про которое вы говорите "самое интересное". Когда прошёл Д1 и посчитал, что надо работать по Д2 - пошли круги программы в ожидании Д2 (Д2 ещё далеко). И вдруг возникла ситуация, что надо всё-таки по Д1, а искра-то пропущена, поэтому контроллер выдаёт команду на немедленную подачу искры.. Это приводит к дёрганьям и рывкам угла. Об этой проблеме писал Альтиум ещё 2 года назад. Флеш тогда поставил гистерезис на работу меток - но это только размазало, но не решило проблему. Флеш писал, что надо ставить ещё одно условие, но вы , видимо, не совсем это поняли. Проблема перехода меток решается несколькими способами. 1. Первый вариант вам подсказалfcftdbx. Суть - задрать угол, чтобы работать по первой метке на холостых. Я лично этот вариант отметаю, хоть и простой. 2. Второй вариант- увеличить гистерезис в программе до 2-3 градусов. Вариант тоже достаточно простой, но он только прорежает перескоки, но не убирает их. 3.Третий вариант - поставить условие какое-то, Флеш упоминал, сути не понял. Спросите у него самого. 4. Четвёртый вариант - при первом же определении, что нужно работать по Д2, запоминать текущие значения счётчика в ОЗУ, а при выборке оборотов ставить условие - если работаем по Д2, то извлекаем из памяти. Вариант неплохой, но я двигаюсь к варианту №5. 5. Пятый вариант - предложил Арвуд. Показатель заведённого мотора - это обороты выше 1000 (самые упоротые могут крутить лапку и до 1000, стартер крутит - 500-600). Холостые - не ниже 1200. Ставите условие на входе математики - если обороты ниже 1000 - работаем по 2-ой метке, выше 1000 - по 1-ой. Вариант легко реализуем. Но пока времени нет, занимаюсь другим. Учтите, что я не программист и мне эти коды даются нелегко...
madi044 Это вы не все поняли. 1. Если Фуоз работает по штатным меткам (заводским) ... первой и второй. То это понятно? Т.е. танцуейте .. Объяснял популярно почему меня эти танцы не устраивают 2. Итого. Если есть возможность и руки, делаем свои метки . Выше мах. УОЗ. Почему? Потому что родные метки - это для простого блока зажигания CDI. У нас есть компутер, и нужно использовать его. Суть. Считаем величину оборота по "шторке" (или как ее назвать по другому. И какая длина ее, у кого как получилась. Спасибо Флэшу, что придумал как это считать) в аккурат перед меткой мах. УОЗ. И далее - оборот, задержка , искра. И ... никаких "переходов" от метки к метке.. ПС. Вся идея (второй метки) пошла от болгарина, что ему сломало ногу при пуске. Потом я ее .... (спасибо Флэш). Возможно, этот вариант программы и устраивает кого то на мото. Но меня нет. И как оказалось, ... надо двигаться дальше. Ни как не соберу стенд. ПС2. Пока в своей ветке...
Еще нашел в программе Флэша.. Крутил-вертел изменял в своей программе. Начались глюки. Нет перехода на первую метку. То перейдет то импульс на искру шире... Суть. Раньше было так... ldi R16, 0b00010100 out TIMSK, R16 ;настройки 16-бит счетчика В самой последней версии стало так.. ldi R16, 0b10010100 out TIMSK, R16 ;прерывания счетчика Зачем? Поменял, как в последней версии.. "Наворотил" .. Запустил и ...глюки. Теперь не могу понять. Запутался. Или эта "единичка" убивает.. Опять нужно все сначала. Суть. Ослепления, задержки, переход между метками и т.п и ... включить DC-Dc в пике зарядки конденсатора от катушки, привязав к периоду величины оборота.
[uquote="asel",url="/forum/viewtopic.php?p=3922705#p3922705"]... Или эта "единичка" убивает....[/uquote] Разрешение прерывания по совпадению счётчика.. Нате вам, вы ж хотели..
Осилил. На основе "математики" Флэш. Программа базовая. Работает. Суть. Посчитать точнее реальную (мгновенное значение) величину оборота к моменту искры. Итого. Шторка от 65 до 40 градусов. Длину вписываем в R23. В мейн ждем вторую метку. Если была первая метка, считаем величину оборота от 65 до 40 градусов. Берем задержку из таблицы, и математика Флэш, и выдаем искру. На фото 1500об. Красное - датчик. Желтое - искра (далеко от второй метки..) 1. Насколько реальные цифры таблицы и искры совпадают? (Считал по осциллографу, ...) 2. Какие погрешности на высоких оборотах? 3. Идея есть. Проверить реально можно на моторе, просто сдвинув шторку фотодатчика. 4. угол-график-задержка на высоких оборотах пока не осилил проверить. Хотя возможно, на высоких оборотах это и не имеет большого значения.
С согласия Флеша привожу некоторые изменения программы. 1 Флеш прислал мне фрагмент кода для выборки угла из таблиц. Суть сводится к тому, чтобы убрать цикл сверки значений оборотов с табличными. Поскольку месяц назад были найдены директивы, упрощающие работу МК с программной областью (хранение таблиц там), это открыло новые горизонты. Теперь стало доступно прямое и непосредственное обращение к ячейкам памяти (без перебора значений), как у Шкильменского. Это требует 256 ячеек памяти. Чтобы в таблицах углов не размазывать 32 точки на 256 ячеек и сэкономить память, Флеш предложил в этой таблице на 256 ячеек указывать № точки (смещение) таблицы с углами. Переключатель таблиц при этом не отменяется. Угол хранится, как и раньше, в самой ячейке. Данный алгоритм существенно ускоряет работу МК по выборке оборотов, особенно на низах, а кроме того, экономит память, с учётом будущих доработок по вакууму. Внедрил этот код в программу, работает, вопросов нет. 2. Убрал наконец-таки плясание угла в момент смены меток. Как писал выше, поставил условие в математике, если обороты ниже 1000 (в Конфигураторе можно изменить), идёт, как и раньше, по 2-ой метке. А если выше 1000-принудительная работа только по 1-ой метке. 1000 - это те обороты, которые ниже холостых, но выше, чем обороты от лапки или стартера, т.е. показатель заведённого мотора. В программе теперь становится лишним проверка Множителя с Длиной метки, тем не менее это условие не убирал, так как кто-нибудь по ошибке может влепить в Конфигураторе точку оборотов, скажем 5000. У кого стоит светодиод, он теперь особо и не нужен- завёлся мотор - светодиод загорелся... От медленного проворачивания лапки, он помаргивает... 3. Доработал Конфигуратор, теперь в настройки выведены точка смены меток (по оборотам), длительность искры и флайбека. Отсечку (180)ПОКА в Конфигураторе не забить (связано с графическим отображением), может потом подправлю. 4. В связи с существенными изменениями, данная программа абсолютно несовместима ни с Программой правки углов Флеша, ни с моими старыми версиями Конфигуратора, который теперь пришлось полностью переписать.
КАКИЕ ОЩУЩЕНИЯ ОТ ИЗМЕНЕНИЙ? Для проверки залил паршивку с самым неоптимальным режимом- с холостым ходом в районе смены меток и плато по углу. На дворе +4, завёлся сразу, без закрытия заслонки и со стартера. Порадовало, что холостой ход устойчив, через 1 минуту, сбросил его до 1000, работает устойчиво. Вернулся на старую прогу - дефект повторился. Проверил по UART отработку остальных углов (плясание меток при смене, UART не видит- таковы реалии..) - всё нормально. Проверил по стробоскопу - расколбас устранился. Теперь углы на низах можно опустить и не делать плато на холостых...
Графики взял, представленные fcftdbx от 27.08.2020, за что ему большое спасибо. Он там графиками конкретно занимался. Мопед у него, вроде, Альфа 110сс. Только плато в районе холостых можно в ступеньку превратить. 1-ая таблица - тяговая, 2-я-скоростная, 3-я таблица - аналоговый ФУОЗ (из поста 1). Но углы лучше всё-таки подправить, заодно и свою длину метки. Если fcftdbx не перешёл окончательно на Ардуино, посмотрим, что скажет Испытатель... Инструкции по изменениям в Ворде, как пользоваться - на рабочем листе Конфигуратора (разрешить выполнение макросов).. Если заинтересовало, пробуйте, отписывайтесь... Asel, вероятно, будет первым...
Ну так, вроде всё, можно двигаться дальше, к корректору угла под нагрузкой... Прийдёт господин Холл, посмотрим... Операционник там по-любому будет, надо убирать постоянную составляющую и подгонять коэффициент усиления... Радует, что настройку входного сигнала можно будет выполнить даже при выключенном моторе.. Пока так...
madi044.У меня двигатель 72 куба как у тебя,если нужны осциллограммы,то я в игре,по поводу на ардуино,то запустил и покатался и скажу что немного поинтереснее, но с датчиком холла.
Ну раз 72сс, так значит лучше... Я уже привык к проге Флеша, хорошо знаю её, тем более не вижу причин, чтобы там нельзя было что-то стоящее, именно необходимое, добавить... Ресурсы позволяют.. Честно говоря, мне там задержка 3 град не понравилась... У нас частота в 4 раза ниже и задержка всего 1 град.. ФУОЗ должен искру формировать, а остальное - отключаемая опция... Так считаю.
Осциллы, спасибо, пока не надо... Если вакуум на основе ДАДа будешь делать, тебе потребуются... Для вакуум-корректора же осциллы не нужны абсолютно.. Не хочу переделок, поэтому остаюсь на стандарте - коней на переправе не меняю..
[uquote="asel",url="/forum/viewtopic.php?p=3923676#p3923676"]...1. Насколько реальные цифры таблицы и искры совпадают? (Считал по осциллографу, ...) 2. Какие погрешности на высоких оборотах?....[/uquote] посчитайте по страдоскопу..
[uquote="madi044",url="/forum/viewtopic.php?p=3923832#p3923832"][uquote="asel",url="/forum/viewtopic.php?p=3923676#p3923676"]...1. Насколько реальные цифры таблицы и искры совпадают? (Считал по осциллографу, ...) 2. Какие погрешности на высоких оборотах?....[/uquote] посчитайте по страдоскопу..[/uquote] Отработанная программа, все четко , со всеми ослеплениями, переходами по меткам и тп. в "той" ветке. Паяем по ней.
То что выложил выше.... Это идея, которая имеет место жить. И можно продолжать... Осциллоскоп точнее. Моторчик, шторка (или индукт. датчик) или фотодатчик. Но .... на высоких оборотах аж шкаф трясется. Сейчас привез тиски, попробую зажать моторчик в тиски. Теоретически "оно" заработало. Далее можно в прогу добавить тестовые точки для тестирования и т.д. Суть. У вас переход (например) при 1000 на первую метку. И оборот считается от первой до первой метки. Т.е. в итоге на малых оборотах получим неправильную величину для расчета Итого. То что выложил... Считаем оборот (импульсы) перед расчетом. Но естественно время измерения мало. И насколько в этом погрешность и точность? Ну, импульсы то посчитали. А вот потом умножаем, сдвигаем, и в R9, для выбора задержки из таблицы... Насколько влияет это? А если длина метки чуть неправильно вписана в R23? Т.е. может изменить математику расчетов. Просто , что посчитали , умножили на длину метки, и на выбор значения из таблицы. А уже потом, при расчете задержки на искру производить расчеты. Вот так сумбурно.... ПС. То что вы ваяете сейчас, ... из пустого в порожнее, быстрее или медленнее. Суть одна, арифметика та же . Мне не интересно.
[uquote="madi044",url="/forum/viewtopic.php?p=3923865#p3923865"][uquote="asel",url="/forum/viewtopic.php?p=3923856#p3923856"]...ПС. То что вы ваяете сейчас, ... из пустого в порожнее, быстрее или медленнее. Суть одна, арифметика та же . Мне не интересно.[/uquote]Результат один, а методы и арихметика разные... Вон товарищи применяют трёхбайтные счётчики, умножают миллионы на миллионы, потом делят... А в результате надо получить 1 байт.. Здесь по- другому..
И да, я выкладываю не для вас, а на форум.. Это 2 большие разницы. И ваше ничем не подкреплённое мнение мне тоже как-то... по барабану.. .[/uquote] В программе Флэш заложено, что ниже второй метки считает из расчета оборота от первой до второй метки. Аллес. Если вы хотите, то делайте переход под себя. Но только под себя. У меня универсал. И четко все по дребезгу и ослеплениям, и вкл выкл DC и т.п. (Тапки можно бросать) Завтра выложу осциллограммы (для шоу), как происходит переход по второй метке. ПС. Хочу "добить" проект до совершенства (в своей ветке. там медленно... идем по шагам) и ... перейти на СЕКУ. Там есть андроид-телефон!!!, все датчики на входе, но .... нет нормальной обработки входа от датчика (и на Си). ПС2. Хотелось бы услышать мнение Флэш (он математик) по поводу проги, для расчета оборота "между первой и второй меткой). Прога выше в посте.
В конфигураторе ставите 6000 - схема будет работать в старом варианте, всё предусмотрено...
Добавлено after 13 minutes 25 seconds: [uquote="asel",url="/forum/viewtopic.php?p=3923877#p3923877"]..В программе Флэш заложено, что ниже второй метки считает из расчета оборота от первой до второй метки...[/uquote] Это абсолютно не так.
[uquote="madi044",url="/forum/viewtopic.php?p=3923884#p3923884"]В конфигураторе ставите 6000 - схема будет работать в старом варианте, всё предусмотрено...
Добавлено after 13 minutes 25 seconds: [uquote="asel",url="/forum/viewtopic.php?p=3923877#p3923877"]..В программе Флэш заложено, что ниже второй метки считает из расчета оборота от первой до второй метки...[/uquote] Это абсолютно не так.[/uquote] Если вы хотите "считать искру" ниже второй метки по оборотам первой метки, это ваши личные проблемы. И при чем вообще ваш мопед, завелся он в -20 или нет. Поставьте термо вместо резистора, он вам опустит Уоз. ПС. Фуоз это - вычисление правильно оборота, перед расчетом по обороту Уоз. И далее изменение этого Уоз в зависимости от датчиков (любых, или которые есть, или можно поставить). Все. (Пшыкнуть топлива через инжектор - это другая тема) Для того чтобы в итоге построить правильный график Уоз, нужно видеть этот график в движении (если много датчиков) и ... чем измерять правильность , жо? У меня на новом авто, фирма, поменяла прошивку три раза за три года. Вы умнее?
[uquote="asel",url="/forum/viewtopic.php?p=3923910#p3923910"]... завелся он в -20 или нет. ... У меня на новом авто, фирма, поменяла прошивку три раза за три года. Вы умнее? [/uquote] Вам это даже теоретически недостижимо. Или у вас ледокол? Авто причём до темы? Прекратите ерунду писать.. Есть личка..
madi044 Переходы - переходы. Все работает четко если все правильно. Суть. (Осциллограф - это первый прибор) Считаем величину метки в автомате = 28. Пишем в регистр R23 , 40. Т.е. длина метки 28градусов. Запускаем стенд. (фоток не будет, чтобы не засорять..)Измеряем угол при пуске -500, 460, и ниже по осциллографу. УОЗ уходит в -3.5градусов или даже в -6.5 (если длина метки вписана (измерена) неправильно, хотя по таблице вписано 1градус. Измеряем , по осцилографу, длину метки - 30.1 градуса (Естественно, после всех преобразований, получается УОЗ глубоко в минусе) ПС. Это одна из причин, что длину метки нужно вписывать (измерять) правильно. Итого. Ищем причину. Измеряем длину метки при 600об , она равна 31градус. Измеряем длину метки при 1200об, она равна 28,7 (т.е. то что посчитала программа). Суть. На фото 200. Это фотодатчик Ардуино. Красным - на выходе датчика, и на входе МК. Желтым - что на фотодиоде. Проблема. Паралельно фотодиоду стоит конденсатор. И в итоге получаем - при увеличении оборотов длина шторка уменьшается. ПС2. 1. Доработаем фотоардуино, выпаяв конденсатор, или уменьшим его, и резистор в цепи фотодиода уменьшим , который 10ком. Проверим. И Антидребезг обязательно программно. 2. Никаких оптронов на входе. При индуктивном датчике, применять схему входа как на первой странице темы (китай сди). 3. Конденсаторы применять очень осторожно, и малой емкости, даже на входе МК. Разрядится конденсатор через фотодиод, или транзистор, ... а вот заряжаться будет через резистор (в ардуино 10ком). Фото 201. Фронт на входе МК. Тоже нужно проверить откуда это ....