Дырчик.SU
http://www.dyr4ik.su/

Зажигание с автоматическим ФУОЗ на микроконтроллере
http://www.dyr4ik.su/viewtopic.php?f=7&t=1025
Страница 3 из 13

Автор:  Elektron [ 17 мар 2013, 01:07 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

Я просто подумал, что будет измеряться время между положительным и отрицательным импульсами.

Добавил позже. Теперь нужно подумать, как изменить входной фильтр, например так:
Изображение

Автор:  mrfixer [ 17 мар 2013, 02:53 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

Не желательно на входах микроконтроллера иметь активным уровнем единицу (в состоянии ожидания низкий уровень на входе).
Снижает помехоустойчивость.
Изображение

Автор:  Elektron [ 17 мар 2013, 10:44 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

Коллега, да Вы - гений :!: , чтоб я без вас делал... Я не совсем понял, зачем заводить на контроллер положительный импульс, если время все равно будет измеряться между отрицательными.

Блокирующий транзистор я бы оставил. Предположим, что датчик установлен так, что положительный импульс приходит за 18 град. до ВМТ (как написано в инструкции для данного двигателя). В этом случае, свободно проходящий положительный импульс всегда будет отпирать тиристор не меньше, чем за 18 град. Даже если контроллер сформирует угол, скажем в 10 град., этот сигнал никак не повлияет на УОЗ, поскольку импульс с датчика придет первым. Если установить датчик так, чтобы приход положительного импульса с датчика совпадал с ВМТ, в случае проблем с электроникой, доехать до дома с нулевым УОЗ будет, мягко говоря, неприятно.

Автор:  mrfixer [ 17 мар 2013, 11:34 ]
Заголовок сообщения:  Re: Зажигание с автоматическим�УОЗ на�икроконтроллере

По поводу "гения" преувеличиваете. Просто читаю, обдумываю и запоминаю что пишут другие.
Я сам-то почти ничего не придумал.

Зачем нужен датчик положительного импульса. Предполагаю такую ситуацию.
На датчике и на двигателе есть метки. Совместив эти метки Вы будете знать, какому углу соответствует положительный
импульс. Какому углу соответствует отрицательный, необходимо вычислять программно каждый раз при старте системы,
то есть выполнять калибровку. Тогда будет совместимость системы с другими экземплярами двигателей, у которых, как Вы
писали возможны другие параметры датчиков.

Да. Блокировка будет полезна если, как Вы говорите, рекомендуемый угол 18 градусов, а оптимальные углы начинаются с 10.

По оптронам. Смотрю даташит на недорогой SFH618A. У него ток диода 5...60 мА. Таким образом оптрон допускает изменение в 12 раз
частоты вращения и, соответственно напряжения на выходе датчика. Необходимо подобрать резистор на ток срабатывания 5 мА на оборотах
ниже холостых и выбрать соответствующую мощность резистора для максимальных оборотов. Вот и весь электротехнический расчёт.

Автор:  Elektron [ 17 мар 2013, 12:43 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

Просмотрел даташит. Хороший оптрон, как раз под наши цели. SFH6186-3T под поверхностный монтаж - то, что надо. Теперь нужно подумать как реализовать алгоритм на практике.

Автор:  mrfixer [ 17 мар 2013, 17:24 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

Поступающие на микроконтроллер с формирователей сигналы назовём NP (Negative Pulse, формирователь
срабатывает по отрицательному импульсу) и PP (Positive Pulse, формирователь срабатывает по положительному импульсу).

Сначала калибровка.
Цель: определив угол между NP и PP и зная угол между PP и верхней мёртвой точкой ВМТ, определить угол ANGLE между NP и ВМТ.

Алгоритм в первом приближении.
Переменная ANGLE после калибровки будет хранить значение, пропорциональное углу NP-ВМТ.

1 Обнуляем ANGLE.
2 По приходу NP обнуляем и запускаем таймеры TMR1 (16-разрядный, времени оборота NP- NP) и TMR0 (8-разрядный времени от NP до PP).
3 По PP останавливаем TMR0.
4 По NP останавливаем TMR1.
5 По переполнению любого таймера идём на 1 (коленвал вращается слишком медленно), если нет, дальше.
5.1 Можно ещё оценить значение TMR1, чтобы калибровка прошла на достаточных оборотах. При этом, если обороты недостаточны, идём на 1.
6 Вычисляем отношение значений TMR1 / TMR0.
7 Сравниваем это отношение со значением ANGLE.
8 Если TMR1 / TMR0 меньше чем ANGLE умноженное на допуск (например, на 0.95), записываем TMR1 / TMR0 в ANGLE и идём на 2.
9 Если TMR1 / TMR0 больше чем ANGLE умноженное на допуск (например, на 1.05), записываем TMR1 / TMR0 в ANGLE и идём на 2.
10 Если TMR1 / TMR0 укладывается в диапазон, записываем в ANGLE сумму отношения TMR1 / TMR0 и константы, вычисленной вручную,
зависящей от угла PP-ВМТ. Или просто записываем в ANGLE угол NP-ВМТ в прямом виде.

Вам бы для отладки какой-нибудь вывод организовать. Хоть на пару светодиодных цифровых индикаторов.
А к диодам оптронов временно подключить LPT порт.

Автор:  Elektron [ 17 мар 2013, 21:51 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

Сегодня удалось выбраться на дачу, привез магнит от генератора и датчик. Испытания проводил при помощи сверлильного станка
Изображение
В общем, наткнулся на одну проблему. Дело в том, что датчик выдает два отрицательных импульса: один до прихода положительного импульса, другой после, причем амплитуда отрицательных импульсов меньше, чем амплитуда положительного.
Изображение

Автор:  mrfixer [ 17 мар 2013, 22:36 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

С разной амплитудой не проблема.
Изображение
Подправил схему.

Второй отрицательный импульс обойдём программно. Скорости контроллера должно хватить.

Слегка беспокоит вопрос, а какие обороты и сколько вольт на деление?

Автор:  Elektron [ 17 мар 2013, 22:44 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

Скорость вращения магнита 1240 об/мин (по крайней мере так на станке написано). Развертка осциллографа - 6.5 мс/дел. Сколько вольт на деление не знаю, потенциометр усилителя по вертикали находился не в крайнем положении.

Добавил позже. По моим расчетам, угол сдвига между NP и PP около 72 град.

Автор:  mrfixer [ 17 мар 2013, 22:54 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

Очень нужно знать, сколько вольт на деление. Откалибруйте осциллограф заранее известным напряжением,
нагрузите датчик на 1 кОм, и померьте ещё раз. Особенно интересует отрицательный импульс. От него зависит
можно ли будет использовать простую схему на оптронах.

Напомните, какие обороты холостого хода и максимальные обороты у Вашего двигателя.

Elektron писал(а):
Добавил позже. По моим расчетам, угол сдвига между NP и PP около 72 град.

Вижу. При такой времянке угол можно успеть на калькуляторе посчитать :).

Автор:  Elektron [ 17 мар 2013, 23:14 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

На холостом ходу около 1000, максимальные в районе 7000-8000. Думаю без нагрузки можно и до 10000 раскрутить. Эксперименты буду завтра проводить, сегодня уже поздно, боюсь, соседи не оценят мои старания :)

Автор:  Elektron [ 18 мар 2013, 08:41 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

Посмотрел сегодня даташит на PIC18F1220(PIC18F1320), думаю лучше его использовать. Три входа внешних прерываний (как раз под NP и PP), три 16 битных таймера. Один будем использовать для измерения периода между NP, второй - время между NP и PP, третьим можно отсчитывать момент, в который нужно подать искру, + более развитая система команд, аппаратное умножение и т. д.

Автор:  mrfixer [ 18 мар 2013, 09:44 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

Да, с PIC18 программа будет попрозрачнее.
Беспокоит нагрузочная способность датчика. Я забыл про постоянную нагрузку 330 Ом (R3 по схеме). Измерения нужно
проводить не с 1 кОм, а с 330 ом.
Если нагрузкой с 330 ом нельзя будет на холостом ходу обеспечить ток хотя бы 2...3 мА через диоды оптронов, от оптронов
придётся отказаться. В то же время, при закрытом блокирующем транзисторе цепь оптрона канала PP не должна сильно нагружать
датчик и мешать открытию тиристора.

Автор:  Elektron [ 18 мар 2013, 11:38 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

Утешает то, что шунтироваться резистором будет только PP, а амплитуда там достаточна. Амплитуда NP уменьшаться не будет, т.к. ток через VT2 в обратном направлении не потечет. Ближе к вечеру сниму характеристики, тогда подумаем...

Автор:  Elektron [ 18 мар 2013, 18:09 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

Наконец-то удалось провести замеры. Снимал зависимости амплитуды напряжения от частоты вращения при трех нагрузках: х.х, 1 кОм и 270 Ом (не нашел дома резистора на 330 Ом, но думаю тоже пойдет). Напряжение на датчике мерил вольтметром постоянного тока, подключенного через диод КД105Г. Щупы вольтметра были зашунтированы электролитом емкостью 47 мкФ.

График PP:
Изображение

Тоже самое для NP:
Изображение

Добавлено позже. Для чего нужен диод D1 в схемке из Вашего поста? http://www.dyr4ik.su/viewtopic.php?f=7&t=1025&p=14841#p14755

Автор:  mrfixer [ 18 мар 2013, 21:37 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

Оптрон SFH618A http://www.vishay.com/docs/83673/sfh618.pdf

Ток транзистора Ice без учёта небольшого падения напряжения на открытом транзисторе при нагрузке 10 кОм и напряжении 5 В, мА ... 0.5
По графику Fig. 9 при таком Ice оптрон уверенно срабатывает при токе диода, If, мА ... 1
При токе 1 мА падение напряжения на диоде по графику Fig. 6, Vr, В ... 1.05

По графику NP на 1000 об/мин амплитуда импульса около 3 В с учётом падения напряжения 0.5 В на КД105Г.
Необходимое сопротивление в цепи диода оптрона NP (3-1.05)/0.001=1950 Ом.
При 8000 об/мин амплитуда NP 3*8=24 В.
Ток через диод оптрона NP (24-1.05)/1950=0.012 А.

По графику PP на 1000 об/мин амплитуда импульса около 6 В.
При 8000 об/мин амплитуда PP 6*8=48 В.
Ток через диод оптрона PP (48-1.05)/1950=0.024 А.

Укладываемся!
Можно взять резистор в диапазоне 820...2000 Ом, при этом максимальный ток диода оптрона от PP будет 0.057....0.024 А, при допустимом 0.060 А.
Посмотрим какой мощности нужен резистор. Скважность на глаз 15. Выделяемая на резисторе максимальная мощность 0.177...0.076 Вт
с резистором 820...2000 Ом.

Ранее говорили про то, что DGND можно разделять на две земли (DGND1 и DGND2) и к одной подключается контроллер,
к другой все остальное. Как раз наш случай. По диодам оптронов будут течь заметные импульсные токи.

Чтобы разгрузить NP, блокировку нужно переделать, переставив защитный диод блокирующего транзистора.
Изображение

Несмотря на расчёт, я бы сделал макет, тем более, что деталей 3 резистора, 2 оптрона (без конденсатора, резистор и диод блокировки по желанию).
Если проблем не возникнет, можно уверенно двигаться дальше. А то, чем проще схема, тем больше вероятность на что-нибудь напороться.

Автор:  Elektron [ 18 мар 2013, 21:51 ]
Заголовок сообщения:  Re: Зажигание с автоматическим�УОЗ на�икроконтроллере

Завтра по дороге домой заскочу в магазин за оптронами и контроллером, будем пробовать на практике. Возможно придется поставить на каждый оптрон по резистору.

Цитата:
Ранее говорили про то, что DGND можно разделять на две земли (DGND1 и DGND2) и к одной подключается контроллер, к другой все остальное. Как раз наш случай. По диодам оптронов будут течь заметные импульсные токи.
Может просто подключить их к AGND?

Все думаю о диоде перед блокирующим транзистором (D1 на Вашей схеме). Здесь http://ua3usy.narod.ru/ZA.htm (исправил ссылку) разработчики не стали его ставить.

Автор:  mrfixer [ 18 мар 2013, 23:09 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

Давайте посмотрим, что будет, если не защищать блокирующий транзистор при использовании Вашего датчика.
На коллектор блокирующего транзистора поступает импульс NP с максимальной амплитудой минус 24 В.
Открывается переход коллектор-база, база-эмиттер закрывается и образуется отрицательное напряжение
эмиттер-база в районе 24 В.
По даташиту http://lib.chipdip.ru/222/DOC000222325.pdf такое напряжение может быть не более 6 В.

Может просто подключить их к AGND?
Думал уже. Этот датчик всё равно придется программно блокировать через один NP импульс. Вроде как
в момент срабатывания зажигания возможное ложное прерывание от него не должно обрабатываться.
Посмотрим по алгоритму. Конечно, желательно на AGND.

Автор:  Elektron [ 19 мар 2013, 08:24 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

Я думаю решить проблемму со вторым NP следующим образом. Обьявить битовую переменную. При приходе PP установить этот бит, скажем, в 1. В обработчике прерываний NP проверить переменную и если она не 0, выходим из процедуры с установкой бита в 0.

Автор:  mrfixer [ 19 мар 2013, 09:43 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

Да, признак NPS (Negative Pulse Skip).

Тут вот, что.
Если принять, что сдвиг NP-PP одинаков для всех экземпляров двигателей данного типа
(уверен на 99,9 %, что так и есть), можно сильно облегчить себе жизнь. Не нужна калибровка.

Если принять, что опережение будет работать начиная с 2000 об/мин как здесь http://ua3usy.narod.ru/ZA.htm ,
можно уменьшить ток оптронов.

Если принять, что не будет углов опережения меньше 12 градусов, не нужен будет блокирующий транзистор.

Я это к чему. График УОЗ, который Вы хотите получить, влияет в том числе и на схемотехнику. Без графика
не очень понятно, что необходимо учесть в схеме, а что будет лишним.

Для чего нужен диод D1 в схемке из поста http://www.dyr4ik.su/viewtopic.php?f=7& ... 841#p14755
Цепь R1, D1 начинает работать при отрицательном импульсе и шунтирует R2. Таким образом можно было
выровнять токи через оптроны. Вы тогда ещё не сообщили, с какими амплитудами импульсов мы имеем дело.
При скорости 1000 об/мин падение напряжения на дополнительном диоде соизмеримо с NP. Поэтому такое
решение в дело не пошло.

Автор:  Elektron [ 19 мар 2013, 16:02 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

По дороге домой заехал в Чип и Дип за детальками. Купил контроллер и два оптрона (содрали 470 р., барыги :twisted: ).
SFH618A не было, пришлось взять LTV817C. Собрал схемку для измерений:
Изображение

R1 был составлен из двух последовательно соединенных резисторов 1к + переменный на 10к. Замеры проводил для частоты вращения 890 об/мин.
Изображение

При увеличении R1, прямоугольник стал вытягиваться в нечто, похожее на синусоиду.
Изображение

При дальнейшем увеличении R1 амплитуда сигнала начинала снижаться. Начало снижения амплитуды получилось при R1=11.26 кОм для PP, и R1=4.82 кОм для NP.

Если принять, что сдвиг NP-PP одинаков для всех экземпляров двигателей данного типа
(уверен на 99,9 %, что так и есть), можно сильно облегчить себе жизнь. Не нужна калибровка.

Я думаю, проблем с калибровкой не будет. Погрешность расчета угла по осциллограмме не так уж мала, контроллер точнее посчитает, ресурсов у него более, чем достаточно для наших целей.

Без графика
не очень понятно, что необходимо учесть в схеме, а что будет лишним.
Дело в том, что я пока и сам не знаю какой будет график, надо испытывать "на ходу".

Автор:  mrfixer [ 19 мар 2013, 19:48 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

Оптрон подходит. У него всего лишь ток диода чуть меньше, 50 мА.
Для начала можно поставить резистор 2.4 кОм.

Нет желания запитать схему от цепи "02"? А то, если принять, что напряжение в точке "Г" постоянное,
с умножителя дополнительно снимается 5 Вт, а схемой управления используется сотня-другая милливатт.
Такое расходование энергии на пользу зажиганию не идёт.

По графику опережения. Как представляется работа блокировки?

Автор:  Elektron [ 19 мар 2013, 20:02 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

Нет желания запитать схему от цепи "02"?
В принципе, можно, но на х.х. напряжение может упасть ниже 5 В, а если еще и фары включены... Я испытывал схему на мопеде с питанием от заряжающей обмотки, проблем не было.

По графику опережения. Как представляется работа блокировки?
Какой блокировки?

Нарисовал новую схемку, надеюсь это будет последний вариант.
Изображение

Автор:  mrfixer [ 19 мар 2013, 22:39 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

Какой блокировки?
Имел ввиду VT1.

Почему диоды оптронов у меня включены встречно параллельно? Потому, что каждый из них
ограничивает обратное напряжение Vr (Reverse voltage, не более 6 В) на другом.
Пока не вижу смысла выравнивать токи диодов оптронов.

По AGND на оптронах. А нет ли возможности подключить массу датчика прямо к разъёму AGND БКС?
Это было бы самым правильным решением.

Только сейчас увидел :idea:.
Если подключить VD4 к "З", снимется дополнительная нагрузка с удвоителя, что будет полезно
для мощности искры на низких оборотах. Резистор R5 нужно будет подобрать.

Автор:  Elektron [ 20 мар 2013, 11:26 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

Почему диоды оптронов у меня включены встречно параллельно? Потому, что каждый из них
ограничивает обратное напряжение Vr (Reverse voltage, не более 6 В) на другом.

Да, совсем забыл про обратное напряжение, когда смотрел даташит обратил на это внимание, а при составлении схемы упустил... :( (поправил схему)

По AGND на оптронах. А нет ли возможности подключить массу датчика прямо к разъёму AGND БКС?
Есть такая возможность. А что плохого при подсоединении к болту крепления, где все земли сходятся?

Если подключить VD4 к "З", снимется дополнительная нагрузка с удвоителя, что будет полезно
для мощности искры на низких оборотах.

Мощности генератора вполне хватает на то, чтобы запустить двигатель даже от руки.

Автор:  mrfixer [ 20 мар 2013, 13:08 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

По AGND (провод БКС - болт на раме) текут импульсные токи от VS1 и VS2. Как уже писал,
падение напряжения на этом проводе будет приложено через катушку датчика к формирователям
импульсов, что негативно скажется на помехоустойчивости.

А я удвоитель разгрузил бы. На высоких оборотах тоже снижается мощность искры за счёт того,
что конденсаторы С12, С13 не успевают заряжаться. Дополнительная нагрузка повышению
напряжения не способствует. И ещё. При одинаковом токе напряжение на резисторе R4 будет в 2 раза
меньше, соответственно и резистор можно будет взять 0.5 Вт.

Сейчас смотрю на схему, намного красивее стало. Кроме перечисленного выше особых замечаний нет.
С6, R18, R19 по вкусу. То,что переставили резисторы в базе VT1 режим его работы только улучшило.

Автор:  Elektron [ 20 мар 2013, 13:39 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

А я удвоитель разгрузил бы. На высоких оборотах тоже снижается мощность искры за счёт того,
что конденсаторы С12, С13 не успевают заряжаться.

Убедили :) , схемку еще раз отредактировал. К вечеру печатную плату доработаю.

Автор:  mrfixer [ 20 мар 2013, 14:44 ]
Заголовок сообщения:  Re: Зажигание с автоматическим УОЗ на микроконтроллере

К разработке алгоритма и выбору сигналов, определяющих события программы.

Изображение
http://handmade.mccinet.ru/misc/Angle_ACAD2000.dwg

- В идеальном двигателе угловая скорость вращения коленчатого вала считается постоянной.
- В реальном двигателе даже при установившемся режиме работы угловая скорость не остается
постоянной, а колеблется в течение одного цикла. Это объясняется изменением величины крутящего момента двигателя.
- Максимальную угловую скорость коленвал приобретает в фазе рабочего хода, далее скорость снижается.

Автор:  Elektron [ 20 мар 2013, 15:38 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

Изображение
http://fotki.yandex.ru/users/v-50m/view/663377/

Изображение
http://fotki.yandex.ru/users/v-50m/view/663379/

Добавил позже. Изменил полярность включения диодов оптронов на схеме и плате

Автор:  mrfixer [ 20 мар 2013, 21:51 ]
Заголовок сообщения:  Re: Зажигание с автоматическим ФУОЗ на микроконтроллере

Да, разводка сделана по понятиям :ugeek:!

По алгоритму.
В связи с не постоянной угловой скоростью viewtopic.php?p=15036#p15036 ,
калибровка даст угол отличающийся от реального.
Угол 72 градуса NP1-ВМТ при PP-ВМТ 12 градусов упоминается в разных источниках.
Предлагаю просто измерить углы NP1-PP и PP-NP2 и калибровку не проводить.

Если не маяться с калибровкой, программа должна получиться довольно простой.
Предполагаю, что в интервале NP2-NP1 угловая скорость изменяется наиболее равномерно.
1 По импульсу PP (который будет синхронизирующим для программы) устанавливаем признак NP2.
2 По импульсу NP2, если установлен признак NP2, сбрасываем признак NP2 и запускаем таймер.
3 По импульсу NP1, если сброшен признак NP2, на основе показаний таймера решаем, нужно ли
вмешиваться в процесс управления зажиганием от PP (показания таймера, переполнение таймера).
Если нет, переходим к пункту 1.
4 На основе показаний таймера и выбранного графика регулирования рассчитываем необходимую
задержку (угол опережения), выдаём импульс и переходим к пункту 1.

Немного усложнит этот алгоритм тот факт, что РР установлен на 18 градусов, а иногда хочется угол в 12 градусов.

При 8000 об/мин, от NP1 до выдачи импульса зажигания 40 градусов расчётное время 668 мкс.

Страница 3 из 13 Часовой пояс: UTC + 4 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/