ФУОЗ на базе AC-CDI

Обсуждаем электронику на колесах. Нужен увлажнитель воздуха для Камаза? Вам сюда.
Ответить
Опытный кот
Сообщения: 750
Зарегистрирован: Вт янв 06, 2015 11:00:44

Сообщение asel »

Фух!! Поехало!!!
Фузы C6 DB FD FF . Если кто в курсе мож поправить DB на D9?
Программа одна из самых первых на ветке форума...
Инициализация ...
.include "m328pdef.inc" ; кварц4МГц
.cseg
.org 0 ;начало кода
rjmp start
.org 0x0016 ;Output Compare1A Interrupt Vector Address
rjmp timer1compare
.org 0x001a ;переполнение timer1
rjmp timer1

start:
;=========Стек===========
ldi R16, low(RAMEND) ;низ стека
out SPL, R16
ldi R16, high(RAMEND);верх стека
out SPH, R16

Ну и конкретные изменения...
;========Timer+ADC=======
ldi R16, 0b00000010 ;задержка 8,для счета при 4МГц
sts TCCR1B, R16 ;пуск таймера 16-бит
ldi R16, 0b00000011
sts TIMSK1, R16 ;настройки 16-бит счетчика
sei ;вкл. прерывания в ЦП

Далее в программе меняем in, out, на sts и lds
компилируем....
и.... (кварц на плате перепаиваем на другой - 4мгц. Увы программа зоточена под эту частоту)
Платку ардуино нано без юсб программируем как ветке, через тот же программатор.... (Только придется сделать преходник к "фишкам" платы)
Итого. Что имеем. Плата Фуоз 35х20. К ней мини платка 20х10 с оптроном (входная цепь) и ВСЕ!!!
(Для АРДАВУДа - стабилизатор на плате есть...)
Все остальные плюшки - тумблера выбора графика, резистор, МАР сенсор и .... любой CDI можно цеплять или не цеплять или через разъемы или припаивать.

Суть. Имея только плату мы можем к ней подключить- CDI одноцилиндровый, двухцилиндровый, двухискровой, да хоть TCI, и тп. и тд. И ... не перепаивая полностью всю плату коммутатора под какую то силовую часть.
Вторая суть. А паять то ничего не нужно. Уже все спаяно "до нас". Только впаять кварц и "фишки".
Также удобно потом эту плату отдельно поместить в "экран".

ПС. Для ардвуда. Преимущества ардуино - только в том, что не нужен программатор. Ну и программирование там на другом языке.
И тогда если уж хочется плату ардуино нано....
1. Нашу программу нужно "перевести" на язык ардуино и заливать ее в ардуино по юсб.
2. Или нашу программу на ассемблере просто заливать в ардуино. (Но, надо чтобы она работала под 328р. Чем и занимаемся).

ПС. Большая просьба, кто шарит в Атмелах. Правильно ли все сделано, как описано в начале поста...

Добавлено after 6 hours 28 minutes 18 seconds:
Рано обрадовался.
Вписываю в программу все что связано с АЦП (переменным резистором) - не работает. Нет импульсов на выход. Хотя импульс flyback есть.
Реклама
Опытный кот
Сообщения: 750
Зарегистрирован: Вт янв 06, 2015 11:00:44

Сообщение asel »

Доделал.
Нужно правильно запускать АЦП.
В программе команда
sbi ADCSRA,6 ;старт замер АЦП
(в бит6 единичку)
Под мегу328р такая команда не катит...

Добавлено after 3 hours 21 minute 20 seconds:
Едем дальше...
1. Нужно "вбить" в программу Watchdog. Полезная штука для наших жестких условий .
Итого. Где его запустить, на какое время и когда сбросить?
Думаю запуск по первому или второму входному импульсу, время - такт менее 300-500 оборотов х 2, и сбросить , если процессор выдал расчетную искру. Нужно думать...
2. Использовать два отдельных входа АЦП. Для МАР-сенсора и для переменного резистора. Т.е посчитать например со входа ADC2, потом со входа ADC1 и потом объединить это в коррекцию задержки. Но это придется полностью переписывать код программы по АЦП. Как?...
3. Второй вариант. Объединить электрически-схемно резистор и выход МАР на один вход. Просто выход МАР-сенсора запустить в процессор через переменный резистор.
Реклама
Родился
Сообщения: 1
Зарегистрирован: Ср апр 24, 2019 21:14:29

