PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Motoransteuerung 12 Volt über USB



entdecker93
10.08.2012, 14:44
Hallo Leute,

Ich brauche ein wenig Hilfe bei der Ansteuerung von 4 12 Volt Motoren über USB. USB liefert eine Betriebsspannung von 5 Volt. Ich habe 4 von diesen Motoren (http://www.conrad.de/ce/de/product/222378/Modelcraft-Torpedo-Elektromotor-800-12-VDC-Leerlaufdrehzahl-222378/?ref=no_search_results/). Ich möchte jetzt über USB die Drehzahl der Motoren einzeln regeln können. Ich komme eigentlich komplett aus dem Programmierer-Milieu und mache nur ab und zu einfachere Sachen. Die 12 Volt sollen von 3 Parallel geschalteten 12 Volt Akkus (http://www.conrad.de/ce/de/product/251471/Vision-Lithium-Eisen-Phosphat-Akku-12-V-10-Ah-L-x-B-x-H-150-x-65-x-107-mm/SHOP_AREA_14717&promotionareaSearchDetail=005) kommen. Als Contoller habe ich mir den PIC18F4550 ausgeguckt, wenn jemand findet, dass ein anderer Controller besser geeignet wäre, bitte anmeckern ;) Außerdem wäre es schön, wenn ich die Schaltung um 4 Stellantriebe erweitern könnte, wenn ich das so weit erst einmal geschafft habe, es ist aber auch möglich, das ganze auf ein anderes USB betriebenes Board zu packen, das ganze soll in einen Roboter gepackt werden, der innen drin ein normaler Linux-PC mit 12 Volt Netzteil ist, ist am besten zu Programmieren. Das heißt, dass ich als Eingangssignale an das Board ne Motorenkennung und einen uint8_t bekomme, wobei eine 0 bewirken soll, dass der Motor 0 Volt bekommt und eine 255 bewirken soll, dass der Motor 12 Volt Spannung bekommt.
Ich bedanke mich schonmal für die Hilfe :)

Liebe Grüße
Lukas

Thomas E.
10.08.2012, 15:32
Wo liegen denn jetzt eigentlich die konkreten Probleme?

(oder hab ich was übersehen?)

entdecker93
10.08.2012, 15:59
Das Problem liegt darin, dass ich zwar weiß, dass ich einen DA-Wandler brauche und einen vv-Operationsverstärker, Aber nur mit dem Wissen alleine Finde ich die Teile in eagle nicht, welche der Belastung durch die Motoren standhalten könnten.

entdecker93
10.08.2012, 16:03
Das heißt, wenn ich möchte auf der 12 Volt Leitung so viel Prozent der Spannung anliegen haben, wie ich auf der 5 Volt Leitung anliegen habe. Brauche ich dafür Leistungs Transistoren und wenn ja welche?
Anbei eine Schaltung, welche meinen Ansatz zeigt.

entdecker93
10.08.2012, 16:20
Ich brauche ein Bauteil/eine Schaltung welche Folgende Anschlüsse hat:
- Referenzspannung VCC Steuerspannung
- Referenzspannung GND Steuerspannung
- Referenzspannung VCC verstärkte Steuerspannung
- Referenzspannung GND Verstärkte Steuerspannung
- Eingang Steuerspannung
- Ausgang verstärkte Steuerspannung

