Перейти к содержанию
    

drum1987

Участник
  • Постов

    253
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные drum1987


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

    Объединяя выходы по диодному ИЛИ, мы получим потребление от преобразователя с самым высоким входным напряжением (вообще-то могут и 2-3 с самыми высокими отдавать туда мощность в различных долях).

    МК тут, как и вообще это бывает в источниках, остается безработным. Нечего ему делать, кроме как моргать светодиодами и замысловатые графики на цветном дисплее рисовать, которые никто и понимать не будет.

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

     

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

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

     

    P.S. C праздником!!

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

    на 10 затворов промежуточный усилитель.

    Выбрать нужно что-то одно: либо пушпул, либо МК, без раздвоения сознания.

    Именно фиксированый и одинаковый

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

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

    Что делать с полученной от отдельных банок энергией - решайте дополнительно.

    Это годится для зарядника, не буферного режима. Но так уж Вы задачу вроде и сформулировали.

     

    Погодите...у меня чето аж сознание рухнуло :help: .Я вам сейчас расскажу как я представлял балансир себе сам, а вы потом поправите и мы придем к одному видению конечного устройства:

    82ff40282f50t.jpg

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

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

     

    Скажите мое видение совпадает с вашим?

  3. Накидал модельку pushpulla, с предварительным расчетом в программе exellentIT_3500. Получилось прям почти то, что я хочу...

    c84e538f50c8t.jpg

    погонял модель:

    5f853c154a92t.jpg

    на верхнем графике мощность потребляемая и нагрузки, на втором КПД, на третьем осциллограмма на стоке полевика.

     

    Опытные люди прокоментируйте модель пожалуйста :smile3009: . На вскидку КПД 85% замечательно(во всяком случае уже хорошо), 1 виток в первичке позволяет надеяться на печатный транс( Microwatt спасибо за ссыль вчерашнюю...я прям проникся). Вообщем буду макетировать...

     

    Попутно вопрос: есть ли драйверы для пушпула с фиксированным/программируемым мертвым временем?чтоб мне по простому сделать от МК ШИМ и не парить мозг...хотя все больше думаю о фиксированном коэфф-те заполнения и при этом либо включать преобразователь либо нет.

     

    Модель как всегда в аттаче

    pushpull1.rar

  4. Переделал модель + поставил те паразитные параметры которые получились в макете(сопротивления обмоток например)...Ключ поставил тот. что стоит сейчас irf1324...

     

    КПД при выходной мощности 8 Вт =57% :crying: с увеличением мощности падает ниже 20%...

     

    И еще один вопрос: в макете страшно греются входные конденсаторы которые параллельно банке аккумулятора, а судя по кэпу на них сеется не более 100 мВт такое может быть?...

     

    forward в аттаче, сейчас делаю пуш пулл...

    forward2.rar

  5. Включил. Как ни странно, затворы работают... Накачку-то их наверное делать можно от одного источника? Тогда картина упрощается.

    Рад, что теперь вы мне поверили:). Накачка будет отдельная, так как каждый этаж индивидуален и требует своего тока балансировки(ктото не будет требовать вообще, а ктото по максимуму), но эта проблема не такая большая ибо я уже нашел дешевые 2 А сдвоенные драйверы в SOIC8...

     

    А сами прямоходы... там индуктивности порядка на два занижены. Не прямоход, а ошметки какие-то от фронтов.

    Хм...беглый расчет делал по программе Владимира Денисенко - по его расчетам получилось 4 витка и 94мкГн, у меня же 4 витка и 63 мкГн. Согласен что меньше, но не на порядок...

    4976Bezymyannyi.PNG

    И поясните пожалуйста что значит: ошметки от фронтов...

     

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

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

     

    А я пока модель эту изменю и накидаю модельку и макет пуш пула...

     

    P.S. убрал размагничивающую обмотку: выброс увеличился с 42 В до 50 В...вроде не так много?или нет?

    P.P.S. Microwatt признаю я идиот :smile3046: затупил с индуктивностью... точнее с приставко1 микро в кэпе...поправил спасибо что ткнули

  6. Прорисуйте схему драйвера какой-нибудь средней банки. Потом умножайте на 10 и оценивайте сложность, технологичность.

    Проблемы увидите когда вплотную займетесь схемой. А так - действительно, есть куча АЦП, ЦАП, вроде и тему снимает.

    накидал модельку по случаю:

    ab4dedd17be6t.jpg

    в моем случае облегчает ситуацию то, что все истоки транзисторов сидят на земле по переменному току...поэтому изврат с кондерами (C10, C12, C14) и диодами (D11, D14, D17) реально работает:

    d8619360a64ft.jpg

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

     

    По модельке(в аттаче) извиняюсь за отсутствие RDC цепочек и паразитных параметров, просто делал нахрапом...

     

    Такой вариант имеет право на жизнь?

    forward1.rar

  7. Вот с управляющим трансформатором некоторые проблемы... Ключи с рабочим напряжением на затворе вольта 2-2.5 вряд ли найти. Хотя, и тут могут быть маленькие схемотехнические хитрости, но до них нужно с самим принципом определится.

    Схему формирования ШИМ, драйверы полевиков предполагается питать от напряжения зарядки это 30 В.

     

    Городить прямоход на 3 вольта или, не дай бог, МК сюда впутывать - гиблая затея...

    На счет прямохода соглашусь, а вот чем микроконтроллер не угодил я хз....12 ШИМов там есть, АЦП там есть...обработку полученных напряжений вести можно и соответственно регулировать ШИМ для каждой банки в зависимости от напряжений на них тоже можно. В чем проблема то?

     

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

    Мысль хорошая, тогда надо выбрать топологию для DC-DC 30 В входа и ток заряда 10А для 3,6 В банки.

  8. Спасибо за ответы, я, честно говоря, про пассивную балансировку както не задумывался даже, просто раз уж встал такой вопрос, то хочу немного пояснить поставленную задачу: заказчик в идеале хочет заряжать аккумы за 20-30 минут, что фактически накладывает высокие требования на балансир(при наличии разбалансированных банок скорость разряда более заряженной будет довольно велика, и следовательно мощность рассеяния будет тоже большой...может я и не прав). Предполагается что балансир будет находиться в герметичном корпусе аккумулятора, а это накладывает ограничение на рассеиваемую мощность.

     

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

     

    Кажется, при активной они у Вас намного больше получаются.

    если учесть что средний КПД прямохода 80%, то может оказаться наоборот...просто на макете я пока получил 50...

     

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

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

     

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

  9. Собственно проблема похожа на проблему человека в топике: http://electronix.ru/forum/index.php?showtopic=84805 с той разницей, что мониторинг и управление я буду делать на кортекс м3 (а в перспективе мне вообще все равно) и ток заряда 10 А. Запостить решил тут ибо там движухи так и не наступило.

     

    Суть такова: есть батарея из LiFePo4 банок 3,3 В 2300 мА*ч. В каждом этаже по 3 банки в параллель и всего 9 этажей. Итого 27 банок, напряжение батареи 29,7 В, емкость 6900 мА*ч. Появилась проблема ее зарядки, точнее не зарядки а балансировки этажей. Пассивную балансировку отсекли сразу ибо это огромные потери энергии, активные балансиры на переключаемых конденсаторах тоже не подходят в силу малого тока балансировки и экспоненциальной его зависимости от разности напряжений на банках.

     

    Пока единственное что пришло в голову это преобразователь DC-DC с каждого этажа по отдельности на всю батарею:

    32edd5d295c3t.jpg

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

     

    На данном этапе реализовал макет прямохода для одного этажа, но КПД получить выше 50% не могу (пока не предмет обсуждения). Да и както плохо представляю себе трансформатор с 9ью первичками каждая из которых на 10 А расчитана(это по прикидкам не меньше 10 жил по 0,5 мм).

     

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

     

    Буду очень благодарен за любые ответы. Если чтото не дописал, то спрашивайте - всегда отвечу.

  10. Разрабатываю приемник (вернее уже доделываю) и появилась проблема(вернее на стадии отладки на нее особо внимания не обращали, а сейчас обратили). Проблема в том, что AD9874 грузится через раз...На самом деле в устройстве подружены "недруги" TMS5502 и AD9874 и из-за проблем с конфигурированием McBSP порта проц как SPI его пришлось делать программным...частота выбрана очень маленькой(клоки всего 36 кГц)...По картинкам на лог. анализаторе все тайминги выдержаны, но загрузка через раз. Причем есть 2 канала(соответственно с 2мя различными конфигурациями AD) так вот один из них старутует 7 раз и з 10, а второй 2 :smile3046:

    Уже не знаю что думать...даташит откровенно хиловат в отношении именно процесса загрузки это микрухи.

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

     

    P.S. Если необходима какаято доп информация (типа диаграмм, кусков кода или еще чегонибудь) то я выложу без проблем.

  11. Списался с Рязаньским универом сегодня ответили прислали программу свою...группа 8-10 человек 40к за недельный курс.

    посмотрел - да ниче впечатляющего...фильтры мы и сами можем делать :smile3009:

     

    Тете писал - ни ответа ни привета :crying:

    Грустно это все...неужели все самому изучать это неэффективно ниразу

    ____________________________.pdf

  12. Вот список универов, в которые рекомендуют обратиться за обучением по TI DSP. Выделил Новосиб:

     

    Московский Энергетический Институт

    Санкт-Петербургский государственный электротехнический университет «ЛЭТИ»

    Санкт-Петербургский государственный университет телекоммуникаций

    Мордовский Государственный Университет

    Нижегородский Институт Информационных Технологий

    Новгородский Государственный Университет

    Новосибирский Государственный Технический Университет

    Омский Государственный Технический Университет

    Рязанская Государственная Радиотехническая Академия

    Томский Государственный Университет Систем Управления и Радиоэлектроники

    Уральский Государственный Технический Университет

     

    Гомельский Технический Университет им. Сухого

    Черниговский Государственный Университет

     

     

    Вот ещё актуальный тренинг на всякий:

    Тренинг для преподавателей - MSP430 и Stellaris - Москва и Новосибирск - с 28 фев по 4 матра

    Омский Государственный Технический Университет :biggrin: Вот тут то и начинается смех...я сам из ОмГТУ и уверяю вас что у нас тут НЕТ специалистов по программированию DSP от TI... я остался на кафедре и вот теперь ищу какиенибудь курсы(не семинар не тренинг) в пределах 1-2х месяцев чтоб хоть чтото понять. Я не верю, что все спецы по DSP доморощенные. Универ готов оплатить обучение, вот только осталось курсы найти :smile3046:

  13. Спасибо. Сделал как написали все заработало :cheers:

    Но еще остался один вопрос:

    Собственно в асм я полез в надежде ускорить выполнение программы, и попытался "ускорить" простые функции например функция умножения 32 на 32 бит и результат 32 бит:

     

    #define MUL_F(A,B ) (real_t)(((int64_t)(A)*(int64_t)(B )+(1 << (31))) >> 32) // так она была сделана до меня

     

    я сделал функцию:

     

    static INLINE __asm real_t MUL_F(real_t x, real_t y)

    {

    smull r0, r1, r0, r1;

    lsr r1, #31;

    add r0, r0, r1;

    lsl r0, #1;

    mul r0, r1, #2;

    BX lr ; Return.

    }

     

     

    в итоге проиграл 30 процентов(естественно при включении оптимизации по времени выполнения программы). Получается действительно компилятор в данном случае царь и бог или я чтото не так делаю?

  14. Поясните, чем этот случай отличается от "более четырех параметров"?

    Это был один и тот же вопрос...

     

    #include <stdio.h>
    
    static __asm int MUL_F1(int rezult, int x, int y)
    {
         smull r5, r0, r2, r1;
         BX   lr          ; Return.
    }
    
    static __inline int MUL_F2(int x, int y)
    {
        volatile int rezult;
        MUL_F1(rezult, x, y);
        return rezult;
    }
    
    int main(void)
    {
    volatile int x=0xfffff, y=0xffff;
    volatile int z;
    
    z=MUL_F2(x, y);
    }

     

    Наваял прогу, после выполнения асм функции MUL_F1 в R0 как и положено кладется нужный мне результат, но перевенная rezult не меняется.

     

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

  15. изучил вопрос, но одна деталь осталась открытой:

    как быть если необходимо передать функции больше чем 4 переменных, и как поступись в случае если требуется фунции передавать данные так:

     

    mult(out, out, in, in, param, param, param)

  16. Функция в примере никакого значения не возвращает.

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

    С этим разобрался. Спасибо.

     

    У меня вопрос немного иной(наверное я его плохо сформулировал):

     

    У меня есть функция к примеру int MULT(int A, int B )

    но при этом в самой асм функции я могу оперировать лишь r0,r1....

    Так вот по какому правилу у меня распределятся A,B и результат в регистры?

     

    Правила описаны в стандарте AAPCS.

     

    Пропустил...Это то, что мне нужно

  17. Ну ё-маё. У Вас же эта функция объявлена с типом возвращаемого значения void. И Вы ещё хотите словить возвращаемое значение? Пора обратно за парту. Срочно штудируйте учебник языка Си.

    прошу прощенья, но эту функцию драл с примера...действия она делала немного другие, но строку возвращала :smile3046:

     

     

    вот например пример 6.1 по адресу http://www.keil.com/support/man/docs/armcc...cc_caciddae.htm тоже void

  18. Поясните. Работает, но не работает? Что должно было произойти, и что на самом деле произошло?

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

     

    Доки щас прочитаю. На счет inline ассемблера понял.

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

     

    Еще один момент это использование asm вставок в режиме Thumb (ни в какую не компилируется и не могу понять в чем загвоздка). Пробовал:

     

    asm("MOV R1, R0");

    __asm("MOV R1, R0");

     

    Ошибка: использование inline ассемблера не возможно в режиме Thumb.

     

     

    main файл:

     

    #include <stdio.h>

    extern void strcopy(int d, int s);

    int main()

    { int srcstr = 3;

    int dststr = 1;

    /* dststr is an array since we’re going to change it */

    strcopy(dststr,srcstr);

    return (0);

    }

     

    Функция strcopy находится в файле scopy.s с содержанием:

     

    PRESERVE8

    AREA SCopy, CODE, READONLY

    EXPORT strcopy

    THUMB

    strcopy ; R0 points to destination string.

    ; R1 points to source string.

    MOV R1,#2 ; Load byte and update address.

    MOV R2,#5 ; Store byte and update address.

    BX lr ; Return.

    END

     

    Компилируется, работает, однако значение srcstr не возвращается.

     

     

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

     

    Проект прилагаю.

    Blinky.rar

  20. Огромное спасибо. Как я понимаю занимать будет программа во флешке проца(или внешней) ровно столько, сколько весит BIN файл.

     

    И последний вопрос: как выделить оптимальный(минимально необходимый) размер кучи(heap)?

  21. прочитал, скажите правильно ли я понимаю:

     

    ZI-data составляет объем STACK и HEAP,

    Code - исполняемый код понятно

    RO-data - константные данные понятно

    RW-data - переменные в RAM если это переменные с конкретными значениями при инициализации то тоже понятно...

     

    Осталось понять что из этого будет занимать оперативку :blush:

     

    Изучив вопрос понял, что мне необходимо конвертировать HEX файф в BIN, а потом его уже грузить в процессор...так ли это? просто HEX - 347 кб, BIN - 128 :smile3046:

     

    Извините за глупые вопросы, просто новичек, а до этого работал только с TMS и там както по другому все...

  22. после компиляции проекта в Keile высвечивается строчка:

    749e9bc2ad63t.jpg

    при этом HEX файл имеет размер 347 кбайт.

     

    Вопрос: как узнать сколько оперативки процессора займет программа и очень хотелось бы знать что значат Code,RO-data,RW-data,ZI-data.

     

    Поиском пользовался - не нашел. Заранее благодарен.

  23. Доброго времени суток.

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

     

    первое что сделал это прочитал эту статью: http://microelectronic.at.ua/publ/rabota_s...sion_4/1-1-0-19

     

    Сделал проект как рассказывалось в статье. Затем создал такой же проект заново, но с интересующим меня контроллером (STM32F103VG). Но в дебагере теперь отладка не идет - тоесть брекпоинты ставить я могу, но при запуске ничего не происходит. Окно программы в режиме дебага прилагаю

    50202ad3d08at.jpg

    очень смущают строчки

    0x00000000 0000 MOVS r0,r0

    ....................................................

    ....................................................

    в дизассеблере.

     

    При этом если кликнуть на интересующую строку, то дизассемблер покажет вполне нормальный код:

    b86a9f166e87t.jpg

     

    Опции проекта:

    a53ebe2c8245t.jpg

    cfc9446d8585t.jpg

    Проект который пытаюсь отладить прикрепляю ниже.

    1.rar

×
×
  • Создать...