Turok писал(а):
Стоп ! Получается, что и файл OP_Z разный для версий 4 и 16 МГц Если это так, то в этом то вся и проблемма моя не соответсвия заложенных графиков и получаемым углам в итоге ...
Нет. Не разная. Просто алгоритм пересчёта углов в задержки для 4 и 16 МГц разный - поправка на "сорость".
Turok писал(а):
А что если методом научного тыка, т.е. ставим в 16 графиках единый УОЗ, смотрим, потом меняем значение и снова смотрим ...
Научный тык, в данном случае вряд ли поможет т.к. его результаты очень неточны. А это не есть хорошо.
Давайте подключать коллективный разум, у кого есть, пусть поможет калькоулятором . Где там алгоритм был, продублируйте шоб "на виду" был.Бармалей_GMN писал(а):Сам себе думаю, что графики разные. Кроме того, у меня в настройках (ДАД, ХХ, НАклон) в прошивку забиты на старте.
Получается я всё делаю правильно, спасибо.Бармалей_GMN писал(а):Нет. Не разная. Просто алгоритм пересчёта углов в задержки для 4 и 16 МГц разный - поправка на "сорость".
Стоп ! Как я понимаю программа берёт уже готовые значения из выдранной прошивки ? А они там уже представленны в формате "время". Так что 4 и 5 версии это время ещё делят с поправкой на скорость ? Или мы на разных языках говорим :-Djhm писал(а):Алгоритм op_z для 4 и 16МГц должен быть одинаковым. Разница только в рассчетах задержки для разной частоты. То есть формула для 4МГц будет работать и для 16. А поправка на разную частоту сидит в прошивке.
Я уже тоже так подумал ...
Формула для задержки следующая (если не прав поправьте)
Vz=(Umax-Uoz)*1/((Od/60)*360)
Где
Vz-время задержки
Umax-максимальный угол
Uoz-угол опережения
Od-обороты двигателя
т.е зависимость от оборотов линейная
Тепер же в что я сделал, посчитал с какой зависимостью уменьшать УОЗ чтобы при увеличение оборотов время задержки осталось примерно одинаковым, поставил в графики, выдрал OP_Z и в итоге как и предпологалось значения одинаковые примерно ... Но !
Если мы берём угол одинаковый скажем на 600 и 720 оборотах то изменения по времени задержки равны обратному отношению изменнения оборотов т.е 1 к 1,2 . А вот в выдранной при помощи OP_Z отношение значений ~ 2.45555 Значит в той формуле по которой считает OP_z есть ещё какие то константы ...
Вот если сейчас бы это PAUL прочитал, ржал бы paratruper писал(а):Я похоже нашёл в прошивке куски отвечающие за преобразование данных из времени как они забиты в прошивка в градусы, но так как в асме пика я вообще нуль, то превевести их в формулу не могу хотя если бы был отладчик и эмулятор под пики можно было реверсировать и поглядеть како оно работает, но я таких прог на знаю
Давай куски я тоже погляжу ....
Эмулятор Proteus возми ...Turok писал(а):Если мы берём угол одинаковый скажем на 600 и 720 оборотах то изменения по времени задержки равны обратному отношению изменнения оборотов т.е 1 к 1,2 . А вот в выдранной при помощи OP_Z отношение значений ~ 2.45555 Значит в той формуле по которой считает OP_z есть ещё какие то константы ...
Вот если сейчас бы это PAUL прочитал, ржал бы
Константа видимо загоняет диапазон значений в 8 или 16 битjhm писал(а):Есть отладчик от производителя - MPLAB, качается с microchip.com
Я немного копал прошивку, вот только забыл файлы на работе С математикой рассчетов я не разбирался, но она мне не очень понравилась, там есть перевод времени в обороты, а потом с оборотов опять время рассчитывается. То есть двойное преобразование. Не проще ли было работать только с задержкой, причем с 16-битной точностью? Тогда бы не было ограничения оборотов до 5100, да и вариант для 2-6-8-цилиндровых двигателей решался бы переносом графиков на соответствующий диапазон задержек искрообразования.
И кажется мне, что Zhpaul так и сделал в новых версиях(там диапазон оборотов до 15000)
Дык если разбираешься, давай попробуем. Пиши, что и как видишь с примерами. На Турке "проэкспиремнтируем" его не жалко Может и получится что. "Дорогу осилит идущий" ? не помню кто и когда.jhm писал(а):Константа видимо загоняет диапазон значений в 8 или 16 бит
Помоги добить заразу ! :-D
jhm писал(а):Кстати... рабочий Proteus подкиньте
Млин Нет тоска, а то бы скинул, погляжу может ссылка осталась ...Бармалей_GMN писал(а):На Турке "проэкспиремнтируем" его не жалко Может и получится что.
Спасибо и тебе на добром слове
А так я всеми руками за !jhm писал(а):Кстати... рабочий Proteus подкиньте
kazus.ru однакоTurok писал(а):
Давай куски я тоже погляжу ....
Эмулятор Proteus возми ...
Вот куски из оригинальной прошивки от 4 версии, где как мне кажется идёт пересчёт (да там так и написано ) Собственно говоря главное сейчас найти "волшебную формулу персчёта градусов в задержку".
ob_min ;перевод tmr в обороты
;вход: ob1:tmr
;выход: W
movfw ob1
bank2
movwf EEADRH
movlw 6
addwf EEADRH,F
bank0
movfw tmr
bank2
movwf EEADR
bank3
bsf EECON1,EEPGD
bsf EECON1,RD
nop
nop
bank2
movfw EEDATA
bank0
return
;---------------------------------------------------------
op_z ;перевод оборотов в задержку зажигания (!!!!!Обратите внимание у Павла прямо так и написано!!!!)
;вход: vak:W
;выход: CCPR1H:CCPR1L
bank2
movwf EEADR
bank0
movfw vak
bank2
movwf EEADRH
op_z1 bank3
bsf EECON1,EEPGD
bsf EECON1,RD
nop
nop
bank2
movfw EEDATA
bank0
movwf CCPR1L
bank2
movfw EEDATH
bank0
movwf CCPR1H
returnparatruper писал(а):Собственно говоря главное сейчас найти "волшебную формулу персчёта градусов в задержку".
Формула есть, а вот как соотвествуют этим значениям задержек, мистические значения после OP_Z тут загвоздка ...jhm писал(а):Не проще ли было работать только с задержкой, причем с 16-битной точностью? Тогда бы не было ограничения оборотов до 5100, да и вариант для 2-6-8-цилиндровых двигателей решался бы переносом графиков на соответствующий диапазон задержек искрообразования.
И кажется мне, что Zhpaul так и сделал в новых версиях(там диапазон оборотов до 15000)
Не факт. Обороты формируются исходя из формулы Об=Знач*20
Где Знач- это значение хранящееся в Пике таким образом можно просто увеличить множитель к примеру до 40 тогда у нас МахОб=10200, другое дело что дискретность возрастёт в 2 раза, то есть шаг будет не 20 об/мин а 40 об/мин. Но прошивка правится практически мгновенно Кстати двойной перевод идёт ещё с родительской прошивки Павла, и Русо по моему его не трогал, он подправлял только подпрограммы деления,умножения, и т.д.paratruper писал(а):
Не факт. Обороты формируются исходя из формулы Об=Знач*20
Где Знач- это значение хранящееся в Пике таким образом можно просто увеличить множитель к примеру до 40 тогда у нас МахОб=10200, другое дело что дискретность возрастёт в 2 раза, то есть шаг будет не 20 об/мин а 40 об/мин. Но прошивка правится практически мгновенно Кстати двойной перевод идёт ещё с родительской прошивки Павла, и Русо по моему его не трогал, он подправлял только подпрограммы деления,умножения, и т.д.
Вот мои размышления:
1. Сначала мы измеряем задержку между импульсами. Tвх
2. Задержка импульса зажигания Твых равна Твх-Задержка опережения.
3. Все. Больше математики нет.
Я конечно сильно упростил, но идея такова. Привязку до оборотов нужно делать только в программе редактирования графиков УОЗTurok писал(а):
Формула есть, а вот как соотвествуют этим значениям задержек, мистические значения после OP_Z тут загвоздка ...
Давайте думать вместе
OPZ выдирает графики из прошивки от ВАЗа, у ВАЗа в характристике "экономичный режим без ДК" (откуда ОПЗ выдирает прошивки) 16 "расходов" по 16 отсчётов, плюс есть Уоз при пуске, правда там 40 отсчётов, а у нас 19. Возможно если взять отсчёты из ВАЗ прошивки и совместить их с нашими, то мы получим искомые графики УОЗ. Правда у нас в прошивке таких графиков не 16, а 16 по 16 тоесть 256 не считая пускового так вот что делают остальные 15 надо смотреть прошивку.jhm писал(а):
Вот мои размышления:
1. Сначала мы измеряем задержку между импульсами. Tвх
2. Задержка импульса зажигания Твых равна Твх-Задержка опережения.
3. Все. Больше математики нет.
Я конечно сильно упростил, но идея такова. Привязку до оборотов нужно делать только в программе редактирования графиков УОЗ
Вся эта канитель именно для этого и затевается, что бы перевести задержку в Уоз для редактирования графиков УОЗ на компьютере, потому что ОПЗ их как-то не совсем правильно выдирает. Понятно что пику УОЗ в градусах не очень то и нужен ему время надо, через которое сигнал подать на катушку.
В общем на данный момент имеем: Формулу Турка, и некоторые измышления по поводу правильности расшифровки формата файла создаваемого ОПЗ. Но нет четкой уверенности что всё это коррретно paratruper писал(а):Правда у нас в прошивке таких графиков не 16, а 16 по 16 тоесть 256 не считая пускового так вот что делают остальные 15 надо смотреть прошивку.
Это все промежуточные рассчеты. Павел только в новых версиях ввел интерполяцию. Потому у него и умещается 16 характеристик УОЗ. А у нас - только одна, без интерполяции.
Значит op_z рассчитывает промежуточные значения.
Значение оборотов/20 - это младший байт адреса в таблице задержек.
Вакуум - старший байт адреса.jhm писал(а):
Это все промежуточные рассчеты. Павел только в новых версиях ввел интерполяцию. Потому у него и умещается 16 характеристик УОЗ. А у нас - только одна, без интерполяции.
Значит op_z рассчитывает промежуточные значения.
Значение оборотов/20 - это младший байт адреса в таблице задержек.
Вакуум - старший байт адреса.
А поподробнее можно? Меня интересует каким образом из тех цифр которые есть в файле ОПЗ получить углы, желательно с привязкой к оборотам.