Чи достатньо Pi потужний для проекту осцилографа?


18

Моя мета - зробити інструменти на основі Пі, починаючи з осцилографа. Тому я читаю відповіді на

Здається, можна прочитати аналогові входи при дуже низькій частоті дискретизації, але мені цікаво, чи зможу я досягти мега-вибірок за секунду. Безперервне збирання даних, ймовірно, буде важким, якщо це можливо взагалі, тож я можу обійтися і без нього. Хіба Пі був би обладнаний для цього? Я хочу спостерігати форми сигналів на дисплеях, спочатку підключених до Pi, а пізніше на своїх мобільних пристроях (поки Pi передає їм бездротові дані).

Мій досвід роботи з мікросхемами системи говорить про те, що ці системи можуть легко насичуватися безперервним введенням-виведенням. Це так і для Пі?

Відповіді:


22

Давайте огляньмо високий рівень того, що має осцилограф:

Спочатку ми маємо аналоговий фронт-енд. Тут у нас є мережа, що відповідає імпедансу, для зондів (але зонди повинні мати також частину, що відповідає ємності), секцію ослаблення (дуже важливо, тому ми не перевантажуємо АЦП і не пускаємо великі напруги), спрацьовування та підключення до аналоговий цифровий перетворювач. Я не буду надто багато говорити про це, оскільки я не надто хороший з аналоговими матеріалами, але суть полягає в тому, що з Pi в цьому розділі ми нічого не можемо зробити.

Далі ми маємо частину аналого-цифрового перетворювача. Вам знадобиться принаймні один АЦП для кожного каналу. Більше можна використовувати для більшої швидкості вибірки. У традиційній області застосування АЦП підключений до ASIC або пристрою FPGA. Вони використовуються, оскільки традиційні комп’ютери недостатньо в режимі реального часу (і не плутайте їх у режимі реального часу з швидкими!) Для обробки даних, наданих АЦП. Ці дані потім зберігаються в оперативній пам’яті певного роду. Деякі пристрої використовуватимуть статичну ОЗУ, а інші використовуватимуть динамічну ОЗУ. Взагалі підхід SRAM є більш традиційним і спостерігається у виробників великих імен, тоді як використання DRAM, здається, є більш новим підходом, який спостерігається у дешевших китайських пристроях.

Обсяг оперативної пам’яті та її швидкість визначатимуть, скільки зразків можна зберігати. Практично завжди АЦП буде 8-бітним АЦП, тому, скажімо, для одного мегасемплера нам знадобиться 8 b разів 100000 = 8 Мб або 1 Мб оперативної пам’яті. Для однієї MSa / s нам знадобиться оперативна пам'ять, яка може працювати на цій швидкості. Сьогодні це зробити досить легко. FPGA зазвичай керує оперативною пам’яттю безпосередньо і відповідає за збереження в ній даних. Він працює, заповнюючи зразок пам'яті, поки є порожня кімната, а потім перезаписує її, коли вона заповнена. Коли на каналі є декілька АЦП, FPGA встановить їх таким чином, щоб спочатку почати вибірку, потім на наступну тактову секунду тощо. Коли вони закінчать вибірку, зразок першого АЦП буде записаний спочатку в пам'ять, а потім другий зразок АЦП. Це зробить вигляд, що АЦП беруть вибірки швидше, ніж вони є насправді.

Наступним моментом у цьому розділі є те, що зразки мають бути рівновіддаленими за часом. Це основна проблема використання ПК в осцилоскопах і причина, чому FPGA та ASIC є переважаючими. Якщо деякі зразки запізнюються або рано, зображення, зображене на екрані, буде неправильним.

У цій частині ми бачимо перше можливе використання Pi. Якщо частота вибірки є досить низькою, ми можемо мати можливість керувати АЦП безпосередньо з Pi та зберігати їх результати в оперативній пам'яті Pi. Наскільки швидко ми можемо пройти, залежить від способу підключення АЦП до Pi та того, як Pi виконує введення / виведення. З того, що я читав, найвища швидкість портів I ^ 2C Пі - 150 МГц (наскільки легко це досягти в GNU / Linux - інше питання), а найвища стандартизована швидкість - 5 МГц, а для SPI - найвища швидкість у Pi - 250 МГц. Я не впевнений, яка найвища стандартна швидкість SPI, але я сподіваюся, що вона буде десь у діапазоні 100 МГц на максимумі.

