Я пытаюсь найти лучший пакет микроконтроллеров для моих компьютерных программ, чтобы общаться с реальным миром. Я надеюсь на большое количество выводов ввода / вывода (до сих пор все, что мне нужно, это 64 цифровых, ничего необычного, как аналоговые и ШИМ), которые я могу читать и записывать напрямую, вызывая функции из моей программы, работающей на моем ЦП.
Я не хочу загружать программы на сам микроконтроллер для запуска, скорее я хотел бы что-то, что просто подключается к моему USB и дает мне кучу выводов ввода / вывода с управлением от процессора, которыми я могу управлять из своих программ на C ++.
Какой пакет микроконтроллеров будет для меня лучшим? Я надеюсь на что-то довольно недорогое, но перспективное, поскольку в нем используется USB и 64-разрядные драйверы для современных ОС, таких как Windows 7. Возможность подключения более одного из этих микроконтроллеров к одной компьютерной программе отличный бонус (будущее расширение).
Редактировать: мне не нужны высокие частоты дискретизации (возможно, 10 Гц для чтения входных сигналов, 1 кГц для выходных сигналов), и большинство выводов используются только для вывода. Я работаю с совершенно новыми компьютерами (core i7 860), поэтому, даже если выборка немного неэффективна или медленна, все равно должно быть в порядке (просто один поток, посвященный вводу-выводу, и основная программа взаимодействует с ним).
Мне также не нужны все 64 вывода ввода / вывода на одном микроконтроллере. Если бы я мог взаимодействовать со многими пакетами микроконтроллеров одновременно, это тоже сработало бы (на самом деле было бы идеально иметь возможность взаимодействовать со многими меньшими пакетами микроконтроллеров, то есть легко расширять).
Я посмотрел на это: http://www.schmalzhaus.com/UBW32/index.html
У кого-нибудь был опыт с чем-то подобным? Есть идеи, сработает или нет? Основная проблема заключается в том, что программа работает на микроконтроллере, а не на моем процессоре.
источник
Ответы:
Faken,
UBW32 - очень хороший путь, насколько я могу судить о ваших требованиях. Он будет поддерживать именно то, что вам нужно, если у вас все в порядке с 3,3 В / В (некоторые допускают 5 В, но не все). Это недорого (40 долларов) и с ним очень легко разговаривать, используя любой язык, который поддерживает последовательные порты (а это почти все - Basic, C, C #, Processing и т. д.)
Вы можете использовать любой из 76 выводов ввода / вывода в качестве входов или выходов. Поставляемая стандартная прошивка позволит вам делать то, что вы хотите делать, со встроенной стороны программирование не требуется. Передача этих данных на ПК через USB (только 10 Гц) не составит проблемы. Вывод выходов на частоту 1 кГц, вероятно, также будет работать нормально.
Если у вас есть какие-либо вопросы, пожалуйста, дайте мне знать. Я рад помочь вам.
* Брайан Шмальц, создатель UBW32
источник
Я рекомендую 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 кГц.
источник
Я думаю, что вам нужен не микроконтроллер, а что-то вроде карты ввода-вывода National Instruments PCI-6509 . Вы также можете получить версии USB, но они имеют намного меньше операций ввода-вывода, чем PCI-6509. National Instruments также продаст вам драйверы C ++.
Если это выглядит слишком дорого, вы можете попробовать что-то вроде Labjack U3 .
источник
Решение, которое вы описываете, не существует для более низких цен. Проблема в том, что вы хотите запустить управляющее программное обеспечение в системе, которая не предназначена для него. Сериализация 64 портов и проталкивание через USB с высокой частотой дискретизации значительно замедляет работу главного компьютера.
Существуют решения, которые работают для приложений с низкой производительностью, такие как упомянутый labjack. Но реальное решение, которое вам нужно для обработки высоких скоростей ввода-вывода, будет включать запрограммированную систему. Вопрос в том, какое программирование вы должны использовать для реализации системы.
LabView - очень дорогое программное обеспечение (которое прекрасно работает, не поймите меня неправильно). Он использует графический язык для разработки программного обеспечения и компилирует код, работающий в системе FPGA или ARM. Все компоненты слишком дороги для встраиваемого приложения большого объема, но абсолютно замечательны в среде тестирования из-за быстрой разработки и высокой производительности.
Менее дорогостоящее решение - найти систему, которая работает под управлением Linux с большим количеством операций ввода-вывода. EmbeddedARM.com - это сайт, который предлагает множество типов продуктов для этого. Код, который вы можете написать, может быть в сценариях оболочки, Java, C и т. Д.
Системы Arduino предоставляют микроконтроллеры, которые можно разрабатывать в более простой среде разработки. Их открытая природа означает, что уже есть много проектов для изучения.
источник
я не знаю ни одного с 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.
источник
Среда 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, и ты в порядке.
источник
Эта штука имеет 70 GPIO и интерфейс USB за 50 долларов.
источник
Да, похоже, что UBW32 будет работать нормально для вас, а встроенное ПО по умолчанию позволяет вам контролировать выводы ввода / вывода из вашего программного обеспечения на вашем ПК.
В соответствии с «как разбить SPI и параллельные интерфейсы на FT232R» , вы можете, очевидно, побить 8 цифровых выводов (возможно, больше?) На FT232R, управляемых программным обеспечением на вашем ПК.
Секционная доска $ 15 для FT232RL
Похоже, что вы действительно хотите, это цифровой интерфейс ввода-вывода; Вам не нужен и не нужен программируемый микроконтроллер. Если бы вы хотели только 16 бит, я бы выбрал пару плат FT232RL. Тем не менее, похоже, что один UBW32 за 40 долларов даст вам 64 ввода-вывода, которые вам нужны, при меньших затратах, чем 8 плат FT232RL, которые потребуются для получения 64 ввода-вывода.
Я обнаружил, что это становится все более распространенным явлением - иногда стоит потратить меньше микроконтроллера на проблему, даже несмотря на то, что он имеет миллион «дополнительных» транзисторов, которые я никогда не буду использовать, чем использовать аппаратное решение.
источник