UTC 3.3: Контроллер для теслы

А что мы делаем?
Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 27 фев 2012, 19:31

Пришла линейка из 50шт драйверов (IXDD609CI) для UTC . Жаль, софт еще не готов. Я рассчитывал, что к прибытию драйверов уже и софт будет :(

drivers.jpg

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 28 фев 2012, 02:51

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

Сделал ШИМ для ограничителя тока, и, похоже, немного налажал с расчетом фильтра. Но это должно легко решиться тупым повышением тактовой частоты, когда запущу DCM :)
Теперь нуно написать обработчик прерывания от OCD, который будет отвечать за режим, когда после срабатывания защиты тесла выключается на некоторые время.

На этом с процессором и ассемблером практически закончу и перейду к железу :)

Число для себя приведу тестлист, может понадобится :)

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

1. PW limit: off, Freq limit: off
Interrupter_enable должен быть всегда высокий

2. PW limit: on, Freq limit: off
По прошествию времени tpw, Interrupter_enable должен становиться низким. Это должно происходить с левой стороны от джиттера. После перехода 1->0 прерывателя, Interrupter_enable должен становиться высоким

3. PW limit: off, Freq limit: on
После фронта 1->0, Interrupter_enable должен становиться низким и держаться на время tood - ton. Джиттер должен остаться справа.
Обратить внимание, что в этом режиме не должны искажаться длинные (больше 5сек) сигналы.

4. PW limit: on, Freq limit: on
Interrupter_enable должен становиться низким на расстоянии tpw от начала импульса, после чего добрать время до полного периода и вернуться в высокое состояние.

misterio
Сообщения: 1032
Откуда: Россия

Сообщение misterio » 28 фев 2012, 07:18

работа кипит :) прогресс прет. молодцом!

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 01 мар 2012, 15:13

Итак, написал логику OCD, написал тестбэнч, тоесть, работать она должна, но в железе еще не пробовал. Написал еще одну интересную и относителньо простую штуку - при запуске контроллер будет проверять состояние прерывателя. Если прерыватель включен в течении 2 и более секунд, то он считается неисправным и тесла не запускается, вместо этого, контроллер 6 секунд мигает светодиодами, после чего переходит в режим конфигурации.

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

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

misterio
Сообщения: 1032
Откуда: Россия

Сообщение misterio » 02 мар 2012, 07:16

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

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

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 03 мар 2012, 01:38

Вообщем, написал синхронизатор, управления выходами и кучу другой чепухи. Контроллер должен быть уже вполне работоспособным. (Ну, минимально работоспособным - без коррекции фазы и прочих плюшек) Естественно, первое время будут вылезать тонны глюков, с которыми придется бороться, но до релиза они уйдут. Испытания будут кода мне привезут разъемы :)

Моща у драйвера вполне себе приличная. 100нф от -24 до +24 он накачивает за 400нс. Значит, выдаваемый ток = 12А. Мост из IRG4PC50U оно должно накачивать менее чем за 100нс. Кирпичи, как я и говорил, не потянет. Хотя, при большой хотелке можно заказать и более мощные драйвера. Для кирпичей я позже сделаю выход под внешние драйвера с дед-таймом.

Фронт:
rise.gif
rise.gif (4.64 КБ) 25609 просмотров

misterio
Сообщения: 1032
Откуда: Россия

Сообщение misterio » 03 мар 2012, 14:51

Кирпичи, как я и говорил, не потянет

какой процент длительности фронта от ширины импульса можно считать приемлемым?
или тут чисто время в абсолютных величинах важно?

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 03 мар 2012, 15:40

какой процент длительности фронта от ширины импульса можно считать приемлемым?
или тут чисто время в абсолютных величинах важно?

Важно время в абсолютных величинах.

