Page 3 of 4

Re: Аппаратный ШИМ против программного

Posted: Sat Dec 07, 2013 9:03 am
by XDA
Sergey89 wrote:SPI ремапица на другие пины. А выгода такая, что имеем 8 ШИМ каналов с аппаратной точностью, но интереснее было бы сделать с разными частотами. В таком виде как сейчас предложено я не вижу практического применения, т.к. проще на аппаратные таймеры повестить что можно, а что нельзя сделать софтом. Геморроя не больше чем при реализации программного ШИМ на одном канале таймера :)
и это тоже легко делается,
буфер разделяется на два, по переменно выводится то один, то другой. количество одновременно обсчитываемых бит может быть любое в пределах аппаратных ресурсов. (тем более, что их тратится очень мало)
таким образом реализуется абсолютно любая частота в пределах теоремы котельникова :)
а так же сигналы открытия форсунок, зарядки катушек зажигания и искры и т.д. ВЕСЬ точный по времени вывод можно сделать унифицировано, через одну технологическую реализацию.

к примеру, Peak-and-hold можно сделать целыми двумя способами:
с помощью двух ключей - это заводим два бита на вывод и даём команду вроде
000001111111111111111111111111111111111111111111111111111111100000000 <-hold
000001111111100000000000000000000000000000000000000000000000000000000000 -<peak

или с помощью микроШИМа:
000001111111101010101010101010101010101010101010101010101010101000000000
-------||Peak||-----------------------------------------------------------------------------------
------------------||||||||||||||||||||Hold||||||||||||||||||||||||||-------------

а переживания по поводу того, что мы занимаем канал АЦП - так и так и так придётся ставить внешнее АЦП с 3.3 в питанием и 5в биасом на аналоговые датчики.

Re: Текущий прогресс по прошивке.

Posted: Wed Apr 23, 2014 5:30 am
by rus084
Если программный ШИМ на базе 1MHz таймера, то 8 битный шим больше 4кгц нельзя сделать?

Re: Текущий прогресс по прошивке.

Posted: Wed Apr 23, 2014 11:09 am
by AndreyB
rus084 wrote:т.е. 8 битный шим больше 4кгц нельзя сделать?
напомни мне пожалуйста, что такое "8 битный шим"? Такой термин вообще есть, или мы его здесь изобрели?

Нет, не т.е. Когда квант времени через пару дней станет микросекундой, тогда и померяем, какой ШИМ у нас работает.

Re: Аппаратный ШИМ против программного

Posted: Wed Apr 23, 2014 11:21 am
by Maxi
russian wrote:
rus084 wrote:т.е. 8 битный шим больше 4кгц нельзя сделать?
напомни мне пожалуйста, что такое "8 битный шим"? Такой термин вообще есть, или мы его здесь изобрели?
такой термин вообще есть.
имеется ввиду что это шим который будет обеспечивать гарантированное разрешение не хуже 1/256*1/4000=0,0000009765625 с
Нет, не т.е. Когда квант времени через пару дней станет микросекундой, тогда и померяем, какой ШИМ у нас работает.
собственно примерно вот такой и будет - если любой задаче будет обеспечена задержка в пределах 1 кванта...

Re: Аппаратный ШИМ против программного

Posted: Wed Apr 23, 2014 3:09 pm
by AndreyB
Maxi wrote:разрешение не хуже 1/256*1/4000=0,0000009765625 с
Ага. Тогда вообще говоря я не уверен, что мы успеем: если скважность будет 1/256 то на 4KHz ~168 тиков может не хватить включить, а потом сразу выключить. Вот чисто угадыванием без замеров я бы сказал, что между событиями нам нужно будет порядка тысячи тактов - но это цифра с потолка.

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

А вообще говоря, хороший вопрос: какой максимальной частоты именно ШИМ нам может понадобится? Соленойды обычно в районе 500Гц. Вот Дима хочет 30KHz для управления генератором, это по делу?

Re: Аппаратный ШИМ против программного

Posted: Wed Apr 23, 2014 5:59 pm
by Maxi
Соленоиды - они разные бывают. Вот недавно как раз делал коробку - там соленоиды в P&H 4кгц как раз. 6 штук. правда я там делал 6 бит разрешение (этого вполне достаточно в том случае). Но все честно - 1/64*1/4000 отрабатывается.

Re: Аппаратный ШИМ против программного

Posted: Wed Apr 23, 2014 6:03 pm
by AndreyB
656.25 тика значит в нашем случае. Чёрт его знает, однажды нужно будет перевести event_queue.cpp со списка на дерево.

Нужны программисты, блин :)

Re: Аппаратный ШИМ против программного

Posted: Wed Apr 23, 2014 6:37 pm
by rus084
а мне можно тогда взять аппаратный шим?
или лучше отдельный шим контроллер? но им еще както управлять надо

Re: Аппаратный ШИМ против программного

Posted: Wed Apr 23, 2014 6:38 pm
by AndreyB
rus084 wrote:а мне можно тогда взять аппаратный шим?
Во-первых, тебе в твоей копии исходников можно всё, что угодно :)

