Welchen Mikrocontroller soll ich verwenden?

10

Ich versuche, das beste Mikrocontroller-Paket für meine Computerprogramme zu finden, um mit der realen Welt zu kommunizieren. Ich hoffe auf eine große Anzahl von E / A-Pins (bisher sind nur 64 digitale Pins erforderlich, nichts Besonderes wie Analog und PWM), die ich direkt lesen und schreiben kann, indem ich Funktionen aus meinem auf meiner CPU laufenden Programm aufrufe.

Ich möchte keine Programme auf den Mikrocontroller selbst herunterladen, um sie auszuführen, sondern möchte etwas, das einfach an meinen USB-Anschluss angeschlossen wird und mir eine Reihe von CPU-gesteuerten E / A-Pins bietet, die ich von meinen C ++ - Programmen aus steuern kann.

Was wäre das beste Mikrocontroller-Paket für mich? Ich hoffe auf etwas, das ziemlich kostengünstig, aber zukunftssicher ist, da es über USB läuft und 64-Bit-Treiber für moderne Betriebssysteme wie Windows 7 enthält. Es wäre eine Möglichkeit, mehr als einen dieser Mikrocontroller mit demselben Computerprogramm zu verbinden toller Bonus auch (zukünftige Erweiterung).

Bearbeiten: Ich benötige keine hohen Abtastraten (vielleicht 10 Hz zum Lesen von Eingängen, 1 kHz für Ausgangssignale) und die meisten Pins werden nur für den Ausgang verwendet. Ich arbeite mit brandneuen Computern (Core i7 860). Selbst wenn das Sampling etwas ineffizient oder langsam ist, sollte es dennoch in Ordnung sein (nur einen Thread für E / A und das Hauptprogramm mit ihm kommunizieren lassen).

Ich benötige auch nicht alle 64 E / A-Pins eines einzelnen Mikrocontroller-Pakets. Wenn ich viele Mikrocontroller-Pakete gleichzeitig verbinden kann, würde das auch funktionieren (eigentlich wäre es ideal, viele kleinere Mikrocontroller-Pakete verbinden zu können, was bedeutet, dass es einfach zu erweitern ist).

Ich habe mir das angeschaut: http://www.schmalzhaus.com/UBW32/index.html

Hat jemand irgendwelche Erfahrungen mit so etwas gemacht? Irgendeine Idee, ob es funktionieren wird oder nicht? Das Hauptanliegen ist, dass der Mikrocontroller das Programm ausführt, nicht meine CPU.

gefälscht
quelle
1
Welche Datenrate benötigen Sie?
Kevin Vermeer
@reemrevnivek: Ich schätze, ich würde ungefähr eine Abtastrate von 10 Hz für Eingänge und 1 kHz für Ausgänge benötigen, sehr langsame E / A.
Gefälschte
In Ihrem Fall wird das gefundene Projekt wahrscheinlich recht gut funktionieren. Es ist ein System, das bereits zusammengestellt wurde (kein Löten ist immer gut) und scheint eine sehr einfache Firmware zu haben, mit der Sie auf alle benötigten Ports zugreifen können. Niedrige Abtastraten bedeuten, dass die serielle Verbindung ausreichend gut funktioniert. 40 $ werden dich nicht bankrott machen, oder? Wenn ja, probieren Sie es einfach aus, bevor Sie sich eine teurere Lösung ansehen.
Wouter Simons

Antworten:

4

Gefälscht,

