Страница 31 из 34
hosemarkus
Zillo писал(а):

мож где плесенью поросло


я думаю мхом все-таки Very Happy
ZEvS
А может всетаки в программе ошибка? Двигатель с 36 градусами на холостом ходу заглохнет от удара в обратку... Laughing
Zillo
ZEvS писал(а):

А может всетаки в программе ошибка? Двигатель с 36 градусами на холостом ходу заглохнет от удара в обратку... Laughing


не... ехал-то я на ДПКВ и по пути мерил угол, который выдаёт трамблёр.
я сначала тоже думал, что косяк в программе. но угол всё-таки падал до 24 при полной тапке, т.е. вакуумник видимо работал.
а потом и центробежник видимо "отпустило" к концу поездки. в общем не разберёшь - не поймёшь Wink.
hosemarkus
ZEvS писал(а):

А может всетаки в программе ошибка? Двигатель с 36 градусами на холостом ходу заглохнет от удара в обратку...


у меня регулярно догревается при 36-ти, ни хвига, не глохнет, и даже не дергается
.:LeoN:.
ZEvS писал(а):

А может всетаки в программе ошибка? Двигатель с 36 градусами на холостом ходу заглохнет от удара в обратку... Laughing


Bravo Bravo Bravo
Zillo, ты не обижайся, пожалуйста, но графики (логи) твои на предыдущей странице - это погода на марсе... Не выдавай желаемое за действительное. Решил снять характеристику трамблера - так подойди к этому граммотно и реализуй это граммотно, а не "P.S. на резкие всплески внимания не обращать, так как это означает лишь, что для данных условий УОЗ не был достаточно точно получен" и "У меня, кстати в схеме как-раз используется не каптуре-модуль, а просто прерывание. Почему? ну, знаний тогда было маловато, потому использовал то, что мне было более понятно. естессно использование каптуре-модулей ИМХО более правильно, но пока переделывать наверное не буду.
считаю, что при скорости кристалла 8Мгц и частоте таймера 125 кГц (у меня), таймер вполне можно анализировать и в обычном прерывании"...
Zillo
to .:LeoN:.
немного недогнал смысл того что ты меня процитировал с приставкой "не обижайся".

я и сам знаю про погоду на марсе. перед этим я честно спросил совета как снять логи. в ответ было только "нафига да зачем". я сделал пробное снятие логов, чтобы опять таки послушать конструктивные советы.
Совет "делай как надо" я и сам знаю. а как надо? Very Happy
те графики что были выложены это не конечный вариант. и я сказал, что буду снимать заново с учётом ошибок и пожеланий.

выделенные пункты комментировать не буду, т.к. не знаю зачем мне комментировать себя же...
.:LeoN:.
Zillo писал(а):

я и сам знаю про погоду на марсе. перед этим я честно спросил совета как снять логи. в ответ было только "нафига да зачем". я сделал пробное снятие логов, чтобы опять таки послушать конструктивные советы.
Совет "делай как надо" я и сам знаю. а как надо? Very Happy


Совет, тем более конструктивный, тем более "как надо" был дан... Слушающий, но слышащий - да услышит!
Zillo
хотя, немного поясню:
"УОЗ не был достаточно получен" - в процессе измерения УОЗ используется фильтрация по среднеарифметическому от предыдущего измеренного значения для этой точки и текущего. в результате если изначально в таблице было значение 0, а на самом деле в этой точке нужно то чтобы оно достигло значения 50. этого значения оно будет достигать в течении нескольких итераций
(0+50) / 2 = 25
(25+50)/2 = 37
(37+50)/2 = 43
(43+50)/2=46
(46+50)/2=48
(48+50)/2=49
т.е. фактически из самого крайнего положения точка заёмёт своё нужное положение итераций через 6-8. в то же время случайные кратковременные отклонения будут нивелироваться.
ну вот такой метод фильтрации мне больше понравился особенно в части требования к объёму памяти.
потому и фраза "УОЗ не был достаточно точно измерен". если на данную точку было всего три итерации то в .той точке будет всплеск до 43, а не до 50 как в окружающих. вот оттуда и всплески.

"Знаний тогда было маловато" - знаний об архитектуре конкретно этого МК.
На Си для обычных компов я програмлю давно. а начинал ещё с ДОСа и программируемых калькуляторов, так что немного понимаю суть процессов протекающих в ядре при исполнении того или иного кода.

