• Zero tolerance mode in effect!

"Стрелка осциллографа" и прочая лабуда

Вот никогда не говорите "никогда".

С применением дополнительных АЦП (TLC5540 наиболее популярен) можно сделать вполне сносную игрушку на Ардуино. А если еще использовать схемы с запоминанием...
Была такая быль:
На одном из семинаров отвечал на вопросы публики какой-то важный, как сейчас говорят, архитектор информационных систем из Google.
И ему задали вопрос: Используют ли они в Google язык PHP?
Тот ответил что используют.
Народ оживился, тут же попросили рассказать об этом использовании подробнее.
Тот ответил:
- У нас в офисе есть страничка, через которую мы пиццу на обед заказываем, так вот она на PHP...

Это я к тому, что сначала Вы возьмете внешний АЦП, потом - ЦАП для установки смещения, потом схему синхронизации, потом что-то, что обработает поток данных 5 мегавыборок в секунду (Ардуино это не сделает), потом поставите контроллер дисплея, потому что Ардуино графику не вытянет...
Но это уже не будет осциллограф на Ардуино...
 
Была такая быль:
На одном из семинаров отвечал на вопросы публики какой-то важный, как сейчас говорят, архитектор информационных систем из Google.
И ему задали вопрос: Используют ли они в Google язык PHP?
Тот ответил что используют.
Народ оживился, тут же попросили рассказать об этом использовании подробнее.
Тот ответил:
- У нас в офисе есть страничка, через которую мы пиццу на обед заказываем, так вот она на PHP...

Это я к тому, что сначала Вы возьмете внешний АЦП, потом - ЦАП для установки смещения, потом схему синхронизации, потом что-то, что обработает поток данных 5 мегавыборок в секунду (Ардуино это не сделает), потом поставите контроллер дисплея, потому что Ардуино графику не вытянет...
Но это уже не будет осциллограф на Ардуино...

Не надо напускать туману. Понятно, что речь об игрушке, а не о точном измерительном приборе. Хочется контролировать уровень регенерации в MW радиоприемнике визуально.

Никаких ЦАП не нужно, смещение устанавливается в нормирующем аналоговом предусилителе. Если просто амплитуду, то довольно простого АЦП. С внешним осциллятором можно расширить полосу, проблема сихронизации есть, но она решаема. Вывод на ТФТ-дисплей около 2 дюймов.

Вот мужик достиг частоты за 20 мегасамплов в секунду. Микросхемы уже немного другие, но вполне доступные на ебее.

5 Мегасамплов в секунду, ничего сложного:


По ссылке есть видео, где видна вся "сложность" аппарата.
 
что обработает поток данных 5 мегавыборок в секунду (Ардуино это не сделает)
Думаете, 84 МГц тактовой частоты не хватит?

потом поставите контроллер дисплея, потому что Ардуино графику не вытянет...
А что там с графикой-то? Обновление пары сотен точек 25 раз в секунду? Это же экран, на него глазами смотрят. Если полностью обновлять цветной экран, там да, будет не очень быстро. Но для развертки, в принципе, даже такой вариант приемлемый.
 
Вот никогда не говорите "никогда".

С применением дополнительных АЦП (TLC5540 наиболее популярен) можно сделать вполне сносную игрушку на Ардуино. А если еще использовать схемы с запоминанием...
Интересно. Сделаете - скиньте ссылку. Я тоже кое-что мастерил на нем, но в другой области....
 
Не надо напускать туману. Понятно, что речь об игрушке, а не о точном измерительном приборе. Хочется контролировать уровень регенерации в MW радиоприемнике визуально.

Никаких ЦАП не нужно, смещение устанавливается в нормирующем аналоговом предусилителе. Если просто амплитуду, то довольно простого АЦП. С внешним осциллятором можно расширить полосу, проблема сихронизации есть, но она решаема. Вывод на ТФТ-дисплей около 2 дюймов.

Вот мужик достиг частоты за 20 мегасамплов в секунду. Микросхемы уже немного другие, но вполне доступные на ебее.

5 Мегасамплов в секунду, ничего сложного:


