PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PWM Signal vom µC über Transistor schalten



WerWolf2009
27.08.2008, 10:55
Hallo ihr Robotter *hrrhrr*,

wie viele wohl schon dieses Wortspiel gebracht haben ^^


Ich baue zur Zeit mit einem Freund zusammen einen Licht-Scanner.
Erfloge können wir bereits verzeichnen: das Farbrad ist eingebaut, die Optik, Licht und Lüfter.

Mein eigens geschreibenes Programm in VB kann über den LPT Port Signale ausgeben, und soll so später Transistoren schalten.

Leider haben wir aber folgendes Problem, mit welchem wir jetzt echt am Ende unserers Lateins sind:

Im Programm für den PC (meine LPT-Steuerung) gibt Strom auf einen Pin des LPT Kabels. Dieser Strom soll als Schaltstrom den Transistor dazu bewegen das PWM Signal durch zu schalten.

Das PWM Signal wird von 2 µC's erzeugt.

Leider haben wir "nur" das Problem das sobald Strom an der Platine sowie am Servo-Motor anliegt, sofort der Motor dreht - wobei KEIN Schalt-Strom (okay... mein Messgerät sagt das im ausgesch. Zustand des LPT Pins 0,01 bis 0,02 V anliegen) auf dem Transistor liegt.

Dennoch dreht der Motor. Irgendwas (und es kann eigentlich nur der Transistor sein, da er der einzige Unterbrecher ist) lässt das PWM Signal zum Motor gelangen.

Nachfolgend eine Zeichnung wie es in etwa funktioniert.
Auf der Platine sind noch Wiederstände. Fragt mich nicht wofür. Die hat Lucas gebaut... ich habe da auch nur einen kurzen Blick drauf geworfen.

http://werwolf.ath.cx/robonetz_schaltung.jpg

Die beiden µC erzeugen ein schnelles, und ein langsames PWM Signal - dies bewirkt den Motor zum links/rechts drehen.

Die Transistoren können auch nur geschaltet werden, wenn der andere LPT-Pin Spannungsfrei ist. Dies ist softwaremäßig so programmiert.

Um bereits eines ausschließen zu können: Wir haben es bereits mit PNP und NPN Transistoren ausprobiert. Dem Motor war es jedoch egal...

Wer sich für unser Projekt interessiert findet in meiner Gallerie Bilder, sowie bei MyVideo ein Video des testlaufs.
Im Video ist unser Steuerung ach von der Platine gekommen, jedoch haben Taster das Signal geschaltet.

Video: http://www.myvideo.de/watch/4957309/Eigenbau_Scanner_mit_LPT_steuerung

Gallerie: http://werwolf.ath.cx/version3/index.php?option=com_easygallery&act=categories&cid=88&Itemid=33

Habt ihr eine Idee was falsch sein könnte ?!

Hubert.G
27.08.2008, 11:12
Die Schaltung ist etwas zu dürftig um eine Aussage zu treffen.
Was sind das für Transistoren und gibt es Unterlagen zu dem Servomotor.

WerWolf2009
27.08.2008, 11:22
Die Servos: http://www.conrad.de/goto.php?artikel=230500

Transistoren kann ich zur Zeit nicht sagen.
Werde ich so schnell wie möglich herausfinden.

Hubert.G
27.08.2008, 11:28
Das ist doch ein normales Modellbauservo, entweder habe ich da was falsch verstanden oder ihr sein auf dem Holzweg.
Wie habt ihr das Servo mit Taster gesteuert?

WerWolf2009
27.08.2008, 12:02
Richtig, ein Modellbau Servo.

Wir haben ihn mit Tastern gesteuert meine ich wie folgt:

Statt den Transistoren haben wir Taster genommen, um damit das PWM Signal durchzuschalten.

WerWolf2009
27.08.2008, 12:18
doing ^^ einen Gefunden:

Ein Transistor fliegt hier noch herum. Auf diesem Steht :
BD243C
CQ415

radbruch
27.08.2008, 12:24
Hallo