"Таймер можно анализировать и в обычном прерывании" - а почему нет? возникает прерывание по изменению уровня. первой командой в прерывании будет запоминание текущего показания таймера и его обнуления для измерения следующего интервала. всё. дальше оперируем тем значением, что запомнили в начале прерывания.
частота кристалла 8 Мгц, что как обещает производитель AVR примерно равно 8 млн элементарных операций частота таймера = 125 кГц. т.е. на один тик таймера 64 тика кристалла. как раз хватит на то, чтобы запомнить то что в данный момент натикало у таймера (да за это время можно пару целочисленных умножений сделать). Да даже если и не хватит то будет сбвижка на 1 дополнительный тик таймера. но эта сдвижка будет статична. каждый раз одна и та же.

Искра подаётся естесствено по прерыванию от будильника таймера. Я не такой извращенец чтобы это как-то по другому делать ;-)

один минус в моём способе измерения логов есть. я измеряю с точностью до 3-х градусов. почему? потому что вход с трамблёра у меня временно заведён не на ногу с прерыванием, а на обычную ногу, которую я в будущем планировал использовать как сигнал с концевика карбюратора (об отпускании педали газа).
поэтому угол с трамблёра измеряется довольно тупо, а именно, при возникновении прерывания от ДПКВ, анализируется сигнал с ДХ и если он упал в ноль, значит трамблёр уже выдал свою "искру" и я фактически запоминаю номер зуба после которого это произошло.
Для повышения точности, прерывание от ДПКВ возникает два раза (при прохождении зуба и прохождении впадины), т.е. теоретически через каждые 3 градуса.
сам знаю что это хреновый метод, а потому может в ближайшие выходные перевешу сигнал с ДХ на ногу с прерыванием и буду засекать не только номер зуба, но и интервал между ними.

вот и вся арифметика пупкина с картинками.

P.S. я не обижаюсь Very Happy , просто решил пояснить.
ZEvS
Наверное здесь больше подойдет КИХ-фильтрация. 8 весовых коэфициентов будет достаточно.
ZEvS
Обновил свой сайт...
.:LeoN:.
Zillo писал(а):

хотя, немного поясню:
"УОЗ не был достаточно получен" - в процессе измерения УОЗ используется фильтрация по среднеарифметическому от предыдущего измеренного значения для этой точки и текущего. в результате если изначально в таблице было значение 0, а на самом деле в этой точке нужно то чтобы оно достигло значения 50. этого значения оно будет достигать в течении нескольких итераций
(0+50) / 2 = 25
(25+50)/2 = 37
(37+50)/2 = 43
(43+50)/2=46
(46+50)/2=48
(48+50)/2=49
т.е. фактически из самого крайнего положения точка заёмёт своё нужное положение итераций через 6-8. в то же время случайные кратковременные отклонения будут нивелироваться.
ну вот такой метод фильтрации мне больше понравился особенно в части требования к объёму памяти.
потому и фраза "УОЗ не был достаточно точно измерен". если на данную точку было всего три итерации то в .той точке будет всплеск до 43, а не до 50 как в окружающих. вот оттуда и всплески.


Если уж после фильтрации такие "Гималаи", то каковы исходные данные до фильтра... Surprised Что говорит о чем?

Zillo писал(а):

"Таймер можно анализировать и в обычном прерывании" - а почему нет? возникает прерывание по изменению уровня. первой командой в прерывании будет запоминание текущего показания таймера и его обнуления для измерения следующего интервала. всё. дальше оперируем тем значением, что запомнили в начале прерывания.
частота кристалла 8 Мгц, что как обещает производитель AVR примерно равно 8 млн элементарных операций частота таймера = 125 кГц. т.е. на один тик таймера 64 тика кристалла. как раз хватит на то, чтобы запомнить то что в данный момент натикало у таймера (да за это время можно пару целочисленных умножений сделать). Да даже если и не хватит то будет сбвижка на 1 дополнительный тик таймера. но эта сдвижка будет статична. каждый раз одна и та же.