По ссылке есть видео, где видна вся "сложность" аппарата.
Не достиг этот мужик никаких 20 мегасамплов в секунду.
Он поставил внешний АЦП от Девиц, за ним буфер FIFO на кадр, этот АЦП быстро забивает кадр в буфер с большой скоростью, после чего Ардуино не спеша достает этот кадр, не спеша же обрабатывает (интерполяцию-то хотя-бы надо сделать!) и еще медленнее выводит.
Хотя, он, похоже, тупо сделал размер буфера равным количеству пикселей области вывода и не парится ни с какой обработкой.
Но тогда такой "осчиллограф" будет показывать что-то осмысленное если период сигнала находится в достаточно узких пределах, иначе надо, например, ставить переменную частоту тактирования АЦП.
Кроме того, совершенно непонятно, как такой "осциллограф" должен осуществлять синхронизацию.
Так что баловство все это...
Если уж хочется сделать осциллограф и тратиться на АЦП от тех же Девиц, то тогда уж лучше взять в качестве процессорного модуля, например, OrangePi Zero ценой долларов 20-30.
На ней и порты скоростные, и памяти много, и 4 ядра и HDMI-контроллер...
А еще лучше купить на Ebay за 200-300 долларов подержанный 20-летний Tektronix или LeCroy мегагерц до 100 с двумя, а то и четырьмя лучами и радоваться безмерно.
Или за те же деньги нового китайца типа такого с 1 гигасэмплом в секунду и полосой 100 МГц по двум каналам...
 
Думаете, 84 МГц тактовой частоты не хватит?


А что там с графикой-то? Обновление пары сотен точек 25 раз в секунду? Это же экран, на него глазами смотрят. Если полностью обновлять цветной экран, там да, будет не очень быстро. Но для развертки, в принципе, даже такой вариант приемлемый.

У Ардуино стандартная тактовая частота16 МГц, видел загрузчики на 20 МГц. Это игрушка по сути. Ни о каком реальном времени речи быть не может. Сколько-то там точек скачал, жди вывода на экран. Это более-менее работает для периодических сигналов. В таких простейших осциллографах у АЦП своя относительно высокая частота. Для скромного бюджета - МГц 40.

Интересно. Сделаете - скиньте ссылку. Я тоже кое-что мастерил на нем, но в другой области....

Да, надо зимой заняться. До Нового года я надеюсь еще порыбачить, хотя прогноз неблагоприятный. Всю прошлую зиму я провоевал с FM радио+ mp3 плейер. Очень тяжело, как никогда, проект шел.
 
Думаете, 84 МГц тактовой частоты не хватит?


А что там с графикой-то? Обновление пары сотен точек 25 раз в секунду? Это же экран, на него глазами смотрят. Если полностью обновлять цветной экран, там да, будет не очень быстро. Но для развертки, в принципе, даже такой вариант приемлемый.
Я так понял, под Ардуино подразумевалось устройство на ATMega, а там 16МГц.
 
Да, надо зимой заняться. До Нового года я надеюсь еще порыбачить, хотя прогноз неблагоприятный. Всю прошлую зиму я провоевал с FM радио+ mp3 плейер. Очень тяжело, как никогда, проект шел.
Если Вы собираетесь сделать осциллограф не с целью проведения им измерений, а с целью проведения зимних вечеров и улучшения настроения, могу предложить идею, как превзойти того автора осциллографа.
У Ардуино на АТМеге есть АЦП 10 бит с "честной" схемой выборки/хранения и с быстродействием примерно 300-400 килосемплов/секунда.
Еще есть таймер с внешним тактовым входом.Имея все это, можно, добавив компаратор (для синхронизации, причем, в качестве опорного ему можно подать сигнал с ШИМ Ардуино, то есть, сделать настраиваемый уровень синхронизации) и схемку на паре логических элементов заставить внутренний АЦП работать в стробоскопичском режиме, и учитывая то, что таймер работает как минимум, на 16 МГц, то можно получить стробоскопические 16 мегасемплов/сек 10-битного сигнала.
То есть, будет полоса 8МГц.
А если еще использовать тот факт, что можно выбирать полярность на внешнем входе таймера, и изголиться на эту тему, то эту величину можно и удвоить...
 
Не достиг этот мужик никаких 20 мегасамплов в секунду.
Он поставил внешний АЦП от Девиц, за ним буфер FIFO на кадр, этот АЦП быстро забивает кадр в буфер с большой скоростью, после чего Ардуино не спеша достает этот кадр, не спеша же обрабатывает (интерполяцию-то хотя-бы надо сделать!) и еще медленнее выводит.
Хотя, он, похоже, тупо сделал размер буфера равным количеству пикселей области вывода и не парится ни с какой обработкой.
Но тогда такой "осчиллограф" будет показывать что-то осмысленное если период сигнала находится в достаточно узких пределах, иначе надо, например, ставить переменную частоту тактирования АЦП.
Кроме того, совершенно непонятно, как такой "осциллограф" должен осуществлять синхронизацию.
Так что баловство все это...
Если уж хочется сделать осциллограф и тратиться на АЦП от тех же Девиц, то тогда уж лучше взять в качестве процессорного модуля, например, OrangePi Zero ценой долларов 20-30.
На ней и порты скоростные, и памяти много, и 4 ядра и HDMI-контроллер...
А еще лучше купить на Ebay за 200-300 долларов подержанный 20-летний Tektronix или LeCroy мегагерц до 100 с двумя, а то и четырьмя лучами и радоваться безмерно.
Или за те же деньги нового китайца типа такого с 1 гигасэмплом в секунду и полосой 100 МГц по двум каналам...