Тож теоретично у нас є більш ніж достатня швидкість на Pi для запуску АЦП в низькому діапазоні МСа / с. У мене є відчуття, що швидкість оперативної пам’яті тут не буде проблемою, але я не маю даних, щоб підкріпити це. Якщо це так, то ми мали б велику перевагу в порівнянні зі звичайними сферами застосування: Існує дуже велика кількість пам'яті для захоплення. Наприклад, якщо ми виділимо 32 Мб оперативної пам’яті програмі для вибіркової пам’яті, і у нас є два канали, це дозволить нам отримати 16 МБ на кожен канал або трохи більше 134 Мб або 134 мегасемплера на канал. Це те, чого навіть сьогодні багато осцилоскопів не мають.

Мінус полягає в тому, що нам знадобляться серйозні модифікації операційної системи, щоб ми могли отримати точну вибірку тут. У мене немає досвіду роботи з Linux в режимі реального часу, тому я не знаю, наскільки це було б просто.

У будь-якому випадку перейдемо до наступного кроку. Тож у нас є система вибірки, яка заповнює ОЗУ. Наступна частина - курок. Тригер тісно пов'язаний зі швидкістю оновлення екрана. Що в основному робить, це знайти цікавий зразок і зберегти його в пам’яті. Коли область спрацьовує, він продовжує вибірку після тригера, поки не заповнить пам'ять, а потім відправить її на обробку та відображення на екрані. Під час опрацювання даних система відбору проб, якщо часто заморожується, і чекає, коли дані відобразяться. Ось чому сфери низького класу мають менший показник оновлення, тоді як області високого класу матимуть спеціальні дисплеї з високою швидкістю оновлення та витрачають набагато менше часу на очікування відображення даних.

У цьому розділі часто буде інший ASIC або FPGA, який буде виконувати обробку сигналів на зразках, будь-який протокол декодування, якщо область підтримує його і фактично керує самим дисплеєм.

Це та частина, де від того, що я бачу, Пі справді може сяяти. Він може мати хороший дисплей 1920х1080 (хоча області часто знаходяться на ділянці 800х600) і може дуже добре робити декодування протоколів. Єдиною проблемою, яку я бачу, є швидкість та те, як обробка вплине на час витримки. Якщо ми підемо на низьку частоту оновлення, тоді ми можемо отримати справді хороший логічний аналізатор.

Нарешті, слово про USB-осцилоскопи та чому USB взагалі поганий для цього типу проекту: традиційний осцилоскоп USB робить введення та вибірку та передає дані вибірки на ПК для обробки, для якого існує хост-додаток. В основному щось дуже подібне було б зроблено і з Пі. Зазвичай комп'ютерні програми погано розроблені та переповнені помилками. Наступна погана частина - сам USB. Його рекламують як швидку шину, яка може робити 480 Мбіт / с у режимі "Привіт-швидкість". Правда полягає в тому, що вкрай рідко можна знайти USB-контролер, який може підтримувати такі високі швидкості (середнє здається, приблизно 250 Мбіт / с від того, що я бачив) і що це як протокол не дуже підходить для жодної реальної -час застосування. По-перше, це спільний доступ до всіх пристроїв на концентраторі (а Pi має лише один USB-порт, до якого підключений Ethernet + USB концентратор), має відносно високі накладні витрати (порівняно з SPI) та має високу затримку (пам’ятайте, що при 1 МСа / с кожен зразок триває всього 1 мкс, тому ми повинні мати пам’ять на нашій платі, оскільки ми не можемо надсилати зразки в режимі реального часу через USB). Нарешті, використання USB дозволить зробити частину збору даних просто можливим ще одним осцилографом USB, і тут ми втрачаємо будь-яку перевагу використання Pi: Традиційні настільні комп’ютери набагато частіше, швидше, легше отримати та мають набагато кращі можливості USB.

EDIT Я прочитав порівняно недавній пост Герта ван Лоо, і за його словами, реальні показники для I ^ 2C Пі - 400 кГц, а для SPI - 20 МГц.


Отже, яка вершина вашої відповіді? Це більше схоже на вікі.
Пьотр Кула

@ppumkin Так, таке питання вимагає такої відповіді. Ну, немає жодної вершини. Нам не було надано достатньої інформації про очікувані показники роботи потрібного нам пристрою, тому припускаючи, що Pi здійснить придбання, підсумком буде так, для досить низьких частот. Якщо Pi не зробить придбання, використовувати Pi не має сенсу через його погану продуктивність.
AndrejaKo

8