Сообщение 8orobeu »

Хех,давно слежу за темой, но себе всё никак не соберу фуоз. Схему с программатором тоже считаю не очень уж удобной, и переход на дуинку оправдан в плане простоты сборки, ну. По крайней мере для меня)
Зато топливо у меня работает по инжекторной схеме, и установить мап на мотор с одним цилиндром... Нереально)! Пульсация у мотора дикая от хх до средней зоны, В разные моменты показания будут очень разными, Очень! А на верхах он как бы и не нужен, там углы и так будут фиксированные.
Мап только для баро коррекции, алгоритм работы уоз по дросселю и оборотам называется alpha-n, если интересно можете почитать, хотя я и не вижу в нём особого смысла.
Держит паяльник хвостом
Аватара пользователя
Сообщения: 986
Зарегистрирован: Чт янв 13, 2011 13:51:26

Сообщение Arwood »

В чём простота сборки? Входную часть сигнала травить-паять надо? Надо! Выход на коммутатор травить-паять надо? Надо! Или напрямую от процессора, сигнал на коммутатор подашь?
Итого, экономия: пять деталей питания (два электролита, две керамики и 7805) и четыре детали (контроллер, кварц и два конденсатора).
Тебя правда напрягает что в той части, которую всё равно травить-паять, будет на девять деталей больше? Ради этих девяти деталей, громоздить приколхозенную Ардуину?
А пульсации вакуумника, имеют значение только на механическом вакуум-корректоре. Для контроллера это не вопрос. Что напульсировало, с тем и работает. Но задача вакуумника, вовсе не удержание стехиометрии или "Евро Х". Вакуумник отвечает за тягу мотора.
А без него, весь проект становится "один из". У меня таких пяток валяется. Рабочих. Испытанных. С разной схемотехникой и контроллерами, но однотипных по сути действия.
Хотя... Если у тебя нет никакого, конечно же изготовь. С ФУОЗ лучше чем без него. Но тот, кто прикрутит вакуумник к контроллеру ФУОЗ, отправит на свалку все имеющиеся сейчас проекты.
Реклама
Эиком - электронные компоненты и радиодетали
Опытный кот
Сообщения: 750
Зарегистрирован: Вт янв 06, 2015 11:00:44

Сообщение asel »

8orobeu
Многие следят. И даже хвастаются, что у них валяется пять штук. И контроллеры у него просто под ногами, как семечки.... А программы в контроллерах , так вообще ... Хонда и Кавасаки нервно курят... И никому не покажу.

Покрутил-повертел Ардуину нано. В коробочку влазит.. Читаю сейчас, как в нее заливать программу на ассемблере, которую переписал под 328р контроллер (в ардуино про мини, т.е. чистый 328р записывал - все заработало).

От программирования далек. Тем более от С++ для Ардуино.
Никак не получается (пока) сделать два входа АЦП в нашей программе на ассемблере...
Реклама
Держит паяльник хвостом
Аватара пользователя
Сообщения: 986
Зарегистрирован: Чт янв 13, 2011 13:51:26

Сообщение Arwood »

А есть какая-то проблема с Мегой в СОИКе? В вашей деревне почту закрыли? Братья китайцы шлют Меги8 десятками, по смешным ценам.
Нарисовать плату, протравить её и закидать деталями - дело одного вечера. А вот программы я не пишу. И не хочу осваивать. И только поэтому не довёл этот проект до ума.
А на данном этапе, это ничуть не лучше Саруманки или БК-2 от ИЛЛ. Заметно хуже Зажигания Шкильменского, но оно заточенно под автомотор.
И кстати, входную цепь своего устройства я содрал с мозгов Хонды. Ничего особенного, но построено на неубиваемом компараторе 393 и тем понравилось. Схему не предлагаю. Пересчитал детали, их там аж 16, вместо пяти в варианте с оптроном.
Реклама
Опытный кот
Сообщения: 750
Зарегистрирован: Вт янв 06, 2015 11:00:44

Сообщение asel »

