Какой микроконтроллер я должен использовать?


10

Я пытаюсь найти лучший пакет микроконтроллеров для моих компьютерных программ, чтобы общаться с реальным миром. Я надеюсь на большое количество выводов ввода / вывода (до сих пор все, что мне нужно, это 64 цифровых, ничего необычного, как аналоговые и ШИМ), которые я могу читать и записывать напрямую, вызывая функции из моей программы, работающей на моем ЦП.

Я не хочу загружать программы на сам микроконтроллер для запуска, скорее я хотел бы что-то, что просто подключается к моему USB и дает мне кучу выводов ввода / вывода с управлением от процессора, которыми я могу управлять из своих программ на C ++.

Какой пакет микроконтроллеров будет для меня лучшим? Я надеюсь на что-то довольно недорогое, но перспективное, поскольку в нем используется USB и 64-разрядные драйверы для современных ОС, таких как Windows 7. Возможность подключения более одного из этих микроконтроллеров к одной компьютерной программе отличный бонус (будущее расширение).

Редактировать: мне не нужны высокие частоты дискретизации (возможно, 10 Гц для чтения входных сигналов, 1 кГц для выходных сигналов), и большинство выводов используются только для вывода. Я работаю с совершенно новыми компьютерами (core i7 860), поэтому, даже если выборка немного неэффективна или медленна, все равно должно быть в порядке (просто один поток, посвященный вводу-выводу, и основная программа взаимодействует с ним).

Мне также не нужны все 64 вывода ввода / вывода на одном микроконтроллере. Если бы я мог взаимодействовать со многими пакетами микроконтроллеров одновременно, это тоже сработало бы (на самом деле было бы идеально иметь возможность взаимодействовать со многими меньшими пакетами микроконтроллеров, то есть легко расширять).

Я посмотрел на это: http://www.schmalzhaus.com/UBW32/index.html

У кого-нибудь был опыт с чем-то подобным? Есть идеи, сработает или нет? Основная проблема заключается в том, что программа работает на микроконтроллере, а не на моем процессоре.


1
Какая скорость передачи данных вам нужна?
Кевин Вермеер

@reemrevnivek: Я полагаю, что мне потребуется частота дискретизации 10 Гц для входов и 1 кГц для выходов, очень медленный ввод / вывод.
Faken

В вашем случае найденный вами проект, вероятно, будет работать достаточно хорошо. Это система, уже собранная (пайка не требуется, это всегда хорошо) и, кажется, имеет очень простую прошивку, чтобы дать вам доступ ко всем нужным портам. Низкая частота дискретизации означает, что последовательное соединение будет работать достаточно хорошо. 40 $ не обанкротят вас, верно? Если это так, попробуйте, прежде чем смотреть на более дорогое решение.
Воутер Симонс

Ответы:


4

Faken,

