Открытый проект универсального зарядника

R2D2

Процесс планомерно приближается к завершению программы.

НО есть трудности:

В WinAvr есть 5 уровней оптимизации 0,1,2,3,s

При оптимизации “0” работает.
При оптимизации “1” или “s” не работает.

Кто нибудь сталкивался???

R2D2

Победил!

Отвечаю на свой вопрос:
При оптимизации WinAvr выбрасывает из подпрограммы все присвоения (в том числе и глобальным переменным), если эта переменная не читается в данной подпрограмме.

Проблема решается описанием глобальной переменной словом VOLATILE

mega_john
R2D2:

Победил!

Отвечаю на свой вопрос:
При оптимизации WinAvr выбрасывает из подпрограммы все присвоения (в том числе и глобальным переменным), если эта переменная не читается в данной подпрограмме.

Проблема решается описанием глобальной переменной словом VOLATILE

ну так это и есть оптимизация с точки зрения компилятора, убрать все лишнее(и присвоения тоже), ему же не извесно где в последствии будут нужны эти присвоения, об этом ему нужно сообщать, что такая переменная в оптимизации не участвует, примочка С.

R2D2

Если переменная объявлена вне всех программ и подпрограмм, значит ее юзают все подпрограммы.
Глупо все присвоения на нее выбрасывать из подпрограмм где ее не читают.
В ИАРе этот вопрос решен правильно.

С другой стороны в смысле оптимизации дурацких программ где программеры присваивают глобальным переменным че попало и непользуют их???

В данном случае WinAvr-овцы решили заделать по своему. Но это не “здравый смысл”.
И вместо исправления ошибки описали ее решение в факе.
И что теперь все глобальные переменные мне надо описывать volatile.

Вроди бы проблема решена, но на ней спотыкаются все новички и если они не читают по аглицки факи и надо додуматься еще в фак залезть.
Мнемоника чужая бысстро допереть не получается.
Если охватить всю проблему на более высоком уровне: “Юзера-WinAvr-Переход с другого компилятора-Гимор”, то данное решение не оптимально для людей.

Сколько народу тра…сь с отладчиками и убивали драгоценное время на спотыкание на ровном месте? А сколько свихнулось?

Ну а если еще шире смотреть “Люди и Плоды их рук и мозгов”, то может и правильно что кругом бардак, воспитывающий и натаскивающий людей на внимательность и трезвость.

sht0p0r

Сегодня собрал на макетке очередную версию сепика…
в этот раз с одним ключем и одним дроселем работает, из 11.5 производит 23v 4.5А дальше развивать успех отказывается, при запирании возбуждается затвор… пока затвор не возбуждается производит только электричество тепла почти не производит… много думал…
пришел к выводам…
1 макетка себя пережила надо делать пробную плату.
2 надо как-то изголиться и заказать в чипедипе правильных шимок.
3 надо запирать ключ минусом, как учили в школе.
4 где купить НОРМАЛЬНЫЕ драйвера, непонятно.

AlexN

Ключ - это полевик что-ли? так ему для запирания никакой минус не нужен. Вот совсем-совсем не нужен.
А в чем проблема с покупкой нормальных драйверов? 😉

sht0p0r
AlexN:

Ключ - это полевик что-ли? так ему для запирания никакой минус не нужен. Вот совсем-совсем не нужен.
А в чем проблема с покупкой нормальных драйверов? 😉

ну если Вы не вкурсе, то полевики при 0v затвор-исток могут при определенных обстоятельствах самопроизвольно открываться, самое распространееное условие это отрицательная температура кристала. для этого в “нормальных” драйверах предусмотрено запирание “минусом”. по тойже причине микросхеммуделятся на текоторые можно использовать до 0 и на те которые работают при минусе забортом. пример очень распространенная UC3842 стоит во всей бытовой технике, а вот в сварочный аппарат ставится 2842 😃 расчитанная для работы при “минусе”. в нашем случае девайс портативный зимние полетушки/покатушки никто не отменял вот и приходится думать о том чтоб этот девайс в руках у народа не взрывался 😃

