Самый простой и дешевый способ получить цифровые выходы с компьютера в реальный мир


8

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

Я рассмотрел ряд различных методов, начиная от выделенных плат цифрового ввода-вывода, микроконтроллеров с интерфейсами USB, последовательных портов, параллельных портов и т. Д. Однако все решения кажутся либо слишком дорогими, либо слишком сложными, либо технология устарела.

Я надеюсь иметь более 64 цифровых выходов с частотой примерно 1 кГц, управляемых индивидуально. Пока что лучшая идея, которую я могу придумать, - это привязать выходы последовательного порта к 8-разрядному последовательному сдвиговому регистру с последовательным портом и отправлять символы через последовательное соединение всякий раз, когда я хочу изменить и вывести (запустить с USB на последовательный порт). адаптер). Я еще не проверял это, поэтому я не знаю, будет ли это работать.

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


1
Несколько связано: electronics.stackexchange.com/questions/3475/…
endolith

Вы сделали немного математики? Простой не-USB RS232 обычно имеет максимальную скорость 115200 бит / с, что составляет примерно 10 КБ. Допустим, каждому каналу требуется всего 1 байт (в чем я сомневаюсь). Вы хотите отправлять 64 х 1000 байт каждую секунду, что составляет около 64 КБ. Гораздо больше, чем ваша серийная пропускная способность. Есть несколько высокоскоростных последовательных USB-кабелей с 921600 бит / с, и хотя теоретически это возможно, я сомневаюсь, что это полезно, поскольку это на грани и, как я сказал, 1 байта будет достаточно, и у микроконтроллера вряд ли будет время для чего-либо еще. Вам придется либо снизить свои требования, либо подготовить свой кошелек.
Авра

3
Возможно, вам следует перечитать ваши комментарии на наличие очевидных ошибок, прежде чем вы кого-то избиваете ... GPOI выводит биты вывода, а не байты. Это означает 64 килобита / с, что намного ниже максимального значения в
115,2

Ответы:


7

Похоже, ты намереваешься зажечь рождественские огни. :-)

Что-то не так с использованием Arduino или аналогичного? Было бы довольно легко увеличить количество портов ввода-вывода, если, скажем, количество портов на мега 1280/2560 недостаточно. Вы можете управлять им через последовательный / USB-терминал. Вы можете использовать сдвиговые регистры на выходных контактах Arduino или использовать расширитель портов i2c и проходить через него.

Использование таких стандартных компонентов даст вам самое короткое время создания прототипа.

Обратите внимание, мой путь может быть не самым дешевым. Но это эффективно и быстро заставит вас двигаться.


1
Не совсем с мигающими огнями, я пытаюсь управлять 32 шаговыми двигателями на прототипе автоматизированного универсального устройства фиксации, за исключением того, что у меня нет никакого финансирования ... или знаний электроники вообще. Может быть, я слишком быстро отказался от микроконтроллера, получил какие-то хорошие пошаговые ресурсы о том, как с нуля подняться с практическими примерами? (и я имею в виду с нуля, у меня есть довольно странная база знаний, которая слишком теоретическая и недостаточно практичная, вы можете предположить, что я абсолютно ничего не знаю ... в любом случае мне кажется, что так больше всего времени, хе)
Faken

1
Управление шаговыми двигателями потребует дополнительных усилий. Вы не сможете управлять ими напрямую с выходных контактов микроконтроллера. Вам понадобится немного клея для электроники между штифтом и двигателем, чтобы не обжарить микро. Лучше всего начать с малого и перейти к более сложным примерам. Один из самых заядлых энтузиастов, которых я видел, - это tronixstuff.wordpress.com предлагает несколько хороших шагов для начинающих. Я знаю парня, который управляет им, также часто посещает этот обмен стека.
Роб

1
Да, я нашел очень хороший драйвер шагового двигателя, который можно использовать между сигналами управления и двигателем (просто используется 2 входа, шаг и направление). Я посмотрю этот урок, который вы связали, спасибо. Кстати, просто чтобы убедиться, что я хочу, чтобы это был мой компьютер, который посылает команды в режиме реального времени через программу на С ++ на микроконтроллер для управления двигателями. Это возможно или очень легко сделать с этим микроконтроллером?
Снято

1
Конечно. Микроконтроллер действует как буфер между компьютером и платой драйвера шагового двигателя. Он может интерпретировать команды, которые вы отправляете, и воздействовать на них, а также предоставлять обратную связь на ПК при необходимости. Другое преимущество использования чего-то немного более традиционного состоит в том, что вы можете получить большую поддержку / совет от сообщества, всегда есть вероятность, что кто-то сделал что-то подобное. Так что это довольно удобно само по себе. Микро просто обеспечивает действительно хороший недорогой интерфейс между ПК и вашими платами драйверов.
Роб

Adafruit делает хорошую доску, которая может быть использована для управления 16 сервоприводами, и они могут быть соединены вместе. Было бы довольно легко написать некоторый код Arduino, который считывает данные с ПК, а затем отправляет их на плату сервопривода. adafruit.com/products/815
Эрик Ганнерсон,

3

Серийный в параллельный сдвиговый регистр будет работать. При использовании порта SPI у вас не будет проблем с частотой обновления 1 кГц. IIRC на ATmega328 с кристаллом 8 МГц (или выше), вы должны иметь возможность получать 1 Мбит в секунду. Многие другие микроконтроллеры также будут работать.

Другим вариантом является использование нескольких микроконтроллеров. Например - использование ATmega328 (что составляет около 5 долларов США с пассивами) даст вам 18 строк при сохранении свободных линий TXD и RXD. Параллельно линии RXD, и тогда все контроллеры получат одинаковые строки команд. Вам нужно будет проанализировать командные строки в UC. Используйте кабель FTDI, чтобы добраться до USB. Добавьте загрузчик Arduino в UC, и вы сможете использовать инструменты Arduino.

Последовательное преобразование в параллельное более простое. Если ваше приложение может использовать выходы с открытым стоком, вы можете использовать 16-канальный светодиодный драйвер. Это будет означать добавление четырех фишек.


1

Самым простым вариантом, с которым я столкнулся, является IOIO-OTG . Это внешнее USB-устройство OTG на основе PIC-контроллера, разработанное для Android, но совместимое с ПК через Eclipse и Android Development Toolkit. Он имеет 46 контактов GPIO 3.3 В , а также множество других полезных вещей. Он не имеет 64 контактов, необходимых для вашего проекта, но вы можете просто использовать несколько регистров сдвига от последовательного к параллельному, как упомянуто jluciani (или вместо этого использовать контроллеры с шаговым двигателем и использовать меньше контактов).

Есть также эта плата USB IO на основе PIC , которая делает подобные вещи, но имеет меньше контактов.

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