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

Про байтики и логику ЭБУ
User avatar
XDA
Posts: 441
Joined: Wed Oct 23, 2013 7:28 pm

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

Post by XDA »

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

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

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

а переживания по поводу того, что мы занимаем канал АЦП - так и так и так придётся ставить внешнее АЦП с 3.3 в питанием и 5в биасом на аналоговые датчики.
Теория хороша в том и только том случае, если она может достоверно предсказать результаты каждого нового опыта
User avatar
rus084
contributor
contributor
Posts: 678
Joined: Sun Dec 01, 2013 1:40 pm
Location: Russia , Stavropol

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

Post by rus084 »

Если программный ШИМ на базе 1MHz таймера, то 8 битный шим больше 4кгц нельзя сделать?
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

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

Post by AndreyB »

rus084 wrote:т.е. 8 битный шим больше 4кгц нельзя сделать?
напомни мне пожалуйста, что такое "8 битный шим"? Такой термин вообще есть, или мы его здесь изобрели?

Нет, не т.е. Когда квант времени через пару дней станет микросекундой, тогда и померяем, какой ШИМ у нас работает.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

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

Post by Maxi »

russian wrote:
rus084 wrote:т.е. 8 битный шим больше 4кгц нельзя сделать?
напомни мне пожалуйста, что такое "8 битный шим"? Такой термин вообще есть, или мы его здесь изобрели?
такой термин вообще есть.
имеется ввиду что это шим который будет обеспечивать гарантированное разрешение не хуже 1/256*1/4000=0,0000009765625 с
Нет, не т.е. Когда квант времени через пару дней станет микросекундой, тогда и померяем, какой ШИМ у нас работает.
собственно примерно вот такой и будет - если любой задаче будет обеспечена задержка в пределах 1 кванта...
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

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

Post by AndreyB »

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

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

А вообще говоря, хороший вопрос: какой максимальной частоты именно ШИМ нам может понадобится? Соленойды обычно в районе 500Гц. Вот Дима хочет 30KHz для управления генератором, это по делу?
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

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

Post by Maxi »

Соленоиды - они разные бывают. Вот недавно как раз делал коробку - там соленоиды в P&H 4кгц как раз. 6 штук. правда я там делал 6 бит разрешение (этого вполне достаточно в том случае). Но все честно - 1/64*1/4000 отрабатывается.
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

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

Post by AndreyB »

656.25 тика значит в нашем случае. Чёрт его знает, однажды нужно будет перевести event_queue.cpp со списка на дерево.

Нужны программисты, блин :)
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
rus084
contributor
contributor
Posts: 678
Joined: Sun Dec 01, 2013 1:40 pm
Location: Russia , Stavropol

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

Post by rus084 »

а мне можно тогда взять аппаратный шим?
или лучше отдельный шим контроллер? но им еще както управлять надо
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

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

Post by AndreyB »

rus084 wrote:а мне можно тогда взять аппаратный шим?
Во-первых, тебе в твоей копии исходников можно всё, что угодно :)

Во-вторых, так какой же именно ШИМ тебе нужен? Откуда взялось 30KHz Откуда взялись 8 бит?
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

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

Post by Maxi »

ну вот например для электронного дросселя надо 5кгц. на счет битности сложно сказать но 8 мало точно. 10 было бы уже работоспособно. 14-16 идеал.
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

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

Post by AndreyB »

Что-то мне подсказывает, что 1/4096 на дроссель не нужно будет, а 1713/4096@5KHz должно не быть проблемой. Короче я понял, нужно сделать команду тестирования ШИМа - и все смогут поиграться со своим любимым режимом :)
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
rus084
contributor
contributor
Posts: 678
Joined: Sun Dec 01, 2013 1:40 pm
Location: Russia , Stavropol

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

Post by rus084 »

russian wrote:
rus084 wrote:а мне можно тогда взять аппаратный шим?
Во-первых, тебе в твоей копии исходников можно всё, что угодно :)

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

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

нужно 2 синхронизированных шима для управлением нижним и верхним плечом по отдельности
puff
contributor
contributor
Posts: 2961
Joined: Mon Nov 11, 2013 11:28 am
Location: Moskau

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

Post by puff »

а можно сколхозить допмодуль, транслирирующий из spi в шим
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

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

Post by Sergey89 »

russian wrote:Что-то мне подсказывает, что 1/4096 на дроссель не нужно будет, а 1713/4096@5KHz должно не быть проблемой.
А это как? Почему 1/4096 может быть проблемой, а 1713/4096 нет?
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

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

Post by AndreyB »

Sergey89 wrote:А это как? Почему 1/4096 может быть проблемой, а 1713/4096 нет?
В случае с 1/4096@5KHz у нас сколько времени между фронтом и спадом? В 1713 раз меньше, чем в случае 1713/4096.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

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

