J'ai besoin d'un certain nombre de sorties numériques pour connecter mon ordinateur au monde réel, mais il semble que ce travail ne soit pas aussi facile que je l'espérais.
J'ai examiné un certain nombre de méthodes différentes, allant des cartes d'E / S numériques dédiées, des microcontrôleurs avec interfaces USB, des ports série, des ports parallèles, etc. Cependant, toutes les solutions semblent être trop coûteuses, trop de travail ou la technologie est trop datée.
J'espère avoir plus de 64 sorties numériques fonctionnant à environ 1 kHz chacune, contrôlables individuellement. Jusqu'à présent, la meilleure idée que je puisse trouver est de coller les sorties d'un port série sur un registre à décalage série vers parallèle 8 bits et d'envoyer des caractères vers le bas de la connexion série chaque fois que je souhaite modifier et sortir (exécuter à partir d'un port USB vers un port série adaptateur). Je n'ai pas encore testé cela, donc je ne sais pas si cela fonctionnera.
Existe-t-il une autre méthode rapide et sale pour obtenir un assez grand nombre de sorties numériques peu coûteuses de l'ordinateur que je peux contrôler facilement avec des commandes C ++ très basiques?
la source
Réponses:
On dirait que vous avez l'intention de faire clignoter des lumières de Noël. :-)
Quelque chose ne va pas avec l'utilisation d'un arduino ou similaire? Il serait assez facile d'augmenter le nombre de ports d'E / S si le nombre de ports dit sur le méga 1280/2560 n'est pas suffisant. Vous pouvez le piloter via une borne série / USB. Vous pouvez utiliser des registres à décalage sur les broches de sortie de l'arduino ou vous pouvez utiliser l'expanseur de port i2c et passer par là.
L'utilisation de composants standard comme celui-ci vous donnera le temps de prototypage le plus court.
Remarque, mon chemin n'est peut-être pas le moins cher. Mais il est efficace et vous permettra de rouler rapidement.
la source
Le registre à décalage série à parallèle fonctionnera. En utilisant le port SPI, vous n'aurez aucun problème avec le taux de mise à jour 1KHz. IIRC sur un ATmega328 avec un cristal 8MHz (ou supérieur), vous devriez pouvoir obtenir 1Mbits par seconde. De nombreux autres microcontrôleurs fonctionneront également.
Une autre option consiste à utiliser plusieurs microcontrôleurs. Par exemple - l'utilisation d'un ATmega328 (qui coûte environ 5 $ avec les passifs) vous donnerait 18 lignes tout en gardant les lignes TXD et RXD libres. Montez en parallèle les lignes RXD, puis tous les uC recevront les mêmes chaînes de commande. Vous devez analyser les chaînes de commande sur l'UC. Utilisez un câble FTDI pour accéder à l'USB. Ajoutez un chargeur de démarrage Arduino à l'UC et vous pourriez utiliser les outils Arduino.
La conversion série en parallèle est plus simple. Si votre application peut utiliser des sorties à drain ouvert, vous pouvez utiliser un pilote LED 16 canaux. Cela signifierait ajouter quatre puces.
la source
L'option la plus simple que j'ai rencontrée semble être l' IOIO-OTG . Il s'agit d'un périphérique USB OTG externe basé sur un contrôleur PIC, conçu pour Android, mais utilisable avec un PC, via Eclipse et la boîte à outils de développement Android. Il dispose de 46 broches GPIO 3,3 V , ainsi que de nombreux autres trucs utiles. Il n'a pas les 64 broches nécessaires à votre projet, mais vous pouvez simplement utiliser quelques registres à décalage série à parallèle, comme mentionné par jluciani (ou utiliser à la place des contrôleurs de moteur pas à pas et utiliser moins de broches).
Il y a aussi cette carte d'E / S USB basée sur PIC , qui fait des choses similaires, mais qui a moins de broches.
la source