Ми виявили, що Raspberry Pi є чудовою платформою для запуску програмного забезпечення, яке вам потрібно для такого проекту. Проблема полягає в тому, щоб в першу чергу надходити сигнали в RPi та виконувати вільний швидкісний тремтіння сигналу в реальному часі в тому ж процесорі, на якому працює O / S та прикладне програмне забезпечення. Наше рішення - це осцилоскоп BitScope Raspberry Pi, який поєднує BitScope (для швидкого захоплення сигналу змішаного сигналу) з Raspberry Pi, який запускає все необхідне програмне забезпечення.

введіть тут опис зображення



2
Це круто. Але це не має нічого спільного з відповіддю! А може, це доводить, що Пі слабкий, щоб бути осцилографом?
Пьотр Кула

Pi не "занадто слабкий", але він не має можливості вводу / виводу, необхідної для отримання (швидкісної) форми сигналу. За словами початкового питання, це "недостатньо для цього" :-)
BitScope

2

NB: Це скоріше текст, що роздумує вголос, а не справжній відповідь

Ідея також перетнула мій розум деякий час тому, і мені все ще подобається загальна ідея!

Наскільки я знаю, області високого класу - це з 15 років (а то і більше) лише комп’ютери (ПК) з купою спеціалізованих високошвидкісних вводу / виводу. Я думаю, що коли подібний I / O розроблений / підключений до RPi, результат може бути дивно хорошим.

ІМХО - хороший спосіб зробити це - дозволити RPi просто зберігати та відображати зібрані дані (отримані, наприклад, через USB-порт), і дозволити деякому спеціалізованому апаратному забезпеченню проводити вимірювання високої швидкості. Цей вимірювальний прилад з високою швидкістю також може управляти RPi на основі введення користувача або чогось подібного.

У першій версії RPi виникли / є деякі проблеми з USB-портами, я останнім часом не шукав, чи вони вирішені на даний момент. Я також чув слух, що нова 2.0 версія RPi не повинна мати цих проблем, але я також не перевіряв цю чутку.

Я думаю, що результати без будь-якого зовнішнього (спеціалізованого) обладнання обмежені через кількість портів вводу-виводу та те, що на ньому працює ціла ОС (що обмежує параметри реального часу). Якщо ви не плануєте написати власну ОС?

Для використання, наприклад, мікросхем I2C для цієї мети не буде достатньо швидкості, щоб зробити щось дійсно приємне. SPI дає вже набагато більшу пропускну здатність (до 100 МГц вгорі голови), але я б пішов на USB і, якщо потрібно, стиснути, або використовувати якусь хорошу схему кодування перед надсиланням даних, щоб отримати більшу пропускну здатність.

Тож я думаю, що це можливо, але обладнання, яке потрібно додати до RPi, буде набагато дорожчим, ніж сам RPI.

І останнє, але не менш важливе (перш ніж я припиню мріяти про цю тему), я не здивуюся, якщо пошук в Інтернеті призведе до того, що якась група вже зайнята цим завданням.


1

Відповідь - так.

Це досить потужно! Але лише для певних частот - Як уже вказувалося через обмеження.

ТАК! -> Ви повинні запитати себе, що ви хочете виміряти?

  • Оскільки ви не запитуєте конкретно, що ви хочете виміряти, відповіді відкриті для спекуляцій.
  • Тож дозвольте познайомити вас з альтернативами та пропозиціями. Можливо, ви можете задати нове запитання, яке більш характерне для Raspberry, а не загальної теми Oscillator!

Осцилятори можуть варіюватися від простих низьких частот, які коштують 5USD, а потім інші можуть обробляти до 50 ГГц + - це коштує стільки, скільки будиночок! 75 000USD-100,000USD!

Я думаю, що Raspberry буде досить хорошим для вимірювання частот суб гіга, таких як бездротові сигнали 433 МГц, низькошвидкісна комунікація процесорної шини, TTS / UART, налагодження I2C - не набагато більше. І більш високі частоти будуть не дуже точними, так як за задумом Raspberry не працює в режимі реального часу. Тож вам потрібно буде почати з ОС (або, як згадували зовнішні пристрої в реальному часі. Але який сенс тоді?)

Але якщо ви дійсно хотіли виміряти сигнали, тоді ви можете придбати дійсно хороший і недорогий пристрій, який нарівні зі специфікаціями Raspberry. Але він уже добре розроблений, з повною функцією, по-справжньому зрілий у дизайні та довів, що він є корисним у хобі-середовищі.

Тут не потрібно винаходити колесо. Наприклад, DSO Nano для одного каналу менше 100USD.

введіть тут опис зображення

Нано-квадроцикл DSO для під 200USD

введіть тут опис зображення

