Jump to content

nk300

Members
  • Content Count

    45
  • Joined

  • Last visited

Community Reputation

1 Обычный

About nk300

  • Rank
    Новенький

Информация

  • Город
    Донецк

Электроника

  • Стаж в электронике
    Более 20 лет
  • Сфера радиоэлектроники
    Компьютеры, печатно-множительная техника.
  • Оборудование
    Осциллограф, мультиметр, различные паяльники.

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Исходник теперь содержит два файла main.c, main.h. Прошивка соответственно с расширением "hex".
  2. "Не прошло и пол-года". Извиняюсь за нестабильность. Были проблемы с работой и семейные трудности. Удалось выкроить время на продолжение исследования в области микроконтроллерного зажигания. Итак выкладываю очередноую тестовую версию. Что касается изменений: Попытался нагрузить программу алгоритмом расчёта времени опережения, из записанного в двухмерном масиве значения угла опережения. С ходу эта затея не удавалась, пришлось программу переделывать. Оказалось что функции и подпрограммы, на которые пришлось поделить код, из за неконтроллируемых наложений в процессе выполнения, вызывают сбои: то пропадает импульс накопления, то импульсы холла для тахометра (они важны, т.к. являются маркерами ВМТ и расположены в точках ВМТ 1 и 4, и 2 и 3), короче идея безконечного цикла с хаотичным исполнением подпрограмм тут не пройдёт. Накопление теперь, переменная программно изменяемая, в зависимости от оборотов. (Подумываю о дополнении программы массивом значений накопления). Массив углов двухмерный с учётом давления на впуске, значения углов в массиве умножены на 16, с целью уменьшеня расчётов с плавающей точкой т.к. сопроцессора FPU у ардуины нет, а вычислять такие числа она всё таки пытается, но тратит на это много процессорного времени. Маасив теперь не занимает половину памяти чипа, т.к. я попробовал применить линейную функцию расчёта промежуточного значения угла опережения, размер массива 16*16. Эта версия пока аботает с двумя датчиками ДНО, ДУИ, немного позже выложу версию работающую с одним датчиком ДПКВ по синхрометке 60-2. main.h main.c Fuoz60_2 new array.hex
  3. Добрый день. Переделал массив задержек по соответсвию (ВАЗ классика трамблёр 38.3706.s3f), переписывал вручную значения из менеджера секу в экселевскую табличку, там у меня забита формула переводящая углы в заделжки в мкс., и потом редактировал сам массив в файле main.c. Выкладываю хекс файл и исходник для компилятора атмел студия 7. Массив можно редактировать, в целях переделки его под любой автомобиль. Пока занимался этой рутиной подумал что можно добавить второй массив для ГБО, и добавить переключатель таблиц газ/бензин. Потом обдумывал необходимость добавления концевика карбюратора для ХХ. Можно по идее оставить без концевика, тогда таблица ХХ идёт под номером 0 в массиве, как это сейчас и работает. main.c Fuoz C.hex
  4. Добрый день. Переделал свой код на Атмел Студию. Немного потестировал. Впечатления положительные. Стабильность повысилась в 2 раза, код занимает 16 кБ вместо 21кБ ардуинского. Пришлось повозится с подбором некоторых библиотек, чтобы кардинально не переписывать весь код, результатом в целом я доволен. Сейчас переписываю в свой массив задержек значений, значения обкатанных углов из s3f файла secu3, для проверки так сказать на реальном железе, осталось доделать плату переходник с ардуины на фуоз и можно тестировать на автомобиле. Сделал табличку в EXEL для конвертации значений углов в значения задержек. Надо как то придумать как этот процесс автоматизировать, а то вручную переписывать долго. Не могу понять как устроен s3f файл. Хекс редактором смотрел ни черта не понял. Fuoz C.hex Fuoz (2).txt
  5. В протеусе DUINO1 - это собственно сам фуоз. А DUINO2 - это борт.ПК.
  6. Перезалил архив исправил там кой чего, и добавил в него оба варианта. Тут по папочкам разным лежат прошивочки под ДНО - Fuoz_arduino_map_SinMet_dwel_dno. Без ДНО соотв. - Fuoz_arduino_map_SinMet_dwel ну и бортПК - Voltmetr_UOZ_RPM_2 Проэкт для протеуса с бортПК - FuozDuino_GEN60_2 Проэкт для протеуса без бортПК - FuozDuino without BPK Зажигание на Ардуино.rar
  7. Там так и было, только пришлось из прерывания зуба его исключить. У меня и так ПП прерывания ест 10мкс процессорного времени. Тут такая вешь - когда мало времени оставляешь для выполнения основного цикла - то же плохо, стабильность работы ухудшается. Похоже что прийдётся отказаться от Ардуино IDE и переходить на использование..., хотел попробовать Атмел Студию. Создаётся впечатление что ардуинский бутлоадер много ресурсов кушает.
  8. А так же версия для двух датчиков ДНО, ДУИ доработанна и в ней теперь то же есть время накопления катушек и остальные коррекции описанные ранее. Fuoz_arduino_map_SinMet_dwel_dno.ino Fuoz_arduino_map_SinMet_dwel_dno.ino.standard.hex
  9. Добрый день. Сегодня добавляю так сказать новую версию. Изменения пришлось внести в некоторых местах кардинально: напомню что прошивка уже работает по синхрометке, удалось добится нормальной стабильности импульсов угла благодаря тому что выкинул из ПП таймера всё лишнее (импульсы холла для тахометра генерируются теперь из основного цикла), добавлена возможность включать коммутаторы с определённым временем накопления катушек (время накопления пока что является величиной постоянной около 4 мс, но этот параметр можно изменять по своему усмотрению), изменена ПП искрообразования - она теперь просто процедура накопления и искрообразования находящаяся в ПП таймера (иначе если выносить её в основной цикл работает не стабильно). Из недостатков - импульсы холла поскольку они таперь вытеснены в основной цикл их стабильность на низком уровне, я решил ими пока что пренебречь, потом разберусь как их наладить. В архиве лежит две схемы симуляции, одна с бортовым ПК, другая без, для тех кому он без надобности. Зажигание на Ардуино.rar
  10. Проводил кое какие изыскания по своей программе и внёс в неё кое какие изменения: в подпрограмме математики оставил запрет на все прерывания, и переход на подпрограмму математики провожу из ПП таймера. В схеме симуляции смешал два сигнала (ДНО и tik) для наблюдений за процессом вычислений внутри синхрометки. Стабильность увеличилась. Зажигание на Ардуино.rar
  11. Fuoz_arduino_5_map_50kHz_SinMet2.ino.standard.hexFuoz_arduino_5_map_50kHz_SinMet2.ino Для тех кому интересно попробовать с запретом прерываний на время расчётов выше выкладываю скетч и дамп для тестов. Вроде бы работает, но если обороты выше 3300 об/мин. импульс опережения начинает гулять ...
  12. Добрый день. Добавляю пробную версию зажигания с определением начала отсчёта по синхрометке 60-2. Переделал несколько скетч. Решил некоторые вещи оптимизировать, например подпрограмма искрообразования выглядит теперь так: void Flash_start() { //ПП искрообразования. if (F14 == 0) {Out = PB2; offOut = PB1;} //Выбор канала образования спада импульса. else { Out = PB1; offOut = PB2;} // PORTB |= (1 << Out); //искра образуетса по спаду импульса. "Искра". На выходе необходим буферный инверсный транзистор. PORTB &= ~(1 << offOut); //digitalWrite (Out, HIGH); //digitalWrite (offOut, LOW); } т.е. вместо digitalWrite (Out, HIGH); теперь - PORTB |= (1 << Out); Вроде бы так работает побыстрее. И везде в программе постарался избавится от ардуиновских тормозов такого рода. Теперь для подпрограммы синхрометки (ДНО) RPM1 (); не используется аппаратное прерывание, на неё переход происходит на определённом зубе ДУИ из основного цикла, т.е. можно задать любое удобное место. Но всё же лучше что бы это было рядом с синхрометкой. Поменял форму сигнала холла, он теперь больше похож на холл, и по нему удобно смотреть ВМТ. Вывод (tik) необходим для контроля выполнения расчётов по синхрометке, но кому удобно синхронизировать осциллогаф по сигналу (dno), пожалуйста меняйте на него. Программа пока без учёта времени накопления катушкой, но это только пока. Поменял обработчик прерывания таймера на более аппаратный, и это тоже в целях ухода от ардуиновской задумчивости если использовать внешние библиотеки. Осталось только внести настройку под разнообразное кол-во зубьев реперных дисков и маховиков. Потому как сам езжу на ДУИ со 129 зубами маховика ваз 2101. Теперь о недоработках. Заметил некую нестабильность импульсов УОЗ если не применять аппаратное прерывание по синхрометке. Надеюсь скоро решу этот вопрос. Зажигание на Ардуино.rar Синхрометка теперь просто обнуляет счётчик угловых импульсов, и на подпрограмму расчётов угла не переходит, как это было раньше по прерыванию. Подпрограмма расчётов по времени выполняется 175 мкс, но из-за того что её прерывает таймер, её выполнение удлиняется до 600 - 800 мкс, что многовато, но никак нельзя запрещать аппаратные прерывания на время вычислений, потому как сбивается подсчёт угловых импульсов. Я пока думаю как разрулить этот нюанс.
  13. С твоим бортовым ПК я знаком давно, то же слежу за темой, хотел как то разобраться как принимать данные по uart с СЕКУ3 чтобы на свой маленький дисплей 16*2 данные выводить, а то на дисплей побольше денег жалковато. Сейчас собираюсь как раз драйвер низкоомных форсунок собирать - tbz на 4 форсунки omvl 3 ома. Оффтоп опять. Видео я твоё тоже давно смотрел. Этой темой давно интересуюсь. Спасибо за поддержку.
  14. Немного допилил скетч Бортового ПК - убрал лишнюю математику и поправил отображение на дисплее. Voltmetr_UOZ_RPM.ino Voltmetr_UOZ_RPM.ino.standard.hex
×
×
  • Create New...