PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ansteuerung Motor mit 1,5V



Zeitsklave
14.05.2015, 11:07
Hi!
Ich hätte hier mal eine kleine Problemstellung ;)

Die spezielle Projektbeschreibung erspar ich euch mal, dafür müsste ich ein bisschen weiter ausholen...

Letztenendes möchte ich mit einem Arduino Nano, den ich mit 5V füttere, einen kleinen Gleichstrommotor ansteuern, der auf ca. 1,5V laufen soll. Dürfen auch 2V sein, ich denk das ist nicht ganz so kritisch.
Der Motor soll per Arduino links und rechtsrum laufen können.
Stromverbrauch liegt irgendwo bei 20-50mA, je nach Belastung.
Ich würde für die Spannungsregelung einen LM 317 verwenden.

Bei der entsprechenden Schaltung bräuchte ich jetzt ein bisschen Hilfe, Transistorschaltungen sind mir irgendwie suspekt ;)
Ich hab folgendes im Netz gefunden:
http://www.tech-ecke.de/index_quereinstieg.htm?/elektronik/transistor_motor_umpol_schaltung.htm
Ich weiß nicht inwieweit das für mein Projekt geeignet ist, bzw wie ich die Schaltung abändern muss...

Ich bin für jede Hilfestellung sehr dankbar!! :)

Geistesblitz
14.05.2015, 11:59
Wäre es da nicht praktischer, den Motor über eine H-Brücke direkt mit 5V zu verbinden und den exakten Wert dann mittels PWM einzustellen? 1,5V-2V sind schwierig, schließlich fällt ja an den Transistoren auch immer ein wenig Spannung ab. Auf die Art würdest dir auch den zusätzlichen Spannungsregler sparen und mittels der PWM ließe sich dann auch die Geschwindigkeit des Motors per Software einstellen.

Zeitsklave
14.05.2015, 17:06
Ja, das wäre wohl tatsächlich praktischer... Spart ja auch Strom, was in dem Fall auch sehr sinnvoll ist.
Vorausgesetzt natürlich der Motor und die H-Brücke machen das mit!
Würde dann der Aufbau wie in dem Link funktionieren?
Könnte ich die Transistoren problemlos durch BC368 ersetzen? Die hätt ich nämlich schon hier ;)
Und muss ich dann mit den Widerstandswerten was beachten?

Sorry für die vielen Fragen, aber Transistorschaltungen sind für mich einfach böhmische Dörfer ;)

ranke
14.05.2015, 17:37
Transistorschaltungen sind für mich einfach böhmische Dörfer
Dann wäre vielleicht der Einsatz eines integrierten Motortreibers (z.B. L293D (https://cdn-reichelt.de/documents/datenblatt/A200/l293.pdf)) der Weg des geringeren Widerstands.

PICture
14.05.2015, 23:23
Hallo!

@ Zeitsklave

Vom ranke erwähnte Verwendung eines integrierten Motortreibers reduziert gleichzeitig die Ausgangsspannung von 5 V auf ca. 3V und der von dir gepplanter LM317 entfällt. Der Motor braucht sicher keine gut stabilisierte Spannung und falls nötig kann man sie noch per seriell mit Motorversorgung (VCC2) geschaltete Dioden weiter reduzieren.

Peter(TOO)
15.05.2015, 03:30
Hallo,

Bei der entsprechenden Schaltung bräuchte ich jetzt ein bisschen Hilfe, Transistorschaltungen sind mir irgendwie suspekt ;)
Ich hab folgendes im Netz gefunden:
http://www.tech-ecke.de/index_quereinstieg.htm?/elektronik/transistor_motor_umpol_schaltung.htm
Ich weiß nicht inwieweit das für mein Projekt geeignet ist, bzw wie ich die Schaltung abändern muss...

Das ist eine H-Brücke, allerdings diskret aufgebaut, das gibt's auch fertig in einem IC.
Allerdings scheint die Schaltung für 12V im Automobil ausgelegt zu sein. Also für deine Anwendung so nicht brauchbar.

Den LM317 würde ich aber auch sein lassen und die Spannung über PWM regeln. Das senkt den Energieverbrauch enorm. Bei deinen Verhältnissen um die Grössenordnung 3.

MfG Peter(TOO)

Zeitsklave
15.05.2015, 20:31
OK, ein fertiger Bausein wäre natürlich die bequemere Variante ... allerdings müsste ich den erst bestellen, und ein paar Transistoren hätte ich noch da ;)