Wenn man dafür einen Operationsverstärker nehmen kann, weiß ich deswegen ja noch nicht, welcher das ist, der die Leistung des Motors tragen kann. :(

Hubert.G
10.08.2012, 17:09
Ich denke da liegst du falsch. Die 5V der USB-SChnittstelle kannst du nicht verändern.
Du kannst über USB dem µC sagen Motor1 100 und der µC setzt das um auf PWM mit dem Wert 100 von z.B. 255.
An den µC schaltest du dann Motortreiber mit der den Motoren entsprechenden Leistung.

entdecker93
10.08.2012, 17:18
Genau das war mein Problem, dass ich die 5 Volt nicht verändern kann und auch angesichts des schwachen Netzteils am PC auch nicht will. ich will steuern, wie viel der 12 Volt, die direkt aus der Batterie kommen der Motor bekommt, ich weiß leider nicht, wie ich es besser beschreiben soll.

Hubert.G
10.08.2012, 17:25
Du kannst mit deinem µC PWM erzeugen. Die Impulsbreite der PWM kannst du z.B. in 255 Schritte einstellen und sagst du über USB.

entdecker93
10.08.2012, 17:40
Den Microcontroller so zu Programmiern, dass er einen vom Computer vernünftig eingegebenen Wert bekommt und den auf eine X-Beliebige Art umzuwandeln ist kein Problem. Das einzige Problem was ich habe ist, dass hier zwei getrennte Stromkriese vorliegen, von welchem ein Stromkreis den anderen Steuern soll, nämlich der 5 Volt Stromkreis den 12 Volt Stromkreis. Das müsste mit einem Hochleistungstransistor oder nem Hochleistungs OPV kein Problem sein. Ich kenn nur leider die Bauteile in der Richtung nicht, weshalb ich gerne Hilfe bei der Wahl der Bauteile hätte. Der Tipp mit dem Motortreiber war dabei Gold wert ;) Danke :) Ich war wie gesagt bisher nur Programmierer und Datenverarbeitungstechniker. Ich kenn mich mit Logikschaltungen aus wie zum Beispiel die 74..XX aber weiteres Wissen bin ich gerade erst dabei mir das anzueignen.

Ich habe jetzt das hier gefunden: Motortreiber (http://www.shop.robotikhardware.de/shop/catalog/product_info.php?products_id=216).
besteht die chance das 4 Mal, also für jeden Motor einmal mit auf die Platine mit dem Microcontroller draufzupacken? Ich kann sehr gut löten, habe alle Materialien zur Verfügung, die zum Ätzen benötigt werden, habe also kein Problem mit SMDs in dieser Größe, wenn also jemand die Bezeichnungen und die Verschaltung dieser Bauteile kennt wäre mir sehr geholfen :)
Und noch etwas: Weiß jemand, ob der PIC18F4550 vier analoge Ausgäge hat oder ob ich für jeden Motor ein einzelnes USB gerät bauen muss, oder noch besser jemand dann einen anderen PIC kennt, der 4 analoge Ausgänge hat.

Vielen Dank für die große Geduld und die Hilfe :)

markusj
10.08.2012, 18:07
µCs mit analogen Ausgängen sind bei den kleineren Größen eher unüblich. Das Schlagwort dazu heißt übrigens DAC (Digital-Analog-Converter). Was dein gewählter PIC hat oder nicht hat, kannst du im Datenblatt nachlesen, um dessen Lektüre wirst du sowieso nicht umhin kommen.

Dir reicht die PWM-Funktionalität, die quasi jeder µC mit den Timern mitbringt. Mit dem Signal kannst du dann (bei gemeinsamer Masse von USB-Teil und Leistungsteil) direkt an den Motortreiber ran (Integrierte Treiber haben üblicherweise getrennte Anschlüsse für Logikspannung und Versorgungsspannung) oder du baust noch einen Optokoppler dazwischen, um die USB-Seite komplett vom Leistungsteil zu trennen. Letztere Variante hat den Vorteil, dass du dich deutlich mehr anstrengen musst, um den USB-Port zu rösten, der Nachteil besteht darin, dass du vielleicht etwas mehr Arbeit darin investieren musst, das PWM-Signal sauber durch den Optokoppler zu befördern.

Ach ja: Wenn du keinen PIC mit genug PWM-Ausgängen findest, kannst du auch einfach mit zwei PICs arbeiten die untereinander kommunizieren. Oder mit einem kleinen der sich um den USB-Kram kümmert, und einen größeren/spezialisierten der die Signalerzeugung macht. Letzterer kann dann über Optokoppler abgetrennt werden, dann kann der sein PWM-Signal direkt an die Motorendstufe weitergeben und der USB-Port ist dennoch entkoppelt/geschützt.

mfG
Markus

Hubert.G
10.08.2012, 18:08
Welchen Motortreiber du verwendest hängt vom Strom ab den deine Motoren im Spitzenfall brauchen.
Es gibt die ICs dafür in vielen Leistungsklassen. Beginnend mit L293, L298, L6203 und viele andere.
Bei PIC kann ich dir allerdings nicht helfen.

