Heyy, ich arbeite jetzt schon länger an einem Projekt und bin nun auf weitere Probleme gestoßen, die ich jetzt schon seit mehreren Wochen nicht lösen kann. Ich habe mir selber eine Platine erstellt, auf der ich einen Attiny85 20SU (https://www.reichelt.de/8-bit-attiny-avr-risc-mikrocontroller-8-kb-20-mhz-so-8-attiny-85-20-su-p69300.html?&trstct=pos_1&nbc=1) habe. Er und die ganze Platine werden von einem LiPo-Akku (3.7V | 130mAh) betrieben. Unteranderem ist an dem Ausgang PB1 ein Mosfet angeschlossen (AO3400A) und an diesem ein kleiner Modellbaumotor (0.5V-4V). Nun wollte ich den Motor zum laufen bringen, heißt ihn beschleunigen, bremsen und auf einer gewünschten Geschwindigkeit fahren lassen. Damit er für meine Anwendungen geeignet ist, will ich den Motor aber nicht mit vollen 3.7V laufen lassen, sonder mit so 1.5V-2V damit er nicht zu schnell läuft. Nun hatte es aber nach vielen Versuchen nicht geklappt, den Motor irgendwie langsamer laufen zu lassen. Ich kenne mich nicht soo gut aus mit der Programmierung solche Microcontroller, aber ich mache es über einen ISP-Header und einen Arduino Uno. Ich hab schon viele Codes versucht die ich mir von KI's ausspucken habe lassen, jedoch keine hat Erfolg gezeigt. Ich habe schon alle Verkabelungen überprüft und wenn ich den Motor mit digitalWrite ansteuere funktioniert es auch einwandfrei. Ich freue mich seeehr über Kommentare und Hilfestellungen, jetzt schon mal Danke, ich verzweifle hier wirklich D: Mit Freundlichen Grüßen Jo
Ich hatte es schon versucht, jedoch ohne Freilaufdiode, kann dass das Verhalten so stark einschränken, dass der Motor dann trotz analogWrite(100) mit voller Leistung fährt?
Jo schrieb: > dass der Motor dann trotz > analogWrite(100) mit voller Leistung fährt? Nicht jeder Pin kann Hardware PWM.
Jo schrieb: > Ich hatte es schon versucht, jedoch ohne Freilaufdiode, Deshalb ist der MosFet vermutlich schon durchlegiert.
:
Bearbeitet durch User
So ich habe nun eine Freilaufdiode eingebaut und das Mosfet nochmals ausgetauscht. Dann habe ich den angehängten Code hochgeladen, es gab keine Fehlermeldung. Als ich dann die Platine über den Akku "anmachte", lief der Motor gar nicht flüssig, sondern er springt immer so nach vorne.
Jo schrieb: > ich arbeite jetzt schon länger an einem Projekt und bin nun auf weitere > Probleme gestoßen, die ich jetzt schon seit mehreren Wochen nicht lösen > kann. Ich habe mir selber eine Platine erstellt, auf der ich einen > Attiny85 20SU > (https://www.reichelt.de/8-bit-attiny-avr-risc-mikrocontroller-8-kb-20-mhz-so-8-attiny-85-20-su-p69300.html?&trstct=pos_1&nbc=1) > habe. Er und die ganze Platine werden von einem LiPo-Akku (3.7V | > 130mAh) betrieben. Der Controller läuft mit 3,3V, aber nur wenige MOSFETs. Die müssen für 3,3V oder weniger Ansteuerspannung spezifiziert sein. https://www.mikrocontroller.net/articles/FET#Gate-Source_Threshold_Voltage > Unteranderem ist an dem Ausgang PB1 ein Mosfet > angeschlossen (AO3400A) OK, der kann das. > (0.5V-4V). Nun wollte ich den Motor zum laufen bringen, heißt ihn > beschleunigen, bremsen und auf einer gewünschten Geschwindigkeit fahren > lassen. Damit er für meine Anwendungen geeignet ist, will ich den Motor > aber nicht mit vollen 3.7V laufen lassen, sonder mit so 1.5V-2V damit er > nicht zu schnell läuft. Das macht PWM. > keine hat Erfolg gezeigt. Ich habe schon alle Verkabelungen überprüft > und wenn ich den Motor mit digitalWrite ansteuere funktioniert es auch > einwandfrei. Schon mal gut.
Im Programmcode fällt mir auf dze Schnelle kein Problem auf. Zeige mal deinen Schaltplan und Fotos vom Aufbau.
Jo schrieb: > So ich habe nun eine Freilaufdiode eingebaut und das Mosfet nochmals > ausgetauscht. Dann habe ich den angehängten Code hochgeladen, es gab > keine Fehlermeldung. Als ich dann die Platine über den Akku "anmachte", > lief der Motor gar nicht flüssig, sondern er springt immer so nach > vorne. Ich glaube der Fehler liegt hier. const int pwmPin = PB1; // Der Pin, der per PWM gesteuert wird Das ist falsch. Du muss die Pinnummer nach Arduino-Zählweise angeben, siehe Anhang. PB1 ist der Name aus dem Microchipdatenblatt. Also so. const int pwmPin = 1; // Der Pin, der per PWM gesteuert wird Die Arduino-Pinnummern sind hellblau.
Das ist ein Bild vom Aufbau der Platine. Die Testpoints sind alles Lötpins auf der Platine, wo dann entsprechend Bauteile dran gelötet wurden. Die Diode komplett ignorieren, die wurde nicht eingebaut, da sie komplett falsch verkabelt wurde, ich hab sie jetzt im nachhinein mit zwei Kabel an den Motor gelötet. Und das Mosfet hat sich auch verändert, ist das AO3400A, wie oben beschrieben. Und ich habe die beiden Pins PB0 und PB1 per Kabel vertauscht auf die Platine gelötet. Also alle Anschlüsse die hier im Schaubild an PB0 angeschlossen sind, sind an PB1 angeschlossen und umgekehrt, deshalb habe ich auch MISO und MOSI am ISP-Header umdrehen müssen. Ansonsten sollte das eigentlich so umgesetzt worden sein.
Falk B. schrieb: > const int pwmPin = 1; // Der Pin, der per PWM gesteuert wird Ich probiere es mal kurz
Jo schrieb: > Das ist ein Bild vom Aufbau der Platine. Nö, das ist ein absolut übersichtlicher Schaltplan. Schaltplan richtig zeichnen Und nach deinem Schaltplan hängt der MOSFET an PB0 und NICHT PB1, wie es im Quelltext steht! > ist das AO3400A, wie oben beschrieben. Und ich habe die beiden Pins PB0 > und PB1 per Kabel vertauscht auf die Platine gelötet. Klasse, so macht ein Schaltplan Spaß!
Es fehlen Freilaufdiode, Abblock-Kondensatoren und Pull-Down Widerstand. Nach deinem Text hast du ALLES anders gemacht, als der Plan zeigt. Ich hoffe dir wird selbst klar, wie nutzlos dieser Plan dadurch ist. Wo sind die Fotos von Aufbau?
:
Bearbeitet durch User
Hier nochmal der neue Plan, in wie Fern bringen Bilder von der Platine
etwas? Dort sind ja nur die Bauteile draufgelötet und viele Kabel die
von der Platine weg gehen.
> const int pwmPin = 1; // Der Pin, der per PWM gesteuert wird
hat nichts verändert.
Jo schrieb: > in wie Fern bringen Bilder von der Platine etwas? Dort sieht man häufig Fehler, die der Plan nicht zeigt. Dein Schaltplan ist immer noch kaum lesbar. Da du mit der Software nicht zurecht kommst: nimm Stift und Papier!
Falk B. schrieb: > Du muss die Pinnummer nach Arduino-Zählweise angeben, siehe Anhang. PB1 > ist der Name aus dem Microchipdatenblatt Das ist prinzipiell richtig. In diesem konkreten Fall macht das aber keinen Unterschied, weil PB1=1 ist.
Ich frage mich halt, in wie Fern der Fehler auf der Platine liegen kann, wenn doch mit digitalWrite alles funktioniert?
Falk B. schrieb: > Die Arduino-Pinnummern sind hellblau. Dann: Glücklicher Weise hat PB1 den Wert 1. Ist also "hier" egal. Jo schrieb: > der neue Plan Abblockkondensator fehlt. Stützkondensator fehlt
Jo schrieb: > Ich frage mich halt, in wie Fern der Fehler auf der Platine liegen kann, > wenn doch mit digitalWrite alles funktioniert? Zeige Bilder, dann wird sich das aufklären. Du siehst den Fehler nicht, weil du denkst, dort kann er nicht sein. So ist es jedenfalls oft. Es fehlen immer noch Abblock-Kondensatoren. Schraube mal deinen PC auf und zähle dessen Kondensatoren. Denkst du, die sind da nur zur Dekoration drin?
:
Bearbeitet durch User
Hier noch ein Bild. Also nur erste Testversionen, an denen viel verändert werden musste. Und nur kurz als Anmerkung, ich finde diesen befehlshaberischen Ton unangebracht, ich kenne mich hier in diesem Gebiet nicht gut aus und Versuche hier meine Probleme zu lösen und da finde ich solche Kommentare einfach nicht angepasst. Wir sind alles Menschen die noch was lernen können und auch Fehler machen ;D
Monk schrieb: > Das ist prinzipiell richtig. In diesem konkreten Fall macht das aber > keinen Unterschied, weil PB1=1 ist. Zufall! Bei anden anderen Pins funktioniert das nicht mehr!
Die Drähte kommen mir arg dünn vor. In Kombination mit den fehlenden Abblock-Kondensatoren scheitert es wohl an instabiler Stromversorgung.
Jo schrieb: > ich finde diesen befehlshabbärischen Ton > unangebracht, Hallo, da magst du Recht haben, solche Entgleisungen passieren nur allzu leicht. mfg
Monk schrieb: > Die Drähte kommen mir arg dünn vor. In Kombination mit den fehlenden > Abblock-Kondensatoren scheitert es wohl an instabiler Stromversorgung. Sollten da 100 nF reichen? Gibt es sonst noch Spezifikationen auf die ich achten sollte? Hast Du vielleicht einen Link zu einem passendem?
Jo schrieb: >> Die Drähte kommen mir arg dünn vor. In Kombination mit den fehlenden >> Abblock-Kondensatoren scheitert es wohl an instabiler Stromversorgung. > > Sollten da 100 nF reichen? Den brauchst du auf jeden FALL!!! Der war hoffentlich schon auf dem Board. Warum hast du ihn entfernt? Bei dem Motor braucht man nochmal um die 5-10uF als Elko, Tantal oder Aluminium. > Gibt es sonst noch Spezifikationen auf die > ich achten sollte? Hast Du vielleicht einen Link zu einem passendem? 100nF Keramikondensatoren mit 25V gibt es wie Sand am Meer! Dito Elkos!
Jo schrieb: > Screenshot__128_.png > > 2,7 MB Lies mal was über Bildformate. Siehe Anhang, Faktor 20! kleiner!
Jo schrieb: > Sollten da 100 nF reichen? 100uF + 100nF an VCC/GND vom Mikrocontroller. Außerdem würde ich mit einem Oszilloskop prüfen, ob Akku und Leitungen ausreichend belastbar sind. Dein sogenannter "Spannungsregulator" ist falsch beschriftet. Das IC überwacht die Spannung nur, es regelt sie nicht.
Okay, danke euch, dann werde ich mal weiter probieren, ich habe leider gerade keine Kondensatoren da…
Du hast zwischen dem Pin des MCU und dem Gate des MOSFETs einen 330Ohm Widerstand vorgesehen. Damit verhinderst du, dass der MCU durch einen zu hohen Strom überlastet wird - das ist gut. ABER, ein schnelles Umschalten des MOSFETs wird die mit ein paar Milliampere Gatestrom nicht gelingen. Für eine PWM solltest du m.E. schon einen MOSFET Treiber vor das Gate schalten - entweder als IC oder diskret mit einzelnen Bipolar-PNP und NPN.
Oliver D. schrieb: > Du hast zwischen dem Pin des MCU und dem Gate des MOSFETs einen 330Ohm > Widerstand vorgesehen. Damit verhinderst du, dass der MCU durch einen zu > hohen Strom überlastet wird - das ist gut. Aber überflüssig. > ABER, ein schnelles > Umschalten des MOSFETs wird die mit ein paar Milliampere Gatestrom nicht > gelingen. Für eine PWM solltest du m.E. schon einen MOSFET Treiber vor > das Gate schalten - entweder als IC oder diskret mit einzelnen > Bipolar-PNP und NPN. Ebenfalls überflüssig. Die Standard-PWM beim Arduino sind 480Hz, sehr langsam. Aber selbst mit deutlich höheren Frequenzen kommt man ohne Gatettreiber aus. Beitrag "Re: Transistor, 1A, 4MHz Schaltfrequenz" Ok, bei 3,3V sind die Ausgänge vom AVR hochohmiger, aber für 480 Hz reicht es locker.
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.