Laden...

Elektrotechnik: Mehrere Elektromotoren per USB ansteuern

Erstellt von mo# vor 13 Jahren Letzter Beitrag vor 13 Jahren 6.378 Views
mo# Themenstarter:in
187 Beiträge seit 2009
vor 13 Jahren
Elektrotechnik: Mehrere Elektromotoren per USB ansteuern

Hallo Zusammen,
ich hab ein kleines Bastelprojekt und will in diesem Zusammenhang über USB ein bzw. mehrere E-Motoren/Servos mittels eines kleinen C#-Programms steuern.

Jetzt fehlt mir aber das elektrotechnische Fachwissen wie man so etwas ansteuert. Gibt es da fertige Platinen welche mir die Signalumsetzung USB -> Motor vornehmen? Und wie kann ich den Motor extern (nicht per USB) mit Strom versorgen (Relais?)?
Ist auch eine Umkehrung der Laufrichtung der Motoren möglich?

Hoffe hier sind auch ein paar Löter unterwegs die mir ein bisschen weiterhelfen können.
Vielen Dank.

L
416 Beiträge seit 2008
vor 13 Jahren

Gibt es da fertige Platinen welche mir die Signalumsetzung USB -> Motor vornehmen?

Dafür gibts entsprechende Motorkarten, hängt von den Motoren ab welche Karte da in Frage kommt. (z.B. hab ich mal folgende verwendet: 3 Kanal Schrittmotorkarte)

Und wie kann ich den Motor extern (nicht per USB) mit Strom versorgen (Relais?)?

Per in die Karte integrierte Endstufe.

Ist auch eine Umkehrung der Laufrichtung der Motoren möglich?

Mit Sicherheit.

Hoffe hier sind auch ein paar Löter unterwegs die mir ein bisschen weiterhelfen können.

Hab zwar selbst noch nicht viel gelötet aber im Studium mal nen Repman per Schrittmotorkarte angesteuert.

L
95 Beiträge seit 2009
vor 13 Jahren

Interessant wäre zudem zu erfahren was für Motoren du exact ansteuern möchtest ?
(Schrittmotoren, Getriebemotoren, Servos) und welche Ströme diese benötigen.

J
257 Beiträge seit 2008
vor 13 Jahren

Hi,
also der normale Aufbau einer Motorsteuerung sieht inetwa folgendermaßen aus: http://sine.ni.com/cms/images/devzone/tut/ce36be30693.gif
Man sieht eine klare Schichtentrennung von der Anwendung/MotionControl/Drive und dem Motor selbst. Möchtest du mit deinem Programm eine bestimmte Position anfahren, muss diese Position dann vom MotionControl mit der aktuellen verglichen werden und daraus resultierend wird der Motor angesteuert. Das erfordert allerdings schon etwas mehr Logik (und Euro) als einfach nur vor und zurück und natürlich Motoren, die rückmelden.
Was du aber in jedem Fall brauchst ist das Drive. Um dir dazu was sagen zu können ist aber, wie von Lenny gesagt, sind aber ein paar mehr Daten nötig. Als Beispiel sei dir mal Maxon (www.maxonmotor.de) genant, die haben sowas im Angebot.
Wie die Umsetzung von USB funktioniert weis ich leider auch nicht. Auf der Arbeit benutze ich Hardware von National Instruments. Die bieten zum Beispiel MotionControl-PCI-Karten an, die dann auch massig Features haben, wie Koordinierung mehrerer Achsen zur dreidimensionale Bewegung etc. Dazu bräuchtest du allerdings die LabView IDE (mit der sich auch .Net Assemblies für die Steuerung integrieren lassen) und mehr als tausend Euro. Das kommt aber auf deine genauen Anforderungen an. Wenn du nur vor und zurück fahren möchtest, reicht im einfachsten Fall ein Digitaler Ausgang, den du dann per code High oder Low schaltest und damit das Drive steuerst. Ich hab zwar jetzt keinen im Kopf, aber Google kennt sicherlich ein USB Digital Ausgang 😉

1.044 Beiträge seit 2008
vor 13 Jahren

Hallo mo#,

ich persönlich hatte mit dem Thema nicht so viel am Hut. Das schonmal vorab. So wie ich das sehe, ist das in C# ohne weiters nicht möglich, den USB-Port anzusteuern. Möglich ist es bestimmt. Dann würde es aber in Richtung Treiberprogrammierung gehen. In C# bzw. .NET ist das eine nicht als so gute Idee. Eine Alternative wäre hier der LPT-Port. Dazu habe ich hier ein Tutorial gefunden Mit C# ein LCD ansteuern.

zero_x

309 Beiträge seit 2008
vor 13 Jahren

Am "einfachsten" aber praktikabelsten (und relativ günstig zu realisieren) wäre einen Mikrocontroller der per serieller Schnittstelle Befehle entgegen nimmt und dann entsprechend die Servos/Motor ansteuert. Per Serial/USB Konversten geht das auch per USB. Auf C# und Mikrocontroller Seite kannst du einfach die Befehle seriell durch die Gegend schicken. Solange das nicht in annähernd Echtzeit passieren muss ist das auch ausreichend schnell.

Mit den Atmel Controllern wäre das relativ einfach zu realisieren, sofern du mit einem Lötkolben umgehen kannst. 😉
Die Programmierung des Controllers wäre dann aber in C (ohne #)

using System;class H{static string z(char[]c){string r="";for(int x=0;x<(677%666);x++)r+=c[
x];return r;}static void Main(){int[]c={798,218,229,592,232,274,813,585,229,842,275};char[]
b=new char[11];for(int p=0;p<((59%12));p++)b[p]=(char)(c[p]%121);Console.WriteLine(z(b));}}

699 Beiträge seit 2007
vor 13 Jahren

Hallo,

Jetzt fehlt mir aber das elektrotechnische Fachwissen wie man so etwas ansteuert.

Ich denke ohne konkretes Elektronik Fachwissen, wirst du mit deiner Frage in einem reinen Programmierforum nicht weiter kommen.
Bei Conrad oder ELV gibt es schon diverse fertige Platinen. Wobei ich empfinde, das die meisten davon nur mehr als Grundlage dienen können, dann aber wieder durch eigene elektronische Schaltungen erweitert und oder umgebaut werden müssen. Also "Die" perfekte Platine wirst Du wohl eher nicht finden.

Um effektiv was zu basteln wirst Du aber wohl um einen Atmel nicht herum kommen. Damit ist man zumindest mal am flexibelsten. Nur dann sollte man eben auch ein bisschen Elektronik beherschen, und zumindest so sachen wie "Phasenabschnitt" kennen ( würde da schon reichen um einen 24V Gleichstrommotor zu regeln).

Aber allgemein ist das ein Fachbereich, den man nicht unterschätzen sollte. Wenn Du eine hohe Frustgrenze hast, ist Elektronik ein schönes Fachgebiet, wo man sich gut austoben kann. Aber man wird am anfang sehr häufig rückschläge haben, die auch durchaus mal teuer werden können ( Atmel geschrottet usw 🙂 )