Das PWM Signal wird von 2 µC's erzeugt.
Was sind das denn für µCs? Warum 2? AVRs (z.B.) können Servos direkt ohne Transistor ansteuern. Du könntest die LPT-Pins (4+5?) direkt auf den jeweiligen µC legen (eventuell über einen Spannungseiler) und so das PWM ein- oder ausschalten.

Zur Transistorschaltung: Der Transistor sollte in Reihe mit einem Widerstand einen veränderlichen Spannungsteiler zwischen µC-PWM und GND bilden. Bei gesperrtem Transistor (hochohmig) würde das PWM-Signal über den Widerstand zum Servo gelangen, bei durchgeschaltem Transistor (niederohmig) würde das Signal über den Vorwiderstand gegen GND geschaltet werden, am Servo würde keine Signal ankommen. Bei deiner Schaltung "schwebt" der Transistor in der Signalleitung. So erhält das Servo offensichtlich noch genug vom PWM-Signal um darauf zu reagieren.

Gruß

mic

Hubert.G
27.08.2008, 12:28
Genau das ist etwas verwirrend. Kommt das PWM Signal vom µC oder über die LPT. Was wird von wo angesteuert.
Ein BD243 für die PWM Signale ist unfug. Das ist ein Leistungstransistor.

WerWolf2009
27.08.2008, 12:37
Das PWM Signal kommt vom µC.
Der LPT PIn gibt nur das Schaltsignal.

(Also wenn W gedrückt wird, ist auf Pin 5 spannung. Damit soll dann der µC / Transistor reagieren)

Hubert.G
27.08.2008, 12:54
Das jetzt so freifliegend zu beantworten ist schwierig.
Ich würde da einmal einen BC547 oder dergleichen nehmen.
Von der Basis etwa 10k nach GND und zu LPT.
Kollektor zum µC und Emitter zum Servo.
Ich weiss nicht wie du die Transistoren gezeichnet hast, von oben gesehen ist die Belegung, von links, Basis, Kollektor, Emitter

WerWolf2009
27.08.2008, 12:59
Hallo.

Also, dann würde der LPT Pin direkt an den µC kommen.


Da ich PHP und VB programmieren kann und von Bascom keine Ahnung habe würde ich die Programmierung jeodch logisch gesehen so schreiben:

[php:1:78712cc84c]





If PortD.1 = 1 then // Wenn LPT Pin strom führt ist der ja 1
do // Loop schleife einleiten

[PWM Signal für nach links] // hier kommt dann der Code fürs PWM Signal

Loop Until PortD.1 = 0 // Wenn LPT Pin keine Spannung ist PortD.1 wieder 0
end if // schleife für nach links beenden
[/php:1:78712cc84c]

somit würde ja die LOOP nur ausgeführt werden wenn die IF schleife erfüllt ist. DIes ist sie ja nur, wenn Strom vom LPT Pin anliegt.
Dann geht die Loop schleife los, und beendet sich erst wenn der LPT Pin wieder kein Strom führt.
Dann geht die If Schleife zu, sodass die Loop nicht wieder anfangen kann.


Das ganze kommt dann natürlich nochmal für nach rechts.

Soweit richtig ?

@Hubert G.: Hört sich auch interessant an.
Lucas bastelt es gleich / nachher aufm Steckboard.

Hubert.G
27.08.2008, 13:08
Nein, der LPT-Pin an die Basis, Kollektor zum µC und Emitter zum Servo.
Wenn ihr das LPT-Signal an den µC bringt und damit das PWM-Signal steuert wäre das natürlich die schönere Lösung.

WerWolf2009
28.08.2008, 10:23
ich werde noch Wahnsinnig:

Nächstes Prob..:
ich will mit dem Schaltsignal vom LPT (ungefähr 3,33 V) einen Transistor
schalten, der wiederum soll einen Motor schalten.


Diesen Transistor habe ich: http://www.datasheetcatalog.org/datasheet/stmicroelectronics/5053.pdf

Und es interessiert ihn mal wieder überhaupt nicht ob eine Schaltspannung anliegt oder nicht.

