Forum: Analoge Elektronik und Schaltungstechnik Schaltung für PWM Ausgang


von Frank K. (digidax)


Lesenswert?

Hallo Experten,

ich habe einen Teensy 3.2, der am PWM Ausgang 3,4 V bringt.
Nun möchte ich einen Servo anschließen, der aber 5 V PWM Spanung möchte, 
Frequenz 100 Hz. Eine Externe Spannungsquelle liefert 5 VDC für den 
Teensy. Für die Schaltung Brauche ich eine NPN Transistor, einen 
Basiswiderstand, der den PWM Ausgang mit der Basis des Transitors 
verbindet. Leider hört hier mein Elektronik Wissen auf. Der 5V Ausgang 
sollte gegenüber dem PWM Ausgang nicht invertiert sein. Könntet ihr mir 
bitte bei der Auslegung der Widerstände und Schaltung helfen? Ist 
wahrscheinlich für Euch ein Klacks.

lg Frank

von hinz (Gast)


Lesenswert?

74HCT00 reicht für zwei Servos, 74HCT04 sogar für drei, usw.

von Frank K. (digidax)


Lesenswert?

Danke. Mit dem 74HCT00 löse ich also das Invertierungsproblem? Eine 
Lösung nur mit Transistor(en) gibt es wohl nicht?

von Thomas E. (picalic)


Lesenswert?

Frank K. schrieb:
> ich habe einen Teensy 3.2, der am PWM Ausgang 3,4 V bringt.
> Nun möchte ich einen Servo anschließen, der aber 5 V PWM Spanung möchte,

Erstmal würde ich in Frage stellen, ob das Servo überhaupt 5V am 
Signaleingang braucht - nur, weil es mit 5V versorgt wird, heißt das ja 
nicht, daß der Signaleingang für "High" auch auf 5V gehen muss. Die 
üblichen (Modellbau-)Servos sind mit TTL-Pegeln glücklich - da genügt >= 
2.4 Volt als High-Pegel.

Sonst braucht man einen NPN-Transistor und zwei Widerstände (z.B. je 4,7 
kOhm): einen zwischen Basis des Transistors und +3,3V 
Versorgungsspannung, Emitter wird direkt an den Teensy-Ausgang 
geschaltet, und zwischen Kollektor und +5V kommt der andere Widerstand. 
Am Kollektor liegt dann das Servo-Signal (0 und 5V) an.

von hinz (Gast)


Lesenswert?

Frank K. schrieb:
> Danke. Mit dem 74HCT00 löse ich also das Invertierungsproblem?
> Eine
> Lösung nur mit Transistor(en) gibt es wohl nicht?

Nein, einfach zwei Gatter hintereinander schalten.

Man kann natürlich auch einen 74HCT08 nehmen...

von Frank K. (digidax)


Angehängte Dateien:

Lesenswert?

@ Thomas Elge:

Das ist ein Servo aus dem KfZ Bereich, auf das Datenblatt warte ich 
noch. Die 5 V waren von einem Mitarbeiter der Herstellerfirma geraten, 
darum will er mir das Datenblatt zusenden. Schaltplan anbei OK?

Danke, Frank

von John T. (Gast)


Angehängte Dateien:

Lesenswert?

Frank K. schrieb:
> Lösung nur mit Transistor(en) gibt es wohl nicht?

Pegelwandler mit FET benötigt nur einen Transistor.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Frank K. schrieb:
> Die 5 V waren von einem Mitarbeiter der Herstellerfirma geraten, darum
> will er mir das Datenblatt zusenden.
So lange würde ich noch warten.
Ich verwette mein Handy drauf, dass dem Servo auch die 3,3V am Eingang 
als "high" ausreichen (aber das ist auch schon alt, das Handy... ;-)

von Thomas E. (picalic)


Lesenswert?

Frank K. schrieb:
> Schaltplan anbei OK?

Ja.

John T. schrieb:
> Pegelwandler mit FET benötigt nur einen Transistor.

Pegelwandler mit bipolarem Transistor auch. Bidirektionalität braucht er 
ja nicht.

von Frank K. (digidax)


Lesenswert?

Hab die Schaltung von Thomas mal so zusammen gelötet, als Transistor 
einen BC 560 genommen. Statt den Servo habe ich nur einen Oszi dran, der 
Pegel Vrms ist nun 4,11 V aber der Pegel wird nicht mehr auf 0 sondern 
3,9 gezogen. Liegt das daran, dass der Oszi zu hochohmig ist und ich 
daher eine Last parallel zu Oszi brauche? Wie groß müßte der Widerstand 
sein?

Die FET Variant ist interesant, falls das mit dem Bipolaren Transistor 
nicht geht, werde ich diese dann ausprobieren.

lg Frank

: Bearbeitet durch User
von Thomas E. (picalic)


Lesenswert?

Frank K. schrieb:
> als Transistor
> einen BC 560 genommen.

Das ist ein PNP-Transistor! Du brauchst einen NPN.

von Frank K. (digidax)


Lesenswert?

Na Klasse, zwei Tage umsonst rumgeschlagen. So dumm kann man ja gar 
nicht sein. Werde jetzt einen BC 337 nehmen.