Arwood
1. Рисовать, травить не умеем. Берем плату, меняем кварц, паяем платку входа, кому какая интересная и .... все. Да. Еще впаиваем "фишки" в плату. И цепляем к ним ... хоть резистор, хоть МАР, хоть оба сразу... Но мало того, к выходам цепляем платку -силовую часть. Хоть CDI, хоть ТСI, хоть,.... как у меня двухискровое с шестью тиристора (Да, уже шесть!!! :)) ) (Почему шесть? Долго объяснять. Т.е , как хочу так ими и управляю от МК.) И почему плата управления (МК) отдельно силовой части? А откуда я знаю, как поведет мотор в "реале"... Да и еще, управление тиристорами напрямую с портов МК. Держат...
2. У нас не авто и не мото и не .... И все выше приведенные вами примеры .... с какими то пластинами для датчиков, какими- то четырьмя цилиндрами.... Поэтому нам и интересен этот простой, доступный проект автора. У нас один датчик на маховике, один цилиндр и карб. И все. У нас лодочный мотор (космический корабль в минимуме), где требования еще жестче. Спасать некому. Только на веслах......несколько десятков километров...
3. Входная цепь ? Какой датчик? Та хоть напрямую от датчика, только ограничив стабилитроном и диодом вход МК до 5в.....
Суть то. Интересный, простой проект, который нужно довести до "совершенства" ... со всеми всего лишь программными доработками.
Держит паяльник хвостом
Аватара пользователя
Сообщения: 965
Зарегистрирован: Сб апр 12, 2014 23:46:03
Откуда: Киев

Сообщение Flash.#13 »

asel так понял вы таки решились портировать на мегу328, для ассемблера это несложно, главное отличие вы уже написали, у меги328 в регистры выше 0x3F нельзя читать/писать через in/out, и обращаться побитово. И вы нашли штатное решение, команды прямой загрузки STS/LDS, с АЦП схема такая же:

Код: Выделить всё

;вместо
sbi ADCSRA,6	;старт замер АЦП

;прокатит
ldi R16,0b11001101
STS ADCSRA,R16
Не забываем, последние три бита ADCSRA это вывод ноги для АЦП. Особых преимуществ у 328й меги нету, такая же, просто памяти больше, а память это в ардуино используется банально для цветных ЖКИ. А вот портировать на чистый код ардуино смысла нет, это будет огромный шаг назад, ардуино заточен под загрузчик USB для студентов, и ядро МК то и делает как тратит свой ресурс на ненужные части оболочки. К тому же си'шный код для МК крайне кантужен, часто код на Си получается в 2-3 раза более громоздким и медленным. Вачдог кажется оправданным, но не прикручивал специально, чтобы проверить насколько будет много проблем по питанию, и так получилось что их не было вовсе. Если куда и переделывать проект, то это на МК серии STM32, они постепенно захватывают все сферы электроники, за ними будущее.
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
Опытный кот
Сообщения: 750
Зарегистрирован: Вт янв 06, 2015 11:00:44

Сообщение asel »

Flash.#13
На Ардуино про мини на 328р уже переделал. Принципиально получилось. Как? описал выше.
Суть , микропроцесссор отдельно - сди отдельно. Минимум пайки ... по процессору. И т.д.

На Ардуино нано хуже. Кварц 16мгц. Не перепаяешь. Но уже придумал...
TCCR1B делим на 64. Результат считыаем и умножаем на 2. Т.е. далее в программе ничего не пересчитываем. После вычисления задержки , ее делим на два и вписываем в OCR1A. Еще не тестил, но идея должна сработать. Ну не будет работать переполнение счетчика. Ну и фиг с ним... Можно переделать не на переполнение, а на "если выше числа".

Также переделываю опрос АЦП. Переписываю не по прерыванию, а в тело программы, когда уже идет "расчет". И чтобы опрашивать два входа по АЦП - МАР и резистор и потом корректировать задержку.
Может можно по другому. Но я не знаю...

Плюс Нано, что вроде можно переписывать программу даже с телефона. Мне это нужно еще потому что эксперементирую с СДИ. Уже получил два варианта схемы-платы двух искр. А с Ардуино удобно, что не нужно "ковырять" всю плату, а только "силовую" часть.
Ну и можно еще потестить некоторые схемные штучки, только припаиваясь к входам и выходам.