проблема в том что 1А на заряд затвора ну никак в данной конструкции не устраивает… надо зарядить емкость в 3-4нф да потом перезарядить его вминус 1-2в по причинам указанным выше.
сегодня товарищь все митино облазил, на прошлой неделе искал нетути “правильных” драйверов лежит один IR у всех, а поведение с таким драйвером я уже описывал + к сказанному выше видно ступеньку при прохождении плато миллера надо постараться уложиться в 60-100 наносекунд иначе утюг, а не зарядник получится… в чипе дипе одни H/L лежат на 600в да еще и тормозные , а из нижних полный хлам… надо что нить типа EL7154

в принципе на 2х ключах 50n06 я эту штуку до 170W раскочегарил с драйверами ir2121 но это не езда, а скорее ерзанье.
вот такие вот грусные мысли… топать мне сними в интернет магазины…и ждать потом 2-3 недели. 😦

AlexN

Про рабочие диапазоны температур компонентов мне можно не рассказывать - сам разрабатываю электронику.
Раз Вы уверены, что нужен минус (самому вникать - времени нет), попробую дать совет 😃

  1. Митино - фтопку. Чип-и-дип - туда же, самый дорогой магазин.
  2. Efind пробовали?
  3. В Тритоне, например, есть драйверы на 13А (TC4451, TC4452) - гляньте, может подойдут.
Vasily_A
R2D2:

Если переменная объявлена вне всех программ и подпрограмм, значит ее юзают все подпрограммы.
Глупо все присвоения на нее выбрасывать из подпрограмм где ее не читают.
В ИАРе этот вопрос решен правильно.

В данном случае WinAvr-овцы решили заделать по своему. Но это не “здравый смысл”.
И вместо исправления ошибки описали ее решение в факе.
И что теперь все глобальные переменные мне надо описывать volatile.

Уважаемый R2D2! “WinAvr-овцы” сам компилятор не писали, а сделали сборку GCC - комплекта для _ПРОСТОЙ_ работы под виндами. соответствие компилятор стандартам очень жесткое, куча “маньяков” свободного софта по всему миру мечтает найти несоответсвие или баг, и прославить этим свое имя на вечные времена…

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

еще раз советую просматривать asm-листиг после компиляции, очень помогает в повышении качества кода. например, помогает понять, когда надо явно указывать преобразование типов, код в 2-3 раза можно ужать.

sht0p0r
AlexN:

Про рабочие диапазоны температур компонентов мне можно не рассказывать - сам разрабатываю электронику.
Раз Вы уверены, что нужен минус (самому вникать - времени нет), попробую дать совет 😃

  1. Митино - фтопку. Чип-и-дип - туда же, самый дорогой магазин.
  2. Efind пробовали?
  3. В Тритоне, например, есть драйверы на 13А (TC4451, TC4452) - гляньте, может подойдут.

1 +1 😃
2, я вкурсе все равно большое спасибо
3 спасибо буду посмотреть 😃

R2D2

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

На Borlande C++, Pacal, … и все прочие языи на большом компе не покушаются на глобальны перемнные. И затем ИАР тоже не проявил таких тендений. Вот я грешным делом и подумал.
А зачем их выкидывать? Таким образом можно выкидывать не только переменные но и целые куски кода для оптимизации и при этом обязать прогаммера следить за его кусками в асм-листинге
и особым способом помечать все куски кода “Я написал эти куски шоб они работали” и потом подтвердить “я действительно хочу шоб оптимизатор не выкидывал эти куски”.

И всетаки мне кажется что это нелогично. Я допускаю, что чегото не понимаю. И могу найти оправдание для токого пведения следующее:

  1. GCC был адаптирован под АВР и просто не получилось по человечески это сделать (без всяких там дполнительных типов) из-за особенностей GCC. Собственно пчему они этот вопрос в факе и бъясняют первым, потому как их наверно задолбали с этим.
  2. Сущестуют такие примеры подпрограмм, где программер осущесвяет присвоение глобальной переменной значение, а компилятор не включает это присвоение в конечный код и при этом программа работает как хотел программер. ??? 😂
sht0p0r

😃 Сегодня нашел таки комплектуху вот здесь www.elbase.ru не выпендриваются, что типа заказ уних от 1000р и тд и тп. цены помоему вполне демократичные. заказал. едет. тем временем в программе, не скажу какой, рисовал схему и патерны. пока пробную, сплошные непонятки с ОС.
как замешивать то, что идет с шунта и с проца пока в карандаше не придумал. похоже нарисую площадок и дырок(пардон отверстий), и буду сооружать… поместу. блин, а туда ведь еще по напряжению защиту надо подмешать…
спецы по ОУ могут предлагать варианты решения. шим будет такой: LM3488MM . шунт 0.02ОМ с него есть пропорционально усиленный сигнал от 0 до 5 в.
с проца напраяжение 0-5в. защита по максимальному напряжению с резисторного делителя.
да R2D2, сигнал вгключения преобразователя - логический 1. там в мануале на шимку есть типовое включение.