von Frank K. (digidax)


Lesenswert?

... und siehe da, funktioniert perfekt.
Vielen Dank an alle die mir geholfen haben.

von Frank K. (digidax)


Lesenswert?

So, nun muß ich trotzdem noch mal fragen. Der Servo ist nämlich ein 
ziemlich cleveres Kerlchen:

Am Steueranschluss legt er aller 2 sec. 12 V an. Das Motor Steuergerät 
(ECU) scheint damit zu überprüfen, ob der Motor angeschlossen ist. Das 
wäre ein interesantes Feature für mich, indem ich das Signal über einen 
Spannungsteiler auf einen Eingang des Teensy lege und auswerte. Aber das 
ist der 2. Schritt.

Der Drehwinkel des Servos wird gesteuert wie folgt:
ein Zylkus dauert 10 ms (also 100 Hz).
Auf-Stellung: 9 ms auf Masse
Zu-Stellung: 1 ms auf Masse

Nun ist mein Schaltplan ja völlig falsch, da ich an den Setueranschluss 
5 V triggere. Außerdem müßte ich meine Schaltung mit einer Diode vor der 
12 V Kontrollspannung schützen.

Wie müßte ich nun die Schaltung mit dem Transitor bauen?

von hinz (Gast)


Lesenswert?

Datenblatt des Servoantriebs?

von Frank K. (digidax)


Lesenswert?

Leider (noch) nicht, den 12 V Keep alive habe ich selber herausgefunden, 
die PWM Verhältnisse aus einem Forum, dort wurde direkt am Auto 
gemessen.

von Frank K. (digidax)


Lesenswert?

eigentlich doch am Teensy Ausgang einen 4,7k an die Basis des 
Transistors, Kollektor auf das Steuerkabel und Emitter auf Masse?

von Frank K. (digidax)


Lesenswert?

Hab das nun so gemacht, das Steuerkabel wird für 1 ms auf Masse gezogen 
und für 9 ms offen gelassen. Nach 3 Sekunden für 9 ms auf Masse und dann 
für 1 ms offen gelassen. Der Transistor zieht, wenn die 12 V vom Servo 
kommen sauber auf 210 mV herunter. Leider macht außer einem Selbsttest 
der Motor nichts :-(
Im Oszi sieht's sauber aus, auch die Zeiten stimmen.

Das PWM Signal erzeuge ich mit "analogWrite(9, 26);" Im Setup habe ich 
die PWM Frequenz auf 100 Hz gesetzt: "analogWriteFrequency(9, 100);"

Macht es für den Servo ein Unterschied, ob ob erst 1 ms high und dann 9 
ms LOW oder erst 9 ms LOW und dann 1 ms hight kommt? Falls ja, wie kann 
ich im Sketch das dann umkehren?

lg Frank

: Bearbeitet durch User
von Harald W. (wilhelms)


Lesenswert?

Lothar M. schrieb:

> (aber das ist auch schon alt, das Handy... ;-)

...und läuft noch mit fünf Volt? :-)

von Frank K. (digidax)


Angehängte Dateien:

Lesenswert?

Wenn ich nun am Ausgang mein PWM Signal mit 12 V möchte, reicht es statt 
5V nun 12V anzulegen oder muss ich noch den Widerstand am Kollektor 
ändern?

von Thomas E. (picalic)


Lesenswert?

Frank K. schrieb:
> Wenn ich nun am Ausgang mein PWM Signal mit 12 V möchte, reicht es statt
> 5V nun 12V anzulegen

Ja, das reicht. Da bei dieser Schaltung der Low-Ausgangsstrom auch über 
den Teensy-Ausgang fließt, muß man das bei der Dimensionierung beachten. 
Kenne jetzt die Spezifikation des Teensys nicht, aber hier fließen ca. 3 
mA (ca. 2,5 mA durch den Pull-Up Widerstand an 12V, plus 0,5 mA durch 
den Basis-Widerstand), was der Teensy vermutlich problemlos kann. Hinzu 
kommt ggf. noch ein unbekannter Strom durch den Eingang des Servos - 
evtl. hat das ja auch schon einen Pull-Up Widerstand eingebaut und man 
könnte auf den externen R verzichten. In dem Zusammenhang wäre 
interessant, wie die Sache mit dem Keep-Alive funktioniert - d.h. wie 
wird auf 12V gezogen? Vermutlich auch über einen Widerstand, sonst 
könnte der Teensy das ja nicht auf 200 mV herunterziehen, wie Du oben 
schreibst. Also evtl. schaltet das Servo seinen internen Pull-Up 
Widerstand zwischen 5V und 12V, das wäre ja logisch, um einerseits durch 
Ziehen auf Masse ein Steuersignal anzulegen, und andererseits durch 
Messen der Spannung bzw. Messen des Stroms bei Low die Rückmeldung vom 
Servo zu haben, daß es noch da ist.

Frank K. schrieb:
> eigentlich doch am Teensy Ausgang einen 4,7k an die Basis des
> Transistors, Kollektor auf das Steuerkabel und Emitter auf Masse?

Aber dann wäre das Ausgangssignal invertiert!

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.