Во-вторых, так какой же именно ШИМ тебе нужен? Откуда взялось 30KHz Откуда взялись 8 бит?

Re: Аппаратный ШИМ против программного

Posted: Wed Apr 23, 2014 6:43 pm
by Maxi
ну вот например для электронного дросселя надо 5кгц. на счет битности сложно сказать но 8 мало точно. 10 было бы уже работоспособно. 14-16 идеал.

Re: Аппаратный ШИМ против программного

Posted: Wed Apr 23, 2014 6:49 pm
by AndreyB
Что-то мне подсказывает, что 1/4096 на дроссель не нужно будет, а 1713/4096@5KHz должно не быть проблемой. Короче я понял, нужно сделать команду тестирования ШИМа - и все смогут поиграться со своим любимым режимом :)

Re: Аппаратный ШИМ против программного

Posted: Wed Apr 23, 2014 7:11 pm
by rus084
russian wrote:
rus084 wrote:а мне можно тогда взять аппаратный шим?
Во-первых, тебе в твоей копии исходников можно всё, что угодно :)

Во-вторых, так какой же именно ШИМ тебе нужен? Откуда взялось 30KHz Откуда взялись 8 бит?
в моей копии - да , но если тебе понадобится таймер , куда мне деваться?

30кгц - с потолка , потом найду золотую середину между коммутационными потерями и пульсациями тока (феррит может в насыщение уйти)

нужно 2 синхронизированных шима для управлением нижним и верхним плечом по отдельности

Re: Аппаратный ШИМ против программного

Posted: Wed Apr 23, 2014 7:13 pm
by puff
а можно сколхозить допмодуль, транслирирующий из spi в шим

Re: Аппаратный ШИМ против программного

Posted: Wed Apr 23, 2014 8:04 pm
by Sergey89
russian wrote:Что-то мне подсказывает, что 1/4096 на дроссель не нужно будет, а 1713/4096@5KHz должно не быть проблемой.
А это как? Почему 1/4096 может быть проблемой, а 1713/4096 нет?

Re: Аппаратный ШИМ против программного

Posted: Wed Apr 23, 2014 8:11 pm
by AndreyB
Sergey89 wrote:А это как? Почему 1/4096 может быть проблемой, а 1713/4096 нет?
В случае с 1/4096@5KHz у нас сколько времени между фронтом и спадом? В 1713 раз меньше, чем в случае 1713/4096.

Re: Аппаратный ШИМ против программного

Posted: Wed Apr 23, 2014 9:20 pm
by Maxi
а какая для гарантированного реального времени разница?

Re: Аппаратный ШИМ против программного

Posted: Wed Apr 23, 2014 10:44 pm
by AndreyB
Maxi wrote:а какая для гарантированного реального времени разница?
Если речь про 1/4096@5KHz, то это 168000000/5000/4096=8 тактов процессора. Я боюсь никакая програмная имплементация ШИМа это не осилит.

Но спаспает то, что 1/4096@5KHz кажется нам не понадобится. С програмным ШИМ мы можем вероятно добится 128/4096@5KHz и шире, для 99.9% реальных приложений мне кажется этого хватит. Если не хватит - пара аппаратных таймеров у нас всё-таки в запасе есть.

Re: Аппаратный ШИМ против программного

Posted: Thu Apr 24, 2014 1:20 am
by Maxi
между 128/4096@5 и 129/4096@5 те же 8 тактов процессора.

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

Re: Аппаратный ШИМ против программного

Posted: Thu Apr 24, 2014 1:28 am
by AndreyB
Maxi wrote:между 128/4096@5 и 129/4096@5 те же 8 тактов процессора.
В том смысле, который я вкладываю - нет, не 8 тактов.
Если у нас ШИМ 128/4096, то у нас события бывают во время
0 / 4096 / 5000
128 / 4096 / 5000
4096 / 4096 / 5000
4224 / 4096 / 5000
8192 / 4096 / 5000
и так далее

минимум между событиями - 128 / 4096 / 5000

Если у нас шим скважности 129 битности 4096 частоты 5000, то события происходят в
0 / 4096 / 5000
129 / 4096 / 5000
4096 / 4096 / 5000
4225 / 4096 / 5000
8192 / 4096 / 5000
и так далее
минимум между событиями - 129 / 4096 / 5000

тут нигде нет (129 - 128) / 4096 / 5000, так что нет и 8ми тактов. скважность либо 128 либо 129, переходное состояние отдельная конечно история - но оно тут не важно, как мы обработаем переходное состояние.

Re: Аппаратный ШИМ против программного

Posted: Thu Apr 24, 2014 6:02 am
by Sergey89
А если события разных каналов в одно время произошли? Или худший случай, но вроде как реальный. Все каналы должны изменить своё состояние в один момент времени. Сможет ли в этом случае такая реализация гарантировать, что 128/4096 и 129/4096 будут отличаться на 1/4096?

Re: Аппаратный ШИМ против программного

Posted: Thu Apr 24, 2014 7:54 am
by puff
что, опять упираемся в потолок быстродействия?

Re: Аппаратный ШИМ против программного