Дело в том, что скорость включения и выключения IGBT не нулевая. Соответственно, делать фронт на затворе транзистора короче чем сам транзистор сможет его отработать - не имеет смысла. При этом следует учитывать именно время выключения транзисторов, оно важнее (транзистор должен выключится перед тем, как другой включится) и, обычно, дольше. Для IRG4PC50U, к примеру, задержка выключения 180нс, а фронт при выключении 86нс. Задержка выключения компенсируется компенсатором (которого еще нет) :) А вот делать фронт быстрее чем 86нс смысла не имеет. При этом, 86нс - это именно фронт включения (без учета отрицательных напряжений и до включения, которое около 12ти вольт) то есть, эквивалентный фронт по осциллографу может быть до 344 нс чтобы использовать скорость транзистора по максимуму.

Зависимость задержки ОС от длительности фронта будет разной в зависимости от того, используется ли компенсация ОС. Если компенсация используется, то задержка от сигнала ос до окончания переключения будет 86нс. Если нет, то 180нс + 86нс + длительность фронта.

Какую задержку можно иметь - зависит от того, сколько потерь можно понести :) Тут можно очень много считать. Но, естественно, чем меньше, чем лучше.

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 03 мар 2012, 15:47

Фанфары. Встречаем :)

misterio
Сообщения: 1032
Откуда: Россия

Сообщение misterio » 03 мар 2012, 17:22

вооооо! уже стримеры поперли :) крутота. значит тесле быть!

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 05 мар 2012, 03:34

Написал "предсказатель". Собственно, его работу можно увидеть из картинки. К сожалению, частота предсказателя получилось всего до 145МГц. Я рассчитывал хотябы на 200, но да ладно. Попробую прицепить их 4ре штуки на разных фазах. Должно получиться хорошо. Один "предсказатель" занимает 5% плисины.
Вложения
predictor.gif

misterio
Сообщения: 1032
Откуда: Россия

Сообщение misterio » 05 мар 2012, 08:14

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

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

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 05 мар 2012, 11:30

Тесла запускается прерывателем. Прерыватель к предсказателю не имеет никакаого отношения. На первом полупериоде (это который высокий) он замеряет период. На втором полупериоде (он низкий) он предсказывает переключение. Это работает если следующий полупериод больше предыдущего. Если он меньше, предсказатель должен переключиться по фронту сигнала, что и происходит.

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

Единицей замера есть один полпериод. Не важно - верхний или нижний. Предсказывается следующий полупериод - не важно, верхний или нижний.

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 09 мар 2012, 03:58

Итак, еще одна фича. История фичи довольно старая. Фишка в том, что ограничитель тока у меня никогда нормально с теслой не работал. Тоесть, срабатывать то он срабатывает, но абсолютные значения тока, обычно, какие-то нереальные. Проблема в иголках, которые наводятся на драйвер/токовый трансформатор и вообще на все подряд, когда стример появляется.

newfile1_162.jpg
newfile1_162.jpg (46.79 КБ) 25497 просмотров


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

А вот - та-же тесла, но без вторички.

ocd_good_196.gif
ocd_good_196.gif (4.84 КБ) 25497 просмотров


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

Отфильтровать это в аналоге не очень то и просто, так как частоты иголок и основная частота теслы вполне соизмеримы.
Это не очень хорошо, поэтому я сделал фильтр, который позволяет задать, какой длительности должно быть превышение тока, чтобы ограничитель таки сработал. Это число может колебатсья от 0 до 2000нс. К примеру, в моем случае нужно бы поставить 500нс.

Написать то, написал. Теперь это все нужно протестировать :)

misterio
Сообщения: 1032
Откуда: Россия

Сообщение misterio » 09 мар 2012, 08:18

потестить бы еще на нескольких разных теслах с разными параметрами и в разных режимах...

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

в порядке бреда и оффтопа:
сделать бы предсказатель сигнала OCD и в случае если отличие реального от предсказанного будет больше заданного - рубить все нах. защитить все это дело от наводок и быстродействие поставить на максимум - получится неубиваемая конструкция защищенная от всего чего только можно. эхх... мечты...

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 09 мар 2012, 14:06

потестить бы еще на нескольких разных теслах с разными параметрами и в разных режимах...

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

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

