Preciso de várias saídas digitais para conectar meu computador ao mundo real, no entanto, parece que esse trabalho não é tão fácil quanto eu esperava.
Analisei vários métodos diferentes, desde placas de E / S digitais dedicadas, microcontroladores com interfaces USB, portas seriais, portas paralelas, etc. No entanto, todas as soluções parecem muito caras, muito trabalho ou a tecnologia é muito antiga.
Espero ter mais de 64 saídas digitais rodando a aproximadamente 1khz cada, controláveis individualmente. Até agora, a melhor idéia que posso ter é conectar as saídas de uma porta serial a um registro de turno serial e paralelo de 8 bits e enviar caracteres pela conexão serial sempre que eu desejar alterar e produzir (execute de uma porta USB para serial) adaptador). Ainda não testei isso, então não sei se funcionará.
Existe algum outro método rápido e sujo de obter um número bastante grande de saídas digitais baratas do computador, das quais eu posso controlar facilmente com comandos C ++ muito básicos?
fonte
Respostas:
Parece que você pretende piscar algumas luzes de Natal. :-)
Algo errado em usar um arduino ou similar? Seria bastante fácil expandir o número de portas de E / S se o número de portas declarar no mega 1280/2560 não for suficiente. Você pode conduzi-lo via terminal serial / USB. Você pode usar registros de deslocamento nos pinos de saída do arduino ou usar o expansor de portas i2c e fazer isso.
O uso de componentes padrão como esse fornecerá o menor tempo de prototipagem.
Note, meu caminho pode não ser o mais barato. Mas é eficaz e fará você rolar rapidamente.
fonte
O registro de deslocamento serial para paralelo funcionará. Usando a porta SPI, você não terá problemas com a taxa de atualização de 1KHz. IIRC em um ATmega328 com um cristal de 8MHz (ou superior), você deve conseguir 1Mbits por segundo. Muitos outros microcontroladores também funcionarão.
Outra opção é usar vários microcontroladores. Por exemplo - usar um ATmega328 (que custa cerca de US $ 5 com os passivos) forneceria 18 linhas, mantendo as linhas TXD e RXD livres. Paralelamente às linhas RXD e todos os uCs receberão as mesmas seqüências de comando. Você precisaria analisar as cadeias de comando no uC. Use um cabo FTDI para acessar o USB. Adicione um carregador de inicialização do Arduino ao uC e você poderá usar as ferramentas do Arduino.
A conversão serial para paralela é mais direta. Se o seu aplicativo puder usar saídas de dreno aberto, você poderá usar um driver de LED de 16 canais. Isso significaria adicionar quatro chips.
fonte
A opção mais simples que me deparei parece ser o IOIO-OTG . É um dispositivo USB OTG externo baseado em controlador PIC, projetado para Android, mas utilizável em um PC, via Eclipse e o Android Development Toolkit. Possui 46 pinos GPIO de 3,3v , além de várias outras coisas úteis. Ele não possui os 64 pinos necessários para o seu projeto, mas você pode usar apenas alguns registros de mudança em série para paralelo, como mencionado por jluciani (ou usar controladores de motor de passo e usar menos pinos).
Há também esta placa IO USB baseada em PIC , que faz coisas semelhantes, mas tem menos pinos.
fonte