Я ж писал, есть у меня профессиональные осциллографы. Я о хобби, с паяльником побаловаться, чтобы "сковорода заговорила", и жена за расходы не бухтела.

А про мужика вы зря. Он личность авторитетная (не тот, что видео сделал).

Are faster speeds possible? Yes! With an AD775 25 MC ADC and a DS2010 FIFO, I have reached speeds of 25 million samples per second. A FIFO is a memory device that features a memory organization that results in "First In First Out." You can record data to a FIFO at its maximum clock speed, then play it back at much slower speeds. I suspect that with the right ADC and FIFO you could reach 100 million samples per second. Is that practical? No. If you add a FIFO, it then controls the sampling speed. So, you would also need to add two or three 74LS390s and a switch to select the sampling speed. At this point, the Arduino is controlling almost nothing other than the LCD.

 
Я ж писал, есть у меня профессиональные осциллографы. Я о хобби, с паяльником побаловаться, чтобы "сковорода заговорила", и жена за расходы не бухтела.

А про мужика вы зря. Он личность авторитетная (не тот, что видео сделал).

Are faster speeds possible? Yes! With an AD775 25 MC ADC and a DS2010 FIFO, I have reached speeds of 25 million samples per second. A FIFO is a memory device that features a memory organization that results in "First In First Out." You can record data to a FIFO at its maximum clock speed, then play it back at much slower speeds. I suspect that with the right ADC and FIFO you could reach 100 million samples per second. Is that practical? No. If you add a FIFO, it then controls the sampling speed. So, you would also need to add two or three 74LS390s and a switch to select the sampling speed. At this point, the Arduino is controlling almost nothing other than the LCD.

Если делать "осциллограф", который захватывает не весь сигнал, а только маленький кусок, то и АЦП внешний не нужен.
Можно вполне внутренним обойтись.
Выше я написал как.
Так и проще и правильнее статистически.
 
Если Вы собираетесь сделать осциллограф не с целью проведения им измерений, а с целью проведения зимних вечеров и улучшения настроения, могу предложить идею, как превзойти того автора осциллографа.
У Ардуино на АТМеге есть АЦП 10 бит с "честной" схемой выборки/хранения и с быстродействием примерно 300-400 килосемплов/секунда.
Еще есть таймер с внешним тактовым входом.Имея все это, можно, добавив компаратор (для синхронизации, причем, в качестве опорного ему можно подать сигнал с ШИМ Ардуино, то есть, сделать настраиваемый уровень синхронизации) и схемку на паре логических элементов заставить внутренний АЦП работать в стробоскопичском режиме, и учитывая то, что таймер работает как минимум, на 16 МГц, то можно получить стробоскопические 16 мегасемплов/сек 10-битного сигнала.
То есть, будет полоса 8МГц.
А если еще использовать тот факт, что можно выбирать полярность на внешнем входе таймера, и изголиться на эту тему, то эту величину можно и удвоить...

Спасибо на добром слове, но если бы я еще знал, что такое стробоскопический режим в Ардуино. Моя проблема в том, что я занимаюсь этими делами только зимой, а к следующей зиме забываю половину навыков. Вот сейчас у меня еще одна проблема, не могу вспомнить, куда я засунул два DSO, осциллографические щупы и все свои ВЧ кабели с разъемами BNC и SMA. Жена все зудела "Наведи порядок в углу, наведи порядок..." Смутно помню, что, вроде, сложил все хозяйство в какую-то картонную коробку. Жена клянется, что никакой электроники не выбрасывала. "Будем искать!"
 
У Ардуино на АТМеге есть АЦП 10 бит с "честной" схемой выборки/хранения и с быстродействием примерно 300-400 килосемплов/секунда.

Что-то сильно хорошо...

Тактовая частота АЦП в Ардуино (Атмега 32:cool: - до 200 кГц. 13 циклов преобразование, т.е. примерно 100 мкс. Поэтому не 300 ксамплов/с, а максимум 10 ксамплов/с (15 к при внешем кристалле 20 МГц). Т.е., ничего обещающего. Не, я за внешний АЦП.

Начну с этого
 
Я так понял, под Ардуино подразумевалось устройство на ATMega, а там 16МГц.
если быстродействие критично (а как я понял, в этом проекте оно критично), то почему не использовать Arduino Due?
Я правда, сам побоялся его использовать, по итогу мне меги хватило, но у меня и не было потока данных в 5 МГц :)
 
