A maneira mais fácil e barata de obter saídas digitais de um computador para o mundo real

8

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?

Faken
fonte
1
Um pouco relacionado: electronics.stackexchange.com/questions/3475/…
endolith 30/09/10
Você já fez alguma matemática? Normalmente, o RS232 não USB simples tem velocidade máxima de 115200bps, que é aproximadamente 10 KB. Digamos que cada canal precise de apenas 1 byte (o que duvido). Você deseja enviar 64 x 1000 bytes por segundo, ou seja, cerca de 64 KB. Muito mais que sua taxa de transferência serial. Existem alguns cabos seriais USB de alta velocidade com 921600bps e, embora teoricamente possível, duvido que isso seja útil, pois isso está no limite e, como eu disse, 1 byte dificilmente será suficiente e o microcontrolador dificilmente terá tempo para qualquer outra coisa. Você terá que diminuir suas demandas ou preparar sua carteira.
Avra
3
Talvez você deva reler seus comentários quanto a erros óbvios antes de agredir alguém ... Os pinos de GPOI emitem bits e não bytes. Isso significa que 64 kilobits / s, bem abaixo do 115.2kbs max
Faken

Respostas:

7

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.

Roubar
fonte
1
Não exatamente com as luzes piscando, estou tentando controlar 32 motores de passo em um protótipo de dispositivo universal de fixação automática, exceto que não tenho nenhum financiamento ... ou conhecimento de eletrônica. Talvez eu tenha dispensado o microcontrolador muito rapidamente, tenha algum bom recurso passo a passo sobre como acelerar a partir do zero com exemplos práticos? (e eu quero dizer, desde o início, eu tenho uma base de conhecimento bastante estranha, que é muito teórica e não é prática o suficiente, você pode assumir que eu não sei absolutamente nada ... parece que está na maioria das vezes, heh)
Faken
1
Controlar motores de passo exigirá um pouco de esforço extra. Você não poderá controlá-los diretamente dos pinos de saída do microcontrolador. Você precisará usar alguma cola eletrônica entre o pino e o motor para não fritar o micro. Como qualquer coisa, é melhor começar pequeno e trabalhar até exemplos mais avançados. Um dos entusiastas mais ávidos que eu já vi por aí é o tronixstuff.wordpress.com tem algumas coisas boas para iniciantes, passo a passo. Eu sei que o cara que o executa também frequenta essa troca de pilhas.
Rob
1
Sim, eu encontrei um driver de motor de passo muito bom para usar entre os sinais de controle e o motor (apenas usa 2 entradas, passo e direção). Vou dar uma olhada no tutorial que você vinculou, obrigado. Btw, só para ter certeza, eu quero que seja o meu computador que envie os comandos em tempo real, através de um programa c ++, ao microcontrolador para mover os motores. Isso é possível ou muito fácil de fazer com este micro controlador?
Faken 30/09/10
1
Claro. O microcontrolador atua como um buffer entre o computador e a placa do driver do motor de passo. Ele pode interpretar os comandos que você envia e agir sobre eles, além de fornecer feedback ao PC, se necessário. O outro benefício de usar algo um pouco convencional é que você pode obter muito apoio / aconselhamento da comunidade; as chances são sempre boas de que alguém tenha feito algo semelhante. Isso é bastante útil por si só. O micro apenas fornece uma interface de baixo custo muito boa entre o PC e suas placas de driver.
Rob
O Adafruit é um bom quadro que pode ser usado para acionar 16 servos, e eles podem ser encadeados. Seria bastante fácil escrever algum código do arduino que leia os dados de um PC e os envie para a placa do driver do servo. adafruit.com/products/815
Eric Gunnerson,
3

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.

jluciani
fonte
1

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.

naught101
fonte