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

rekcuf

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

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

  • Посещение

Репутация

0 Обычный

Информация о rekcuf

  • Звание
    Участник
    Участник
  1. Плохо нарисовал схему. Второй ОУ в дифф. режиме нужен, чтобы реализовать двухпроводную схему замера напряжения на нагрузке. Перерисовал: Plain, добавил в свою схему емкость между входом и выходом ОУ, по аналогии с Вашей, и проблемы исчезли. Если не затруднит, можете пояснить, какую роль выполняет C1 на Вашей схеме?
  2. Нужно сделать линейный регулятор на напряжение 2-5В, ток 0-7А. Обратная связь берется напрямую с нагрузки по двум проводам. Набросал в симуляторе простую схему без ограничения по току. VSET=1V. Проблема в том, что чем больше ток, тем больше осцилляции. Если оставить только один ОУ, то осцилляции пропадают. В аналоговой схемотехнике не силен, поэтому прошу подсказать, как побороть осцилляции при использовании двух ОУ, что почитать на эту тему?
  3. Стоит задача минимальными средствами реализовать сенсорную кнопку: Есть портативный прибор с металлическим корпусом. Корпус соединен с минусом питания. На корпус через диэлектрик наклеена полоска металла, играющая роль сенсорной кнопки. Сверху все закрыто термоусадкой. Полоса подключена к аналоговому входу контроллера: При работе мультиплексор АЦП переключается на вывод с кнопкой и через встроенный в МК pull-up на кнопку подается короткий импульс. Sample&hold емкость в АЦП заряжается до какого-то уровня и этот уровень измеряется. Кнопка работает: Написал простой фильтр: мгновенное значение АЦП сравнивается с усредненным, если больше 20 несколько отсчетов подряд - нажатие регистрируется. ButtonVoltageRaw = ADC; ButtonVoltageAcc -= ButtonVoltageAcc >> 6; ButtonVoltageAcc += ButtonVoltageRaw; ButtonVoltage = ButtonVoltageAcc >> 6; if(ButtonVoltage > ButtonVoltageRaw && ButtonVoltage - ButtonVoltageRaw > 20) { if(ButtonPressed < 255) { ButtonPressed++; if(ButtonPressed > 2) ButtonVoltageAcc = ButtonVoltageRaw << 6; //Поймали нажатие } } else if(ButtonVoltage < ButtonVoltageRaw && ButtonVoltageRaw - ButtonVoltage > 20) { ButtonVoltageAcc = ButtonVoltageRaw << 6; } else { ButtonPressed = 0; } Результат работы фильтра на темной линии: В целом, нажатия детектируются уверенно, однако люди нажимать будут по-разному и пальцы у всех разные, вполне вероятно, что с таким отношением сигнал/шум у кого-то кнопка будет работать не очень хорошо. Есть сомнения, что мой способ фильтрации является в данном случае оптимальным, если кто знает что-то более подходящее, буду признателен за статьи, ссылки, примеры.
  4. В качестве нагревательной пластины для бытового 3Д принтера сойдет. Без металлизации, конечно же. С первого раза вряд ли совпадут расчеты с реальностью, это да. Благодарю.
  5. Нужно сделать нагреватель на плате. Никак не могу найти в Альтиуме расчет сопротивления дорожки постоянному току. Гуглеж тоже результатов не дает - везде речь только о волновом сопротивлении. Так все-таки, есть возможность узнать сопротивление трассы или придется вручную рассчитывать? Или тут можно схитрить: формулу расчета волнового сопротивления в Layer Stack Manager изменить так, чтобы она считала то, что нужно?
  6. Есть некоторое количество плат, на которых должно все заработать.. В следующей ревизии можно будет аппаратно улучшить характеристики, а сейчас приходится работать с тем, что есть..
  7. Замеряю напряжение между двумя резистивными делителями встроенным в МК АЦП, который работает в диф. режиме с включенным усилением х20. Использую оверсэмплинг, чтобы дополнительно получить 2 бита точности, в результате имею 11 бит. Последние 3 бита шумят. Если посчитать распределение величин замеров, получается так: Какими алгоритмами можно программно отфильтровать значения, чтобы при этом реакция на импульс не пострадала? И в идеале еще без сложной математики, т.к. у МК память 1 Кб. Или нереально?
  8. Приветствую! Меряю потребляемый ток ( 50 - 1500 мА ). Для этого использую операционник OP491GS по схеме неинвертирующего усилителя с К около 1.6. Сопротивление шунта - 1 Ом. На выходе операционника ниже 30 мВ не бывает. Насколько я понимаю, это описано в даташите как Output Voltage Low или Output Voltage Swing. Соответственно, ток ниже 50 мА я измерить не смогу из-за этого. Но промежутке от 50 до 100 мА наблюдается нелинейность. Просимулировал схему в Multisim - там эта нелинейность тоже присутствует. В аттаче на осцилле слева видна. Значит это ожидаемое поведение операционника при однополярном питании? И меня вот что интересует: 1. Что это за нелинейность и где про нее почитать, как называется? 2. Можно ли от нее избавиться малой ценой? 3. Если нужно будет измерять ток от 3 мА, то тут только смотреть в сторону специальных мониторов шунта типа INA139 и подобных? ( но ради экономии это на крайний случай)
  9. Я ни за что не борюсь, просто начал изучать STM32 после PIC18, поэтому некоторые вещи мне непривычны. При чтении доков показалось странным, что GPIO работают с частотой 84 МГц, а сидят на шине 168 МГц...
  10. Начал изучать ARM с платки STM32F4-Discovery. Первым делом решил подергать выводом с максимальной скоростью. Смотрю в даташит: GPIO подключены к шине AHB1, макс. скорость шины - 168 МГц. При этом нигде не сказано, что выводами можно дергать с такой частотой. Везде речь идет о 84 МГц. Написал код, при включенной оптимизации он скомпилировался в 3 инструкции. while (1) { GPIOA->BSRRL = 2; GPIOA->BSRRH = 2; } Что и подтвердилось на осциллографе. На одном канале системная частота, на другом - вывод, которым дергаю. Так вот, кто-нибудь может объяснить, как так: GPIO висят на AHB1, частота которой 168 МГц, а фактическая скорость работы оказывается 84 МГц, что больше похоже на шину APB2 ??
  11. В проекте имеется несколько одинаковых каналов. Копирую трассировку через Copy Room Formats. Если копирование делаю на нетронутый канал, то все хорошо. Если там есть старые разведенные цепи - то они тоже нормально переразводятся. Но с полигонами такое не прокатывает - старые полигоны не удаляются и поверх них копируются новые, в итоге получается либо каша, либо просто два одинаковых полигона. Я стараюсь до последнего момента разводить только один канал, а уже потом копировать. Но бывает так, что все скопировал и тут возникает необходимость подправить. Каналов 6, в каждом канале более десятка полигонов. Надоело руками каждый раз чистить. Неужели нельзя заставить AD автоматически удалять старые полигоны? Или хотябы вручную, одной командой, наподобие Unroute Room?
  12. Можно тут поподробнее? В каком направлении думать то хоть ? :) Сначала хотел сделать правило с Pref Gap = 0.2 mm, которое действует только около КП микросхемы, но не нашел, как определить расстояние до объекта.
  13. Ну а как руками это сделать? Если я подвел первый проводник пары, то второй просто не проводится и все. Сейчас попробовал изменить режим на "Stop At First Obstacle" и тогда получилось. В этом и заключалось решение? )
  14. Т.е. это баг? Я не против и по отдельности дотянуть, как сделать, чтобы он не ругался?
  15. Забил следующие правила: Differential Pair routing: Min Gap - 0.15mm Preferred Gap - 0.35mm Max Gap - 0.5mm Clearance - 0.15mm Тяну линии в режиме разводки дифф. пар к микросхеме с шагом выводов 0.5мм. Когда пытаюсь подвести к выводам микросхемы - то никаких вариантов интерактивный разводчик мне не предлагает. По отдельности тоже не получается - один вывод могу протянуть, второй уже не идет. В чем дело? Ведь параметр Min Gap как раз должен разрешать меньшее расстояние между линиями пары, чтобы подвести к микросхеме?
×
×
  • Создать...