Jump to content
    

Halfback

Участник
  • Posts

    424
  • Joined

  • Last visited

Everything posted by Halfback


  1. похожи, но не они. У XMA шаг 2,5мм, а надо 2,54.
  2. Доброго времени суток. Столкнулся с интересной ситуацией. Коллеги сделали удлинитель. Из двух проводов как на картинке https://ae01.alicdn.com/kf/HLB149e9XOHrK1Rjy0Flq6AsaFXaU/10-XH2-54-2-3-4-5-6-Pin-2-54.jpg_q50.jpg Те разъемы, что слева (Male) это CHU (шаг 2,54мм). А как называются разъемы что справа (female)? (CWF но под обжимку) Перелопатил TE, Molex, JST - не нашел. Может кто знает?
  3. megajohn исторически так сложилось, что использую TrueType "родные" только для перевернутых записей в рамках схем. в качестве оффтопа: Осталось решить стратегическую задачу - подобрать и перейти на новый САПР, на замену P-Cad 2006. Купили еще в прошлом году отечественный Delta Design, потом посмотрю что за зверь и стоит ли с ним связываться...
  4. Пришлось все-таки с этим разобраться. Методом исключения выяснил, что проблема в шрифте Arial Narrow Причем на ноуте (где также 10-ка, но без установленного офиса), где файлы PCB открываются без проблем, этого шрифта вообще не наблюдаю. А на ПК, где проблемы с открытием PCB есть, этот шрифт как раз таки установлен. Но как я понял он установлен не как отдельный типа Arial Nova а интегрирован в Arial. Не знаю, может и не в этом дело. В общем пока решение такое - в файлах pcb меняю шрифт Arial Narrow на обычный Arial. После этого редактор открывает pcb без проблем. По-другому как решить проблему пока не понятно. И, кстати, походу эта проблема началась не после обновления винды а после того как мне поставили офис. (((
  5. Ни с того ни с сего при открытии PCB-файлов где есть кириллица стали вываливаться сообщения Warning: Unexpected condition at TTfont.cpp (601) Теперь работать с файлами *.pcb совершенно невозможно. Есть подозрение что это начало происходить после обновления Windiws 10 Как это можно исправить? P.S. pcad 2006 sp2 переустанавливал, файлы manifest удалял
  6. Спасибо за наводку. ТИМ еще к тому же есть в перечне МОП. А в каких диапазонах скоростей у Вас работал ТИМ250 ? Судя по вот этой доке http://www.bec.spb.ru/tim.pdf на трансе ТИМ250 скорости выше 1кб/с врядли получиться добиться. Скорости 64к можно будет добиться на трансе типа ТИМ с группой не выше 5-й, например ТИМ85.
  7. Добрый день! Подскажите, пожалуйста, информацию (наименование, кто производит) по трансформаторам для аппаратуры со стыками С1-ФЛ-БИ (ГОСТ 27232-87) и С1-ТЧ (ГОСТ 25007-81). Приемка 5 приветствуется. Может есть какие-то импортные аналоги? Заранее спасибо!
  8. Судя по осциллограмме полевик вроде закрывается. Форма сигнала на истоке - близкая к треугольной (пилообразной). Пик треугольника до ограничения 350мВ не доходит. Более подробные фотки смогу сделать только вечером. Полевик перепаивал (до этого стоял IRF7301) - ключи проверял. В принципе по фотке видно как к 4-й ноге (затвор) идет печать от LM3488. да, я в курсе этой темы но такие дроссели на прилавках во всяких Чип-Дипах не найти. Расчет SEPIC согласно этой ссылке http://www.radiohlam.ru/teory/sepic_raschet.htm говорит о том, что у меня пиковый ток в катушке (L>17мкГн при F~500КГц) у полевика будет до 2А. У меня есть дроссель LQH88PN 22мкГн c максимальным током 2,7А. Тогда Rsense можно поставить = 0.35В/2А = 0.175 Ом -> 0.2 Ом (1,75А). И посмотреть, что с нагревом и токовым ограничением. Как я понимаю причиной перегрева дросселей может стать либо повышенный ток в намотанных проводах, либо разогрев феррита из-за высокочастотных штучек. Кстати, обратил внимание, что вне зависимости от частоты и дросселя ШИМ всегда начинается с 50%. Для нагрузки 200мА мне это полагается чрезмерным.
  9. Конструктивно всё расположено довольно плотно.
  10. Всем доброго времени суток. Собрал схему SEPIC на LM3488, вх. напряжение 9...30, выход 12В, выходной ток 200...1000 мА. На частото-задающую цепь поставил потенциометр на 150кОм. Дросселя ставил 6,8мкГн 10мкГн 22мкГн и 100мкГн семейства LQH6PP CDRH6D. Транзистор IRF7855. Ёмкость Cs также менял 1...4,4мкФ (керамика X5R). Схема вывода COMP - как в даташите. Токоограничительный Rsense 0,033 Ом. В целом - схема из даташита. схема дросселя LQH6PP Хочу сказать что очень сильно греются дроссели и полевик. Причем при нагрузке 200мА греется сильно но палец держать можно, при 800мА - палец держать невозможно. Менял дроссели, при помощи потенциометра задавал разные частоты на затвор транзистора (150...1000кГц) - толку никакого, кроме тех случаев когда дросселя выходили в насыщение и блок питания уходил с СС. Смотрел осциллограммы - на словах картина такая: импульсы на затвор приходят ровные (только rising в пике немного сглажен, falling падает четко). Напряжения на входе и выходе - при нагрузке 200мА стоят чётко, не плавают.; при нагрузке 800мА - возникают периодические импульсные помехи размахом ~ 1В. Что я делаю не так?
  11. Частично разобрался. Решил пока забить на UART и сделал долбатню пином. Все временные выдерки взял согласно даташиту на датчик. Всё четко как в аптеке. Свою задержку 1us замерял осциллом. Собственно основной цикл: #define ONEWIRE_LOW() HAL_GPIO_WritePin(GPIOC, GPIO_PIN_10, GPIO_PIN_RESET) #define ONEWIRE_HIGH() HAL_GPIO_WritePin(GPIOC, GPIO_PIN_10, GPIO_PIN_SET) #define ONEWIRE_INPUT() MX_GPIO_P10_Init(2) // IN NoPull #define ONEWIRE_OUTPUT_PP() MX_GPIO_P10_Init(1) // OUT PP #define ONEWIRE_OUTPUT_OD() MX_GPIO_P10_Init(0) // OUT OD #define ONEWIRE_READPIN() HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_10) #define DELAY_1us() {__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();\ __NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();\ __NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();\ __NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();\ __NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();\ __NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();} #define ONEWIRE_DELAY(delay_us) {for(volatile uint16_t i=0;i<delay_us-1;i++) DELAY_1us();} ...... volatile uint8_t ResetAnsw=0x55; uint8_t RxByte[9]={0,0,0,0,0,0,0,0,0}; volatile uint8_t Temperature=0; .... ResetAnsw=TM_OneWire_Reset(); TM_OneWire_WriteByte(0xcc); // skip ROM command TM_OneWire_WriteByte(0x44); // convert T command ONEWIRE_OUTPUT_PP(); ONEWIRE_HIGH(); HAL_Delay(800); // at least 750 ms for the default 12-bit resolution ResetAnsw=TM_OneWire_Reset(); TM_OneWire_WriteByte(0xcc); // skip ROM command TM_OneWire_WriteByte(0xbe); // read scratchpad command for(uint8_t t=0;t<10;t++) RxByte[t]=TM_OneWire_ReadByte(); Temperature = ((RxByte[1]&7)<<4)|(RxByte[0]>>4); Но на самом деле дъявол кроется в этих функциях: void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct; RCC_ClkInitTypeDef RCC_ClkInitStruct; RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; HAL_RCC_OscConfig(&RCC_OscInitStruct); RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2); HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000); HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); /* SysTick_IRQn interrupt configuration */ HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); } void MX_GPIO_P10_Init(uint8_t PC10_Mode) // 0- Out OD, 1- Out PP, 2- In { GPIO_InitTypeDef GPIO_InitStruct; /* GPIO Ports Clock Enable */ __GPIOD_CLK_ENABLE(); __GPIOC_CLK_ENABLE(); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_10, GPIO_PIN_SET); /*Configure GPIO pin : PC10 */ if(PC10_Mode==0) {GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD; } else if(PC10_Mode==1) {GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;} else if(PC10_Mode==2) {GPIO_InitStruct.Mode = GPIO_MODE_INPUT;} GPIO_InitStruct.Pin = GPIO_PIN_10; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); } uint8_t TM_OneWire_Reset(void) { uint8_t i; ONEWIRE_OUTPUT_OD(); ONEWIRE_LOW(); ONEWIRE_DELAY(480); ONEWIRE_HIGH(); ONEWIRE_INPUT(); ONEWIRE_DELAY(70); i = ONEWIRE_READPIN(); ONEWIRE_DELAY(410); ONEWIRE_OUTPUT_OD(); return i; } void TM_OneWire_WriteByte(uint8_t byte) { uint8_t i = 8; ONEWIRE_OUTPUT_OD(); for(i=0;i<8;i++) { if((byte&0x01)==0x01) { ONEWIRE_LOW(); // Drive bus low ONEWIRE_DELAY(2); ONEWIRE_HIGH(); ONEWIRE_DELAY(55); //sample time slot for the slave //ONEWIRE_DELAY(2); //recovery time slot } else { ONEWIRE_LOW(); // Drive bus low ONEWIRE_DELAY(90); ONEWIRE_HIGH(); ONEWIRE_DELAY(2); //recovery time slot } byte=byte>>1; ONEWIRE_HIGH(); } } uint8_t TM_OneWire_ReadByte(void) { uint8_t i = 8, byte = 0; while (i--) { ONEWIRE_OUTPUT_OD(); ONEWIRE_LOW(); ONEWIRE_DELAY(2); ONEWIRE_INPUT(); ONEWIRE_DELAY(6); byte >>= 1; byte |= (ONEWIRE_READPIN() << 7); ONEWIRE_DELAY(50); } return byte; } Буду ли ковыряться с UART - не знаю. Слишком много времени убил на этот датчик.
  12. Спасибо что откликнулись. Тайминги на соответствие даташиту посмотрю. Могу вот что добавить: при запросе на преобразование 0хF0 (9600), 0xCC(115200), 0xBE(115200) при подключении по двухпроводной схеме (VCC и GND замыкаются и сажаются на землю, сигнальный на UART TX c подтяжкой к 3,3В через 3,3кОм) осциллограмма в точности как на этом рисунке В этом случае проседание длиться ~600мс. Если включаю по трехпроводной схеме то при таком же запросе проседания линии нет. Что бы это могло значить?
  13. Всем доброго времени суток! Есть проблема с датчиками DS18b20 Заказал пару штук этих датчиков во влагозащищенном исполнении. Подключил один из них по 2-проводной схеме - т.е. красный и черный провод объединил и посадил на "землю". Желтый провод сделал PullUP (к 3,3В через 3,3кОм) посадил на передатчик USART4. МК - STM32F103RE (отладочная плата - Махаон). Для упрощения жизни запустил CubeMX последней версии, настроил USART4 на HalfDuplex. И ситуация следующая: на F0 датчик отвечает E0, а вот на остальные команды не отвечает вообще никак. Ни на 0хсс 0хBE (чтение памяти 9 байт) ни на 0x33. Собственно, результаты смотрел в отладчике Keil и осциллографом. Скорость UART меняется адекватно, оценивал длительность импульсов согласно скорости. Код ниже: uint8_t TxCmdReset=0xF0; uint8_t RxAnswReset1; uint8_t RxData[100]; uint8_t ow_buf[8]; HAL_HalfDuplex_EnableReceiver(&huart4); MX_UART4_Init_wBoudRate(9600); //Reset HAL_UART_Receive_IT(&huart4,&RxAnswReset1,1); HAL_UART_Transmit(&huart4, &TxCmdReset, sizeof(TxCmdReset), 2); for(i=0;i<1000;i++) {__NOP();} MX_UART4_Init_wBoudRate(115200); HAL_UART_Receive_IT(&huart4, RxData, sizeof(RxData)); OW_toBits(0xCC, ow_buf); HAL_UART_Transmit(&huart4, (uint8_t *)ow_buf, 8, 3); OW_toBits(0xB4, ow_buf); HAL_UART_Transmit(&huart4, (uint8_t *)ow_buf, 8, 3); HAL_Delay(2); while(1); void MX_UART4_Init_wBoudRate(uint32_t BoudRate) { huart4.Instance = UART4; huart4.Init.BaudRate = BoudRate; huart4.Init.WordLength = UART_WORDLENGTH_8B; huart4.Init.StopBits = UART_STOPBITS_1; huart4.Init.Parity = UART_PARITY_NONE; huart4.Init.Mode = UART_MODE_TX_RX; huart4.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart4.Init.OverSampling = UART_OVERSAMPLING_16; HAL_HalfDuplex_Init(&huart4); } Функция преобразования байта в 8 байт для отправки заимствован. Тем не менее его в отладчике проверял - замечаний нет. void OW_toBits(uint8_t ow_byte, uint8_t *ow_bits) { uint8_t i; for (i = 0; i < 8; i++) { if (ow_byte & 0x01) { *ow_bits = OW_1; } else { *ow_bits = OW_0; } ow_bits++; ow_byte = ow_byte >> 1; } } Пробовал оба датчика - ведут себя одинаково. Значит есть надежда что ошибка в коде. Может кто прояснит в чем я не прав?
  14. на http://www.koe.j-display.com/ видел подобные дисплеи.
  15. всем доброго времени суток! все знают про таймер 555 (напр. TS555, микромощный) Но мне он может понадобиться при питающих напряжениях до 30В. Реально выше чем на 15В не нашел. Может бывают до 30В и выше? Городить линейник пока не хочу. Заранее спасибо!
  16. спасибо, на радиоканал в качестве надежного не могу рассматривать. В шторм и/или сильный ливень, я думаю, со связью гарантированно будут проблемы.
  17. проблема оказалась в определении очереди (привет CubeMX) osMessageQDef(Level2Storage_Queue, 4, WLevelData); Level2Storage_QueueHandle = osMessageCreate(osMessageQ(Level2Storage_Queue), NULL); если заменить на классику RDLevel2Storage_QueueHandle = xQueueCreate(4,sizeof(WLevelData)); то структура передаётся без потерь. а проблема имхо кроется в #define osMessageQDef(name, queue_sz, type) \ const osMessageQDef_t os_messageQ_def_##name = \ { (queue_sz), sizeof (type) } osMessageQId osMessageCreate (const osMessageQDef_t *queue_def, osThreadId thread_id) { (void) thread_id; return xQueueCreate(queue_def->queue_sz, (uint32_t) sizeof(queue_def->item_sz)); }
  18. Всем доброго времени суток. Есть такая проблема - если в кратце - то при пеердаче структуры в очереди теряются элементы. Если по-конкретнне то есть вот такая структура: typedef struct { unsigned short int LSensor_Num; unsigned short int WLevelValueAv; unsigned short int TimeStartMeasure; unsigned short int DurationMeasureSec; } WLevelData; Очередь инициализирована так: osMessageQDef(Level2Storage_Queue, 4, WLevelData); Level2Storage_QueueHandle = osMessageCreate(osMessageQ(Level2Storage_Queue), NULL); Задачи инициализированы так: osThreadDef(TX_Task, Start_TX_Task, osPriorityNormal, 0, 128); RD_TaskHandle = osThreadCreate(osThread(TX_Task), NULL); osThreadDef(RX_Task, Start_RX_Task, osPriorityBelowNormal, 0, 128); Storage_TaskHandle = osThreadCreate(osThread(RX_Task), NULL); Есть задача где раз в 6 секунд происходит запись в очередь void Start_TX_Task(void const * argument) { portTickType xLastWakeTime; portBASE_TYPE xStatus; WLevelData WLevel = {1,111,0,60}; xLastWakeTime = xTaskGetTickCount(); /* Infinite loop */ for(;;) { xStatus = xQueueSendToBack(Level2Storage_QueueHandle,&WLevel,0); if(xStatus != pdPASS ) {} // Could not send to the queue vTaskDelayUntil(&xLastWakeTime,6000); } } Есть задача где периодически очередь считывается. void Start_RX_Task(void const * argument) { portBASE_TYPE xStatus; portTickType xLastWakeTime; WLevelData WLevel_rx; xLastWakeTime = xTaskGetTickCount(); for(;;) { if(uxQueueMessagesWaiting(Level2Storage_QueueHandle)) { xStatus=xQueueReceive(Level2Storage_QueueHandle,&WLevel_rx,0); } vTaskDelayUntil(&xLastWakeTime,130); } } И в итоге прием происходит, но последние 2 значения (TimeStartMeasure и DurationMeasureSec) в структуре WLevel_rx всегда "0". Увеличивал кучу на 10кБ. Также увеличивал глубину стека в задачах. Приоритеты менял. Не помогло. МК: STM32F407VG, клок: 168МГц. Почему так?
  19. На основании вышесказанного вижу вариант купить 5 500-метровых бухт FTP/SFTP кабеля, соединить последовательно и проверить. Вопрос по гальванической изоляции, на мохе или ADuM - если ли в моём случае такая необходимость?
  20. Коллеги, спасибо что откликнулись! Вношу ясность. Скорость нужна 9600 б/сек. Выше нет необходимости.
  21. Всем доброго времени суток! Есть задача обеспечения связи между двумя устройствами, расположенными на расстоянии 2,5км друг от друга. Рассматривается применение интерфейса RS-485 (или RS-422 ?), скорость 9600кб/с (можно 4800кб/сек). Возможно ли обеспечить устойчивую связь по данному интерфейсу без репитеров, применяя экранированную витую пару (например Cat 5e) и, возможно, усилителя на обоих концах линии. Кабель будет проходить преимущественно под водой на глубине ~1метр. Может есть у кого опыт в данной области, что скажете? Update: скорость нужна 9600 б/с
  22. а что на счет надежности работы устройств на данном модуле? Есть какая-либо статистика или хотя бы наблюдения?
  23. Всем доброго времени суток! Есть задача сделать управление реле посредством GSM-модема, а именно при помощи SMS. На рынке есть готовые устройства, с различными ценами, с разными типами реле но не в них суть. Суть в том, что работа модема в режиме приема/отправки SMS, при обеспечении соот. факторов (например питание) должна быть бесперебойной. Т.е. не хотелось бы чтобы модем произвольно отваливался от сети и/или жил своей жизнью. Т.е. хочется его поставить и забыть, а не ходить к нему и перезагружать. Может кто сталкивался с подобными задачами прошу поделиться опытом. Заранее спасибо! Вот, например, приглянулся вариант http://masterkit.ru/shop/smarthome/guards/1298514
  24. мне кажется мы говорим о разных эффектах. сама яркость подсветки у меня всегда одинакова - что при включении, что через некоторое время. А вот полосы аля мерцание - только первые несколько секунд. И еще раз - это не зависит от выставленной яркости, т.е. тока через светодиоды ЖК. но всё равно осциллом еще разок зацеплюсь и посмотрю внимательнее с учетеом "земли".
  25. мда, с огорчением но я ждал такого ответа. Mikle Klinkovsky, спасибо!
×
×
  • Create New...