Posted: Thu Apr 24, 2014 11:40 am
by AndreyB
Sergey89 wrote:А если события разных каналов в одно время произошли? Или худший случай, но вроде как реальный. Все каналы должны изменить своё состояние в один момент времени. Сможет ли в этом случае такая реализация гарантировать, что 128/4096 и 129/4096 будут отличаться на 1/4096?
Если события слились в один момент - то они сольются в одно событие, обработаются вместе - лучший для нас вариант. Если же они подряд идут с разницей в микросекунду, то кто-то из них может чутка опоздать. Насколько именно - можно только тестом проверить, желаю удачи эту ситуацию воспроизвести :)

Я не парюсь, потому что я не вижу, как это может случаться чаще раза в сто лет.
puff wrote:что, опять упираемся в потолок быстродействия?
панику разводить не нужно, никто никуда не упирается :)

Re: Аппаратный ШИМ против программного

Posted: Tue May 13, 2014 8:52 pm
by AndreyB
В свежей версиии программы для логического анализатора они сделали экспорт в CSV

http://rusefi.com/articles/pwm_performa ... 4may13.csv
Кто хочет посчитать дребезжание этого теста? Надо как-то решать, что допустимо - что нет. 2 градуса дребезжания на 6000 оборотах - как часто мы можем себе его позволить? Первый раз будет последним? 1 раз в минуту допустимо? 10 раз в минуту допустимо? Если не 2 градуса, то сколько?

edit: исходный файл - http://rusefi.com/articles/pwm_performa ... .logicdata

Re: Аппаратный ШИМ против программного

Posted: Wed May 14, 2014 2:04 pm
by Sergey89
А что мы должны проверять, равенство времени между фронтами для каждого канала? И хорошо бы приблизить к реальным условиям тест. Например 4 форсунки, 4 катушки зажигания, клапан ХХ и т.д. И можно сделать тест, в котором все сигналы генерируются одновременно, чтобы посмотреть на сколько последний запаздывает от необходимого времени?

Re: Аппаратный ШИМ против программного

Posted: Wed May 14, 2014 2:14 pm
by AndreyB
Sergey89 wrote:И хорошо бы приблизить к реальным условиям тест. Например 4 форсунки, 4 катушки зажигания, клапан ХХ и т.д.
С такими реальными условиями это уже не тест, а просто реальная как раз прошивка с эмулированным триггером? Прошивка есть, готова к запуску желающими. Получается более важный вопрос - что считать приемлемым результатом, а что нет, по какому критерию?

Re: Аппаратный ШИМ против программного

Posted: Wed May 14, 2014 2:30 pm
by Sergey89
Разность между максимальным и минимальным временем между фронтами для каждого канала:

1 = 0.000002750
2 = 0.000022500
3 = 0.000003500
4 = 0.000009625
5 = 0.000031000
6 = 0.000005125

Re: Аппаратный ШИМ против программного

Posted: Wed May 14, 2014 2:37 pm
by AndreyB
Осталось понять, волнует ли нас максимум или среднее или медиана или распределение...

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

Re: Аппаратный ШИМ против программного

Posted: Wed May 14, 2014 2:41 pm
by Sergey89
russian wrote:
Sergey89 wrote:И хорошо бы приблизить к реальным условиям тест. Например 4 форсунки, 4 катушки зажигания, клапан ХХ и т.д.
С такими реальными условиями это уже не тест, а просто реальная как раз прошивка с эмулированным триггером? Прошивка есть, готова к запуску желающими. Получается более важный вопрос - что считать приемлемым результатом, а что нет, по какому критерию?
Зависит от характера сигнала или даже от требуемого разрешения. Например требования к точности УОЗ и времени впрыска могут быть разными. Когда мы говорим про точность УОЗ мы также должны учитывать, что ошибка будет зависеть от частоты вращения КВ. Но в общем случае мы не хотим получить ошибку больше одного младшего значащего разряда.

Re: Аппаратный ШИМ против программного

Posted: Wed May 14, 2014 2:51 pm
by Sergey89
Среднее значение по каждому каналу.

1 = 0.250017500
2 = 0.000250017
3 = 0.050003594
4 = 0.008333924
5 = 0.000333358
6 = 0.050003656

Re: Аппаратный ШИМ против программного

Posted: Wed May 14, 2014 2:52 pm
by AndreyB
Sergey89 wrote: Зависит от характера сигнала или даже от требуемого разрешения. Например требования к точности УОЗ и времени впрыска могут быть разными. Когда мы говорим про точность УОЗ мы также должны учитывать, что ошибка будет зависеть от частоты вращения КВ. Но в общем случае мы не хотим получить ошибку больше одного младшего значащего разряда.
Ну нас для начала интересует максимальное требование к точности между сигналами, которые могут привести к разрушению двигателя.

Какие неточности каких сигналов нам что-то разрушат?
Зажигание: детонация: на каких оборотах какая угловая точность нам нужна?
Впрыск: я верно понимаю, что этот сигнал более грубый, на него можно чутка забить?

Меня смущает, что у нас нет конкретного понимания конкретных требований. Без конкретных требований есть риск потратить наше ценное время на ненужное повышение точности.