Ошибаешься. Частота таймера и сигнал с датчика не синхронизированны, то есть сигнал с датчика может прийти в любой из 64 тиков кристалла, приходящихся на тик таймера.
Далее, латентность прерывания... Обнуление (!!!) таймера...

Чем и хорош Capture-модуль: таймер запускаешь в режиме Free-Run без прерываний по переполнению, по приходу сигнала с датчика модуль запоминает мгновенное (!!!) значение, "слепок" таймера, причем аппаратно с максимальной точностью! А уже в прерывании от него из текущего слепка вычитаешь предыдущий слепок и получаешь точный (с разрешающей способностью частоты таймера) измеренный временной интервал!!! Без обнуления таймера и всяких латентностей.
А для повышения точности частоту таймера следует выбирать как можно большей, в идеале - частота камушка.

Zillo писал(а):

Для повышения точности, прерывание от ДПКВ возникает два раза (при прохождении зуба и прохождении впадины), т.е. теоретически через каждые 3 градуса.


Еще раз напомню, что при работе по обоим фронтам с датчика разрешающая способность НЕ 3 градуса! Очень хотелось бы этого, но в действительности это не так!
ZEvS
.:LeoN:. писал(а):

Без обнуления таймера и всяких латентностей



Как без обнуления? Обнуление там надо делать в прерывании сразу после записи текущего (моментального) значения в регистр ICR. Для счета следующего интервала... Поэтому я не вижу преимуществ перед простым прерыванием (как сейчас у Вас реализовано), ведь обработчики одинаковые.

.:LeoN:. писал(а):

А для повышения точности частоту таймера следует выбирать как можно большей, в идеале - частота камушка.



+1. Только стоит учесть медленное вращение и обработку события по переполнению, например УОЗ в 0 по фронту нулевого зуба - без счетчиков вообще.
ZEvS
.:LeoN:. писал(а):

Еще раз напомню, что при работе по обоим фронтам с датчика разрешающая способность НЕ 3 градуса! Очень хотелось бы этого, но в действительности это не так!



Это ничего! ВременнАя интерполяция себя оправдывает! Drinks or Beer
Zillo
1. если делать очень большую частоту таймера и без прерывания переполнения, то как мы определим сколько он кругов намотал, например при низкой частоте вращения?
2. частоту 125кГц я взял за основу ещё когда синхронизировался от ДХ. Там интервалы очень большие и не хотелось слишком часто нарываться на переполнение. С переходом на ДПКВ, прикинул и решил не менять пока частоту. Точность измерения частоты около точки 1000 об/мин составляет +- 8 об/мин, на частоте 6000 ---> +-300 об/мин. На такой частоте графики УОЗ в основном пологие. потому большой разницы нет в погрешности 30 об/мин или 300.
3. зачем нужна очень высокая частота таймера? для очень точного измерения скорости? для чего нам очень точно измерять скорость? чтобы очень точно интерполировать угол по готовым таблицам? Там где графики УОЗ достаточно крутые , обороты и так достаточно точно меряются.
На точность отсчёта углов это влияет мало. В моей системе точность отсчёта углов составляет 0.375 градуса ( т.е. 1/16 от интервала между зубами). Такая точность достижима на низких частотах вращения. на предельных частотах точность будет в 1.5-2 раза ниже (иногда).
Zillo
.:LeoN:. писал(а):

Ошибаешься. Частота таймера и сигнал с датчика не синхронизированны, то есть сигнал с датчика может прийти в любой из 64 тиков кристалла, приходящихся на тик таймера.


и... в крайнем слчае будет ошибка на 1 тик таймера (это если прерывание возникнет на 63-м тике кристалла). тогда да. каптуре модуль покажет одно значение таймера, а обычное прерывание поймает 1 больше.
.:LeoN:. писал(а):

Если уж после фильтрации такие "Гималаи", то каковы исходные данные до фильтра... Что говорит о чем?


о малом времени "накатки" логов наверное Very Happy (о чём я сразу честно предупредил). Ну и если уж там не ровные 3 градуса между фронтами, то и отсюда тоже.


