Jump to content

    

xemul

Свой
  • Content Count

    1907
  • Joined

Everything posted by xemul


  1. А вдруг у ТС на входе клапана бочка на стопицот кубов и высотой в километр? Ну какой смысл гадать, что у него есть (кроме клапана и BUZ11), и что именно ему нужно? Надеюсь, ТС уже догадался, что если задача - управлять расходом, то её решение чуть сложнее выбора транзистора и резистора, и ему придётся немного почитать и посчитать.
  2. Про случай ТС нам плохо объяснил, но вроде бы его расход интересует. Если давлением или изменением жёсткости пружины не получится пренебречь, ОС по току будет маловато.
  3. Осталось уточнить давление на клапане, жёсткость возвратной пружины, ну и индуктивность и сопротивление обмотки соленоида. По этим данным можно будет прикинуть потребную частоту ШИМа. Про ОС (локальную по току, общую по расходу или ещё абы какую) тоже можно подумать. Пойдёт. Но придётся поискать контроллер, выход которого раскачает этого динозавра. А резистор лучше красненький, т.к. его номинал пока абсолютно фиолетов.
  4. Да вроде бы сейчас есть логических мосфетов на пару-тройку-пяток А с весьма скромным total gate charge.
  5. Да, это пассивное состояние ноги TX контроллера.
  6. MAX232 инвертирует TxD и RxD в соответствии со стандартом. ЕМНИП, в регистрах УСАРТа ПИКов нет битов, включающих аппаратную инверсию TxD и RxD. Вероятно us = (x)/(12000000L/FOSC)|1. (на выходе всё равно будет цена на дрова) Соотнесите delay_ms(200000) с delay_ms(unsigned int ms).
  7. (по моей статистике) транследы пока получаются не хуже. Транслед 1к партию мелких трансов намотает под Ваши требования за те же деньги, что и серийные модели. Сомневаюсь, что с ханом так получится.
  8. Применительно к температуре под акронимом "ta" обычно подразумевают ambient temperature. 40°C/F означает, что это трансформатор класса F (рабочая температура 140°C), и его температура (перегрев) относительно окружающей среды может составлять до (140 - 40) = 100°C. (не более, чем ХО: неприлично так зажиматься на медь в первичке - эти ханы уже на холостом ходу +20..25 С перегрева дают)
  9. У LM258 на входах pnp транзисторы, и "V+ -1.5V" для них потолок осмысленной работы. Если не хотите изобретать велосипед на коленке, погуглите (по конфе, н-р, - обсуждалось не раз) на предмет Current Shunt Monitor (CSM).
  10. Если верить производителю кварца, считать ёмкость ноги пика 5 пФ, ёмкость монтажа 3 пф, то в обвязке KX-38T должны быть ~ 15 + 15 пФ. У Мелкочипа есть аппнот на эту тему. Фигой 2 из него я когда-то воспользовался при подобных непонятках.
  11. По-моему, очевидно - ничего не делать. __interrupt void SPI_Isr(void) { ... if(!TxQueue.Busy) if(TxQueue.Count) // Если в очереди что-то есть { SPI_DR = QUEUE_Read(&TxQueue); // записываем байт из очереди в регистр передатчика }; ... } Содержимого ... не знаю, может потребуются уточнения. Как-то не похоже оно на атомарность. С stm8 тоже не работал, но конструкция для современного проца и компилятора выглядит чудесато.
  12. Разве я сказал, что в прерывании нужно ждать сброса флага?
  13. Если операции с _queue->Count атомарны, то достаточно объявить его volatile. Если нет, то придётся или взводить флаг на время операций с _queue->Count вне прерываний, или добавлять критические секции там же.
  14. Если усилитель (любой - на лампах, транзисторах, ОУ) должен обеспечить 40 дБ на 10 МГц, и его АЧХ падает на 20 дБ/декаду, то его частота единичного усиления должна быть не ниже 10 МГц * 40 дБ = 10 * 100 = 1 ГГц. Возможный вариант Вам уже предложили - сделать несколько каскадов усиления, тогда кратно уменьшится требуемая GBWP одного каскада. (н-р, два каскада по 20 дБ дадут суммарно те же 40 дБ усиления, но будет достаточно усилителей с GBWP 100 МГц). Нужно будет только озадачится развязкой каскадов по питанию. Можно иначе раскидать усиление по каскадам - основное (н-р, Ку=33,(3)) на первый маломощный и малошумящий каскад, остальное (3 в данном случае) - на выходной каскад (который сможет рассеять до 1.5 Вт при указанной нагрузке).
  15. 10 МГц - это вся полоса сигнала? Тогда 10 МГц * 40 дБ = 1 ГГц - минимально необходимая частота единичного усиления ОУ. (из усилителей с такой GBWP, используемых в бытовой технике, могу предположить, н-р, усилители в головах DVD-приводов, но они весьма специфичны и под питание +-15 В точно не подходят) Возможно, придётся принять во внимание и требуемую амплитуду сигнала на выходе ОУ (GBWP обычно указывается для режима малого сигнала). UPD: для 5 В на выходе - точно придётся. Можете искать ОУ с полосой от 2 ГГц.
  16. Перед собственно ногой стоит мультиплексор, который подключает выбранную Вами функцию - I2S2_MCK или TIM8_CH1 или SDIO_D6. Если Вы сказали контроллеру, что нога работает как выход таймера, он Вас обязан послушаться. (иногда случается, что на ноге одновременно оказываются включёнными пара-тройка функций, но такое обычно связано с нарушением логики приоритетов функций и описывается в эрратах)
  17. Извините, криво скапипастилось.
  18. Тогда подробности смотрите в мануале mikroC. Сорцы программ оформляйте тегами code, /code (иконка с рулоном бумаги и зелёной стрелкой). А по программе: - пишите комменты к 0b1010101010101, лучше в дифайнах и побитово (чтобы не лезть в ДШ из-за склероза); - прерывание от IOCB может выглядеть как-то так (подробности по именам битов за Вами): volatile uint8_t prev_PORTB; // нужно хранить предыдущее состояние входов PORTB void main(void) { ... // где-то после инициализации TRISB prev_PORTB = PORTB & (TRISB_CFG & IOCB_CFG); // 0b01011110 и 0b00100000 в Вашем случае // ошибку видите? // & (TRISB_CFG & IOCB_CFG) можно упростить до & IOCB_CFG, если TRISB и IOCB далее не меняются // если меняются, вероятно стоит завести что-то вроде IOCB_mask = TRISB & IOCB;, обновляемую по случаю. ... } void interrupt() { if(RBIF) // приключилось прерывание от разрешённых в IOCB ног { // выделили изменившиеся ноги uint8_t tmp = (PORTB ^ prev_PORTB) & IOCB_CFG; // uint8_t tmp = (PORTB ^ prev_PORTB) & IOCB_mask; // далее придётся каким-то образом перебрать все ноги, разрешённые в IOCB (или IOCB_mask); if(tmp & (1<<0)) { ... }; // а ногам можно дать осмысленные дифайны if(tmp & (1<<1)) { ... }; ... // обновить prev_PORTB prev_PORTB ^= tmp; // сбросить RBIF RBIF = 0; } } RBIF будет устанавливаться в 1 по _изменению_ любого разрешённого в IOCB бита PORTB, а не по постоянному нулю. Если до момента "tmp = (PORTB ^ prev_PORTB) & IOCB_CFG;" нога вернётся в прежнее состояние, её изменение, естесно, не будет обработано. Если состояние ноги изменится после "tmp = ...", но до "RBIF = 0;", это изменение тоже может быть пропущено.
  19. Не void interrupt(), а void interrupt имя_функции_не_важно().
  20. (примерный ход рассуждений без заглядывания в гугль) Параметр указан в разделе "Absolute Maximum Ratings", значит превышение может убить девайс напрочь. Если убивает напрочь ток, значит девайс работает как вставка плавкая (или, в миру, предохранитель). Параметром, определяющим момент разрушения вставки плавкой, является количество тепла имени Джоуля-Ленца. Посчитайте количество тепла, получаемое светодиодом от единичного всплеска тока. Посчитайте количество тепла, отводимое от светодиода в единицу времени. Останется поделить (а может умножить), и получите допустимую частоту частых всплесков.
  21. "А ещё мы стали более лучше одеваться". Ну и рожь всякая, естесно. ппц.
  22. Назначение? Ну просто красиво. Если "каждый миллиампер на счету", почему Вы используете биполярный транзистор, а не полевой? И, даже если биполярный, зачем на 2 мА нагрузки использовать тормозной BC817? Если на BC817 что-то клином сошлось, бюджетное и проверенное десятилетиями решение Вам уже предложили - ограничить степень насыщения транзистора диодом между базой и коллектором. Во времена, когда "диод Шоттки" был не более чем словосочетанием, резистор в базе иногда разделяли на два и включали диод в их среднюю точку, чтобы уж наверняка не впасть в насыщение. Не стесняйтесь использовать программы моделирования - такие мелочи они Вам покажут без натурного эксперимента.
  23. Значит, что pcap'у безразлично, по каким шнуркам к нему попал пакет, и что физический интерфейс и его программная модель - разные сущности. Числа относятся к физическому интерфейсу. Боюсь, tcpdump без подсказок не справится - не его это уровень. А предложенные подсказки Вам не нравятся. Беда. ЗЫЖ сразу не обратил внимания на Вашу трактовку "входящий трафик это же не только трафик с адресом 192.168.1.10" фразы tcpdump -i eth0 src host not "192.168.1.10 or localhost" чтобы не думать, можно tcpdump -i eth0 src host not "`hostname -s` or localhost" Фраза означает, что на eth0 будут ловиться все пакеты, источниками которых являются не hostname и не его локальные сервисы. Если на Вашем хосте живут своей жизнью джейлы, виртуальные машины етс., придётся подсказки немного усложнить.
  24. Когда догадаетесь, что у интерфейса две стороны, и с каждой есть входящий трафик, можно будет продолжить не повторяясь.