Forum: Mikrocontroller und Digitale Elektronik Arduino PWM Ausgang


von Stefan (Gast)


Lesenswert?

Hallo Leute,

Ich bin schon 1h auf Fehlersuche und bin schon am Verzweifeln. Hab am 
Arduino gerade einen Motor über einen PWM Ausgang über einen Transistor 
geschaltet. Also Meine Basis mit Vorwiderstand hängt auf einen PWM 
Ausgang. Am Collector der Motor mit einer Freilaufdiode. Habe nun einen 
Potentiometer an einem Analogen Pin angeschlossen und frage mit der 
Funktion AnalogRead den Pin ab und steuere somit das PWM Signal an der 
Basis vom Transistor. Damit dies aber alles funktioniert muss ein 
Schalter gedrückt werden (realisiert mit einem Pull Down). Mein Problem 
liegt darin das nach loslassen des Schalters meine Basis noch einen 
gaaanz kleinen Strom bekommt und Ube 0,2V hat. Der Motor dreht sich zwar 
nicht aber man spürt ein ruckeln.

Wie kann das sein wenn ich schon am Anfang des Programms genau definiert 
habe WENN der Taster gedrückt wird das erst dann alles weitere kommt. 
Sollte er nicht gedrückt sei soll AnalogWrite(PWMPin,0) sein.

Ich bekomme am PWM Ausgangspin trotzdem iwergendwie eine Spannung heraus 
und einen minimalen Strom der den Transistor trotzdem leicht 
durchschaltet.

Von der Schaltung her sollte Alles passen, vielleicht liegt es am 
Programm? Ist der Befehl AnalogWrite(PWMPin,0) so ok?

Lg

von Andy H. (gastrelais)


Lesenswert?

Lad mal lieber das ganze Programm hoch. Wenn ich mein Arduino oder 
Attiny die Analogausgänge auf 0 setze, kommt da auch nichts.

von Stefan (Gast)


Angehängte Dateien:

Lesenswert?

Hier das Programm. Die if Abfrage mit Y>=255 ist deswegen das ich das 
Poti begrenze weils ja von 0 bis 1023 zählt.

von Joachim B. (jar)


Lesenswert?

am Besten wäre mal ein Schaltplan, darf auch Stift auf Papier sein.

Ich rate mal ins Blaue

Stefan schrieb:
> Also Meine Basis mit Vorwiderstand hängt auf einen PWM
> Ausgang.

also kein pulldown an der Basis die den Transistor auch sicher sperrt, 
nach dem power on sind die Pins ja erst mal auf Input und das könnte den 
Transistor schon leicht öffnen weil der pulldown an der Basis fehlt.

Stefan schrieb:
> Damit dies aber alles funktioniert muss ein
> Schalter gedrückt werden (realisiert mit einem Pull Down).

da würde ich eher pullup nehmen, die sind halt sicherer.

Stefan schrieb:
> Mein Problem
> liegt darin das nach loslassen des Schalters meine Basis noch einen
> gaaanz kleinen Strom bekommt und Ube 0,2V hat.

weil dem Transistor der pulldown an der Basis fehlt?

von Stefan (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,hier das Schaltbild

von Manfred (Gast)


Lesenswert?

Stefan schrieb:
> Hier das Programm.

Falsches Hobby! Gehe besser Kuchen backen, wenn Du nicht in der Lage 
bist, Programmcode hier als Text zu posten.

von Stefan (Gast)


Lesenswert?

Wieso ist das ein Problem?

von Joachim B. (jar)


Lesenswert?

Stefan schrieb:
> Hallo,hier das Schaltbild

so dachte ich mir das auch aus deinen Worten, dann versuche es mal wie 
ich schrieb
Beitrag "Re: Arduino PWM Ausgang"

von Einer K. (Gast)


Lesenswert?

Stefan schrieb:
> Wieso ist das ein Problem?
Ein verstümmelter Quellcode...
Nee...

Wieso glaubst du dass ich das abtippen will, um mir das PWM Signal mit 
dem Oszi anzuschauen?

Und nein!
Ein NPN Transistor braucht keinen Widerstand von Basis zu GND.
Auch reichen 0.2V nicht damit der Motor ruckelt.
0.2V ... da lacht die Basis Emitter Strecke nur drüber. Da passiert 
nichts.

Und überhaupt: RUCKELN!
Das bedeutet doch, dass  PWM/Pulse am Transistor ankommt.

von Joachim B. (jar)


Lesenswert?

Arduino F. schrieb:
> Und nein!
> Ein NPN Transistor braucht keinen Widerstand von Basis zu GND.

klar er brauchts nicht zwingend aber sicherer ist das, zumal er ja auch 
mal in der Luft hängt bis die Ports gesetzt sind.

also JA ich bin für pulldown und du hast Mail falls du noch antworten 
magst.

von avr (Gast)


Lesenswert?

Joachim B. schrieb:
> klar er brauchts nicht zwingend aber sicherer ist das, zumal er ja auch
> mal in der Luft hängt bis die Ports gesetzt sind.

Ein Bipolar-Transistor ist stromgesteuert, ob die Basis jetzt in der 
Luft hängt oder nicht ist egal. Er wird nur leitend wenn Strom fließt. 
Und das auch erst wenn Ube erreicht ist. Bei Mosfets ja, bei Bipolar ist 
das Unfug.

von Einer K. (Gast)


Lesenswert?

Joachim B. schrieb:
> zumal er ja auch
> mal in der Luft hängt bis die Ports gesetzt sind.
Das ist doch einem bipolaren Transistor völlig egal...
Du sprichst über einen FET.

von Georg M. (g_m)


Lesenswert?

Stefan schrieb:
> Hier das Programm.
1
if()
2
  analogWrite(5,y);
3
else
4
  analogWrite(5,y);

?????

von Stefan (Gast)


Lesenswert?

Wieso ist das ein Problem?

Arduino F. schrieb:
> Und überhaupt: RUCKELN!
> Das bedeutet doch, dass  PWM/Pulse am Transistor ankommt.

Eben, wie weiß ich nicht, ich werd morgen wieder schauen, vielleicht 
komme ich ja iwie drauf.

Danke euch beiden :)

