Микросекундный таймер. На какой железке организовать?
- Войдите на сайт для отправки комментариев
Ср, 09/11/2016 - 11:20
Доброго времени суток.
В общем вопрос в заголовке.
Хочу ультразвуковой дефектоскоп. По стали. Скорость звука 6000м/с., дистанция измерения 0,05 метра.
Разрешение по времени хочется хотя бы 0,1мкс.
Спасибо.
1 Мгц?
Собственно таймер в ардуине на 16 МГц, то есть, примерно, 0.07 мкс. Уже на 328ой (Уно, Нано) конечно есть "инпут капча". А вот про УЗ датчики для стали - не подскажу, ибо не знаю.
1 Мгц?
1 мкс=1 мгц=1.0E-6 s
Собственно таймер в ардуине на 16 МГц, то есть, примерно, 0.07 мкс. Уже на 328ой (Уно, Нано) конечно есть "инпут капча". А вот про УЗ датчики для стали - не подскажу, ибо не знаю.
А можжно полное название и сслку на даташит?
1 Мгц?
1 мкс=1 мгц=1.0E-6 s
Т.Е. надо 10Мгц.
А с пьезами нет проблем. простая пищалка и "напильник"
Вот, машинный перевод с даташита:
даташит на слова "atmega 328 datasheet". Ардуино нано - самая распространенная, которая вна Али стоит 130р. Сделана на нем. В даташите читаем про таймер 1. В нем есть инрут капча. Это означает, что зафиксируется подача логического сигнала на определенную ногу (по росту или спаду).
читаем 155 и 173 (управляющие реристры) стандартного Атмеловского даташита. На аглицком, ессно.
Да! Еще стоит добавить, если непонятно, что БОЛЬШЕ ОДНОГО события - не успеть на Атмеге зарегистрировать. Между событиями, чтобы успеть обработать, нужно не меньше 4 мкс. То есть можно завиксировать время события с точностью до тика (0.07 мкс), но чтобы это записать нужно потом потратить 3-4 мкс. Есть програмистские способы немного это обойти, множественными импульсами с пропусками первых событий, но это уже сложное программирование. Или нужно брать контроллер, который работает на более высокой частоте.
То есть, если Вам нужно просканировать отраженный сигнал на все дефекты по глубине - то лучше брать другой контроллер.
Или, как на оптическом рефе, делаем серию импульсов и слушаем по очереди 1-ую мкс, потом вторую, потом третью и так далее до... сколько там у вас мм?- 50? значит примерно до 18-20-ой мкс. Причем, для верности, я бы на каждую глубину сканирования по несколько импульсов давал бы. Сложное это програмирование, чесслово...
С отладкой - задача не одну неделю, причем не в аутсорсе, а на рабочем месте.
------------------
Я про приемник спрашивал, он должен дать четкий фронт на приеме. Этот фронт (каким бы он ни был) можно потом спокойно превратить в логический и подать на ногу контроллера (на Нано - нога D8). Если еще и уровень отраженного сигнала нужно обрабатывать, то нужен внешний быстродействующий АЦП не ниже 10МГц. И все равно,, желательно, контроллер побыстрее. Хотя можно и на Атмеге сделать.
либо НИ НА ЧТО не делить.
Учите аглицкий!
Сорри, я думал Ваш уровень выше, ошибся. Разговор на уровне человека не читающего по английски - полностью бесперспективен.
потерял нолик:)
мне интересно как вы собираетесь делать поверку прибора , даже если его и соберете?
Ладно, вскрываюсь.:)
Это будет электронная мишень.
Событие одно. Пуля ударила в стальной диск 150х40мм. Звуковая волна (попали в 10-ку), прошла 75 мм и достигла всех трех датчиков одновременно. 0,075м/6000м/с=1,25Е-5с. Этот интервал делим на 10 полей. Получаем разрешение таймера. И надо успеть сохранить данные с трех таймеров. После этого решаем систему из трех квадратных уравнений с двумя переменными. На это есть пара секунд, до следующего выстрела. Времени море. А вот с таймерами... Самая быстрая https://ru.aliexpress.com/item/-/32680588531.html?spm=2114.13010308.0.0.QeCB4r&detailNewVersion=&categoryId=400103. Успеет, как вы думаете?
пс. Мне очень стыдно,что за 30 лет с паяльником, я только сейчас решил сам написать программу.
Раньше удавалось найти готовые *.hex or *.bin.
To "wdrakula": Эхолот из полведра П416 могёшь?
Ну да...английский только аналоговые аббревиатуры:...(
И всё-таки надеюсь на вашу помощь...
Курю щас вот это:
https://geektimes.ru/post/263210/
Посоветуйте еще ченить? Пожалуйста...
если мишень, то вам надо 3-4 датчика, и ловить первую волну от удара. для каждого. и вычислять разность по времени
если мишень, то вам надо 3-4 датчика, и ловить первую волну от удара. для каждого. и вычислять разность по времени
Так точно. Для матаматики трех датчиков достаточно. по первому фронту запускаем тимеры, кроме того, на который пришел вперед(его оставляем в нуле), по двум другим останавливаем два других. На осцыле при развертке 1 мкс четко видно разницу по трем каналам(осцыл хороший, Флюк 4-х канальный)
Пьезик даёт 8 вольт с фронтом 0.1 мкс.
мне кажется меги вам с головой хватит:)
мне кажется меги вам с головой хватит:)
Какой меги? Я в номенклатуре не очень:(
такой?
https://ru.aliexpress.com/item/1pcs-Mega-2560-R3-CH340G-ATmega2560-16AU-...
А если мерить чистый звук по воздуху, лучше не будет? Все таки 300м/сек.
а в чем лучше? медленнее -лучше?
такой?
https://ru.aliexpress.com/item/1pcs-Mega-2560-R3-CH340G-ATmega2560-16AU-...
да, там прерываний хватит
А если мерить чистый звук по воздуху, лучше не будет? Все таки 300м/сек.
Воздух 300, сталь 6000. Для микрофонов источником будет вся поверхность мишени. Хотя, если не удастся справиться с 0.1 мкс, буду пробовать воздух. В надежде, что в точке удара уровень воздушной волны будет выше, чем на краю мишени от стали в воздух. Опять же, пневматика поршневая, надувная и мелкашка...по стали точно будет работать. а по воздуху - слишком разные параметры удара.
Как придет мозг, ход экспериментов буду излАгать, если интересно.
Делать прерывание таймера по фронту с датчика? Их там три, с разностью 0.1 мкс. Сомневаюсь. Три значения сохранить...
Спокночи всем, у нас уже 23-55. В 6-20 вставать на работу:(
Не лучше ли STM32f103 использовать - 72 МГц, куча таймеров, малая стоимость, DMA.
Без разницы какой МК использовать, но хорошо бы иметь таймеры с несколькими, по числу датчиков + 1, каналами захвата. Соотвественно, для трех датчиков потребуется четыре канала.
На примере тех же МК от STMicro можно использовать следующий механизм получения исходных данных: датчики вешаем на каналы со 2-го по 4-ый. Также сигналы со всех датчиков через схему логического "ИЛИ" подаем на первый канал. Таймер, сконфигурированный соответствующим образом, умеет по фронту на первом канале, т.е. по импульсу с любого датчика, сбросить таймер на ноль и начать счет с нуля. Пришедшие с задержкой импульсы по остальным каналам захватываются таймером и сохраняются каждый в своем регистре. Таким образом, по окончанию захвата имеем в регистрах идивидуальные значения задержек относительно датчика сработавшего первым и ноль в регистре датчика, который инициировал запуск.
Прелесть данной схемы в том, что все действия выполняются аппаратно и точность зависит только от точности задающего генератора, тактирующего МК. Нет проблемы и с тем, если сигналы приходит с нескольких датчиков одновременно. Каналы у таймера автономные и им пофиг, что там происходит где-то еще. Появился фронт импульса, логика канала переписывает значение счетчика таймера в свой регистр. Все, время события зафиксировано.
Управляющая программа только запускает таймер и ждет, когда тот сообщит, что все данные захвачены. Остается считать полученные значения и произвести необходимые расчеты.
Без разницы какой МК использовать,
+1! очень правильный вариант
http://pastebin.com/dUjysqwt - Вот интересный пример.На его основе можно построить систему с использованием DMA.
Использование DMA не дает здесь существенных выгод. Если бы нужно было отследить попадание очереди из какого-нибудь "Узи", то еще куда ни шло, а пульки из винтовки считать, МК и так будет большую часть времени пустые циклы гонять.
Без разницы какой МК использовать, но хорошо бы иметь таймеры с несколькими, по числу датчиков + 1, каналами захвата. Соотвественно, для трех датчиков потребуется четыре канала.
На примере тех же МК от STMicro можно использовать следующий механизм получения исходных данных: датчики вешаем на каналы со 2-го по 4-ый. Также сигналы со всех датчиков через схему логического "ИЛИ" подаем на первый канал. Таймер, сконфигурированный соответствующим образом, умеет по фронту на первом канале, т.е. по импульсу с любого датчика, сбросить таймер на ноль и начать счет с нуля. Пришедшие с задержкой импульсы по остальным каналам захватываются таймером и сохраняются каждый в своем регистре. Таким образом, по окончанию захвата имеем в регистрах идивидуальные значения задержек относительно датчика сработавшего первым и ноль в регистре датчика, который инициировал запуск.
Прелесть данной схемы в том, что все действия выполняются аппаратно и точность зависит только от точности задающего генератора, тактирующего МК. Нет проблемы и с тем, если сигналы приходит с нескольких датчиков одновременно. Каналы у таймера автономные и им пофиг, что там происходит где-то еще. Появился фронт импульса, логика канала переписывает значение счетчика таймера в свой регистр. Все, время события зафиксировано.
Управляющая программа только запускает таймер и ждет, когда тот сообщит, что все данные захвачены. Остается считать полученные значения и произвести необходимые расчеты.
А готовая платка пордается где-нибудь?
Вот это оно?
STM32F103C8T6 ARM STM32
https://ru.aliexpress.com/item/Free-Shipping-STM32F103C8T6-ARM-STM32-Minimum-System-Development-Board-Module-Forarduino/32525208361.html?spm=2114.03010208.3.10.3kmYZs&ws_ab_test=searchweb0_0,searchweb201602_2_10093_10037_10033_10032_10077,searchweb201603_1&btsid=6d6b0494-8ef9-4b4c-8a64-5b1f14e18668
8Мгц тактовой не маловато будет?
Тактовая 72МГц. 8 это кварц.
Там что, тактовый с умножением? Или на 9-й гармонике возбуждается? 0_0
Для программирования ее еще нужен ST-Link. Например, https://ru.aliexpress.com/item/Hot-Sale-ST-LINK-Stlink-ST-Link-V2-Mini-STM8-STM32-Simulator-Download-Programmer-Programming-With/32684040486.html?spm=2114.30010708.3.56.0s7kQj&ws_ab_test=searchweb0_0,searchweb201602_2_10093,searchweb201603_1&btsid=d6dabbb7-6b13-40ab-a631-656f24c96f1b
Через USB только связь. А генератор там, вроде, ФАПЧ с синхронизацией от кварца.
По USB программируется maple mini, но мне больше нравится именно плата по вашей ссылке. Еще Ардуино 1.6.5 нужно.
Расходная такая платка типа нано.
Единственное, мне не верится, что пьезоэлемент с обвеской может дать достаточную полосу пропускания.
Да ладно вам, пусть делают на Меге и МП39. Зато весело!))))))))))))))
Да ладно вам, пусть делают на Меге и МП39. Зато весело!))))))))))))))
МП39 точто не вывезет. Есть ведро кт312в. Клеймо ВП, все дела... на них триггера в ЕЭС-ке 22 Мгц считали:)
Единственное, мне не верится, что пьезоэлемент с обвеской может дать достаточную полосу пропускания.
типовой пьезик Ф27 мм, порезан как пицца. Завтра, если краны не поломаются(основная работа) , покажу фронты с даткиков удара по стали.
ЕС, вроде, уже на ИС сделана была. кт-312в хорошие транзисторы. Интересно наблюдать развитие элементов радиолюбительских конструкций- лампы, транзисторы, цифровые и цифро-аналоговые серии с ОУ, МК платки.
ЕС, вроде, уже на ИС сделана была.
частично. В НЖМД и интерфейсах было полно логики из дискретный элементов. 155-я на вывозила даже 20 Мгц. хотя по справочнику до 30.
Хм, а там разве не 133 серия была?
Там в разных узлах, по потребности. основа 155-я, там, где можно(габариты позволяли) и нужно(быстродействие) ставили деители на 133-й или на транзисторах...
А уж какой был бесперебойник...в подвале...с двухметровым маховиком...
Я использовал бесперебойники мотор-генератор в экспериментальных стендах электроприводов. Маховиков там не было, считался достаточным момент инерции роторов АМ + СГ.
там потребления было 52 кВт. и около двух минут на созранение данных. 89 год, БТИ, Благовещенск.
Чет мы в оффтоп ушли. Нолстальгируем? :)
Интересная задачка. А чего мишень не круглая? Или 150 - диаметр, а 40 толщина?
Я бы делал просто в лоб. На Нане или промини. Настраиваем, запрещаем прерывания и вызываем
Из предположения что срабатывание датчика дает 1 и все датчики висят на этом порте. Порт можно и любой другой.
После исполнения, делаем "разбор поллетов" в массиве, считаем, выводим и снова запускаем этот код.
В массиве отсчеты с порта через каждые 3 такта, т.е. 3/16=0,1875мкс. Это даст требуемое максимальное время 250мкс за 1350 отсчетов . Ошибка измерения длительностей 0,1875/2=+-0,09мкс, а в расстояниях +-0,09*10е-6*6000=+-0,5мм.
На STM с аналогичным подходом через DMA можно и выше цифры сделать, но не думаю что этих мало. Температурная нестабильность, геометрия датчиков и пули не позволят и полмилиметра получить.
На таймерах думаю малоперспективно делать, запуск таймеров нужно обеспечить при первом импульсе от любого датчика, а это логику снаружи паять, и таймера по числу датчиков надо.
ПС. Массив конечно лучше динамически создавать и освобождать, но новичку это наверно сложно.
ППС. А не боитесь всяких отраженных волн?