Мне нужно несколько цифровых выходов для подключения моего компьютера к реальному миру, однако, похоже, что эта работа не так проста, как я надеялся.
Я рассмотрел ряд различных методов, начиная от выделенных плат цифрового ввода-вывода, микроконтроллеров с интерфейсами USB, последовательных портов, параллельных портов и т. Д. Однако все решения кажутся либо слишком дорогими, либо слишком сложными, либо технология устарела.
Я надеюсь иметь более 64 цифровых выходов с частотой примерно 1 кГц, управляемых индивидуально. Пока что лучшая идея, которую я могу придумать, - это привязать выходы последовательного порта к 8-разрядному последовательному сдвиговому регистру с последовательным портом и отправлять символы через последовательное соединение всякий раз, когда я хочу изменить и вывести (запустить с USB на последовательный порт). адаптер). Я еще не проверял это, поэтому я не знаю, будет ли это работать.
Есть ли другой быстрый и грязный метод получения довольно большого количества недорогих цифровых выходов с компьютера, которыми я могу легко управлять с помощью самых простых команд C ++?
источник
Ответы:
Похоже, ты намереваешься зажечь рождественские огни. :-)
Что-то не так с использованием Arduino или аналогичного? Было бы довольно легко увеличить количество портов ввода-вывода, если, скажем, количество портов на мега 1280/2560 недостаточно. Вы можете управлять им через последовательный / USB-терминал. Вы можете использовать сдвиговые регистры на выходных контактах Arduino или использовать расширитель портов i2c и проходить через него.
Использование таких стандартных компонентов даст вам самое короткое время создания прототипа.
Обратите внимание, мой путь может быть не самым дешевым. Но это эффективно и быстро заставит вас двигаться.
источник
Серийный в параллельный сдвиговый регистр будет работать. При использовании порта SPI у вас не будет проблем с частотой обновления 1 кГц. IIRC на ATmega328 с кристаллом 8 МГц (или выше), вы должны иметь возможность получать 1 Мбит в секунду. Многие другие микроконтроллеры также будут работать.
Другим вариантом является использование нескольких микроконтроллеров. Например - использование ATmega328 (что составляет около 5 долларов США с пассивами) даст вам 18 строк при сохранении свободных линий TXD и RXD. Параллельно линии RXD, и тогда все контроллеры получат одинаковые строки команд. Вам нужно будет проанализировать командные строки в UC. Используйте кабель FTDI, чтобы добраться до USB. Добавьте загрузчик Arduino в UC, и вы сможете использовать инструменты Arduino.
Последовательное преобразование в параллельное более простое. Если ваше приложение может использовать выходы с открытым стоком, вы можете использовать 16-канальный светодиодный драйвер. Это будет означать добавление четырех фишек.
источник
Самым простым вариантом, с которым я столкнулся, является IOIO-OTG . Это внешнее USB-устройство OTG на основе PIC-контроллера, разработанное для Android, но совместимое с ПК через Eclipse и Android Development Toolkit. Он имеет 46 контактов GPIO 3.3 В , а также множество других полезных вещей. Он не имеет 64 контактов, необходимых для вашего проекта, но вы можете просто использовать несколько регистров сдвига от последовательного к параллельному, как упомянуто jluciani (или вместо этого использовать контроллеры с шаговым двигателем и использовать меньше контактов).
Есть также эта плата USB IO на основе PIC , которая делает подобные вещи, но имеет меньше контактов.
источник