Die LED die probehalber dran hängt leuchtet fröhlig vor sich hin.

Was läuft da mal wieder schief ?

Hubert.G
28.08.2008, 13:01
Der Emitter auf GND, die Basis über 1k zum LPT-Pin und über 10k auf GND, den Kollektor zum Motor und die zweite Seite dann auf +.
Nur wird die LPT nicht genügend Strom bringen um den Transistor durchzuschalten. Wieviel Strom braucht der Motor?

WerWolf2009
28.08.2008, 14:00
der motor läuft bei ungefähr 2 Volt an, bis 12V kann er.

WerWolf2009
28.08.2008, 18:20
BREAK

Okay leute, ich gebe auf.

Ich bin echt gewillt zu lernen. Aber der Transistor schaltet trozdem.

Ich frage jetzt einfach ganz blöde:

Könnt ihr mir bitte sagen, welche Teile* ich brauche, damit ich einen Motor (ab 2 V, bis max. 12 läuft er - wie viel nachher baubedingt raus kommt ist mir egal. Nur nicht unter 2V ;-) über einen Transitor o.ä. mit einem LPT Pin schalten kann ?

* Bezeichung bitte, ich fahr gleich morgen dann zu Conrad.

Übrigens: die Pins des LPT sind stark genug um eine LED (die "normalen" [Blau]) zum leuchten zu bringen.

Ich lauf hier bald auf dem Zahnfleisch....

WerWolf2009
28.08.2008, 19:44
Okay... hab da mal was gefunden:

http://www.strippenstrolch.de/grafiken/lpt-port-profan8.GIF

Das müsste dann ja so fast hinkommen mit dem was ich will.

ich will jedoch nicht ne LED schalten, sondern einen Motor, welcher natürlich etwas mehr mA zieht. Kann ich die Teile dennoch so belassen, oder brauche ich andere ?

Besserwessi
28.08.2008, 20:07
Für einen kleinen Motor bis etwa 300 mA könnte der in der Schaltung gezeigte Transistor noch gehen, sonst müßte man einen größeren und ggf. einen Darlington Transistor nehmen. Für einen Motor braucht man aber unbedingt noch eine Freilaufdiode parallel zum Motor, aber normalerweise in Sperrrichtung. Mit PWM funktion sollte das wenn möglich keine langsame Gleichrichterdiode wie 1N4001 sein. Dafür kann man sich die Dioden D5 an der Basis des Transistors sparen. Wenn überhaupt solle sie eher andersherum.

Für mehr Strom könnte man als Transistor einen der folgenden nehmen:
BD679 (bis etwa 3 A) oder TIP142, BDW83, (bis etwa 10 A). Bei diesen Darlingstontransitoren darf dann D5 nicht so wie im Plan sein.

WerWolf2009
28.08.2008, 20:15
okay. Danke dir ^^

Was ist eine Freilaufdiode ? //Erledigt. Google sei dank
Was für einen Darlington Transistor ? //Erledigt. Google sei dank

Was meinst Du mit

"ür einen Motor braucht man aber unbedingt noch eine Freilaufdiode parallel zum Motor, aber normalerweise in Sperrrichtung. Mit PWM funktion sollte das wenn möglich keine langsame Gleichrichterdiode wie 1N4001 sein." ?

Was für eine Diode brauch ich denn dann ?
Bei DIESER Schaltung brauche ich kein PWM Signal, da kommt einfach der Strom vom LPT Pin1 drauf.

Die PWM Geschichte ist für die Servo Motoren.
Derzeit rede ich von einem normalen 12Volt DC Motor.

Besserwessi
28.08.2008, 20:24
Wenn es nur darum geht einen normalen motor ein/auzuscahlten, dann kann die Dioden einen normale 1N4001 oder so sein, wenn 1 A Strom reicht. Wie viel Strom braucht denn der Motor ? Ein Erklärung bibt es hier :
https://www.roboternetz.de/wissen/index.php/Diode#Freilaufdiode