Никто не спорит. Capture-модуль вещь хорошая в плане разгрузки ресурсов процессора, освобождения важных ножек и повышения точности. но сваливать на прерывание по фронту ВСЕХ собак - это неправильно. Если он и даёт погрешность, то не настолько огромную, чтобы её заметить.
Zillo
Вчера, кстати по-мучал немного трамблёр. оказалось что 36 градусов он выдаёт только при прогреве (обороты выше 1500). при таких оборотах видимо вытягивается первая пружинка плюс вакуум-регулятор дополнительно завышает угол (проверял на прогреве - мерил с включённым вакуумником и без него. без него угол = 24).

Когда оно прогреется, обороты около 1000, тогда и угол 9-12. отключение вакуумника в этот момент уже не влияет, т.к. на прогретых холостых дроссельная заслонка перекрывает дырку отбора вакуума для регулятора.

провёл кстати ещё один експеримент. стянул грузики проволокой и отключил вакуум-регулятор. получил угол ПЛЮС 9 градусов. (т.е. позже нуля)
ZEvS
Это все по стробоскопу?
Zillo
ZEvS писал(а):

Это все по стробоскопу?


Нет. это я мерил своей схемой.
может конечно у меня такой трамблёр раздолбаный... ПЕРВАЯ (которая слабая) пружинка должна иметь люфт? т.е. свободный ход? или она должна быть с небольшим преднатягом?
ZEvS
Zillo писал(а):

ZEvS писал(а):

Это все по стробоскопу?


Нет. это я мерил своей схемой.
может конечно у меня такой трамблёр раздолбаный... ПЕРВАЯ (которая слабая) пружинка должна иметь люфт? т.е. свободный ход? или она должна быть с небольшим преднатягом?



А относительно чего велись замеры? То есть что принимала система за начало отчета?

Пружинка должна иметь люфт. Вступать в действие она должна на 26 градусах (по колену) отклонения бегунка. (см. график на моем сайте).
Именно вступив в действие она уменьшает скорость наростания угла от оборотов, и именно от ее люфта зависит точка излома графика.
Zillo
Мы про одну и ту же пружинку говорим? там две пружинки. условно назовём их первая и вторая (по порядку вступления их в действия). то что у второй пружинки должен быть люфт это понятно.
но у меня люфт у обоих пружинок.

по поводу точки отсчёта. насколько мне известно, при работе от зубчатого шкива, моментом ВМТ (т.е. 0 градусов) считается прохождение 20-го и 50-го зуба мимо ДПКВ (зубы считаем с 1).
ZEvS
Zillo писал(а):

но у меня люфт у обоих пружинок.



У первой пружинки люфта быть не должно. Ушки должны быть так настроены, что при крайнем положении (грузики сведены), ее витки полностью стянуты, но и люфта нет. Но стоит чуть-чуть повернуть бегунок и пружинка уже начинает воспрепятствовать этому повороту.
И при установке трамблера в 0, на ХХ получается 7 гр...
ZEvS
Zillo писал(а):

по поводу точки отсчёта. насколько мне известно, при работе от зубчатого шкива, моментом ВМТ (т.е. 0 градусов) считается прохождение 20-го и 50-го зуба мимо ДПКВ (зубы считаем с 1).



А зачем ковыряться с трамблером, если шкивак зубчатый установлен? Surprised
Zillo
ZEvS писал(а):

А зачем ковыряться с трамблером, если шкивак зубчатый установлен? Surprised


э-э-э... ну я же по-мойму говорил, что хочу снять характеристики своего трамблёра. Для дома для семьи так сказать.
ZEvS
Трамблер - ИМХО плохая штука. Вот уже 30 лет прошло, а все трамблер, пружинки, грузики... ЭХ...
Rezo
ZEvS писал(а):

У первой пружинки люфта быть не должно. Ушки должны быть так настроены, что при крайнем положении (грузики сведены), ее витки полностью стянуты, но и люфта нет. Но стоит чуть-чуть повернуть бегунок и пружинка уже начинает воспрепятствовать этому повороту.
И при установке трамблера в 0, на ХХ получается 7 гр...

Добавив уточню!
ПЕрвая пружинка должна начинать срабатывать только при повышении холостых оборотов.
На нормированных холостых она ещё вытягиваться не должна!
Это и есть (условно) исходная жёсткость 1-й пружинки...
Новая тема Ответить на тему
Показать сообщения:
Страница 31 из 34
Перейти:
Информация по иконкам и возможностям

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы можете вкладывать файлы
Вы можете скачивать файлы