Schönen Abend noch

von Wolfgang (Gast)


Lesenswert?

Stefan schrieb:
> Hier das Programm.

Wie wäre es, wenn du das erstmal vernünftig formatierst, damit man das 
lesen kann. Unter Menü Werkzeuge gibt es in der Arduino IDE dafür extra 
eine Funktion.

Und dann bitte den Code in maschinenlesbarer Form posten, falls es mehr 
als ein paar Zeilen sind, als Anhang.

von Einer K. (Gast)


Lesenswert?

Übrigens:
1
Notes and Warnings
2
The PWM outputs generated on pins 5 and 6 will have higher-than-expected duty cycles. This is because of interactions with the millis() and delay() functions, which share the same internal timer used to generate those PWM outputs. This will be noticed mostly on low duty-cycle settings (e.g. 0 - 10) and may result in a value of 0 not fully turning off the output on pins 5 and 6
Aus: 
https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/

Also vielleicht mal einfach einen anderen PWM Pin nehmen.

Wobei:
Ein geschriebener 0 Wert auch 0 ist, denn für den Sonderfall wird 
digitalWrite() aufgerufen.
Aber bei kleinen PWM Werten, kann es schon auf dem Pin zucken.

von Stefan (Gast)


Lesenswert?

Danke für die Info, jeeoch leuchtet mir nicht ein das ich mich ja mit 
der ganz oberen if Abfrage abaichere, wenn taster nicht gedrückt soll 
nichts sein. Da darf normaleise nichts sein, aaaaaber ich habs glaub 
ich.

Oben im Program definiere ich Int Pin7=8; jedoch definiere ich 
pinMode(-->7<--,INPUT);

Der Arme hat ja dann eigentlich immer den 8er PIN Abgefragt und rauschen 
identifiziert und somit mal was ausgegeben mal nicht.

von Joachim B. (jar)


Lesenswert?

Arduino F. schrieb:
> Das ist doch einem bipolaren Transistor völlig egal...
> Du sprichst über einen FET.

nö aus Erfahrung, Port setzen vergessen, kalte Lötstelle am µC und was 
es da alles so gibt.

mir behagt diese Diskusion gerade nicht, was stört euch an 2 Ct. R ?

kommt mir ein bissle so vor wieso Abblock C, geht auch ohne, manchmal ja 
:)

von Einer K. (Gast)


Lesenswert?

Joachim B. schrieb:
> mir behagt diese Diskusion gerade nicht,
Dann solltest du sie vielleicht nicht führen.
;-)

Joachim B. schrieb:
> was stört euch an 2 Ct. R ?
Gar nix...
Der ist einfach nur überflüssig, sonst nix.
OK, er frisst unnötig Strom. Manchmal ist das ja wichtig.

Du schickst Leute damit aufs Glatteis.
Und das gefällt mir an der Geschichte nicht.


Joachim B. schrieb:
> Port setzen vergessen, kalte Lötstelle am µC und was
> es da alles so gibt.
Da hilft auch kein Widerstand.

Joachim B. schrieb:
> kommt mir ein bissle so vor wieso Abblock C, geht auch ohne, manchmal ja
> :)
Das ist eine ganz andere Geschichte...
Dadurch dass du 2 unterschiedliche Schuhe in einen Sack steckst, wird da 
noch lange kein Paar draus.

von Wolfgang (Gast)


Lesenswert?

Arduino F. schrieb:
> Auch reichen 0.2V nicht damit der Motor ruckelt.
> 0.2V ... da lacht die Basis Emitter Strecke nur drüber. Da passiert
> nichts.

Wer weiss, ob die 0.2V in Wirklichkeit nicht 5V mit einem Tastverhältnis 
von 4% oder gar 0.7V mit 29% sind. Dann würde der Transistor da schon 
ganz anders drüber denken.

von Stefan (Gast)


Lesenswert?

Ohne Oszi natürlich schwer zu messen, ob das jetzt 5V PWM sind, mir 
zeigt es aufjedenfall 2V an wobei 0,2 an B-E Strecke abfällt.

Aber sonst würd ja der Motor voll durchdrehen, er zuckt nur ganz leicht, 
man spürt das sich was tut.

Ich werde heute das Programm umschreiben und melde mich hier wieder obs 
hinhaut oder nicht.

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.