Все идет медленно. Не все сразу...

ПС. Интересный ваш "кусок" в программе "предсказание оборота" переделал в стабилизацию оборота на хх и малых. Т.е. помнит предыдущий оборот, если сейчас выше, значит Уоз сейчас нужно меньше. Еще толком не тестил в "натуре".

Да. Еще полностью переделано "ослепление". Защелкивается сразу по приходу импульса. И время "ослепление" зависит от оборотов. Т.е. до предполагаемого следующего импульса входа.

Пррограмма ваша проста, и понятна. Работает уже на четырех Фуозах.

По Watchdog. Тоже читал другие форумы. Что просто от "помех искры" могут быть сбои в "мозгах". И это реальность. Пока как вариант, вписал, что если есть импульсы на входе, а через некоторое время нет "расчетного", значит "сброс".. Потом потестируем...
akl
Друг Кота
Сообщения: 4453
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

[uquote="asel",url="/forum/viewtopic.php?p=3625124#p3625124"]На Ардуино нано хуже. Кварц 16мгц. Не перепаяешь. Но уже придумал...
TCCR1B делим на 64. Результат считыаем и умножаем на 2. Т.е. далее в программе ничего не пересчитываем. После вычисления задержки , ее делим на два и вписываем в OCR1A. Еще не тестил, но идея должна сработать. Ну не будет работать переполнение счетчика. Ну и фиг с ним... Можно переделать не на переполнение, а на "если выше числа".
...[/uquote]Проще воспользоваться системным предделителем
The ATmega48A/PA/88A/PA/168A/PA/328/P has a system clock prescaler, and the system clock can be divided by setting the ”CLKPR – Clock Prescale Register” on page 377.

Код: Выделить всё

	LDI	R16,1<<CLKPCE
	STS	CLKPR,R16
	LDI	R16,1<<CLKPS1|1<<CLKPS0
	STS	CLKPR,R16		; Fclk/4
Опытный кот
Сообщения: 750
Зарегистрирован: Вт янв 06, 2015 11:00:44

Сообщение asel »

akl
Спасибо. А я думал, .. что за делитель на 8 в фузах?
Если получится, то не нужно кварц менять на 4мгц и в Ардуино про мини?
Осталось теперь попробовать записать hex в Нано.
Нашел в интеренете ... сайт http://www.getchip.net

Еще вопрос.
Это правильно если ..?
В подпрограмме, где уже идет расчет задержки- опрашиваю один порт АЦП (резистор), корректируем задержку R25. Потом последовательно опрашиваем другой порт Ацп (МАР), и еще корректируем R25.
Нашел в интернете такое...

ldi r16,0xC3
sts ADCSRA,r16 запускаем
ldi r16,0x23
sts admux,r16
loopx:
lds R16,ADCSRA
sbrs R16,4 ;wait for conversion to complete adif=1
jmp loopx
lds r17,ADCL
lds r16,ADCH
......далее корректируем R25
..... далее такой же опрос , но второго порта
ldi....

PC.Почему всетаки обратил взор на Нано? Программипуем через Юсб. Который "торчит" снаружи. На про мини, приходится "выдергивать" фишку с допами, вставлять шлейф программатора и т.д. На www.getchip.net автор описывает преимущества, особенно когда проектируешь и конструируешь.
akl
Друг Кота
Сообщения: 4453
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Ардуино для меня пустой звук. Не использую. По коду, сделал бы так.

Код: Выделить всё

	ldi r16,0x23
	sts admux,r16	; сперва готовим схему измерения
; очень полезно отключить цифровую часть соответствующей установкой DIDR0
	ldi r16,0xC3+(1<<ADIF)	; устанавливаем режим работы и сбрасываем флаг
	sts ADCSRA,r16 ; теперь запускаем
;ldi r16,0x23
;sts admux,r16
loopx:
	lds R16,ADCSRA
	sbrs R16,4 ;wait for conversion to complete adif=1
	Rjmp loopx
	lds r17,ADCL
	lds r16,ADCH
Опытный кот
Сообщения: 750
Зарегистрирован: Вт янв 06, 2015 11:00:44