UBW32 - очень хороший путь, насколько я могу судить о ваших требованиях. Он будет поддерживать именно то, что вам нужно, если у вас все в порядке с 3,3 В / В (некоторые допускают 5 В, но не все). Это недорого (40 долларов) и с ним очень легко разговаривать, используя любой язык, который поддерживает последовательные порты (а это почти все - Basic, C, C #, Processing и т. д.)

Вы можете использовать любой из 76 выводов ввода / вывода в качестве входов или выходов. Поставляемая стандартная прошивка позволит вам делать то, что вы хотите делать, со встроенной стороны программирование не требуется. Передача этих данных на ПК через USB (только 10 Гц) не составит проблемы. Вывод выходов на частоту 1 кГц, вероятно, также будет работать нормально.

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

* Брайан Шмальц, создатель UBW32


Хорошая доска, мистер. Шмальц
Воутер Симонс

Ну, это вызывающе утешительно. Быть инженером-механиком с самого начала и мало знать о программировании и еще меньше об электронике; Предварительно построенная платформа, которая взаимодействует с C / C ++, - это как раз то, что мне нужно, чтобы понять аспекты программирования для электроники и микроконтроллеров. Спасибо за вашу помощь!
Faken

9

Я рекомендую Teensy ++ 2.0 (или любую другую плату разработки AT90USB1286)

Флэш-память 128 КБ, 8 КБ ОЗУ, 46 контактов ввода-вывода, 8 аналоговых входов

$ 24

Платы Teensy питаются от USB и могут предоставлять виртуальный COM-порт (класс USB-устройств связи). Вы можете использовать эту последовательную связь для вашего протокола управления контактами. Это работает без каких-либо пользовательских драйверов для Windows, OSX и Linux.

Для создания микропрограммы управления контактами есть TeensyDuino или просто старая версия C.

Когда биты стучат, узким местом будет интерфейс USB микроконтроллера. Поэтому вы можете захотеть перенести протоколы, такие как I2C и SPI, на микроконтроллер. Для этого вы можете использовать мой автобус ниндзя .

Добавить дополнительные Teensies к вашей установке очень просто, вам просто нужен один USB-порт на устройство, представляя один виртуальный COM-порт на устройство.

(Примечание. Этот подход будет одинаково хорошо работать с целым рядом процессоров ARM и других, я просто не знаю ни одной дешевой платы разработки с доступным программным обеспечением).

Другим способом может быть использование Arduino и Caterpillar Shield для расширения ввода / вывода. На специальной плате, построенной на том же расширителе ввода / вывода, я смог обновить 256 выходов с частотой более 1 кГц.


4

Я думаю, что вам нужен не микроконтроллер, а что-то вроде карты ввода-вывода National Instruments PCI-6509 . Вы также можете получить версии USB, но они имеют намного меньше операций ввода-вывода, чем PCI-6509. National Instruments также продаст вам драйверы C ++.

Если это выглядит слишком дорого, вы можете попробовать что-то вроде Labjack U3 .


Я использовал labjack, он действительно замедляет ваш компьютер, если вы делаете что-то более серьезное (более высокая частота дискретизации), но он отлично подходит для простой логики медленной частоты дискретизации. Системы NI замечательны, но пакет программ слишком дорог для домашнего использования. (По крайней мере, для моего домашнего использования.)
Wouter Simons

4

Решение, которое вы описываете, не существует для более низких цен. Проблема в том, что вы хотите запустить управляющее программное обеспечение в системе, которая не предназначена для него. Сериализация 64 портов и проталкивание через USB с высокой частотой дискретизации значительно замедляет работу главного компьютера.

Существуют решения, которые работают для приложений с низкой производительностью, такие как упомянутый labjack. Но реальное решение, которое вам нужно для обработки высоких скоростей ввода-вывода, будет включать запрограммированную систему. Вопрос в том, какое программирование вы должны использовать для реализации системы.

LabView - очень дорогое программное обеспечение (которое прекрасно работает, не поймите меня неправильно). Он использует графический язык для разработки программного обеспечения и компилирует код, работающий в системе FPGA или ARM. Все компоненты слишком дороги для встраиваемого приложения большого объема, но абсолютно замечательны в среде тестирования из-за быстрой разработки и высокой производительности.

Менее дорогостоящее решение - найти систему, которая работает под управлением Linux с большим количеством операций ввода-вывода. EmbeddedARM.com - это сайт, который предлагает множество типов продуктов для этого. Код, который вы можете написать, может быть в сценариях оболочки, Java, C и т. Д.

Системы Arduino предоставляют микроконтроллеры, которые можно разрабатывать в более простой среде разработки. Их открытая природа означает, что уже есть много проектов для изучения.


3

я не знаю ни одного с 64 выводами GPIO, это много, возможно, вам придется создать это самостоятельно.

Я использую это для стендового тестирования последовательных интерфейсов, но он также имеет 23 вывода GPIO.

Если вы просто выбрали «USB to GPIO» для Google, там было множество проектов, которые сделали это, я не увидел ни одной на первых двух страницах с 64 GPIO, это самое близкое, что я нашел, с 32 контактами.

Построить его было бы не очень сложно, я бы просто использовал 100-контактный Pic18 со встроенным USB PHY (в зависимости от ваших требований к скорости может потребоваться более мощный процессор)

вам не нужно было бы делать слишком много кодирования, чтобы заставить его работать, пока ваш поставщик uC предлагает каркас драйвера USB.

Скорее всего, вам придется создать для нее печатную плату, так как микросхемы, достаточно большие, чтобы иметь 64 контакта GPIO, как правило, не входят в сквозные пакеты. Вы также можете использовать меньший микроконтроллер и использовать внешние расширители портов для своих GPIO, но это будет более сложный дизайн и более сложный для программирования.

Вы также можете посмотреть на платы разработки, которые направляют все выводы ввода / вывода к заголовкам и имеют USB. Они, вероятно, будут намного дороже, поскольку они, вероятно, будут иметь кучу вещей, которые вам не нужны.

И последний совет: если вы найдете плату с RS232, но с доступными 64 выводами GPIO, вы можете использовать переходник RS232 на USB, у меня есть несколько из них , которые хорошо сработали для меня. Это ограничивает скорость интерфейса RS232.


3

Среда NI Labview стоит дорого, но она будет делать то, что вам нужно (через USB, Ethernet или PCI в зависимости от того, что вы получаете.)

Arduino Mega имеет 54 пина, что позволяет вам приблизиться, за 60 долларов. Тем не менее, это не логический анализатор из коробки; Вы должны написать или найти эскиз, чтобы сделать это. Там может быть один доступный, я не знаю. Это должно быть довольно просто при низких тарифах. Каждая инструкция на Mega происходит с частотой 16 МГц, поэтому у вас будет довольно медленная скорость передачи, вам повезет или вы очень умны, если сможете получить сигнал 115200 бод.

В конце концов, это совсем другой проект, если вы используете частоту дискретизации 9600 бод или 50 МГц. Помните, что USB работает на частоте 480 МГц (теоретически, ваша фактическая скорость передачи данных будет ниже из-за задержек и накладных расходов), поэтому вы не можете работать лучше, чем 480/64 = 7,5 МГц без буферизации. С буферизацией и непристойными суммами денег (больше, чем ваш автомобиль) логические анализаторы могут обеспечить вам 68, 102 или 136 каналов с гигагерцовой скоростью передачи данных.

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

РЕДАКТИРОВАТЬ: Аааа, что я думал? Если вы идете такими медленными темпами, то работа по последовательному каналу определенно - путь. Я использую модульную систему ADAM 4000 от Advantech все время на работе; они надежны, просты в использовании (легко взаимодействуют с протоколом ASCII через COM-порт или используют прилагаемое программное обеспечение GUI), расширяемы и хорошо поддерживаются. Получите себе 4500 (RS-232, используйте USB-конвертер или COM-порт на вашем компьютере (если он еще есть)) или 4501 (Ethernet со встроенным веб-сервером) контроллер, соедините в связку модули 4053, 4055 и 4056, и ты в порядке.


Ой. но они довольно дорогие .... как от 100 до 150 долларов за 16 каналов.
Кевин Вермеер

У меня есть 34-портовый логический анализатор Intronix для тестирования моего программного обеспечения (т.е. подключите входы к выходам выводов, управляемых микроконтроллером). Я думаю, это около 500 $, но это не совсем цифровой ввод-вывод, не так ли? Он не предназначен для программирования собственной логики, а только для анализа каналов. Мой может работать с частотой дискретизации 500 МГц, но мне обычно не нужна эта скорость, если только периферийные устройства, которые я хочу, чтобы микроконтроллер контролировал скорость поддержки до 200 МГц или около того (чего они обычно не делают). - Во всяком случае, короче говоря. Я считаю, что логический анализатор - это не то, что нужно человеку, задающему вопрос.
Воутер Симонс

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

2

Эта штука имеет 70 GPIO и интерфейс USB за 50 долларов.


Можете ли вы использовать функции вызова для чтения и записи данных выводов непосредственно из программ на C ++, работающих на вашем процессоре?
Faken

Я собирался предположить, что у NXP будет что-то, основанное на ARM, с некоторыми операциями ввода-вывода, и если вы не можете получить их достаточно, чтобы просто использовать I2C-расширители ввода-вывода. Вы не можете превзойти цену этой вещи, и это просто игра. Превосходная работа.
akohlsmith

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

2

Да, похоже, что UBW32 будет работать нормально для вас, а встроенное ПО по умолчанию позволяет вам контролировать выводы ввода / вывода из вашего программного обеспечения на вашем ПК.

В соответствии с «как разбить SPI и параллельные интерфейсы на FT232R» , вы можете, очевидно, побить 8 цифровых выводов (возможно, больше?) На FT232R, управляемых программным обеспечением на вашем ПК.

Секционная доска $ 15 для FT232RL

Похоже, что вы действительно хотите, это цифровой интерфейс ввода-вывода; Вам не нужен и не нужен программируемый микроконтроллер. Если бы вы хотели только 16 бит, я бы выбрал пару плат FT232RL. Тем не менее, похоже, что один UBW32 за 40 долларов даст вам 64 ввода-вывода, которые вам нужны, при меньших затратах, чем 8 плат FT232RL, которые потребуются для получения 64 ввода-вывода.

Я обнаружил, что это становится все более распространенным явлением - иногда стоит потратить меньше микроконтроллера на проблему, даже несмотря на то, что он имеет миллион «дополнительных» транзисторов, которые я никогда не буду использовать, чем использовать аппаратное решение.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.