entdecker93
10.08.2012, 18:17
Ich habe mir das Datenblatt des PICs angesehen und bin zu allem fündig geworden. Es wäre schön, wenn jemand die Schaltung für den Motortreiber von oben hätte, weil ich die ja zu gerne mit auf der Platine hätte. Der von mir gewählte PIC hat genügend Timer (genau 4 an der Zahl), was mir wie ich wahrscheinlich richtig vermute einiges an Fusselarbeit erspart.

Also falls jemand so eine Schaltung hat (kann auch mit nur einem Motorausgang sein) wäre ich sehr sehr glücklich. Ich bin echt am überlegen, ob ich statt angewandter Informatik nicht lieber Robotik studieren soll :) Macht irre viel spaß das alles zu recherchieren :)

markusj
10.08.2012, 19:07
@Timer: Wenn die vier Timer alle PWM mit geforderter Auflösung können ja.
@Motortreiber: Hubert hat bereits alles geschrieben, was du wissen musst. Der Motortreiber orientiert sich am Spitzenstrom der Motoren (+ etwas Reserve). Es gibt die Bausteine in verschiedenen Größen, und wie die verschaltet werden, kannst du normalerweise deren Datenblatt entnehmen. Einen Überblick gibt auch eine RN-Wissen-Seite (http://www.rn-wissen.de/index.php/Getriebemotoren_Ansteuerung)
@Studium: Mach dir keine großen Hoffnungen, dass du im Studium auch nur ansatzweise so nah an die Praxis kommst wie mit solchen Projekten.

mfG
Markus

entdecker93
10.08.2012, 19:16
@Timer: wenn nicht packe ich eben noch einen Frequenzteiler dahinter.
@Studium: Es ist trotzdem blöd sich alles zusammenklauben zu müssen, da schadet ein wenig grundwissen echt nicht...
@Motortreiber: Danke für die Seite, das war genau das was ich gesucht habe :)

markusj
10.08.2012, 20:15
@Timer: Das bringt dir nichts. Entweder du hast die nötige Anzahl an Ausgängen mit erforderlicher Auflösung oder nicht. Durch herunterteilen ändert sich die Auflösung nicht! Aber auch die "kleinen" Timer (8-Bit) sollten dir eigentlich genug Auflösung bieten.

Halb-OT: So Zeug lernst du nicht in einem Informatik-Studiengang. Auch nicht das nötige Grundwissen. Eher in einem Elektrotechnik-Studiengang, das kann ich aber nicht beurteilen. Aber Informatik? No Way. Die Robotiker kümmern sich eher darum, was sie dann mit der Hardware machen können, dem Arbeitsschwerpunkt geschuldet kommt da oft auch noch eine Hardwareabstraktionsschicht (Echtzeitbetriebssystem etc.) zum Einsatz.

mfG
Markus

entdecker93
10.08.2012, 22:15
Ich habe mir jetzt einen Treiber ausgeguckt: BTS7741G von infineon.
Leider ist der in eagle nicht drin. Als ich gegooglet habe, habe ich das gefunden: http://www.das-labor.org/wiki/Bauteilbib
Das eries sich als Flop. Wenn jemand so etwas hat, bitte bescheid sagen.
Der Motor braucht einen Treiber, welcher mindestens 5,5 Ampere bei 12 Volt Maximalleistung aushält. Falls also jemand Vorschläge hat bin ich dafür jederzeit offen.

entdecker93
10.08.2012, 22:41
Würde es eigentlich auch gehen, durch nen normalen Taktgeber (PWM) und einem Leistungstransistor den Motor zu regeln? Ich meine man kann damit ja auch eine LED dimmen...
Oder würde das den Motor kaputt machen?

Hubert.G
11.08.2012, 08:38
Das geht natürlich auch. Man würde dann eher einen FET nehmen.
Allerdings kannst du dann keine Drehrichtungsänderung machen.

entdecker93
11.08.2012, 08:49
Das mit der Drehrichtung ist nicht so schlimm. Welchen FET würdet ihr vorschlagen, wenn der Motor 5,5 Ampere zieht? Am besten sollte er noch mehr aushalten. 5 Volt Steuerstrom (als Takt[kann man den eventuell vorher noch etwas glätten?]) und 12 Volt Laststrom.