Сообщение asel »

akl
Так и для нас Ардуино пустой звук. Используем только спаяную плату Ардуину для управления CDI.

Тоже думал почему
Admux позже чем Adcra? Понаписывают в интернете всякого...неправильного..

О DIDR0
Нашел в интернете.
/*DIDR0 - отключение функции цифрового входа для аналогового канала*/
/*(для снижения потребляемой мощьности)*/
В принципе тоже можно дописать две строчки.... Но это наверно такой мизер.... Ведь фузами раскачиваю кварц до Full ... У нас же еще нужно защищаться от помех-сбоев от искры. (Тоже читал, что если от помех, то кварц нужно до Full...)

PC. Для чего это все мне? Две последовательных мощных искры. Уже получилось. Заряжаю две емкости и управляют два тиристора . Только нужно экспериментировать с паузой между искрами. Также еще тестил скутер-TCI как добавку к CDI. На хх и малых TCI выдает больше напряжения чем катушка на хх. (Но TCI тоже нужно отключать во время искры... планируем отдельным портом) . Ну и плюс УОЗом...А мотор то, мини-лодочный.
В итоге... получаем больше тяги на хх и малых, и стабильнее обороты. В итоге , по предварительным тестам, приходится и уменьшать винтиками карбюратора подачу количества смеси. А Уоз с резистором можем подкорректировать - и погоду-давление и ... чем мы заправились на бензоколонке. Ну и еще МАР. Никак не решусь сверлить карб...
Такая "бредовая" идея. :)) Но работает, только довести до "совершенства", повторяемости и простоты сборки...
Опытный кот
Сообщения: 750
Зарегистрирован: Вт янв 06, 2015 11:00:44

Сообщение asel »

Вобщем все получилось с Ардуино нано 16мгц.
Частоту 16 поделил на 4.
Загрузил программу через ЮСБ программкой gcUploader.
Все поехало...
Фузы на Нане FF DA FD CF поменял на C6 DA FD CF
Продолжим дальше .... :))
Встал на лапы
Сообщения: 81
Зарегистрирован: Вт июл 16, 2013 15:34:14

Сообщение alexhr »

[uquote="asel",url="/forum/viewtopic.php?p=3626578#p3626578"]Вобщем все получилось с Ардуино нано 16мгц.
Частоту 16 поделил на 4.
Загрузил программу через ЮСБ программкой gcUploader.
Все поехало...
Фузы на Нане FF DA FD CF поменял на C6 DA FD CF
Продолжим дальше .... :))[/uquote]
Сделайте пожалуйста в скриншотах. Спасибо :beer:
Опытный кот
Сообщения: 750
Зарегистрирован: Вт янв 06, 2015 11:00:44

Сообщение asel »

Я не понимаю "скриншоты"...
Деление на 4 - в программке.
Как загружать в Нано - все описано на сайте, где программка gcUploader.
Фузы пытался менять ArduinoIDE... Что то не так или не умею или не получилось. В конце концов спаял переходник и поменял фузы через программатор.
Выкладываю свой "сырой" asm с которым еще работаю :)) . В нем много чего .... не так, как у истоков. Нужно еще немного подчистить лишнего, и чтобы было понятней... и т.п.
Далее у меня программа "двухискровая" на основе этой. И почему Ардуно? Очень удобно "на ходу" вносить корректировки через ЮСБ при тестировании, когда двухлуч осцил, датчик искры, разрядник со свечей, и стенд с моторчиком + с маховиком-датчиком-катушкой от мото.
Грузить углы и компилировать программкой 24.ехе от сюда с ветки. Для компиляции нужно найти и скачать m328pdef.inc и "вставить" в папку.
Программка asm не для простого повторения. Но работает. (почему то есть нюансы по "временам" по сравнению с мега8. Потом разберемся)
Что в ней , и как , и почему, .. если интересно ... спрашивайте. Лучше в личку.
ПС. Ардуино ?. Мозг отдельно (который можно "изолировать" от внешнего мира) - который выдает только импульсы управления на силовую плату, с которой приходится "ковыряться" .. "добывая" две искры...