AlexN
sht0p0r:

ну если Вы не вкурсе, то полевики при 0v затвор-исток могут при определенных обстоятельствах самопроизвольно открываться, самое распространееное условие это отрицательная температура кристала. для этого в “нормальных” драйверах предусмотрено запирание “минусом”.

Поделитесь источником информации.
Мои данные говорят об обратном, в даташитах на графиках Gate Threshold Voltage vs Temperature пороговое напряжение увеличивается с понижением температуры.
Блок-схемы доступных драйверов (рабочие температуры - от -40 до +125) также не содержат внутренних источников отрицательного напряжения.

sht0p0r
AlexN:

Поделитесь источником информации.
Мои данные говорят об обратном, в даташитах на графиках Gate Threshold Voltage vs Temperature пороговое напряжение увеличивается с понижением температуры.
Блок-схемы доступных драйверов (рабочие температуры - от -40 до +125) также не содержат внутренних источников отрицательного напряжения.

я уже непомню кто меня этому учил видимо ктото из ГУРУ, вот пример EL7154CN_ELANT.pdf первая страница. прям в Шапке: “This is necessarary to ensure that the n-channel device can turn off effectively when VL goes below GND. In some power-FET and IGBT applications, negative drive desirable to insure effective turn-off.” к сожалению на попытку подгрузить файл форум сказал: “Неудачная загрузка. Вам запрещено загружать такой тип файлов” сори.
опять же повторяюсь не всегда и не у всех, и даже поличному опыту знаю, что в 9 из 10 случаев это нафих ненадо. но для - за бортом очень даже полезно. а делать - действительно умеют только продвинутые драйвераы остальные в лучшем случае Pdng от Agnd отвязывают. мне удалось купить MIC4420 там даже Isens нет, но зато он быстрый и до 6А в импульсе и земли не развязаны 😦 .

AlexN

Даташит на EL7154 скачал и изучил.
Не увидел в приведенной цитате ничего, что говорило бы о самооткрывании полевиков при минусе - всего-навсего
“в некоторых случаях желательно использовать отрицательное напряжение для гарантированно быстрого запирания”.
Найдите в даташите на полевик график Gate Threshold Voltage vs Temperature и посмотрите на него внимательно 😃
P.S. Понятно что подачей отрицательного напряжения можно добиться более быстрого запирания тарнзистора, вопрос в том, насколько это необходимо. Использование сильноточных драйверов может дать не меньший эффект.
Страшилки про самооткрывающиеся транзисторы предлагаю пока забыть 😃

R2D2

Перефразирую вопрос sht0p0r

(“спецы по ОУ могут предлагать варианты решения. шим будет такой: LM3488MM . шунт 0.02ОМ с него есть пропорционально усиленный сигнал от 0 до 5 в.с проца напраяжение 0-5в. защита по максимальному напряжению с резисторного делителя.”):

как цивильно замешать следующее?

  1. Обратную связь по току
  2. Vmax < 26в
  3. Imax < 5-10А
  4. ChargeEnable

На микросхему LM3488
у которой из входов Isen для ограничения максимального тока на полевике, т.е. максимальной мощности всего девайса.
и нога FB - входной сигнал на которой пропорционален выходной скваженности
и нога COMP судя по всему для демпфирования

Между LM3488 и драйвером наверное можно впихнуть логику (ChargeEnable).
Условие Imax < 5-10А косвенно можно ограничить ограничением Isen.
Для обратной связи по току нужен один операционник.
Осталось условие Vmax < 26в его тоже через дополнительный операционник???

sht0p0r
R2D2:

как цивильно замешать следующее?

  1. Обратную связь по току
  2. Vmax < 26в
  3. Imax < 5-10А
  4. ChargeEnable

На микросхему LM3488
у которой из входов Isen для ограничения максимального тока на полевике, т.е. максимальной мощности всего девайса.
и нога FB - входной сигнал на которой пропорционален выходной скваженности
и нога COMP судя по всему для демпфирования

