Осциллограф с использованием проекта PIC MCU

Я довольно новичок в микроконтроллерах. Так что я слабо представляю их возможности.

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

Я хочу обсудить этот проект. Ресурсы у меня следующие:

1) АЦП моего микроконтроллера dsPIC способен обеспечить скорость 1,1 Мвыб/с, где каждая выборка имеет 10-битное разрешение. Он имеет возможность делать одновременную выборку до 4 каналов одновременно.

2) MCU имеет поддержку USB и каналы DMA для передачи данных с АЦП на USB напрямую.

Мои вопросы:

1) Какой максимальной частоты дискретизации я могу достичь, используя эти характеристики?

2) Осуществим ли этот проект? Будет ли он достаточно быстрым, чтобы конкурировать со стандартным осциллографом?

3) Как я могу оптимизировать MCU, чтобы обеспечить максимально возможную производительность?

4) Как бы вы сделали этот проект? (ваш подход)

5) Я буду использовать JavaFx для создания компьютерного приложения, способного отображать результаты этого осциллографа. Это правильный подход?


person Mohsin Anees    schedule 09.07.2016    source источник


Ответы (1)


Я проделал большую работу, используя микроконтроллеры семейства dsPIC. Я постараюсь ответить на ваши вопросы по порядку.

1) Какой максимальной частоты дискретизации я могу достичь, используя эти характеристики?

Ваша частота дискретизации такая же, как вы сказали, 1,1 Msps (мегавыборки в секунду), если вы хотите читать только с одного канала. Если вы хотите считывать более чем с одного канала, ваша максимальная частота дискретизации на канал уменьшится.

2) Осуществим ли этот проект? Будет ли он достаточно быстрым, чтобы конкурировать со стандартным осциллографом?

Это определенно выполнимый проект, учитывая, что у вас есть базовое понимание программирования микроконтроллеров и основных принципов работы схемы. Ваш осциллограф должен быть сравним с любым другим осциллографом, предлагающим частоту дискретизации 1,1 Мвыб/с, за вычетом некоторых функций, таких как поддержка 10-кратных пробников (если только вы не создадите схему для этой функции). Большинство расширенных функций этого проекта будут встроены в вашу Java-программу, а не в сам микроконтроллер.

3) Как я могу оптимизировать MCU, чтобы обеспечить максимально возможную производительность?

Чтобы получить максимально возможную производительность от вашего MCU, запустите часы так быстро, как поддерживают спецификации, и попытайтесь найти способы добиться того же результата в вашей программе с наименьшим количеством инструкций. Это может означать отказ от форматирования данных на стороне MCU в пользу разрешения клиентской программе выполнять эти вычисления.

4) Как бы вы сделали этот проект? (ваш подход)

Операции АЦП на этих микроконтроллерах не особенно сложны. Встроенные модули делают проект очень управляемым. Самой программно сложной частью этого проекта (на мой взгляд) будет передача и получение данных через USB. Я бы сначала взялся за эту часть проекта (заставить USB работать с PIC и иметь возможность получать и обрабатывать эти данные в реальном времени из Java). Если вы используете семейство PIC24 или dsPIC33 или аналогичный 16-битный микроконтроллер с компилятором Microchip, я рекомендую использовать библиотеку C, такую ​​как эта: http://www.reesemicro.com/Home/pic24-software-library-collection

5) Я буду использовать JavaFx для создания компьютерного приложения, способного отображать результаты этого осциллографа. Это правильный подход?

Я никогда не использовал JavaFx, поэтому я не уверен в его возможностях, но я уверен, что некоторые библиотеки пользовательского интерфейса Java способны на это. Возможно, кто-то более осведомленный в JavaFx мог бы ответить на эту часть вопроса?

person Will Carroll    schedule 09.07.2016
comment
Кэрол Спасибо за такой моментальный ответ. Я использую микроконтроллер dsPIC33EP512MU810. Он также поставляется с модулем USB On-the-GO. Но он может работать только до 12 Мбит/с. Учитывая, что я должен передавать 1,1 Мбит/с * (10 бит на выборку) = 11 Мбит/с. Сможет ли этот usb-модуль передавать эти данные в режиме реального времени? (сомнительно из-за накладных расходов и т. д.) Я очень новичок в этом, поэтому я еще мало знаю о USB - person Mohsin Anees; 12.07.2016
comment
На веб-странице этого продукта указано, что чип поддерживает USB 2.0, а быстрый поиск в Google показывает, что USB 2.0 поддерживает скорость 480 Мбит/с, поэтому USB должен легко справиться с такой пропускной способностью. У вас всегда будет некоторая задержка (физика ;)), но я думаю, что использование USB позволит вам иметь довольно небольшую задержку между PIC и вашим ПК. - person Will Carroll; 12.07.2016