Ein Darlington Transistor hat eine Größere Stromverstärkung und wird hier bei Strömen über etwa 300 mA gebraucht, denn der LPT Port liefert nur etwa 1-2 mA an Strom. Die BD679, TIP142 usw. sind Darlingtontransistoren.
Die Erklärung im Wissensbereich ist zugegeben etwas kurz:
https://www.roboternetz.de/wissen/index.php/Transistor#Darlingtonschaltung

WerWolf2009
28.08.2008, 20:35
Okay, danke.

Umschalten: jetzt zum PWM

So... jetzt rede ich von dem Teil mit dem PWM Modul:

es sieht wie folgt aus:

2 µC's generieren ein schnelles (0,51ms) und ein langsames (0,4ms) PWM Signal.

Das ganze soll mit Transistoren von einem Pin des LPT Ports geschaltet werden. Das Problem welches wir ja bereits hatten: es hat den Motor nicht interessiert ob die Transistoren "durchgang" hatten oder nicht.


Hallo


Das PWM Signal wird von 2 µC's erzeugt.
Was sind das denn für µCs? Warum 2? AVRs (z.B.) können Servos direkt ohne Transistor ansteuern. Du könntest die LPT-Pins (4+5?) direkt auf den jeweiligen µC legen (eventuell über einen Spannungseiler) und so das PWM ein- oder ausschalten.

Zur Transistorschaltung: Der Transistor sollte in Reihe mit einem Widerstand einen veränderlichen Spannungsteiler zwischen µC-PWM und GND bilden. Bei gesperrtem Transistor (hochohmig) würde das PWM-Signal über den Widerstand zum Servo gelangen, bei durchgeschaltem Transistor (niederohmig) würde das Signal über den Vorwiderstand gegen GND geschaltet werden, am Servo würde keine Signal ankommen. Bei deiner Schaltung "schwebt" der Transistor in der Signalleitung. So erhält das Servo offensichtlich noch genug vom PWM-Signal um darauf zu reagieren.

Gruß

mic

Ich verstehe zu diesem Part leider nur Bahnhof :(
Könntet Ihr / Du vielleicht einen Schaltplan zeichnen, oder nocheinmal mit anderen Worten das ganze erklären?

Was für Teile brauche ich, damit ich diese Schaltung zum funktionieren bringen kann ?

Auch diese Teile würde ich dann gleich morgen besorgen.

Grüße
Wolf

Hubert.G
28.08.2008, 21:19
Ihr habt den GND des LPT aber schon mit dem GND der µC und Servostromversorgung verbunden.

WerWolf2009
28.08.2008, 21:27
jop.

Funzt aber dennoch nicht...

WerWolf2009
29.08.2008, 15:18
Hallo.

Heute 4 Stunden bei Conrad gewesen und einige tolle DInge gefunden ^^

Leider funktioniert jedoch gar nichts in der Schaltung.
Ich habe einmal den BDW83B eingebaut. Leider rührt sich nichts.

Anbei eine Schaltzeichnung. Vielleicht könnt ihr den Fehler ja entdecken.

Das Datenblatt zum Transistor: http://www.datasheetcatalog.org/datasheet/PowerInnovations/mXttvvv.pdf

Besserwessi
29.08.2008, 16:15
Die Diode ist an der falschen Stelle. So wie sie eingezeichent ist, wird die Eingangsspannung auf etwa 0,7 V begrenzt. Der BDW83 ist ein darlington Transsitor und brauch daher mindestent 1,2 V zum durchschalten.
Dafür fehlt die Freilaufdiode, die den Transisitor vor Induktionsspannungen zu schützen. Die Freilaufdiode gehört parallel zum Motor, mit der Kathode (Ring) zur positiven Versorgungspannung und der Anode zum Kolektor des Transitors.

WerWolf2009
29.08.2008, 17:43
es FUnktioniert !!!!
fettes Dankeschön !!
Weiteres, wie z.b. schaltung jetzt und so weiter folgen. Brin im Stress.

WerWolf2009
30.08.2008, 22:44
So. Mehr Zeit ^^

hier findet Ihr das Video.
Durch eure hilfe ist es nun möglich geworden, das Farbrad und den Shutter über den PT Port zu steuern.

http://www.myvideo.de/watch/4995856

Ihr sagt, das man eine Freilauf-Diode arallel zum Motor schalten soll.
Egal wie ich sie drehen würde. Es währ doch ein Kurzschluss:
- + Pol, sperrung - , dennoch würde + durchgehen und auf - treffen
- anders herum ja auch.

Versteh ich da etwas nicht ?!

Außerdem habe ich etwas gelesen über den Basiswiderstand.
Laut der Rechnung:

(Daten des BDW83B)
hFE: 750
iC: 6A

Ib = iC /hFE
Ib = 6 / 750
Ib = 0,008
==========

Rb = (1,4-0,7)/Ib
Rb = (0,7) / 0,008
Rb = 87,5 Ohm
=============

Der Rb währe also der Wert für meinen Basiswiderstand ?
Ich könnte dann ja abrunden auf einen glatten wert und dann einen Widerstand an die Basis schalten.
Dieser bewirkt dann doch, das am LPT Pin nicht zu viel Leistung gezogen werden kann, stimmts ?!
Ansonsten bitte verbessern :)