Между LM3488 и драйвером наверное можно впихнуть логику (ChargeEnable).
Условие Imax < 5-10А косвенно можно ограничить ограничением Isen.
Для обратной связи по току нужен один операционник.
Осталось условие Vmax < 26в его тоже через дополнительный операционник???

Isens нетрогать бадет работать странсформатора тока между землей и истоком ключа
вход с шунта и вход Pwm с проца перенес один в один с того что ты мне прислал и запихал в 4ый элемент LM324 теперь этот выход надо впихнуть на Comp, а на FB защиту от перенапряжения по выходу. должен как я понимаю получиться чистый Curent mode. 😃 помоему вот так должно работать.
только уровни из вот этой гадости и шимки надо согласовать, я так понимаю резисторные делители нас в этом спасут.

sht0p0r
AlexN:

Даташит на EL7154 скачал и изучил.
Не увидел в приведенной цитате ничего, что говорило бы о самооткрывании полевиков при минусе - всего-навсего
“в некоторых случаях желательно использовать отрицательное напряжение для гарантированно быстрого запирания”.
Найдите в даташите на полевик график Gate Threshold Voltage vs Temperature и посмотрите на него внимательно 😃
P.S. Понятно что подачей отрицательного напряжения можно добиться более быстрого запирания тарнзистора, вопрос в том, насколько это необходимо. Использование сильноточных драйверов может дать не меньший эффект.
Страшилки про самооткрывающиеся транзисторы предлагаю пока забыть 😃

флейм в сторону…
для меня слова быстрый (fast) и эффективный (effective) не синонимы. покрайней мере в русском языке. написано “желательно” => делайте если есть такая возможность, нет возможности ну фиг с ним.
сейчас есть проблема с организацией ОС, вот здесь нужна помощь, прошу высказываться если есть что по делу. если нет будем городить по любительски.
это незнал, но забыл. это знал, но решил что лишнее итп. 😃

R2D2

Не совсем понял, а точнее совсем не понял.

На всякий пожарный просба не путать PWMы !!!
В схеме есть 2 PWMа

  1. PWM(ШИМ) который идет с проца через разъем проходит через фильтр низких частот(сглаживается) и превращается в опорное напряжение для стабилизации тока.
  2. PWM(ШИМ) генерится стабилизатором по току. Это делала ТЛ, теперь это будет делать LM3488. Этот PWM гораздо более высокочастотный и резкий т.к. он управляет драйвером, а драйвер полевиком силовой схемы.

К сожалению с теорией по операционникам слабоват.
На схеме не видно какие сигналы мешаются.

sht0p0r
R2D2:

Не совсем понял, а точнее совсем не понял.

На всякий пожарный просба не путать PWMы !!!
В схеме есть 2 PWMа

  1. PWM(ШИМ) который идет с проца через разъем проходит через фильтр низких частот(сглаживается) и превращается в опорное напряжение для стабилизации тока.
  2. PWM(ШИМ) генерится стабилизатором по току. Это делала ТЛ, теперь это будет делать LM3488. Этот PWM гораздо более высокочастотный и резкий т.к. он управляет драйвером, а драйвер полевиком силовой схемы.

К сожалению с теорией по операционникам слабоват.
На схеме не видно какие сигналы мешаются.

их уже больше 😦
на рисунке который я повесил значком pwm отмечен вход с процессора, верхний вывод R31 это вход с шунта. comp к ноге LM3488 вопрос, что между ними…

ЮГЮ
R2D2:

Не совсем понял, а точнее совсем не понял.

На всякий пожарный просба не путать PWMы !!!
В схеме есть 2 PWMа

  1. PWM(ШИМ) который идет с проца через разъем проходит через фильтр низких частот(сглаживается) и превращается в опорное напряжение для стабилизации тока.
  2. PWM(ШИМ) генерится стабилизатором по току. Это делала ТЛ, теперь это будет делать LM3488. Этот PWM гораздо более высокочастотный и резкий т.к. он управляет драйвером, а драйвер полевиком силовой схемы.

К сожалению с теорией по операционникам слабоват.
На схеме не видно какие сигналы мешаются.

Прочитал первое Ваше сообщение. Очень солидарен во всем!!!А Вы в monitor.net.ru в разделе ремонт ЖКИ Плазма не появлялись?