Der UBW32 ist ein sehr guter Weg, soweit ich Ihre Anforderungen beurteilen kann. Es unterstützt genau das, was Sie benötigen, solange Sie mit 3.3VI / O einverstanden sind (einige sind 5V-tolerant, aber nicht alle). Es ist kostengünstig (40 US-Dollar) und mit jeder Sprache, die unterstützt werden kann, sehr einfach zu sprechen serielle Schnittstellen (das sind so ziemlich alle - Basic, C, C #, Processing usw.)

Sie können jeden der 76 E / A-Pins als Ein- oder Ausgänge verwenden. Mit der im Lieferumfang enthaltenen Firmware können Sie das tun, was Sie möchten, ohne dass auf der eingebetteten Seite eine Programmierung erforderlich ist. Es ist kein Problem, diese Daten über USB (nur 10 Hz) auf den PC zu übertragen. Es wird wahrscheinlich auch gut funktionieren, wenn die Ausgänge auf 1 kHz eingestellt werden.

Wenn Sie Fragen haben, lassen Sie es mich bitte wissen. Gerne helfe ich Ihnen weiter.

* Brian Schmalz UBW32 Schöpfer

EmbeddedMan
quelle
Schönes Board, mr. Schmalz
Wouter Simons
Nun, das ist trotzig tröstlich. Zunächst Maschinenbauingenieur zu sein und wenig über Programmierung und noch weniger über Elektronik zu wissen; Eine vorgefertigte Plattform, die mit C / C ++ verbunden ist, ist genau das, was ich brauchte, um den Aspekt der Programmierung von Elektronik und Mikrocontrollern zu berücksichtigen. Danke für Ihre Hilfe!
Gefälschte
9

Ich empfehle ein Teensy ++ 2.0 (oder ein anderes AT90USB1286-Entwicklungsboard).

128 KB Flash, 8 KB RAM, 46 E / A-Pins, 8 analoge Eingänge

24 $

Die Teensy-Karten werden über USB mit Strom versorgt und können einen virtuellen COM-Anschluss (USB Communications Device Class) bereitstellen. Sie können diese serielle Verbindung für Ihr Pin-Steuerungsprotokoll verwenden. Dies funktioniert ohne benutzerdefinierte Treiber unter Windows, OSX und Linux.

Um die Pin-Steuerungs-Firmware zu erstellen, gibt es TeensyDuino oder einfaches altes C.

Beim Bitbangen wird der Engpass die USB-Schnittstelle des Mikrocontrollers sein. Daher möchten Sie möglicherweise Protokolle wie I2C und SPI auf den Mikrocontroller verlagern. Dafür könntest du meinen Bus Ninja benutzen .

Das Hinzufügen zusätzlicher Teensies zu Ihrem Setup ist einfach. Sie benötigen lediglich einen USB-Anschluss pro Gerät und einen virtuellen COM-Anschluss pro Gerät.

(Hinweis. Dieser Ansatz funktioniert mit einer ganzen Reihe von ARM-Prozessoren und anderen gleich gut. Ich kenne nur keine billigen Entwicklungsboards mit verfügbarer Software.)

Eine andere Möglichkeit könnte darin bestehen, ein Arduino und ein Caterpillar Shield zu verwenden, um die E / A zu erweitern. Auf einer benutzerdefinierten Karte, die ich um denselben E / A-Expander herum aufgebaut habe, konnte ich 256 Ausgänge mit über 1 kHz aktualisieren.

Toby Jaffey
quelle
4

Ich denke, was Sie wollen, ist kein Mikrocontroller, sondern so etwas wie eine PCI-6509-E / A-Karte von National Instruments . Sie können auch USB-Versionen erwerben, diese verfügen jedoch über viel weniger E / A als der PCI-6509. National Instruments verkauft Ihnen auch C ++ - Treiber.

Wenn das zu teuer aussieht, können Sie so etwas wie den Labjack U3 ausprobieren .

pingswept
quelle
Ich habe den Labjack verwendet, er verlangsamt Ihren Computer wirklich, wenn Sie etwas Ernsthafteres tun (höhere Abtastrate), aber er eignet sich hervorragend für einfache Logik mit langsamer Abtastrate. Die NI-Systeme sind wunderbar, aber das Softwarepaket ist für den Heimgebrauch zu teuer. (Zumindest für meinen Heimgebrauch.)
Wouter Simons
4

Die von Ihnen beschriebene Lösung existiert nicht für niedrigere Preise. Das Problem ist, dass Sie die Steuerungssoftware auf einem System ausführen möchten, das nicht dafür ausgelegt ist. Durch die Serialisierung von 64 Ports und die Übertragung über USB mit hohen Abtastraten wird der Host-Computer erheblich verlangsamt.

Es gibt Lösungen, die für Anwendungen mit geringer Leistung wie den genannten Labjack funktionieren. Die eigentliche Lösung für hohe E / A-Raten ist jedoch ein programmiertes System. Die Frage ist, welche Programmierung Sie zur Implementierung des Systems verwenden müssen.

LabView ist eine sehr teure Software (die großartig funktioniert, verstehen Sie mich nicht falsch). Es verwendet eine grafische Sprache zum Entwerfen von Software und kompiliert zu Code, der auf einem FPGA- oder ARM-System ausgeführt wird. Alle Komponenten sind zu teuer für eine eingebettete App mit hohem Volumen, aber in einer Testumgebung aufgrund der schnellen Entwicklung und der hohen Leistung absolut wunderbar.

Eine kostengünstigere Lösung besteht darin, ein System zu finden, auf dem Linux mit vielen E / A ausgeführt wird. EmbeddedARM.com ist eine Website, die viele Arten von Produkten dafür anbietet. Der Code, den Sie schreiben können, kann in Shell-Skripten, Java, C usw. enthalten sein.

Die Arduino- Systeme bieten Mikrocontroller, die mit einer einfacheren Entwicklungsumgebung entwickelt werden können. Aufgrund ihrer Open Source-Natur gibt es bereits viele Projekte , aus denen man lernen kann.

Wouter Simons
quelle
3

Ich kenne keine mit 64 GPIO-Pins, das ist eine Menge, das müssen Sie vielleicht selbst bauen.

Ich benutze dies zum Testen serieller Schnittstellen auf dem Prüfstand, aber es hat auch 23 GPIO-Pins.

Wenn Sie nur nach "USB to GPIO" googeln, gibt es eine Reihe von Projekten, die dies getan haben. Auf den ersten Seiten mit 64 GPIOs habe ich keine gesehen. Dies ist die nächste, die ich gefunden habe, mit 32 Pins.

Es wäre nicht sehr schwierig, eine zu bauen. Ich würde wahrscheinlich nur ein 100-poliges pic18 mit integriertem USB-PHY verwenden (abhängig von Ihren Geschwindigkeitsanforderungen ist möglicherweise eine leistungsstärkere CPU in Ordnung).

Sie müssten nicht zu viel codieren, um es zum Laufen zu bringen, solange Ihr uC-Anbieter ein USB-Treiberskelett anbietet.

Sie müssten höchstwahrscheinlich eine Leiterplatte dafür bauen, da Chips, die groß genug sind, um 64 GPIO-Pins zu haben, im Allgemeinen nicht in Durchgangsbohrungen geliefert werden. Sie könnten auch einen kleineren Mikrocontroller verwenden und externe Port-Expander-ICs für Ihre GPIOs verwenden. Dies wäre jedoch komplexer und programmierbarer.

Sie können sich auch Entwicklungsplatinen ansehen, die alle E / A-Pins an Header weiterleiten und über USB verfügen. Diese werden wahrscheinlich viel teurer sein, da sie wahrscheinlich eine Menge Dinge enthalten, die Sie nicht benötigen.

Ein letzter Tipp: Wenn Sie eine Karte mit RS232 finden, aber 64 GPIO-Pins verfügbar sind, können Sie einen RS232-zu-USB-Adapter verwenden. Einige davon haben für mich gut funktioniert. Dies beschränkt Sie jedoch auf die Geschwindigkeit der RS232-Schnittstelle.

Mark
quelle
3

Die NI Labview-Umgebung ist teuer, macht aber das, was Sie brauchen (über USB, Ethernet oder PCI, je nachdem, was Sie erhalten.)

Der Arduino Mega hat 54 Pins, was Sie für 60 US-Dollar in die Nähe bringt. Es ist jedoch kein sofort einsatzbereiter Logikanalysator. Sie müssten eine Skizze schreiben oder finden, um dies zu tun. Möglicherweise ist eine verfügbar, ich weiß es nicht. Dies sollte bei niedrigen Busraten ziemlich einfach sein. Jeder Befehl auf dem Mega erfolgt mit 16 MHz. Sie haben also eine ziemlich langsame Baudrate. Sie haben Glück oder sind sehr schlau, wenn Sie ein 115200-Baud-Signal erhalten.

Am Ende ist dies ein ganz anderes Projekt, wenn Sie mit 9600 Baud oder 50 MHz abtasten. Denken Sie daran, dass USB mit 480 MHz betrieben wird (theoretisch ist Ihre tatsächliche Datenrate aufgrund von Latenzen und Overhead niedriger), sodass Sie ohne Pufferung keine bessere Leistung als 480/64 = 7,5 MHz erzielen können. Mit Pufferung und obszönen Geldbeträgen (mehr als Ihr Auto) können Logikanalysatoren 68, 102 oder 136 Kanäle mit Gigahertz-Datenraten empfangen.

Ich würde vorschlagen, dass Sie sehr ernsthaft versuchen, herauszufinden, ob Sie ein Tool verwenden können, das Ihnen ungefähr 8 Kanäle bietet, und versuchen, diese separat zu analysieren.

EDIT: Aargh, was habe ich gedacht? Wenn Sie so langsam fahren, ist die Arbeit über eine serielle Verbindung definitiv der richtige Weg. Ich verwende das ADAM 4000- Modulsystem von Advantech ständig bei der Arbeit. Sie sind robust, benutzerfreundlich (einfach mit einem ASCII-Protokoll über einen COM-Port zu verbinden oder verwenden die mitgelieferte GUI-Software), erweiterbar und werden gut unterstützt. Holen Sie sich einen 4500-Controller (RS-232, verwenden Sie einen USB-Konverter oder einen COM-Anschluss an Ihrem Computer (falls noch vorhanden)) oder einen 4501-Controller (Ethernet mit integriertem Webserver) und verbinden Sie eine Reihe von 4053-, 4055- und 4056-Modulen. und du bist gut zu gehen.

Kevin Vermeer
quelle
Oh. aber sie sind ziemlich teuer ... wie 100 bis 150 Dollar für 16 Kanäle.
Kevin Vermeer
Ich habe einen Intronix 34-Port-Logikanalysator zum Testen meiner Software (dh Verbinden der Eingänge mit den Ausgängen der vom Mikrocontroller gesteuerten Pins). Es sind ungefähr 500 $, denke ich, aber es ist auch nicht wirklich digital I / O, oder? Es ist nicht dazu gedacht, benutzerdefinierte Logik zu programmieren, sondern nur Kanäle zu analysieren. Meins kann mit einer Abtastrate von 500 MHz arbeiten, aber ich benötige diese Geschwindigkeit normalerweise nicht, es sei denn, die Peripheriegeräte, mit denen der Mikrocontroller Unterstützungsgeschwindigkeiten von bis zu 200 MHz steuern soll (was normalerweise nicht der Fall ist). - Wie auch immer, lange Rede, kurzer Sinn. Ich glaube, dass ein Logikanalysator nicht das ist, was die Person, die die Frage stellt, braucht.
Wouter Simons
Es ist definitiv ich, aber nicht O. Nein, ich würde zustimmen, dass der Logikanalysator angesichts der neuen Informationen nicht das ist, was die Person braucht.
Kevin Vermeer
2

Dieses Ding hat 70 GPIOs und eine USB-Schnittstelle für 50 US-Dollar.

Endolith
quelle
Können Sie mit Anruffunktionen Pin-Daten direkt aus C ++ - Programmen lesen und schreiben, die auf Ihrer CPU ausgeführt werden?
Gefälschte
Ich wollte vorschlagen, dass NXP etwas ARM-basiertes mit einigen E / A-Vorgängen haben würde, und wenn Sie nicht genug davon bekommen könnten, um einfach auf I2C-E / A-Expander zu klatschen. Sie können den Preis für dieses Ding nicht übertreffen, und es ist Plug-and-Play. Ausgezeichnete Arbeit.
Akohlsmith
Ich habe keine Ahnung. Ich habe es gerade auf Sparkfuns neuen Produkten gesehen.
Endolith
2

Ja, es sieht so aus, als würde der UBW32 für Sie gut funktionieren, und mit der Standard-Firmware können Sie die E / A-Pins von Ihrer Software auf Ihrem PC aus steuern.

Laut "Wie man SPI und parallele Schnittstellen auf einem FT232R bit-knallt " können Sie anscheinend 8 digitale Pins (möglicherweise mehr?) Auf dem FT232R bit-knallen, die von der Software auf Ihrem PC gesteuert werden.

$ 15 Breakout Board für FT232RL

Es hört sich so an, als ob Sie wirklich eine digitale E / A-Schnittstelle wollen. Sie brauchen und wollen keinen programmierbaren Mikrocontroller. Wenn Sie nur 16 Bit wollten, würde ich mit ein paar FT232RL-Karten gehen. Es sieht jedoch so aus, als würde eine einzelne UBW32 im Wert von 40 US-Dollar die gewünschten 64 E / A für weniger Kosten als 8 der FT232RL-Karten liefern, die für 64 E / A erforderlich wären.

Ich stelle fest, dass dies immer häufiger vorkommt - es kostet manchmal weniger, einen ganzen Mikrocontroller auf ein Problem zu werfen, obwohl er eine Million "zusätzlicher" Transistoren enthält, die ich nie verwenden werde, als eine fest verdrahtete Lösung.

Davidcary
quelle