А потім, що таке малиновий або подібний пристрій, НЕ МОЖЕ ДАВАТИ!

І коштувало невеликого статку ...

введіть тут опис зображення

  • До 110 ГГц, на жорсткому диску для зберігання даних, надзвичайно точні, симуляції та тригери.
  • Заходи Buuetooth, WCDMA / EDGE / 3G / 4G, бездротовий A / B / G / N 2,4 ГГц / 5 ГГц, SATA, AGP / PCI / PCI-Express, сирі супутникові сигнали, головні канали жорсткого диска, Ethernet тощо, тощо. .

2
Я міг би зробити свій RPI LOOK, як Rohde & Schwarz, був би витонченим, можливо, дещо над пагорбом, справа мода :-)
ikku

ЛОЛ! Це буде прицілом для болю в очах :)
Пьотр Кула

1

Ви можете підключити один з наших TiePie інжинірингова Handyscope ТГ5 осцилографів / генератори сигналів довільної форми до порту USB. Для завантаження доступна бібліотека, складена для Raspberry Pi для використання одного або декількох осцилоскопів одночасно. Інструмент використовує власні терміни та пам'ять, тому втрати продуктивності не спостерігаються. Так що так, Пі досить потужний для проекту осцилографа.

Handyscope HS5

Основні характеристики осцилографа: 2 канали, 14 біт, 500 МС / с, пропускна здатність 250 МГц, 20 мс / с 14 біт безперервного безперервного потоку, 32 МС пам'яті на канал, точність базової точності 1 проміле.

Основні технічні характеристики генератора довільних хвиль: форми хвиль від 1 мкГц до 30 МГц, 240 мс / с, 14 біт, пам'ять 64 мс, вихід від 12 до 12 В (24 Впп), точність базової точності 1 проміле.


Привіт. Надалі розкрийте свою приналежність до товару, який ви рекламуєте. Дякую.

Обдуй мене! Подивіться на ціни! Схоже, хороші продукти, хоча. Не в моєму бюджетному діапазоні.
Пьотр Кула

Не усвідомлював необхідності розкриття приналежності. Текст змінено, щоб вказати, що я пов'язаний з інженером TiePie.
Мартейн

0

Ваш найкращий шанс - спробувати, якщо сигрок та його ліцензійний лібсирок можна скласти на Pi, а потім придбати сумісне обладнання для осцилографа. Таким чином ви можете захоплювати сигнали до 24 мега-зразків в секунду. Маючи достатньо знань, ви можете налаштувати програмне забезпечення будь-яким способом, включаючи бездротову передачу на мобільні пристрої.


0

Хтось говорив про Сігрок. Я думаю, що найближчим способом є використання добре задокументованого CY7C68013A з драйвером EZ-USB FX2LP. На настільному ПК це не працювало з Weezy, але на Jessy - це добре. Тут відоме обмеження на 24 Мс / с. Я думав про інший спосіб, використовуючи інтерфейс камери. Цей інтерфейс може керувати 2,1 мегапікселями та 30 кадрами в секунду, що означає, що він може передавати дані в GPU зі швидкістю понад 60 мега "зразків" в секунду. Звучить більше, ніж 20 МГц SPI або USB.


Це цифрові інтерфейси, тому це не створить осцилоскоп, якщо ви не керуєте ними на високошвидкісному виході АЦП. Більшість практичних рішень випробовують порядки швидше, але не роблять це постійно - що краще підходить для звичайних проблем.
Кріс Страттон

-1

Якщо ви не заперечуєте, щоб обмежитися частотою звуку, я використовую недорогий 12-бітний двоканальний перетворювач A / D MCP3202, щоб придбати на pi з spidev, і підатаскоп для відображення даних, переданих по Ethernet через сокет TCP. Підатаскоп також діє як аналізатор спектру!

Я вніс відносно тривіальні зміни в відкритий вихідний код підатаскопа, щоб мати подвійні канали, здебільшого тому, що це було просто, а не те, що мені це справді потрібно.

Опублікуйте подальші спостереження або напишіть мені безпосередньо, якщо у вас виникнуть запитання, я з радістю допоможу.


Ви використовуєте моє зображення, захищене авторським правом, без дозволу. Видаліть захищене авторським правом зображення зі свого веб-сайту.
Джеймс Філліпс

Дякую за вашу відповідь @James Philips. Я видалив зображення з вашої відповіді. Він чекає на перегляд. Зауважте, що я не той, хто додав це. Чи можете ви вказати адресу свого сайту, яка містить зображення для тих, хто зацікавлений бачити?
niw3
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.