Jump to content

    

ivainc1789

Свой
  • Content Count

    1185
  • Joined

  • Last visited

Community Reputation

0 Обычный

About ivainc1789

  • Rank
    Профессионал
  • Birthday 03/15/1972

Контакты

  • Сайт
    Array
  • ICQ
    Array

Recent Profile Visitors

4564 profile views
  1. Итак, продолжим... Тонкость в том, что 50mA показалась мне слишком большой величиной для начала работы в "нормальном" режиме регулирования. Т.е. ток кажется слишком великим для минимального времени накопления. Если его нельзя устранить принципиально, то хотелось бы этот порог несколько уменьшить. Увеличивая сопротивление R4 мы можем настроить порог ограничения для макс нагрузки, но как оказалось, это также может привести к голоданию контроллера по питанию на малых нагрузках. В этом случае срабатывает схема UVLO и контроллер уменьшает потребление (выкл). Это неизбежно приводит к новому повышению Vdd и повторному старту... и так далее. То есть на выводе Vdd на малых нагрузках мы видим пилу от 8V до например 12V, что сопровождается сериями переключений мосфета. Подозрение в том, что на малых нагрузках мы до настоящего birst режима еще не дошли и имеем просто проблемы по питанию Vdd. К сожалению, эта ситуация приводит к необходимости отказа от двойной петли регулирования, как это красочно описано в даташите. Все из-за того, что с увеличением нагрузки напряжение Vdd ОЧЕНЬ значительно изменяется и простой намоткой доп обмотки транса ее не решить. Я пришел к выводу, что ограничение 15V по выводу Vdd только мешает при использовании оптопары, а мои попытки получить приемлемое регулирование по первичной стороне (т. е. без оптопары) не увенчались успехом. Так, у источника 12V3A с увеличением нагрузки до 600mA напряжение выхода просаживалось до 9V, что кажется совсем неприемлемым для большинства проектов. Дальше больше. По даташиту старт контроллера происходит при 12.8V, а ограничение уже на 15V. Это окно слишком мало для большого диапазона выходных мощностей. Что говорить о Viper100, где ограничение уже на 13V! Короче, все сходится к тому, что Vdd нужно стабилизировать на приемлемом уровне, например 13V для Viper53, резистор R4 исключить за ненадобностью, чтобы при малых нагрузках контроллер мог питаться напрямую от обмотки. Расчет самой обмотки теперь более прост ибо нам не надо подстраиваться по какой либо уровень! Два способа это сделать: 1. Стабилизатор на транзисторе (см рис). 2. Вообще использовать доп обмотку на прямом ходе для постоянного питания випера. Теперь ограничение по выходу устанавливается VT3. Насколько это будет работать - время покажет, но стоит ли Випер всех этих ухищрений? Цена его значительно выше TOPов, а STM явно забросила эту серию и на мои мольбы о поддержке по старому ПО (Viper1.exe) ответили, что решайте их сами и ищите для этого комп с Windows XP. Есть конечно Viper53E, но там порог отсечки по перенапряжению на выводе Vdd 17V. Т.е. все почти также. Проблема не в том, что обвеса прибавилось, а в том, что он применяется для обхода внутренних "особенностей" контроллера. Щас в пути ICE2A265 с Ali - посмотрим как там дела...
  2. Пришлось несколько поэкспериментировать с Viper53DIP (схема стандартная с оптопарой). Сложности возникли с режимом "без нагрузки" или "небольшая нагрузка". Никак не удалось настроить более менее приемлемый выход при таких условиях. Если без нагрузки пульсации на выходе можно назвать допустимыми (около 100mV p-p), то в диапазоне до 50mA наблюдаем на выходе "пилу" 1.7v p-p. При дальнейшем увеличении тока нагрузки контроллер входит в нормальный режим регулирования (напряжение пина Vcomp выше 0.5V) и вплоть до максимального тока на выходе, когда Vdd упирается в 15V наступает режим ограничения. Есть еще связь описанной ситуации с резистором R4 (по схеме из даташита), который установлен последовательно с диодом доп обмотки трансформатора. Им настраивается момент ограничения мощности на основной вторичке. Так вот, если его сопротивление уменьшать, то ситуацию с пульсациями можно улучшить, но тогда ограничение наступит при меньшем токе, что естественно недопустимо. Если R4 увеличивать то получим нормальный момент ограничения на выходе, но при мелких нагрузках контроллер перейдет в этот birst режим. Короче, ясное дело, в контроллерах с токовым регулированием присутствуют явные проблемы на мелких нагрузках. Причина видимо в том, что при таких нагрузках ток ключа мал, его сложно измерить да еще blanking time необходимо ждать... Имхо, единственное решение - ставить на выходе постоянный нагрузочный резистор под ток около 30-50mA. Но мне такие решения совсем не по нраву ))). А вот с ТОРами у мну проблем меньше... Единственное при желании/необходимости контролировать ток потребления нужно модифицировать схему обратной связи, добавив токовый резистор и его контроль.
  3. Да, не работает вывод текста именно в режимах GUI_SetTextMode(GUI_TM_NORMAL) и GUI_SetTextMode(GUI_TM_REV). Скорее это не связано с "поддержкой" нового контроллера, я проверил какие команды посылает библиотека в контроллер при выводе текста в этих режимах. Оказалось, что ничего особенного - те же команды 2A,2B,2C. Пробовал увеличивать тайминги по FSMC - не помогло. Удивительно, что не работают только два режима вывода из пяти. Особенно жаль NORMAL, поле EDIT использует для своей инициализации именно этот режим... Что же делать?... Попробую еще поиграться с инициализацией самого контроллера, если не поможет, значит все дело в библиотеке, будем как-то жить с урезанным текстовым выводом...
  4. Отвечу сам себе (. Судя по мануалу, NT35510 не поддерживается. Тем не менее, я попробовал это оспорить. Система команд очень похожа, для ввода/вывода используются [в основном] команды ILI9486 0x36,2A,2B,2C,2E. NT35510 должен получить: 0x3600,0x2A00 и так далее. Причем параметры всегда однобайтовые и перед ними должна всегда выводится "инкрементированная" команда. Короче, вот функции LCDConf_FlexColor.c, которые я переписал: /******************************************************************** * * LcdWriteReg * * Function description: * Sets display register */ uint16_t cmd; // текущая команда uint8_t i; // текущий параметр команды static void LcdWriteReg(U16 Data) { // ... TBD by user Data <<= 8;cmd = Data;i=0; *(uint16_t *)ADR_CMD = Data; } /******************************************************************** * * LcdWriteData * * Function description: * Writes a value to a display register */ static void LcdWriteData(U16 Data) { // ... TBD by user if (i == 0){// первый параметр команды *(uint16_t *)ADR_DAT = Data; }else{// команда и последующий параметр команды *(uint16_t *)ADR_CMD = cmd+i;*(uint16_t *)ADR_DAT = Data; } i++; } /******************************************************************** И это работает!!! Дисплей: http://www.lcdwiki.com/3.97inch_16BIT_Module_NT35510_SKU:MRB3973 Подключение: STM32F103VET6, FSMC. Но счастье длилось недолго ибо обнаружил странный глюк при выводе текста. Взял кусок кода из UM01003 v6.18 стр 215: // пример вывода текста из UM03001_v6.18.pdf стр. 215 // вывод должен соответствовать картинке в UM03001_v6.18.pdf GUI_SetFont(&GUI_Font8x16); GUI_SetBkColor(GUI_BLUE); GUI_Clear(); GUI_SetPenSize(10); GUI_SetColor(GUI_RED); GUI_DrawLine(80, 10, 240, 90); GUI_DrawLine(80, 90, 240, 10); GUI_SetBkColor(GUI_BLACK); GUI_SetColor(GUI_WHITE); GUI_SetTextMode(GUI_TM_NORMAL); GUI_DispStringHCenterAt("GUI_TM_NORMAL", 160, 20); GUI_SetTextMode(GUI_TM_REV); GUI_DispStringHCenterAt("GUI_TM_REV", 160, 36); GUI_SetTextMode(GUI_TM_TRANS); GUI_DispStringHCenterAt("GUI_TM_TRANS", 160, 52); GUI_SetTextMode(GUI_TM_XOR); GUI_DispStringHCenterAt("GUI_TM_XOR", 160, 68); GUI_SetTextMode(GUI_TM_TRANS | GUI_TM_REV); GUI_DispStringHCenterAt("GUI_TM_TRANS | GUI_TM_REV", 160, 84); К сожалению, через функции GUI_ текст выводится иногда с ошибками и пока нельзя сказать, что это из-за криво поддержанного контроллера NT35510. Текст внутри виджетов всегда выводится корректно.
  5. Сначала у меня был дисплей на ILI9486 и мне удалось довольно быстро его настроить в STemWin, видимо потому, что он поддерживается библиотекой. Но при подключении было обнаружено, что кристаллы "потекли" (с момента покупки не проверялся и не подключался) и в конечном устройстве использовать его невозможно. Вскоре получил дисплей на NT35510, который довольно быстро удалось инициализировать и проверить на тестовых программах до подключения STemWin. Все работает без замечаний. Однако после подключения STemWin дисплей не работает, при этом инициализация его проходит нормально. Наверное, дело в том что команды NT35510 хотя в целом и похожи на ILI9486 имеют отличие - 16битный формат. Например, сброс дисплея для ILI9486: TFT_WriteCmd(01); а для NT35510: TFT_WriteCmd(0100); Возможно, дело именно в этом, но моих знаний STemWin пока не хватает, чтобы что-то поправить в библиотеке. Скорее всего, ошибка в этой функции: void LCD_X_Config(void) { GUI_DEVICE * pDevice; CONFIG_FLEXCOLOR Config = {0}; GUI_PORT_API PortAPI = {0}; // Set display driver and color conversion pDevice = GUI_DEVICE_CreateAndLink(GUIDRV_FLEXCOLOR,GUICC_565,0,0); // Orientation //Config.Orientation = GUI_SWAP_XY | GUI_MIRROR_Y; Config.Orientation = GUI_SWAP_XY; //Config.Orientation = GUI_ROTATION_CW; //Config.RegEntryMode = 0x6E30; LCD_SetSizeEx(0, YSIZE_PHYS, XSIZE_PHYS); GUIDRV_FlexColor_Config(pDevice,&Config); // Set controller and operation mode PortAPI.pfWrite16_A0 = LcdWriteReg; PortAPI.pfWrite16_A1 = LcdWriteData; PortAPI.pfWriteM16_A1 = LcdWriteDataMultiple; PortAPI.pfReadM16_A1 = LcdReadDataMultiple; GUIDRV_FlexColor_SetFunc(pDevice,&PortAPI,GUIDRV_FLEXCOLOR_F66709,GUIDRV_FLEXCOLOR_M16C0B16); } Я ее не изменял с момента использования ILI9486. Подскажите, что не так...
  6. Именно так и сделано, по рисунку же видно... Проверил состояние битов, все верно указано, куб нагенерил именно так! А вот этот битик был в 1, т. е. NSS менеджмент разрешен. Я его скинул так #define BITCLR(REG,BIT) ((REG) &= ~(BIT)) BITCLR(SPI1->CR1,SPI_CR1_SSM); Проверил в CubeIDE - состояние сбросилось. Но все эти меры не привели состояние пина 77 к возможности переключаться. Помогает только если отменить ремап SPI1... P.S. Попробовал сконфигурировать SPI1 в режим master с пином NSS в режиме hardware выхода. Передача байтов по линиям MOSI и SCK проходит как нужно, но NSS все время в низком уровне. Поведение одинаково и с ремапом SPI1 и без оного...
  7. Нарвался совершенно случайно на очередные грабли. Вот простая конфигурация для STM32F103VET6. Как видим, ремап сделан и для SPI1 и для TIM2CH1. В данной конфигурации был важен именно таймер, т. к. я планировал звук выводить на пищалку именно через него (пин 77). Куб ничего подозрительного не выдал, я естественно тоже никакого криминала не заметил, короче, плата была успешно сделана. Приступил к программированию и тут все порушилось: пин 77 не хотел делать НИЧЕГО! Висит в Hi-Z и все. Разбор полетов показал, что SPI1 не имеет частичного ремапа и переносятся не только пины SCK,MISO,MOSI но и NSS! И насколько показывают мои эксперименты, для данной конфигурации платы пин 77 потерян - нужно выбирать что-то одно, но нужен и SPI1 и таймер (звук). Была надежда, что пином будет управлять та периферия, которая инициализирует его последней. На практике вроде такое не подтвердилось... Вот решил посоветоваться, может что не так понимаю или есть еще варианты? TIM2CH1asA15.rar
  8. Точно! В голову как-то не пришло насчет конденсаторов. Сверил проекции - действительно, они родимые! Причем именно кондеры, если кондер не установлен (то есть не запаян) то и его "залипа" по проекции нет. Большое спасибо за помощь. Принесли проц с памятью и... плата-то заработала!
  9. Эх, к сожалению далеко не в Москве...
  10. Внезапно принесли материнскую плату в ремонт Хуананжи X99-TF. Диагностика выявила умерший интеловский хаб - SLKM8. После вроде бы успешной перепайки новым выяснилось, что для проверки ни проца ни памяти под рукой нет, зато есть возможность воспользоваться мед. рентгеном. Качество снимка к сожалению не очень, но видны "залипшие" шары. Если присмотреться, то это залипами назвать еще пока нельзя ибо расположены они довольно характерно в таких местах, где расстояние между шарами довольно велико. Какие будут мнения? При включении после запайки чипа (без проца и памяти) на мат плату можно лицезреть пост код FF и через несколько секунд ребут. Далее все повторяется циклично... Все напряжения после дежурки вроде в норме, ничто не греется, есть включение подсветки на плате (мультиконироллер включает блок питания ATX), вращаются вентиляторы VRM...
  11. Точно! Попробовал, это работает! Шпиндель коммутируется относительно редко, поэтому термистор не успевает существенно нагреваться. Но ваш вариант интересен, надо будет его опробовать на практике. Ну я не сталкивался с проблемами в этом смысле и в данном проекте. Но перед HY4008 использовался TIP35C, который взорвался прямо при первом же включении на слабую нагрузку. Позже выяснилось под рентгеном, что китайцы вставили туда микроскопический кристалл на меньшую мощность. Также у меня есть давно купленный (и тоже на Ali) IXTK90N25L2 специально предназначенный для работы в линейном режиме. И даже по отзывам его нагружали от блока ATX и раскаляли до красна, и он выдерживал! Но я убоялся работать с ним из-за риска ненадежности. Вообще с покупкой китайских силовых полупроводников нужно быть очень осторожным, не покупать самое дешевое, желательно иметь пару магазинов с проверенным качеством, такие есть на Ali. Следующим перед HY4008 был наш KT898A1 - попытка доверится советской элементной базе, этот солдат честно держал удар, но радиатор 10*7*2см на макс мощности имел температуру 95 градусов и я решил с ним не экспериментировать тоже, риск потери координат из-за прерывания питания может дорого стоить. Короче, загасить 55V побыстрому до 24V не получилось, просто времени не было, нужно было сделать срочную гравировку...
  12. Да, я тоже думал о каскадном. Изначально в станке стоял тороидальный транс ватт на 150 и выходом 55V. Я тогда сделал обычный стабилизатор на HY4008 и он некоторое время работал даже при дикой рассеиваемой мощности. Просто нужно было быстро что-то сделать, вот и сделал. Естественно, поработав так на десятке плат во время обрезки очередной мосфету пришел каюк, а за ним и всей плате управления и драйверам шаговых двигателей ибо на них пошло 55V напрямую как результат пробоя. Так что первичный "преобразователь" на основе транса был и есть. Но более верное решение полностью переделать плату управления двигателем так как его номинальное напряжение 36V. Я долго экспериментировал с оборотами пытаясь увидеть разницу на качестве гравировки при полном питании мотора от 36V. Но по факту все всегда нормально работало и от 24V, потому его и использую. По теме. Проблему удалось решить. Блок питания не стал трогать т. к. все же он работает нормально. А вот в разрыв питания мотора изготовил и включил вот такую схемку: XR1 принимает 24V на вкл шпинделя, к XR2 подключаем шпиндель. Осциллограмма на выходе блока стала теперь такой (слева начало перех процесса, справа - полностью), шунт 0R15: Теперь стартовый ток около 3A и небольшой всплеск в момент включения VT1. Все работает нормально. Китайский адаптер вообще вне себя от щастья, теперь с ним нет сильного "мех удара" в момент пуска двигателя. Единственный недостаток схемы - если включать мотор слишком быстро после последнего выключения, VT1 не успевает закрываться и получаем знакомую перегрузку. Но это легко устраняется настройкой схемы (уменьшение R2, введение порогового элемента и т. п.). Только не надо забывать, что шпиндель регулируется ШИМом платы управления, потому при низких напр питания возможны новые проблемы... Но в целом, как всегда, самое правильное решение вообще все переделать после китайцев, но времени на это катастрофически не хватает. SpindleSoftStartFiles.rar
  13. не совсем понял... заменил же оба на 0F0022=2200uF и осциллограммы приведены для датчика тока 0R15. Не работает, но слегка улучшило ситуацию. Полагаю, нужно изменить схему обратной связи, кардинально.
  14. Итак, заменил С9 С10 на 2200uF 35V а также нашелся токовый шунт 5W 0R15. Установил его в разрыв минуса на выходе, т. к. осцилл имеет два канала с общей землей. Привожу осциллограмму для напряжения (верхняя) и тока (нижняя) на выходе источника питания 24V4A5 на TOP256YN: Пусковой ток стал теперь более 13A, а напряжение теперь не так резко падает в районе 14V. Стоит ли и далее увеличивать емкости фильтра? Получается нехилая батарея кондеров, если еще и остальные заменить.... В корпусе нет столько места... Все же попробую заняться ограничением тока, мне кажется такой подход более эффективным... Кстати, китайский адаптер очень легкий, его размеры 130*60*30мм.
  15. В разрыв плюса на выходе блока питания поставил резистор 0R33 5W и вот осциллограмма на нем в момент включения мотора: Т.е. имеем пусковой ток 10A а длительность перегрузки аж 15-20ms. Не удивительно, что контроллер уходит в защиту... Вопрос, как теперь с этим бороться... Завтра попробую увеличить емкости С9-С10 но ИМХО это не поможет - кондеры просто разрядятся а контроллер не сможет их быстро зарядить до наступления авторестарта... Я конечно использовал PIexpert для расчета, но перепроверял в другой программе. PIexpert почему то выставил непрерывный ток по намоточным данным для прерывистого тока. Реальная индуктивность первички около 250uH. PIexpert.rar Почему же китайское чудо работает?