Die Sache per PWM regeln klingt auf jeden Fall vernünftig, das werd ich auch so machen.

Wie müsste denn die Brücke aussehen, damit sie für meine Zwecke funktioniert? Die in dem Link könnte man doch sicher entsprechend modifizieren...
Bzw Treiberbaustein wäre dann wohl L293D?

Unregistriert
16.05.2015, 04:57
Würde meinen, daß du einiges mehr an Infos benötigst; nicht nur den verlinkten Absatz
http://rn-wissen.de/wiki/index.php/Getriebemotoren_Ansteuerung#Ansteuerung_mit_Treibe r_ICs

Klebwax
16.05.2015, 06:54
50mA sind ja nun nicht die pralle Masse, so in der Kategorie Handy-Vibrator oder Solarmotor. Die meisten Brücken sind da overkill. Mit zwei N-FETs und zwei P-FETs läßt sich da schon etwas machen, insbesondere da man eine Versorgung nehmen kann, die der Spannung der Ansteuerung entspricht. 100mA hält eigentlich jeder Transistor aus, der typisch im zweistelligen Ohmbereich liegende RDSON bremst den Anlaufstrom. Auf die Wunschdrehzahl (bzw Spannung) kommt man durch eine passende PWM.


Transistorschaltungen sind mir irgendwie suspekt

Transistoren als Schalter sind ja nicht so schwer zu verstehen, gute Gelegenheit was zu lernen.

Hier gabs schon mal einen Thread dazu:
https://www.roboternetz.de/community/threads/31168-Kleiner-Motortreiber-fuer-kleine-Motoren
oder auch
https://www.roboternetz.de/community/threads/59809-H-Br%C3%BCcke-mit-2-getrennten-Pegeln

Und hier wird sich auch etwas finden lassen:

http://www.solarbotics.net/library/circuits/driver.html

MfG Klebwax

Zeitsklave
16.05.2015, 07:25
Solarmotor triffts relativ gut ;)

Naja, Transistoren als Schalter sind auch einfach, hab ich auch schon öfter frei Schnauze damit gebastelt. Zuletzt um die Hintergrundbeleuchtung eines kleinen TFTs schalt- und dimmbar zu machen, hat auch perfekt funktioniert :)
Aber sobald sich mehrere Transistoren gegenseitig beeinflussen wirds kompliziert. Wobei diese H-Brücke bei näherer Betrachtung auch nicht mehr ganz so schlimm ist, Sowas hab ich auch schon öfter mit Relais gebaut. Aber bei denen ist der Schaltzustand in jedem Fall eindeutig...

Jetzt aber erstmal lieben Dank für die ganzen Links, die werd ich mir jetzt mal in aller Ruhe antun.
Anschließend werd ich ein bisschen experimentieren und dann meine Ergebnisse berichten! :)

