Який мікроконтролер потрібно використовувати?


10

Я намагаюся знайти найкращий пакет мікроконтролерів для моїх комп’ютерних програм для спілкування з реальним світом. Я сподіваюся на велику кількість штифтів вводу / виводу (поки що 64 цифрових - все, що мені потрібно, нічого фантазійного, як аналоговий та ШІМ), який я можу читати та писати безпосередньо, викликаючи функції з моєї програми, що працює на моєму процесорі.

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

Що було б для мене найкращим пакетом мікроконтролерів? Я сподіваюся на те, що є досить недорогим, але в майбутньому доказом, оскільки в ньому працює USB і має 64-бітні драйвери для сучасної ОС, як Windows 7. Можливість інтерфейсу більше ніж одного з цих мікроконтролерів з тією ж комп'ютерною програмою було б великий бонус також (майбутнє розширення).

Редагувати: мені не потрібні високі частоти дискретизації (можливо, 10 Гц для зчитування входів, 1 кГц для вихідних сигналів), і більшість штифтів використовуються лише для виводу. Я працюю з абсолютно новими комп’ютерами (ядро i7 860), тому навіть якщо вибірка трохи неефективна або повільна, все одно має бути нормально (достатньо одного потоку, присвяченого вводу / виводу, і головна програма матиме зв'язок з ним).

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

Я переглянув це: http://www.schmalzhaus.com/UBW32/index.html

Хтось мав досвід із чимось подібним? Будь-яка ідея, спрацює це чи ні? Основна стурбованість полягає в тому, що саме мікроконтролер запускає програму, а не мій процесор.


1
Яка швидкість передачі даних вам потрібна?
Кевін Вермер

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

У вашому випадку знайдений вами проект, ймовірно, буде добре працювати. Це система, яка вже зведена (не потрібно припаювати завжди приємно) і, здається, має дуже базову прошивку, щоб надати доступ до всіх потрібних вам портів. Низькі показники вибірки означають, що послідовне з'єднання буде працювати досить добре. 40 $ вас не збанкрутують, правда? Якщо так, просто спробуйте, перш ніж розглянути більш дороге рішення.
Wouter Simons

Відповіді:


4

Факен,

UBW32 - це дуже хороший шлях, з того, що я можу сказати про ваші вимоги. Він підтримуватиме саме те, що вам потрібно, якщо ви добре з 3.3VI / O (деякі мають толерантність 5В, але не всі.) Це недорого ($ 40) і дуже просто говорити на будь-якій мові, яка може підтримувати послідовних портів (що майже всі вони - Basic, C, C #, обробка тощо)

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

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

* Брайан Шмальц UBW32 творець


Приємна дошка, г-н. Шмальц
Вутер Сімонс

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

9

Я рекомендую Teensy ++ 2.0 (або будь-яку іншу плату розробки AT90USB1286)

128 Кб спалах, 8 КБ оперативної пам’яті, 46 контактів вводу / виводу, 8 аналогових входів

$ 24

Плати Teensy працюють на USB і можуть забезпечити віртуальний COM-порт (клас пристроїв USB Communications Device). Ви можете використати це послідовне посилання для свого протоколу управління PIN-кодом. Це працює без спеціальних драйверів для Windows, OSX та Linux.

Для створення вбудованого програмного забезпечення для керування штифтами є TeensyDuino або звичайний старий C.

Коли біт стукне, вузьким місцем буде USB-інтерфейс мікроконтролера. Тому ви можете перенести протоколи, такі як I2C та SPI, до мікроконтролера. Для цього ви можете використовувати мій автобус ніндзя .

Додавання додаткових підлітків до вашої установки просте, вам просто потрібен один порт USB на пристрій, представляючи один віртуальний COM-порт на пристрій.

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

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


4

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

Якщо це виглядає занадто дорого, ви можете спробувати щось на кшталт Labjack U3 .


Я використовував лабораторію, він дійсно сповільнює ваш комп'ютер, якщо ви робите щось більш серйозне (більший показник вибірки), але це чудово для повільної швидкості вибірки. Системи NI чудові, але програмний пакет занадто дорогий для домашнього використання. (Принаймні для мого домашнього використання.)
Wouter Simons

4

Описане вами рішення не існує для зниження цін. Проблема полягає в тому, що ви хочете запустити програмне забезпечення управління в системі, яка не призначена для цього. Серіалізація 64 портів та просування їх через USB з високою швидкістю дискретизації дуже сповільнює хост-комп'ютер.

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

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

Менш дорогим рішенням є пошук системи, яка працює під управлінням Linux з багатьма ввода-виводу. EmbeddedARM.com - це сайт, який пропонує для цього багато видів продукції. Код, який ви можете написати, може бути у скриптах оболонки, java, C тощо.

Системи Arduino забезпечують мікроконтролери, які можна розробити з більш простим середовищем розробки. Їх природа з відкритим кодом означає, що вже багато чому можна навчитися.


3

я не знаю жодного з 64 GPIO-штифтами, це багато, можливо, вам доведеться створити це самостійно.

Я використовую це для тестування послідовних інтерфейсів, але він також має 23 GPIO-штифта.

Якщо ви просто google для "USB на GPIO", там є купа проектів, які зробили це, я не побачив жодних на перших сторінках пари з 64 GPIO, це найближчий я знайдений, з 32 контактами.

Створення одного не буде дуже важким, я б, ймовірно, просто використовував 100pin 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 доларів. Однак це не логічний аналізатор поза коробкою; для цього вам доведеться написати або знайти ескіз. Можливо, є одна, не знаю. Це має бути досить простим при низькій швидкості руху автобусів. Кожна інструкція на Мега відбувається на частоті 16 МГц, тому у вас буде досить повільна швидкість передачі даних, вам пощастить або дуже розумно, якщо ви зможете отримати сигнал 115200 бод.

Зрештою, це зовсім інший проект, якщо ви здійснюєте вибірку на частоті 9600 бод або на 50 МГц. Пам’ятайте, що USB працює на 480 МГц (теоретично; ваша фактична швидкість передачі даних буде нижчою через затримки та накладні витрати), тому ви не можете зробити краще, ніж 480/64 = 7,5 МГц без буферизації. За допомогою буферизації та нецензурної суми грошей (більше, ніж ваш автомобіль) логічні аналізатори можуть отримати вам 68, 102 або 136 каналів при швидкостях передачі даних в гігагерцях.

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

EDIT: Аарх, що я думав? Якщо ви збираєтесь з такою низькою швидкістю, то шлях над послідовним посиланням - це безумовно шлях. Я весь час на роботі використовую модульну систему ADAM 4000 від Advantech; вони надійні, прості у використанні (легко поєднуються з протоколом ASCII через порт COM або використовують включене програмне забезпечення GUI), розширюються та добре підтримуються. Отримайте собі 4500 (RS-232, використовуйте USB-конвертер або COM-порт на своєму комп’ютері (якщо у нього все ще є)) або 4501 (Ethernet із вбудованим веб-сервером) контролером, підключіть у купі модулів 4053, 4055 та 4056, і ти добре підеш.


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

У мене є логічний аналізатор intronix 34 для перевірки мого програмного забезпечення (тобто підключення входів до виходів керованих мікроконтролером штифтів). Це приблизно 500 $, я думаю, але це також не дуже цифровий введення-виведення? Це не призначене для програмування користувацької логіки, а лише для аналізу каналів. Шахта може працювати на частоті дискретизації 500 МГц, але мені зазвичай не потрібна ця швидкість, якщо тільки периферійні пристрої не хочу, щоб мікроконтролер контролював швидкість підтримки до 200 МГц або більше (чого вони зазвичай не роблять). - У будь-якому випадку, довга історія. Я вважаю, що логічний аналізатор - це не те, що потрібно людині, яка задає питання.
Wouter Simons

Це безумовно я, але не О. Ні. Я б погодився, що логічний аналізатор - це не те, що потрібно людині, враховуючи нову інформацію.
Кевін Вермер

2

У цієї речі 70 GPIO та інтерфейс USB за 50 доларів.


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

Я збирався припустити, що в NXP буде щось ARM на базі якогось вводу-виводу, і якщо ви не зможете отримати їх достатньо, щоб просто ляпати на I2C IO-розширювачі. Ви не можете побороти ціну цієї речі, і це plug-n play. Відмінна робота.
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.