Спасибо на добром слове, но если бы я еще знал, что такое стробоскопический режим в Ардуино. Моя проблема в том, что я занимаюсь этими делами только зимой, а к следующей зиме забываю половину навыков. Вот сейчас у меня еще одна проблема, не могу вспомнить, куда я засунул два DSO, осциллографические щупы и все свои ВЧ кабели с разъемами BNC и SMA. Жена все зудела "Наведи порядок в углу, наведи порядок..." Смутно помню, что, вроде, сложил все хозяйство в какую-то картонную коробку. Жена клянется, что никакой электроники не выбрасывала. "Будем искать!"
Насчет стробоскопического режима - это то, что позволяет осциллографам с низкой частотой выборок показывать периодический сигнал с намного более высокой частотой.
В реальности на порядок-полтора больше, чем частота выборок АЦП.
Вы ждете импульс синхронизации, после чего запускаете АЦП, дожидаетесь окончания преобразования и запоминаете результат.
После чего ждете следующий импульс преобразования, ЗАДЕРЖИВАЕТЕСЬ ТАЙМЕРОМ НА 0.1мкс и опять запускаете преобразование и записываете результат.
После опять ждете еще импульс синхронизации, ЗАДЕРЖИВАЕТЕСЬ ТАЙМЕРОМ НА 0.2мкс и опять запускаете преобразование и записываете результат.
И опять ждете еще импульс синхронизации, ЗАДЕРЖИВАЕТЕСЬ ТАЙМЕРОМ НА 0.3мкс и опять запускаете преобразование и записываете результат
И так далее...
Через некоторое время у Вас в памяти будет таблица с отсчетами сигнала в следующих точках сигнала (относительно срабатывания триггера синхронизации):
0.0мкс
0.1мкс
0.2мкс
0.3мкс
и так далее, что эквивалентно выборке с частотой 10 мегасемплов/сек
Каждая выборка, правда, будет принадлежать не тому же периоду сигнала, что и предыдущая, а следующему, но это лучше, чем с большой скоростью захватывать кадр в небольшой буфер.
То есть, частота выборок будет определяться не скоростью АЦП, а разрешением таймера, которым Вы осуществляете задержку.
Так работают и "большие" осциллографы, заявляющие полосу 70ГГц и скорость 1000 Гигасемплов/сек(1).
Понятно же, что АЦП на такую скорость пока не выпускают...
А насчет частоты АЦП в АТМеге - на 350Квыборок/сек работает устойчиво, полагаю, 400 потянет тоже.
 
если быстродействие критично (а как я понял, в этом проекте оно критично), то почему не использовать Arduino Due?
Я правда, сам побоялся его использовать, по итогу мне меги хватило, но у меня и не было потока данных в 5 МГц :)

Ага! Начни с Ардуино Дуо, потом Мега, а потом и STM32 сам собой напросится. И каждому нужны свои загрузчики, программаторы, библиотеки...

Нет! Только Ардуино Уно (и его клоны: Нано и Мини или вообще просто Атмега328 с кварцем)! Только хардкор!


У рыбачков тоже такое есть - ловить все на ультра-лайт снасти, Двухметровый спиннинг в сборе весит менее 300 г, леска до 2 кг разрывной нагрузки. Я попробовал на щуку ходить с ультра-лайтом (удилище настолько гибкое, что в режиме поплавочной удочки подсечку сделать практически невозможно). Правда, леска 5 кг. Упоймал среднюю щучку, килограмма полтора. Андреналина нахватался месячную норму. Но ну его, вернулся на стандартный медиум.

Для меня хобби - это вот что-то такое. И чтобы не накладно было.
 