Post by Maxi »

а какая для гарантированного реального времени разница?
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

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

Post by AndreyB »

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

Но спаспает то, что 1/4096@5KHz кажется нам не понадобится. С програмным ШИМ мы можем вероятно добится 128/4096@5KHz и шире, для 99.9% реальных приложений мне кажется этого хватит. Если не хватит - пара аппаратных таймеров у нас всё-таки в запасе есть.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

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

Post by Maxi »

между 128/4096@5 и 129/4096@5 те же 8 тактов процессора.

нужно же не только сами условия гарантий переключения выполнять но и заданную битность.
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

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

Post 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, переходное состояние отдельная конечно история - но оно тут не важно, как мы обработаем переходное состояние.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

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

Post by Sergey89 »

А если события разных каналов в одно время произошли? Или худший случай, но вроде как реальный. Все каналы должны изменить своё состояние в один момент времени. Сможет ли в этом случае такая реализация гарантировать, что 128/4096 и 129/4096 будут отличаться на 1/4096?
puff
contributor
contributor
Posts: 2961
Joined: Mon Nov 11, 2013 11:28 am
Location: Moskau

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

Post by puff »

что, опять упираемся в потолок быстродействия?
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

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

Post by AndreyB »

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

Я не парюсь, потому что я не вижу, как это может случаться чаще раза в сто лет.
puff wrote:что, опять упираемся в потолок быстродействия?
панику разводить не нужно, никто никуда не упирается :)
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

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

Post by AndreyB »

В свежей версиии программы для логического анализатора они сделали экспорт в CSV

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

edit: исходный файл - http://rusefi.com/articles/pwm_performance/hybrid.logicdata
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

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

Post by Sergey89 »

А что мы должны проверять, равенство времени между фронтами для каждого канала? И хорошо бы приблизить к реальным условиям тест. Например 4 форсунки, 4 катушки зажигания, клапан ХХ и т.д. И можно сделать тест, в котором все сигналы генерируются одновременно, чтобы посмотреть на сколько последний запаздывает от необходимого времени?
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

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

Post by AndreyB »

Sergey89 wrote:И хорошо бы приблизить к реальным условиям тест. Например 4 форсунки, 4 катушки зажигания, клапан ХХ и т.д.
С такими реальными условиями это уже не тест, а просто реальная как раз прошивка с эмулированным триггером? Прошивка есть, готова к запуску желающими. Получается более важный вопрос - что считать приемлемым результатом, а что нет, по какому критерию?
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

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

Post by Sergey89 »

Разность между максимальным и минимальным временем между фронтами для каждого канала:

1 = 0.000002750
2 = 0.000022500
3 = 0.000003500
4 = 0.000009625
5 = 0.000031000
6 = 0.000005125
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

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

Post by AndreyB »

Осталось понять, волнует ли нас максимум или среднее или медиана или распределение...

Еще можно попытаться проверить корреляцию дребезка с наличием событий на других каналах в окрестности дребезжащего сигнала.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

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

Post by Sergey89 »

russian wrote:
Sergey89 wrote:И хорошо бы приблизить к реальным условиям тест. Например 4 форсунки, 4 катушки зажигания, клапан ХХ и т.д.
С такими реальными условиями это уже не тест, а просто реальная как раз прошивка с эмулированным триггером? Прошивка есть, готова к запуску желающими. Получается более важный вопрос - что считать приемлемым результатом, а что нет, по какому критерию?
Зависит от характера сигнала или даже от требуемого разрешения. Например требования к точности УОЗ и времени впрыска могут быть разными. Когда мы говорим про точность УОЗ мы также должны учитывать, что ошибка будет зависеть от частоты вращения КВ. Но в общем случае мы не хотим получить ошибку больше одного младшего значащего разряда.
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

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

Post by Sergey89 »

Среднее значение по каждому каналу.

1 = 0.250017500
2 = 0.000250017
3 = 0.050003594
4 = 0.008333924
5 = 0.000333358
6 = 0.050003656
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

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

Post by AndreyB »

Sergey89 wrote: Зависит от характера сигнала или даже от требуемого разрешения. Например требования к точности УОЗ и времени впрыска могут быть разными. Когда мы говорим про точность УОЗ мы также должны учитывать, что ошибка будет зависеть от частоты вращения КВ. Но в общем случае мы не хотим получить ошибку больше одного младшего значащего разряда.
Ну нас для начала интересует максимальное требование к точности между сигналами, которые могут привести к разрушению двигателя.

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

Меня смущает, что у нас нет конкретного понимания конкретных требований. Без конкретных требований есть риск потратить наше ценное время на ненужное повышение точности.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions

Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Post Reply