Hubert.G
11.08.2012, 09:03
Standard-FET ist für so etwas ein IRLZ34, der kann Spitze 30A und kann schon mit 5V angesteuert werden.
Die PWM auf keinen Fall glätten.

entdecker93
11.08.2012, 10:04
Okay, vielen Dank. Ich werde mich diesbezüglich schlau machen. Der ist in eagle aber auch nicht drin, oder wird der da über einen anderen Namen geführt? Und wenn der dann drei Anschlüsse hat, muss man dann auf einer Seite Zwei Spannungen zusammenlegen? Muss man da nicht dann entsprechende Schutzmaßnahmen treffen wie entsprechend starke Dioden etc?

markusj
11.08.2012, 11:10
Wenn du wirklich nur eine Drehrichtung brauchst, ist eine Motorbrücke unnötige Liebesmühe. Die nimmt man genau deswegen, um in beide Richtungen drehen zu können (Stichwort: H-Brücke).
Aber für eine Drehrichtung: Einen dicken FET einbauen, PWM-Ausgang des µCs an das Gate des FET, Source des FET an Masse/GND/Minuspol der Spannungsquelle, Drain an einen Motorpol und den anderen Motorpol an VCC/Pluspol der Spannungsquelle.
Dem FET zuliebe vielleicht noch eine schnelle Diode zum Schutz vor der Selbstinduktion des Motors in Sperrichtung zwischen Source und Drain schalten (Stichwort: Freilaufdiode). Da du die Motordrehzahl über PWM regelst, wird eine Leistungs-Schottky-Diode hier die richtige Wahl sein.

Was die konkreten Bauteiltypen angeht: Sieh dir einfach das Sortiment deines bevorzugten Bauteilhändlers an und nimm dann den günstigsten Baustein der die erforderlichen Eckdaten hat. (Rechne was die Stromfestigkeit angeht zur Sicherheit Mal Faktor zwei, sonst kriegst du größere Probleme mit der Kühlung der Bauteile).

Ach ja: Mache dich DRINGEND mit den Grundlagen vertraut. Spannung misst man in Volt, Strom in Ampere. FETs werden mit einer Spannung angesteuert, Transistoren mit Strom.

mfG
Markus

PS: Ja, der IRLZ34 ist wohl nicht ab Werk bei Eagle dabei, es gibt aber sicherlich schon Bibliotheken die das nachrüsten. Alternativ kannst du auch einfach einen FET mit gleichem Gehäuse und Pinout verwenden.

entdecker93
11.08.2012, 11:14
Vielen Dank, dann ist das ja zum Glück doch um einiges Einfacher, als ich zunächst angenommen habe :)

entdecker93
11.08.2012, 11:28
Ich habe 2 Stromquellen... Einmal die 5 Volt vom USB-Anschluss und die 12 Volt von der Batterie. Muss die Source jetzt an die 12 Volt oder an die 5 Volt?

entdecker93
11.08.2012, 11:44
Brauche ich da nicht ein MISFET/MOSFET?

entdecker93
11.08.2012, 12:15
Okay, ich habe es jetzt :)

markusj
11.08.2012, 12:19
MISFET? Noch nie gehört. Eher MOSFET (alias FET). Der vorgeschlagene IRLZ34 ist ein FET.

Dann die Spannungsversorgung. Du hast im wesentlichen zwei verschiedene Möglichkeiten.
Option A: Du trennst die USB-Seite komplett von der Batterie-Seite. Es gibt keine leitfähige Verbindung von einer zur anderen Seite. Vorteil: Begeht deine Endstufe Selbstmord, überlebt das der USB-Port deines Rechners. Nachteil: Ein höherer Schaltungsaufwand (Optokoppler). In dem Falle ist Source der FETs gegen GND/Minuspol der Batterie geschaltet (GND/Masse des Leistungsteils, die komplett getrennt ist von USB GND/Masse).

Option B: Du verbindest USB-GND/Masse mit GND/Minuspol deiner Batterie. Das vereinfacht die Schaltung, es gibt aber ein (geringes) Risiko, dass die Schaltung bei einem Defekt deinen USB-Port röstet. In dem Fall ist Source der FETs gegen den gemeinsamen GND/Masse geschaltet.

mfG
Markus