Это, как раз, элементарно считается, добавлю калькулятор в прогу. Кроме того, ток на макушке синусоиды практически постоянен.

сделать бы предсказатель сигнала OCD и в случае если отличие реального от предсказанного будет больше заданного - рубить все нах

Можно предсказывать ток, но не сигнал OCD. Для этого нужен был полноценный АЦП, которым бы оцифровывался сигнал тока. Я сначала тоже думал делать такое, но там куча существенных недостатков. Вариант с компаратором, который используется сейчас мне кажется лучше. Друге дело, что с АЦП можно было бы полноценно отфильтровать эти иголки, а не делать задержку.

Конструкция и так вполне не убиваемая. 500нс ничего не решают - ведь тесла вырубается не сразу по обнаружению превышения тока, а только в следующем нуле тока. Тут не нужна мгновенная реакция, главное, чтобы она была :)

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 12 мар 2012, 13:53

Итак, был первый взрыв. Долго искал причину. И, вроде, нашел. Я тестирую драйвер без вторички. Дак вот, оказывается, ток без вторички за то-же время нарастает практически в 2 раза больше, чем с ней. Я тестировал без ограничителя тока и получилось так, что ток превзошел все разумные пределы и выгорели транзисторы вместе с дорожками на плате силовухи. Вроде бы, я все восстановил и сейчас оно работает. Продолжаю тестировать дальше :)

misterio
Сообщения: 1032
Откуда: Россия

Сообщение misterio » 12 мар 2012, 17:43

бдительность и внимательность ключевое в нашем деле. но без пыща тоже ни как :)

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 16 мар 2012, 03:46

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

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

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

misterio
Сообщения: 1032
Откуда: Россия

Сообщение misterio » 16 мар 2012, 07:05

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

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 16 мар 2012, 12:37

Да, стримеры мешают. Собственно так и будет - вход в конфигурацию и выход. Сейчас для переключения режимов нужно передернуть питание. Я делал это для того, чтобы не допустить ситуации, когда компьютер подключен и тесла работает. Тогда мне это казалось хорошей идеей, но сейчас я понимаю, что это - очень неудобно.

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 26 мар 2012, 00:10

Сегодня хорошо поработал над теслой. Переделал программу - теперь не нужно отключать питание, просто появилась кнопочка "запустить теслу". Тоесть, настраивать можно будет не дергая питание постоянно. Хотя это и не так удобно, как с крутилками, зато все цифры точные. Это потянуло за собой огромное количество переделок.

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

* Фильтр обратной связи отфильтровывает дребезг и не реагирует на переключения обратной связи если они приходят с периодом менее 500нс друг от друга.
* Программа теперь не даст зашить настройки в неподходящую железяку.
* В режим настройки теперь войти гораздо сложнее. Таким образом, исключены случайные вхождения.

Прикрутить фазовый корректор пока не успел, но это не долго. Из больших штук, которые я пока не сделал остались генератор дедтайма и внешние выходы.

АПДЕЙТ: Прикрутил фазокорректор, и в нем есть баг. Откуда он берется, пока не знаю, оставлю разборки до завтра, уже спать пора.

Дабы было не скучно, скриншот проги в текущем состоянии:
Вложения
settings.gif

misterio
Сообщения: 1032
Откуда: Россия

Сообщение misterio » 26 мар 2012, 07:24

как это счас говорится - апдейт детектед. это радует.

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 26 мар 2012, 14:32

А вот как вы думаете, какой джиттер допустим для фронтов сигналов?

Если кто не знает, то джиттер - это "дрожание" сигнала, на осциллографе это выглядит вот так (джиттер - это толщина линии)
http://citforum.ru/nets/hard/jitter/jitter_hist1.gif

У меня сейчас получается порядка 20нс. Мне кажется, что это - просто офигенно много. Хотелось бы намного меньше, 5нс, хотябы. На работу теслы это вряд ли повлияет, но некрасиво.

misterio
Сообщения: 1032
Откуда: Россия

Сообщение misterio » 26 мар 2012, 17:39

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

Вернуться в «Наши проекты»



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 64 гостя