ПС2. Пока чуть-чуть "застрял" с новым супер-стабилизатором 12в. Приехали "новые" "чипы" с Китая ...Что то, как то не то , что на них написано...Разбираюсь..
Вложения
CDI.asm
(18.53 КБ) 407 скачиваний
Держит паяльник хвостом
Аватара пользователя
Сообщения: 965
Зарегистрирован: Сб апр 12, 2014 23:46:03
Откуда: Киев

Сообщение Flash.#13 »

asel в таком коде замера вся программа будет ждать АЦП, это немного затратно по времени, а вдруг случится новый оборот или что-то важное? Вакуум-корректор не меняет свои значения часто, возможно лучше запустить замер и считать его значения позднее, перед следующим запуском.

Код: Выделить всё

loopx:
   lds R16,ADCSRA
   sbrs R16,4 ;wait for conversion to complete adif=1
   Rjmp loopx
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
Опытный кот
Сообщения: 750
Зарегистрирован: Вт янв 06, 2015 11:00:44

Сообщение asel »

Flash.#13
Я не программист. Не понимаю - как это "измеряет не часто"? У вас так и написано в программе - "срабатывает редко"??? У вас считывание по прерыванию? А измеряет когда?
Хочу измерять и резистор и МАР по отдельным входам . Как это написать?
И даже была мысль, что на резистор подавать напряжение с МАР ( в крайнем случае, если не получится с двух входов). И сдвиг угла в программе перевернуть наоборот от напряжения входа.

PC. Наверно понял. Преобразование АЦП занимает время. Тогда нужно запускать АЦП после "искры". Вычислять, запоминать и уже на следующем обороте корректировать уоз. Как это "оформить"?
Держит паяльник хвостом
Аватара пользователя
Сообщения: 986
Зарегистрирован: Чт янв 13, 2011 13:51:26

Сообщение Arwood »

asel
В нашем случае, показания МАР имеют смысл только в ВМТ. Все остальные значения МАР нас не интересуют.
Я скидывал Флэшу кусок программы Шкильменского, как образец алгоритма обработки сигнала МАР, прошедший множественные и длительные испытания. Но он поленился и не стал даже читать. Отписался что "разбираться с чужим кодом ..." и прочее бла-бла в том же духе. А там "разбираться" - десяток строк.
Хочешь, пришлю в личку. Программа старая и код выложен автором в открытый доступ. Не хочешь, пиши сам.
Но в любом случае учитывай, что измерения имеют смысл только при доступе в цилиндр. А максимальная информация о верности угла опережения - в момент продувки. Крайние точки:
Угол ранний - в момент продувки разряжение. Угол слишком велик. Всасываемый бензин бессмысленно протягивается в выхлопную трубу.
Угол поздний - в момент продувки резкий всплеск давления в патрубке. Угол поздний. Часть оборота коленвала тратится на преодоление инерции воздуха.
В идеале - работая с отрицательными величинами, стремиться к "недостижимому нолю" в момент продувки. То есть в ВМТ.

Но это в теории. Как это решено у Шкильменского я не знаю. Но работает отлично.

П.С. Для тех, кто сомневается в нужности МАР - представьте что у вас на руле переключатель, которым вы выбираете каждый оборот коленвала нужный график из восьми возможных, в точном соответствии с нагрузкой на двигатель.
Вот это и делает датчик разряжения.
Опытный кот
Сообщения: 750
Зарегистрирован: Вт янв 06, 2015 11:00:44

Сообщение asel »

Arwood
У меня лодочный мотор, а не Шкильменский...
Стоит ли сверлить дырку в карбе для МАР?
И другая задача вытекающая - если сверлить, то нужно читать в программе и резистор и МАР и корректировать уоз и по резистору и по МАР. И без резистора никак....
Если у вас есть идея как вписать МАР в нашу программу и при этом не забудьте о переменном резисторе....
Выкладывайте идею в asm.
ПС. Идею как считать АЦП, уже написал выше. Считаем АЦП после искры (времени валом) , и в следующем обороте корректируем уоз. Все логично. Нужно только оттестить в реале...на стенде.
ПС2. А насчет "в какой момент времени " измерить МАР? Мне , как не программисту , это не под силу.
Ответить

Вернуться в «АвтоМотоВело»