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

-=TRO=-

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

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

  • Посещение

Весь контент -=TRO=-


  1. Plain, не считал, просто в симуляторе поглядел время затухания на максимуме индуктивности, и взял с запасом. Сначала поставил 5, но в симуляторе начал младший разряд дышать, увеличил до 10 и стало стабильно, решил не рисковать, тем более что меня пока устраивает, оптимизация будет потом. Кстати со схемой оказалось не все гладко, возможно рано я радовался, уже в конце дня передвигая ползунок датчика заметил какие то очень резкие участки чуть в стороне от среднего положения, причем аналогично в обе стороны, разбираться было некогда уже, если не забуду возьму на работу карманный осцилограф и посмотрю что там происходит, а то интуитивно догадаться не могу. Хочется верить что это программный косяк, но с моим везением надежды на это мало.
  2. Спасибо, буду знать. Итак вся схема свелась к одному резистору и одному конденсатору. Концы индуктивного полумоста подключил к двум произвольным выводам (дёргалкам). Средний вывод через резистор 10к на вход компаратора, а второй вход компаратора на минусе. Этот же средний вывод через конденсатор подключен к минусу питания. Для измерения переключаю вывод (дергалку) с входа на выход, и даю высокий уровень на 10 миллисекунд, потом даю низкий уровень запускаю таймер и считаю спады на компараторе, на пятом спаде читаю защелку компаратора, и отключаю вывод (дергалку, переключаю на вход). Со вторым плечём то же самое. Потом усреднение и фильтрация как писал выше. Итого разрешение в микронах стоит как вкопанное. Дальше предстоит калибровка и устранение нелинейности, но это уже рутина и немного математики. Основная задача выполнена, хотел простыми способами получить хотя бы сотки, а будут микроны. R3 и R12 это активное сопротивления обмоток датчика, резистор 10к на вход в компаратор.
  3. Сделал десять замеров подряд с суммированием, подобрал паузы между замерами, потом еще плавающее среднее на буфер из 5 чисел, и результат поделил на 5 (получив прирост разрешения в 10 раз). Получилось вообще хорошо, если до этого скакал хаотичный шум эквивалентный 5 микронам, то теперь шумит 1-2 десятых микрона, и очень хорошо наблюдается температурный дрейф (Поставил рядом чашку с утренним горячим кофе, вижу как каждые ~5 секунд набегает в плюс по одной десятой микрона). Теперь надо найти термостабильный конденсатор меньшей ёмкости, и по аналогии сделать замер второго плеча.
  4. У большинства дешевых датчиков проблема в том что они намагничиваются постоянным током, от чего у них уплывает нуль, при чем прилично уплывает. Дашь эдак 100А, а ноль уже 2-3А показывает, даёш обратный ток минус 100А, ноль начинает те же 2-3А в минус врать.... А чтобы размагнитить надо затухающий переменный ток давать. Слегка спасает калибровка нуля при включении (когда ток еще не идет), но это больше окозамыливание для конечного потребителя. В дорогих есть разного рода компенсации, но те которыми уже метрологически можно пользоваться имеют совсем не гуманные ценники.
  5. Подключил одно плечо в железе, начало диапазона видно на фото, 7421, и скачет в пределах 5 едениц (Обвешано блокировочными конденсаторами питание , без них было хуже, питаюсь пока от USB программатора) Конец диапазона 12702, и скачет тоже в пределах 5 едениц. Думаю сделать чуть короче паузы и ввести плавающее среднее хотя бы на 5 чисел. На прикреплённом фото на дисплее 5 периодов, но реально захват на шестом спаде, счёт идет с нулевого. Удивительно но надежно цепляется вплоть до 9 (десятый спад , а протеус меня слал подальше уже на седьмом), но погрешность (шумы) уже растут больше чем прирост разрешения, так что дальше шестого спада лезть смысла нету. Второй вход компаратора пока тупо на минусе питания. akl, Спасибо за номиналы, думаю чуть попозже дойдет дело и до генератора. Стыдно признаться, но только что гуглил что такое NP0 конденсатора , с номиналом буду еще играться, пока подключен около 68 нанофарад (под руку высоковольтный попался), после его уменьшения надо будет еще раз выгодный период поискать, так как я еще в процессе симуляций догадался что спасибо.
  6. Засимулировал в протеусе пассивный резонансный контур в купе с микроконтроллером и дисплеями. Затухает сильно, каждая положительная полуволна в среднем по амплитуде меньше в ~5 раз чем предыдущая. Видно что шестая полуволна еле дотягивает до 2мВ, её спад в симуляторе уверенно детектится компаратором микроконтроллера. Конденсатор контура выбрал большой, 47нанофарад, индуктивность 0,3 миллигенри, на дисплее кажет 1824 отсчета. На осциллограмках один и тот же сигнал, просто на первой 1в на кубик, а на второй 2мВ. Если текучка не помешает, то завтра на работе попробую в железе, и оба плеча.
  7. Plain, Спасибо конечно, но у этой схемы коммутировать катушки не удобно, у схемы akl катушка на минусе , достаточно двумя мосфетами к минусу катушки переключать, что бы поочередно оба плеча измерять.
  8. akl, у вас номиналы деталей генератора сохранились? Подергать контур тоже полезно, хотя бы академически, я так еще не делал никогда, может где ещё пригодится.
  9. Я имел ввиду нелинейность по диапазону (индуктивность к частоте), все остальное нивелируется калибровкой По алгоритму мысль такая, дергаем (накачиваем) контур, сразу запускаем таймер с захватом в защелку без сброса, потом на десятом или двадцатом прерывании (где еще компаратор гарантированно детектит затухающий синус) читаем защелку. Потом можно повторить с контуром второго плеча. Потом можно все повторить несколько раз слегка меняя длительность накачки контура, и просуммировать результаты для наилучшего приближения.
  10. Нелинейность полезет что ли? Датчик предполагается калибровать чуть ли не при каждом измерении по крайним положениям, ход у него ограничен строго фиксированно, измерю микрометром и внесу как константу. У датчика вакуумный подъем (втягивается), так что можно калибровать каждый раз автоматически при включении. А дергать LC контур как струну это идея прям, интересно сколько периодов прозвенит если это ловить только компаратором МК .....
  11. khach, да бесплатно, зато потом внейшний АЦП нужного разрешения за деньги... даже если отдетектим, то разрешения и стабильности набортного АЦП окажется мало. Если просто заюзать компаратор как предложил Plain, то выйдем на АЦПшное разрешение даже с учетом прыгающего через такты захватчика. Так что пока мне больше нравится вариант akl.
  12. khach, как по взрослому делать я знаю, но уж деталек многовато выходит, а специализированные микросхемки где все это внутри стоят неприличных денег. akl, склоняюсь к вашей схеме с генератором, проще и точнее вряд ли по другому выйдет, щас активно курю схемы в поисках подходящей для генератора.
  13. Пардон за терминологию, "захваченное число" = "защелка" (щас исправлю) А чтение непосредственно с таймера это я отдельно в прерывании читал, что бы сравнивать с защелкой, дабы убедится что есть разница. Короче, защелку колбасит.
  14. Не думайте что сообщения не читаю, читаю до дыр, просто притих так как пытаюсь побороть другую беду, при пределителе таймера = 1 число в защелке прирастает не кратно 1, чаще по 2, но бывают скачки вплоть до 13, причем как плавно индуктивность не меняй, на значения между этими числами попасть невозможно. Подумал что не от туда читаю, начал читать в прерывании захвата еще и значение таймера поставив перед чтениями небольшую задержку NOPами. От изменения задержки значение считанного таймера меняется, а защелка нет, а значит защелку читаю читаю от куда надо. Прикрутил к датчику рычаг(стрелку) на его калибровочную резьбу, что бы видеть на какой угол поворачиваю, поставил пределитель таймера на 8, теперь прирост идет по 1, но по стрелке эти приращения немного с разными градусами. Вопрос, это я косячу, или при пределителе = 1, таймер1 в меге328p не успевает каждый такт проца в защелку захватывать?
  15. Plain, хочу спросить, вы на схемах учитываете что индуктивность датчика имеет активное сопротивление 20 Омм ?
  16. Plain, да, вы правы, если малое напряжение ловить то интервал длиннее. Для эксперименту посадил плечо с большей индуктивностью на вход прерывания (пока без компаратора), и получил с таймера диапазон от 126 до 438. Ход датчика оказался чуть меньше 5мм, т.е. один отсчет приблизительно равер 16 микронам. А если сделать по вашему, то можно до микрона дотянуть. Ну и надо будет калибранутся по стойке с часиками, а потом нагреть датчик и глянуть как оно по температуре задрейфует, может надо будет термистор добавить.
  17. Прикинул в симуляторе, на глаз интервальчик получается на порядок короче.
  18. MegaVolt, у меня вторички нету Katatsuburi, Да я уже сам думал на паре транзисторов собрать блокинг генератор из этого индуктивного полумостаь , перекос индуктивностей даст измерение скважности, потом погнать через компаратор нормализовав фронты, и останется получить из скважности постоянный сигнал отфильтровав несущую. В принципе просто, но для начала хочется все же совсем без активных компонентов выкрутится.
  19. Есть датчик перемещения с двумя катушками включенными встречно внутри которых ходит плунжер из ферромагнетика. Ход датчика около 10мм. Активные сопротивление плечей (катушек) 20 Омм. Измерил индуктивность плечей в крайних положениях плунжера: Верхнее плечо 0.3мГн и 2,6мГн Нижнее плечо 2,5 и 5,1мГн Видно что есть сильный статический разбаланс, но это не проблема, датчик разбирается и плунжер при необходимости можно передвинуть. На данном этапе на столе лежит микроконтроллер с подключенным дисплеем (плюс умение это все кодить и свободно читать схемы). Стоит практическая задача научится снимать с этого датчика полезный сигнал, желательно без дополнительной активной обвязки. (Реально хочу получать с его помощью карту высот платы стеклотекстолита на столе станка фрезеровки печатных плат и установки компонентов) Вопрос выбора, по какой схеме лучше подключить к микроконтроллеру датчик и алгоритм замера. Мысля первая, измерять индуктивности плечей, даем в индуктивности плечей ток на который способны выводы и по таймеру смотрим через сколько упадет напряжение до порогового. Мысля вторая, даем в края полумоста меандр (через токоограничительные резисторы) около 5 кгц, и сразу после фронтов и тылов читаем АЦП с середины полумоста, получаем результат в виде вычитания, но тут боюсь без усиления будет маловато разрешающей способности АЦП (я конечно могу взять микроконтроллер с предусилителем, но не хочу этим сужать рамки для выбора микроконтроллера). Нужен чужой опыт или светлые мысли, так как походу чувствую что очередной велосипед изобретаю.
  20. Тестером замерил. Перед Q4 там 12 вольт, а после 10,7 вольта. По 5в дежурки честные 5в (электролиты новые), а значит и 12в там правильные.
  21. Спасибо, я конечно видел тот виток включенный последовательно с силовой первичкой, но наивно думал что это при превышении тока гасит драйвер (защита такая), а оно оказывается все намного интереснее.
  22. Есть значит такая схема блока питания, смотрел схемы других АТХ блоков питания, там у большинства питание трансформатора драйверов почти один в один. Справа вверху на схеме средняя точка трансформатора драйверов запитана через сопротивление 1.5К и диод. Меня очень смущают это сопротивление 1,5К, это как бы многовато что ли. Получается максимальный ток в первичке этого трансформатора будет 12в минус падение на трех диодах (два в эмиттерах ключей ШИМ, блочек слева внизу), минус переход транзистора ШИМ генератора, и минус переход транзистора стоящего перед резистором 1,5к, остается от силы вольт 9, это 6мА, а учитывая что хотя бы половина напряжения должна пойти в трансформатор то остается 3мА. Ну допустим трансформатор 1/4 , т.е. до базы силового ключа дойдет 12мА. Ключи по даташиту имеют усиление 10-40 (ок, я не жадный берем 40), получается через коллектор потечет максимум 480мА. При выпрямленной постоянке 310в, будет мощность 148Вт, и это если ключи уже не ШИМят, а считай открыты полностью. Эта схема у меня на блоке питания 400Вт. Как то все не складывается, ключи должны открыватся с запасом, а тут вообще нехватка почти в 3 раза. Может я чего то не учитываю.....
  23. NStorm, Спасибо большое, прям так ясно и подробно все по полкам разложили, все прочитал и понял с первого раза (пока вы писали я как раз грыз даташит по тем самым битам в регистрах).
  24. Еще вопрос, по похожему поводу, а именно PCINT. Если я поставил маску на срабатывание прерывания по фронту двух входов PCINT, фронт приходит на них одновременно, просто в разной комбинации (могут одновременно сработать два, а может и один). И вот допустим пришли фронты на два входа одновременно, я обработал прерывание, после выхода из прерывания я не попаду снова в прерывание? Ведь фронт был по двум входам? Я в том смысле что оно не запомнит что был фронт по второму входу что бы потом сделать снова прерывание. Извините если что невнятно.
  25. В общем глобально проблему не решил, но моя локальная проблема разрешилась проще. Разбил посылку на байты и для каждой байтовой посылки запрещаю прерывания. Задержка прерывания на время байтовой посылки вызывает вполне допустимую погрешность для измерения частоты. И длина прерывания между байтами не успевает расколоть пакет на куски. По уму с использование защелок потом может доделаю, пока будет так так по колхозному (тем более что для нормального кода у меня сейчас места нет, а усиленно оптимизацию кода для выкраивания памяти программ проводить пока некогда). Всем гранд мерси за помощь. Читать ответы было интересно, по крайней мере верное направление получено и знаний добавилось.
×
×
  • Создать...