Hubert.G
31.08.2008, 09:35
Wenn der Motor nach beiden Seiten dreht dann brauchst du vier Dioden. Auf jeder Seite des Motor je eine nach GND und +, die Kathodenringe müssen nach + zeigen.
Deine Rechnung ist nicht ganz richtig.

Rb = (1,4-0,7)/Ib
Rb = (0,7) / 0,008
Rb = 87,5 Ohm

Wie du in der ersten Zeile auf Rb = (1,4-0,7)/Ib kommst ist mir nicht klar, es sollte Rb=(max. Basisspannung - BE-Spannung)/Ib
max. Basisspannung ist die Spannung die max. auf der Basisleitung anliegen kann, bei LPT nehme ich mal an 5V.
Die Basis-Emitterspannung Vbe(on) ist laut Datenblatt bei deinem Transistor 2,5V.
Das wäre dann (5 - 2,5)/0,008 = 312,5

WerWolf2009
31.08.2008, 11:33
Hallo,

anbei 2 Schaltungen.

Die eine ist die, die zur Zet die Arbeit hier verrichtet, und die andere die Version wie ich euch verstanden habe.

Der Motor dreht nur in eine richtung, daher sollte doch eine Diode genügen. Richtig ?

Habe ich es so richtig gemacht ?

Grüße
Wolf

Hubert.G
31.08.2008, 14:30
Der Versuch 1 sieht gut aus. Die Diode ist richtig so.

WerWolf2009
31.08.2008, 16:43
okay danke.

Damit ich es auch verstehe: was bringt die Diode denn da jetzt ?
Wenn der Motor weiter dreht, wenn kein Strom drauf ist, dann ist er ja ein Generator. Was soll denn aber nun die DIode da ?
Der Motor würde da doch jetzt Strom erzeugen und an den Polen abgeben wie er ankommen würde.
Sprich: + bleibt + und - bleibt -....

Hubert.G
31.08.2008, 17:54
Nein, als Generator ist die Polarität umgekehrt, damit wird die erzeugte Spannung von der Diode kurzgeschlossen.

Besserwessi
31.08.2008, 21:36
Wenn es nur die Spannung wäre die der Motor als Generator erzeugt, wäre das noch nicht mal so schlimm, das Wäre etwas weniger als die Spannung im Betreib und damit hätte der Transistor noch keine Probleme. Die Generatorspannung hat auch für die Diode das gleiche Vorzeichen wie die Betriebsspannung und wird daher auch nicht kurzgeschlossen. Man erkennt das schon daran das der Motor nicht extra abgebremst wird.

Das Problem ist aber, das der Motor noch etwas Induktivität hat und dadurch will der Strom einfach nicht plötzlich aufhören kann zu fließen. Die Spannung kann ohne die Freilaufdiode weit über die Betreibsspannung ansteigen und den sonst recht robusten Transistor schädigen. Diesen relativ kurzen Induktionsspannungpuls schließt die Freilaufdiode kurz.