Zeitsklave
07.06.2015, 08:09
Ich wollte mich nochmal melden ;)
Also der L293D verrichtet seine Arbeit wunderbar :)
Nur ein Problem hab ich noch... Der Motor lässt den Arduino abstürzen :(
Scheinbar passiert das vor allem beim Umpolen. Eine Pause zwischen abschalten des einen Pins und einschalten des Anderen hat nichts gebracht.
Wenn ich permanent die Zustände der Variablen über Serial.print ausgeben lasse, scheint es etwas besser zu werden, aber halt nur ein kleines bisschen.
Einzige Abhilfe bisher ist, den PWM-Ausgang auf 255 aufzudrehen, dann sind die Probleme weg.
Am Motor hab ich mittlerweile drei Folienkondensatoren. 10nF von den Polen zum Gehäuse und 4,7nF zwischen den Polen. Zusätzlich noch 4,7nF direkt am Ausgang des Treibers. Leider vollkommen zwecklos.
Wenn ich die Strippe zum Motor direkt am Treiber ausstecke läuft alles bestens. Also wohl nur ein Problem mit der Entstörung des Motors.
Jemand eine Idee wie ich das in den Griff krigen kann?

Edit: Nicht zu vergessen, in die Spannungsversorgung des Treibers hab ich auch noch einen Elko mit 47uF (wenn ich das jetzt noch richtig erkennen kann) gehängt.
Außerdem hab ich gerade im Wiki gesehen, dass meine Werte am Motor vielleicht ein bisschen Klein gewählt sind. Die Werte hatte mir Google mehrfach ausgespuckt...

Nochmal Edit: Auch ein Abschalten des PWM-Ausgangs beim Umpolen (selbstverständlich mit Wartezeiten, nach dem Abschalten und vor dem Einschalten) hat keine Besserung gebracht. Der Gedanke war dass vielleicht das abbremsen des Motors durch Kurzschließen die Störungen bewirkt hat.

PICture
07.06.2015, 08:36
Nur ein Problem hab ich noch... Der Motor lässt den Arduino abstürzen :( Scheinbar passiert das vor allem beim Umpolen.

Angeblich wird beim Richtungwechsel nicht bis zum Stehenbleben des Motors abgewartet. Das führt zu enormen Erhöhung des Anlaufstroms und dadurch Einbruch der Versorgungsspannung, was den µC resetet. :confused:

Zeitsklave
07.06.2015, 08:45
Angeblich wird beim Richtungwechsel nicht bis zum Stehenbleben des Motors abgewartet. Das führt zu enormen Erhöhung des Anlaufstroms und dadurch Einbruch der Versorgungsspannung, was den µC resetet. :confused:

Naja, wie gesagt, ich hab auch schon reichlich Pausen eingebaut, die aber allesamt keine Abhilfe brachten.
Es ist ja auch nicht nur ein resetten des Chips (ein resest ist aber auch häufig dabei ;) ), sondern ein richtiger Absturz. Der Motor dreht dann endlos in eine Richtung und Arduino reagiert nicht mehr. die Letzte Ausgabe auf dem Serial Monitor sind dann nur ein paar Sonderzeichen, da wo nur zwei BOOLEAN stehen sollten...

Edit: sieht dann so ungefähr aus:


1 - 0
1 - 0
1 - 0
1 - 0
±‚j‚j
1 -�‚j‚j
1 - 0
1 - 0
1 - 0
1 - 0


Schon wieder Edit: Ich hab grad festgestellt, dass bei vorherigem Abschalten des PWM-Ausgangs das Problem nur noch viel schlimmer wird. Auch mit reichlich delays an mehreren Stellen ist hier nichts zu erreichen...
In der Verzweiflung sieht die Funktion zum Umpolen nach links momentan so aus:



void turn_left()
{
digitalWrite(pin_out_pwm, LOW);
delay(stop_ms);
digitalWrite(pin_out_right, LOW);
delay(stop_ms);
digitalWrite(pin_out_left, HIGH);
delay(stop_ms);
analogWrite(pin_out_pwm, motor_speed);
state_out_left = 1;
state_out_right = 0;
}


Wobei ich für stop_ms verschiedene Werte probiert hab, momentan bin ich bei 300 - aber ohne spürbare verbesserung ;)
Weit besser gehts so:



void turn_left()
{
digitalWrite(pin_out_right, LOW);
delay(stop_ms);
digitalWrite(pin_out_left, HIGH);
state_out_left = 1;
state_out_right = 0;
}


Wobei auch hier der Wert in stop_ms keine größere Rolle spielt...

Keine Sorge wegen delay an der Stelle, das Timing ist vollkommen unkritisch.
Vermutlich ist Arduino mit der ganzen Geschichte einfach nur unterfordert ^^


Edit³: Lt Empfehlungen des wikis hab ich jetzt zwischen die Motorpole einen 100nF Kondensator gebaut, das Gehäuse direkt auf GND gelegt und eine luftspule für die Anschlussdrähte gebastelt. Effekt: Keiner. Langsam wirds nervig.