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

drum1987

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

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

  • Посещение

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


  1. :bb-offtopic:

     

    Пример, кстати, неудачный. Результат одинаковый, если прочесть внимательно. Ваши "коекакеры" сделали 25,6 кб/с в 2-х КВ каналах, а "компания" сделала 12,8 кб/с в 1 КВ канале. Причем "компания" знает, какие решения применены, а у "коекакеров" только результаты испытаний. А если учесть еще и состав поставки от "компании": Принципиальная

    схема, Разводка печатной платы, Перечень элементов, Программное обеспечение (объектный исполняемый код для DSP и FPGA процессоров), Руководство пользователя, Документация для производства, - то появляется широкое поле для конспирологии. :biggrin:

     

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

     

    Про гос конторы могу сказать несколько слов:

    1) Частники! молитесь на них - они подготавливают вам зрелых спецов. Сами вы обучать никого не будете, а жаждите уже готовых специалистов (это как в байке про опыт и работу).

    2) В госконторе много "мебели" - людей которые ничего не делают, но они живут на тех ударниках труда (как Пукса по ссылке на ОНИИП) которые составляют 10-15% штата сотрудников.

  2. Скажите:

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

    как часто будет нажиматься кнопка

    какое время автономной работы вас устроит

     

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

  4. Универсальное решение в таком случае: сменить boot mode для загрузки не из flash а с usarta... тогда ваша прога стартовать не будет и соответственно частота sysclk не станет маленькой...ноги BOOT0 = 1 и BOOT1 = 0 жмем RESET и можем стереть flash контроллера, а потом уже шить нормальную программу в контроллер.

     

  5. Попробуйте в прерывании еще проверять флаг RXNE...

    Вот пример из либы:

    void SPI2_IRQHandler(void)
    {
      /* Check the interrupt source */
      if (SPI_I2S_GetITStatus(SPI2, SPI_I2S_IT_RXNE) == SET)
      {
        /* Store the I2S2 received data in the relative data table */
        I2S2_Buffer_Rx[RxIdx++] = SPI_I2S_ReceiveData(SPI2);
      }
    }

    у меня прерывание по АЦП срабатывало намного чаще чем происходило прерывающее событие

  6. Как вариант попробуйте включать BOOST вручную(например кнопкой) и посмотрите будет ли умирать проц. Если да, то дело в питании...А вообще если вы используете SWD отладчик с какогонить discovery от stm еще и с проводами см по 20, то он прекрасно отваливается даже при включении чайника в соседней комнате ;)

  7. Т.е. это всё-таки изучение, но до этого даже AVR не было. Тогда Вам должно быть легче отказаться от приёмов работы, используемых там, но неэффективных здесь.

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

     

    Укажите место "в доках на stm", где описано то, что Вы пытались сделать :)

    AN3116 STM32™’s ADC modes and their applications (http://www.st.com/st-web-ui/static/active/en/resource/technical/document/application_note/CD00258017.pdf)

    стр.8 рис.6 это то, что я пытаюсь реализовать.

     

    Основной тезис: делайте запуск преобразований по таймеру для regular, а редкие преобразования с софтварным стартом или от другого, более медленного источника для injected, а не наоборот, и будет вам счастье :)

    Уже пробую сделать. Спасибо.

     

  8. C AVR имел дело 2 раза на курсовых в универе...изучать их сейчас это удел старожилов.

    ДМА не хочется заводить ибо памяти не так много...но если без этого никак, то сделаю.

     

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

  9. Задача мониторить ток и напряжения.

    Камень самый простой f100c4. Соответственно АЦП только 1. Использую 2 канала (0 и 8). 0 канал мерит напряжения (их 8 подаются с мультиплексора). Сигнал на вход АЦП подается с ОУ, поэтому сопротивление источника мало + RC фильтр 100 Ом + 10нФ.

     

    Схема измерения напряжения такая: Дергаю ножкой(подключая этим источник ко входу ОУ), запускаю 2(4, 8, 16) раза регулярное преобразование в прерывании по окончанию (флаг EOC) считываю результат преобразования, вычисляю среднее и ногу опускаю назад. Повторяю для всех ног. Пачка измерений раз в секунду.

    Схема измерения тока: Источник подключен всегда, инжектированный канал связан с таймером необходимо 100 измерений в секунду (хочу считать А*ч).

     

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

     

    8623bf4a4a0dt.jpg

     

    Как видно из рисунка, значение измеренное при вытеснении инжектированным каналом близко к 0,4 В. (4+0,4)/2=2,2 В. То, что с напряжением на ноге все в порядке говорит осциллограмма:

     

    1ac87bab754b.jpg

     

    Тут желтая эпюра - напряжение на входе АЦП, синяя - "отладочный светодиод" зажигаемый в момент начала преобразования и тушащийся в момент срабатывания прерывания по событию EOC.

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

     

    Прилагаю код:

    Настройка АЦП:

    	/* Enable ADC1 and RCC clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
    RCC_ADCCLKConfig(RCC_PCLK2_Div2);
    
    /* ADC1 configuration ------------------------------------------------------*/
    ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
    ADC_InitStructure.ADC_ScanConvMode = ENABLE;
    ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
    ADC_InitStructure.ADC_NbrOfChannel = 1;
    ADC_Init(ADC1, &ADC_InitStructure);
    
    
    /* ADC1 regular channel0 configuration */ 
    ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5);
    
    /* Set injected sequencer length */
    ADC_InjectedSequencerLengthConfig(ADC1, 1);
    
    /* ADC1 injected channel Configuration */ 
    ADC_InjectedChannelConfig(ADC1, ADC_Channel_8, 1, ADC_SampleTime_239Cycles5);
    
    /* ADC1 injected external trigger configuration */
    ADC_ExternalTrigInjectedConvConfig(ADC1, ADC_ExternalTrigInjecConv_T2_TRGO);
    
    /* Enable JEOC interrupt on ADC1 */
     ADC_ITConfig(ADC1, ADC_IT_JEOC, ENABLE);
    
    /* Enable ADC1 EOC interupt */
     ADC_ITConfig(ADC1, ADC_IT_EOC, ENABLE);
    
    NVIC_SetPriority (ADC1_IRQn, 1);
    
     /* Enable ADC1 */
     ADC_Cmd(ADC1, ENABLE);
    
     /* Enable ADC1 reset calibaration register */   
     ADC_ResetCalibration(ADC1);
    
     /* Check the end of ADC1 reset calibration register */
     while(ADC_GetResetCalibrationStatus(ADC1));
    
     /* Start ADC1 calibaration */
     ADC_StartCalibration(ADC1);
    
     /* Check the end of ADC1 calibration */
     while(ADC_GetCalibrationStatus(ADC1));
    
    
    /* Start ADC1 Software Conversion */ 
    ADC_SoftwareStartConvCmd(ADC1, ENABLE);
    ADC_ExternalTrigInjectedConvCmd(ADC1, ENABLE);

     

     

    Прерывания по АЦП:

    void ADC1_IRQHandler(void)
    {
      if (ADC_GetFlagStatus(ADC1, ADC_FLAG_JEOC))
      {
            // Get injected channel8 converted value
            int curr = ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_2);
            curr = curr * VCC/0xfff;
        
    ADC_ClearITPendingBit(ADC1, ADC_IT_JEOC);
      }
    
      else if (ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC))
      {
    ADC1ConvertedValue = ADC_GetConversionValue(ADC1);
    /* Clear ADC1 EOC pending interrupt bit */
    ADC_ClearITPendingBit(ADC1, ADC_IT_EOC);
    converted = 1;
      LED_OFF;
        }
    }

     

    Вызов преобразования:

    long cell_mesure(unsigned int cell_num)
    {
    
        GPIO_HIGH(Mes[cell_num - 1]->port, Mes[cell_num - 1]->pin); // включение измерителя
        converted = 0;    
        LED_ON;
        ADC1->SQR3 = 0;                //загрузить номер канала
                  ADC1->CR2 |= ADC_CR2_SWSTART;     //запустить преобразование в регулярном канале   
        while(!converted);
        long voltage = ADC1ConvertedValue;  // измерение №1
    
        return (voltage);
    }

     

    Куда копать?

  10. попробуйте ее "отжечь"... регулируемым источником подавайте в нее от 3 до 6в (если 5v tolerance) или от 3 до 4,5 если нет, до того момента пока сопротивление этой ноги на землю и питание не станет большим(не пропадет кз). я так оживлял 103 stm. нога работать не будет точно, но утечка пропадет. Может не помочь...тогда камень в утиль.

  11. Активная. Мы и делаем. Банки с меньшим напряжением заряжаются за счет банок с бОльшим напряжением до уравнивания напряжений на всех банках. Работает это не только при заряде но и при разряде и простое.

    Можно поинтересоваться: какой ток балансировки у такого BMS?

     

  12. Извините, что долго не писал, отписываю о результатах:

     

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

     

    Всем спасибо за ответы, плату пока оставил по варианту 2, но у долей универсализма для переходна на вариант 1 с корректировками согласно совету Golikov A.

  13. Отписываю по проделанной работе:

     

    1) растяжка не помогла :cranky:

    2) осциллографом посмотрел - шумы на линиях данных не превышают 10% от общего уровня.(скрин к сожалению не снял)

    3) экранирование самого пульта(засунул его в жестяной ящик с дыркой для провода) не помогло...продолжает виснуть

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

     

    попробуйте

    1. экранированный кабель

    2. разъемы с металлическим корпусом. экран кабеля на корпус (соединение как можно короче)

     

    Сейчас все именно так и сделано...

     

     

    Прежде чем бросаться что-то пере разводить хорошо бы понять что ломается?.

     

    Отсюда у меня вопрос: Каким образом плохо сделанный РС485 может вешать вашу схему?

     

    поэтому копать надо в другую сторону.

    1. Может у вас стоит кроме ЦРЦ еще контроль четности передачи, но не стоит обработка и отбраковка плохих байтов, с помехами приходят не верные байты и система виснет

    2. Может у вас входной провод рс 485 в аппаратуре идет рядом с чем либо, и является просто антеной передавая помехи которые что-то вешают.

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

     

    Из ошибок приведенной первой схемы рс485 я вижу отсутствие сигнального заземления. Несмотря на диференциальность РС485, симфазная помеха на линии ограничена, потому хорошо бы

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

     

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

     

    Честно говоря, я не могу сказать повисло устройство или нет...ПО для пульта писал не я, и возможности мониторить состояние МК там не предусмотрено. Из видимого просто замирает картинка на дисплее(но так как этот видеобуфер целиком получен из RS-485 и тупо выведен) но это не дает оснований считать что МК повис...он может и работает, а вот данные не идут.

     

    Интересна мысль про микросхему с детектором ошибок на линии...как узнать у меня с детектором или нет(в даташите это как называется)?

     

    По первой схеме забыл добавить, что InGND (входная земля) и GND (земля пульта) соединяются друг с другом в месте крепления к корпусу винтом (в 3 см от места впайки разъема).

     

    Про экранирование читал здесь http://www.bookasutp.ru/Chapter3_5.aspx#ShieldingMethods . Написано что через конденсатор и в одной точке заземляют когда частоты помех до 1 МГц, а для более ВЧ помех. заземление делается напрямую во многих точках. Может там и не правильно?

     

    Здравствуйте.

     

    Несколько раз сталкивался с подобными эффектами.

     

    1. В CB-радиостанции MejaJet MJ-555. Пульт управления вынесен в тангенту, и достаточно часто в момент передачи происходило зависание станции. Да и сама по себе, при прослушивании эфира периодический подвисала. На тот момент разбираться особо не стал, и просто заменили радейку на другую модель. Но беглое изучение ситуации показало, что провод от рации до тангенты используется совсем не экранированный. Питание на контроллер идет прямиком из провода, без стабилизаторов и фильтров.

     

    2. Делали небольшое устройство, которое получало питание 12В по кабелю длиной метров 10, и там-же была витая пара для RS-485. Внутри корпуса датчик с обвязкой, контроллер и схемка питания на КРЕНке. Контроллер оцифровывал сигнал с дачика и передавал данные для верхнего уровня по 485ому интерфейсу.

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

    Т.Е. в моменты передачи носимой радиостанции диапазона 160МГц, возникали ложные показания с прибора.

     

    При разбирательстве на столе в лаборатории выяснили, что при использованнии носимой радейки P=5Вт-10Вт, в непосредственной близости от различных устройств возникают всякие интересные эффекты ))) В момент передачи происходи зависание и перезагрузка некоторых моделей УСБ-модемов, зависают и сбиваются конвертеры интерфейсов типа Moxa U-Port 1150 и т.п. Дают ложное срабатывание разные охранные датчики (объемники, разбития стекла).

     

    Как оказалось в нашем устройстве, достаточно сильно "шумела" КРЕНка - пульсации были достаточно большими, а в моменты работы передачика станции возникала просадка на выходе. Так-же не совсем правильно был посчитан фильтр на ОУ - сигнал помехи на входе, давал достаточно сильное искажение выходного сигнала (т.к. Ку > 1000).

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

     

    Ах да, с зависаниями контроллера сталкваться не приходилось. Питание изначально качественно разводми, используем бусинки типа BLMххх, защищаемся различных воздействий супрессорами и т.п.

     

    У нас очень похожая ситуация...сегодня более детально изучу вопрос питания. А какую КРЕНку использовали до и после?

     

  14. Мы в одной конторе работаем...я эти микросхемы и пересаживал. В пятницу делали рентген 3х рандомно выбранных плат, и чел сказал что все отлично село, так что Goose не в том глазу бревно искал :twak:

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

     

    Разрабатываем радиостанцию 30-108 Мгц, 10 Вт.

    Столкнулись с проблемой: зависает пульт управления, подключенный через витую пару(в которой так же идет питание 12 В) длиной 0,5 м при длине антенны 0,8 м.

    немного подробностей:

    Пульт - тупое устройство выводящее на дисплей видеобуфер и отправляющее в радиостанцию код нажатой клавиши.

    Пульт виснет только в момент передачи.

    В протоколе передачи из контроля ошибок только CRC.

    Интерфейс: RS-485.

    Драйвер: MAX3485 (напряжение 3,3 В).

    Скорость: 230 Кбит/с.

    Плата двухсторонняя...чую при трассировке на счет ЭМС не замарачивались.

    Корпус: алюминиевый с прямоугольным вырезом под дисплей диагональю 65 мм. электрически ни с чем не соединен.

     

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

    8a891a157768t.jpg

    питание никак не фильтруется, а идет прямиком на LDO 5->3,3 В.

    Ни растяжки, ни фильтров....

     

    Что пробовали делать и наблюдения:

    1) Похоже что виснет из-за интерфейса, потому как при укорочении провода до 3 см виснуть перестает(при этом пульт физически находится у основания антенны, поэтому эксперимент не корректен.

    2) При касании земли пульта незаземленным осциллографом - виснуть перестает.

    3) По эпюрам напряжений - ничего страшного нет (если надо перемерю и выложу).

    4) Пробовали ставить RC фильтры на A и B на 10 МГц - не помогло

    5) Пробовали ставить на кабель ферритовые кольца с больними потерями на ВЧ как совместно с пунктом 4, так и без него - не помогло.

    6) фильтровали питание - не помогло.

    7) Пока писал - понял, что растяжку не пробовали... :smile3046:

     

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

    Посмотрел в интернете, поспрашивал коллег, и родилось несколько схем:

    1 вариант:

    442ca31bab6et.jpg

    Синфазный фильтр расчитан на подавление синфазной помехи на 40 дБ на частоте 30 МГц (как в реале будет не знаю).

    Драйвер заменен на MAX3441 с питанием 5 В (Как я понял из даташита в нем внутри есть супрессоры). Питание повышено до 12 В, фильтруется через отдельный дроссель. 12->5 В конвертируется с помощью понижающего преобразователя.

     

    Стоит ли замарачиваться с корпусом в качестве экрана(если стоит то как лучше его подключить) если плата теперь 4х слойная и Top и Bottom почти целиком - земляные полигоны, плата "прошита" переходными отверстиями:

    86eebfacec8at.jpg

    fb58a642916bt.jpg

     

    2 вариант:

    8ad38dc986ddt.jpg

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

     

    До настоящего момента подобные проблемы не решал, следовательно опыта нет совсем, так что сильно не пинайте.

    Что можете посоветовать? Какое решение луче и что в нем нужно изменить/добавить? Как поступить с корпусом(экранированием)?

     

    Пойду делать растяжку, о результатах отпишу.

    Заранее благодарен за ответ, извините за многобукв...

  16. Можно сказать что из активных балансировок на конденсаторах - самая правильная...

    Конденсаторные балансировщики плохи лишь тем, что:

    1) Работают на разнице напряжений между банками (соответственно для реализации приличного тока балансировки необходимо реализовать очень маленькое внутреннее сопротивление самого балансира)

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

     

    Соответственно, как правильно заметил Microwatt, для ускоренной зарядки они никак.

     

    P.S. Есть несколько задумок на сегодня...как сделаю выложу результаты.

  17. Вернее сказать заблудился, потому что логично балансировать 10%, максимум 20%, но никак не 100% тока. Откуда в батарее, при постоянно работающем балансировщике, взяться на 100% дохлой банке?

     

    Я исходя из этого и считал — полный балансировщик, и на заряд, и на разряд, и ток 1 А (4 Вт), максимум 2 А (8 Вт).

    Расчитываю на худший случай когда одна банка заряжена, а остальные нет...тогда при заряде за 20-30 минут она просто вылетает за 4,5+ В и взрывается нафиг...Подскажите как расчитать ток балансировки имея ток зарядки и максимальный начальный разбаланс(есть предположение...попробую его сегодня-завтра проверить).

     

    Привет народ! У меня есть тоже похожая задача, только банок побольше, а ток поменьше порядка 5А на параллельные 4 банки, и 6 этажей банок, но опять же банки LiFePO4 3.6V.

    2 головы еще лучше:)

  18. Поскольку тема упёрлась в логический конец, разовью проигнорированный вариант с флайбэками.

    Ни в коем случае еще не конец...причина моего отсутствия банальна: я собирал/отлаживал/обмерял/оптимизировал макет на топологии пушпулл. Сейчас поделюсь достигнутыми результатами.

     

    По макету:

     

    ШИМ:IR2153 (режим push-pull) частота 100кГц

    Драйвер: MC34152

    Полевики: IRF1324SPBF (обещают 1,3 мОм, напряжение сток-исток 24В)

    Сердечник трансформатора: EFD25*13*7 (N87) первичка 1виток 10проводов по 0,5мм в каждой полуобмотке, вторичка 11витков проводом 0,5 для каждой полуобмотки

    Выпрямитель: диодная сборка 16CTQ100

     

    Привожу эпюры напряжений в основных точках схемы для мощности нагрузки 36 Вт:

     

    Затворы полевиков:

    69ebf73405d1.jpg

     

    сток плеча:

    3e2b9597c2fe.jpg

     

    Пульсации на выходе:

    1ea38e5c9b4f.jpg

     

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

     

    Итоги макетирования:

    потребление без нагрузки: 1,8 Вт при этоп ощутимо греется магнитопровод...в чем может быть проблема и как можно попробовать исправить?

    Не великоваты ли выбросы на полевиках?стоит ли гасить снабберами?или не заморачиваться?

     

    КПД при различных режимах:

    53554f6ea49b.png

    Стоило ли ждать большего?

     

    Модель, соответствующая(в первом приближении) макету в аттаче.

     

    Вопросы:

     

    1)Считаю великоватым потребление холостого хода...так ли?

    2)Нормален ли полученный КПД?

    3)Есть ли потенциал по увеличению КПД(помимо применения синхронных выпрямителей) у данной схемы?

    4)Где найти расчет площади PCB Heatsink (геометрических размеров термопада на плате для например D-PAK корпуса при известной мощности выделяемой на нем)?

    5)По фото трансформатора можете ли сказать стоит ли его оптимизировать и, если да, то как это сделать...

    b5da72fccb70t.jpg

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

     

    2 MicroWatt идея на счет печатного трансформатора очень хороша, но как в таком случае сделать вторичку?или мотать ее?

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

     

    Извиняюсь что завалил вопросами :smile3009:

    pushpull1_temp.rar

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