Последнее редактирование:
Насчет стробоскопического режима - это то, что позволяет осциллографам с низкой частотой выборок показывать периодический сигнал с намного более высокой частотой.
В реальности на порядок-полтора больше, чем частота выборок АЦП.
Вы ждете импульс синхронизации, после чего запускаете АЦП, дожидаетесь окончания преобразования и запоминаете результат.
После чего ждете следующий импульс преобразования, ЗАДЕРЖИВАЕТЕСЬ ТАЙМЕРОМ НА 0.1мкс и опять запускаете преобразование и записываете результат.
После опять ждете еще импульс синхронизации, ЗАДЕРЖИВАЕТЕСЬ ТАЙМЕРОМ НА 0.2мкс и опять запускаете преобразование и записываете результат.
И опять ждете еще импульс синхронизации, ЗАДЕРЖИВАЕТЕСЬ ТАЙМЕРОМ НА 0.3мкс и опять запускаете преобразование и записываете результат
И так далее...
Через некоторое время у Вас в памяти будет таблица с отсчетами сигнала в следующих точках сигнала (относительно срабатывания триггера синхронизации):
0.0мкс
0.1мкс
0.2мкс
0.3мкс
и так далее, что эквивалентно выборке с частотой 10 мегасемплов/сек
Каждая выборка, правда, будет принадлежать не тому же периоду сигнала, что и предыдущая, а следующему, но это лучше, чем с большой скоростью захватывать кадр в небольшой буфер.
То есть, частота выборок будет определяться не скоростью АЦП, а разрешением таймера, которым Вы осуществляете задержку.
Так работают и "большие" осциллографы, заявляющие полосу 70ГГц и скорость 1000 Гигасемплов/сек(1).
Понятно же, что АЦП на такую скорость пока не выпускают...

Ну, правильно! именно так такие осциллографы (включая Ардуино) и работают! Конечно, они могут выхватить только часть периода.


А насчет частоты АЦП в АТМеге - на 350Квыборок/сек работает устойчиво, полагаю, 400 потянет тоже.

Что-то невероятное. У Атмеги328 по даташиту макс тактовая частота АЦП 200 кГц. Стандартная установка прескейлера (12:cool: дает 125 кГц при кварце 16 МГц.

Мужички пишут, что разгоняли АЦП до 1 МГц. Это "всего" 77 ксамплов в секунду. Предполагают, что можно поднять еще вдвое. С ростом частоты АЦП терят точность.

Но 300 или даже 400 кс/с... Вы лично такое делали?
 
Ну, правильно! именно так такие осциллографы (включая Ардуино) и работают! Конечно, они могут выхватить только часть периода.




Что-то невероятное. У Атмеги328 по даташиту макс тактовая частота АЦП 200 кГц. Стандартная установка прескейлера (12:cool: дает 125 кГц при кварце 16 МГц.

Мужички пишут, что разгоняли АЦП до 1 МГц. Это "всего" 77 ксамплов в секунду. Предполагают, что можно поднять еще вдвое. С ростом частоты АЦП терят точность.

Но 300 или даже 400 кс/с... Вы лично такое делали?
Да, пардон, перепутал. Это не в АТМеге.
Но все равно - того АЦП, что есть в нем, хватит, чтобы сделать "стробоскопический" осциллограф на несколько мегагерц.
В 32u4, кстати, аналоговый компаратор тоже присутствует.
 
Ага! Начни с Ардуино Дуо, потом Мега, а потом и STM32 сам собой напросится. И каждому нужны свои загрузчики, программаторы, библиотеки...
Насколько я знаю, все семейство Ардуино работает из-под одной IDE и не требует программатора. Библиотеки для Due другие, да. Но разве это препятствие для настоящего одержимого?

STM32 - отдельная история, он от Ардуино радикально отличается по подходу к программированию и вообще...
Нет! Только Ардуино Уно (и его клоны: Нано и Мини или вообще просто Атмега328 с кварцем)! Только хардкор!
Как хотите :)

Мой проект на Уно не влезал в принципе - слишком мало памяти.
 
Ага! Начни с Ардуино Дуо, потом Мега, а потом и STM32 сам собой напросится. И каждому нужны свои загрузчики, программаторы, библиотеки...

Нет! Только Ардуино Уно (и его клоны: Нано и Мини или вообще просто Атмега328 с кварцем)! Только хардкор!
Какая вам разница, все равно придется импортозамещать все это западное говно. Или расчитываете на Иранские аналоги?
 
Насколько я знаю, все семейство Ардуино работает из-под одной IDE и не требует программатора. Библиотеки для Due другие, да. Но разве это препятствие для настоящего одержимого?

Для готового Ардуино программатор не нужен. Он нужен для записи загрузчика в пустую отдельную Атмегу328. Раньше они обычно продавались уже с загрузчиком (bootloader), а теперь в основном пустые. Впрочем, Pro Mini по цене может оказаться даже дешевле отдельной Атмеги + обвес.

STM32 - отдельная история, он от Ардуино радикально отличается по подходу к программированию и вообще...

Да, вроде не радикально. Программирование на том же Си++. Но сложнее, это да.


Мой проект на Уно не влезал в принципе - слишком мало памяти.

Есть такое дело.
 
Назад
Сверху Снизу