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
Lad mal lieber das ganze Programm hoch. Wenn ich mein Arduino oder Attiny die Analogausgänge auf 0 setze, kommt da auch nichts.
Hier das Programm. Die if Abfrage mit Y>=255 ist deswegen das ich das Poti begrenze weils ja von 0 bis 1023 zählt.
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?
Stefan schrieb: > Hier das Programm. Falsches Hobby! Gehe besser Kuchen backen, wenn Du nicht in der Lage bist, Programmcode hier als Text zu posten.
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"
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.
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.
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.
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.
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
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.
Ü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.
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.
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 :)
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.