Fragen mit Bezug auf Thread Ansteuerung von BLDC Motoren für Nähmaschinen

Alles über Antriebstechnik, Elektroarbeiten, Probleme beim Anschluss eines Motors.
Nachricht
Autor
Benutzeravatar
js_hsm
Edelschrauber
Edelschrauber
Beiträge: 5417
Registriert: Montag 27. September 2021, 23:40
Wohnort: Erkrath
Kontaktdaten:

Re: Fragen mit Bezug auf Thread Ansteuerung von BLDC Motoren für Nähmaschinen

#21 Beitrag von js_hsm »

toto hat geschrieben: Donnerstag 8. Februar 2024, 10:47 .... Umgekehrt wird er aber doch trotzdem sofort auf disable gesetzt wenn ich z.B. aus Vollgas das Pedal schnell zurückbewege und dann unterhalb dieses Totwerts lande.
Wenn Du den Sinn meiner Timerroutine verstanden und nicht geändert hast setzt Du so zwar die Sollfrequenz schlagartig auf 0, aber die Istfrequenz wird langsamer reduziert so dass ein abrupter Stop ausgeschlossen ist.

Gruß, Achim

P.S. Ich trinke Weizenbier
Der Maschinen(um)bauer
Adler 30,48,67,69 Pfaff 130,141,142,145,335,1222, Typical GC20606-18, Sailrite 9" Clone und.....
https://youtube.com/@Special_Solutions
BLDC-Servos https://www.naehmaschinentechnik-forum. ... 33#p119733

toto
Neu im Forum
Neu im Forum
Beiträge: 24
Registriert: Donnerstag 20. Juli 2023, 10:00

Re: Fragen mit Bezug auf Thread Ansteuerung von BLDC Motoren für Nähmaschinen

#22 Beitrag von toto »

Moin Achim,

die Timerfunktion hatte ich wie erwähnt etwas umgeschrieben.

Unterer Teil für das Abbremsen:
if (targetFrequency < currentFrequency) {
currentFrequency = max(currentFrequency - maxDecreaseFrequency, targetFrequency);
tone(pinPUL, currentFrequency);
}
Einziger Unterschied wäre hier aber nach meinem Verständnis, dass an tone() keine Frequenz unterhalb von 31Hz (aus tone() Doku) übergeben werden kann. 31Hz ist meine für anlogRead() == 1 festgelegte Mindestfrequenz.

Ich steige allerdings im Moment gleich zu Beginn der Timerfunktion sofort aus wenn der Sollwert 0 ist. Das wäre die Stelle an der ich meinte diesen Wert alternativ zu ignorieren wenn der letzte Ist-Wert einen bestimmten Wert noch nicht unterschritten hat.

Derzeit:

if (targetFrequency >= minFrequency) {
if(!isEnabled) {
digitalWrite(pinEN, LOW); /*Enable*/
currentFrequency = 30; // set currentFrequency high enough for first run
isEnabled = true;
}
}
else {
digitalWrite(pinEN, HIGH); //Disable
currentFrequency = 0;
noTone(pinPUL);
isEnabled = false;
return;
}

So dann mit der Möglichkeit den Sollwert zu ignorieren:

else {
if (currentFrequency < XY) {
digitalWrite(pinEN, HIGH); //Disable
currentFrequency = 0;
noTone(pinPUL);
isEnabled = false;
return;
}
}

Oder halt doch Deinen Code kopieren. smile


Weizen ist eine gute Wahl smile obwohl das für mich eher das Getränk der Begierde an heißen Tagen ist. Gib mir noch ein paar Tage Zeit den Infekt loszuwerden und mal meinen Wagen zu reparieren.

Liebe Grüße

Thorsten

Nachtrag:

Wenn ich den else-Block wie geschrieben ändere, dann wäre hier erstmal natürlich ohne Änderung die Mindestfrequenz nicht mehr gewährleistet
max(currentFrequency - maxDecreaseFrequency, targetFrequency);

Was passiert denn, wenn man tone() z.B. 0Hz übergibt?
Zuletzt geändert von toto am Donnerstag 8. Februar 2024, 14:45, insgesamt 1-mal geändert.

Benutzeravatar
js_hsm
Edelschrauber
Edelschrauber
Beiträge: 5417
Registriert: Montag 27. September 2021, 23:40
Wohnort: Erkrath
Kontaktdaten:

Re: Fragen mit Bezug auf Thread Ansteuerung von BLDC Motoren für Nähmaschinen

#23 Beitrag von js_hsm »

Kopieren ist nicht das beste (aber evtl. das sicherste biggrin )
Wichtiger wäre das Du verstehst was ich warum gemacht habe.

Gruß, Achim

Edit AnalogRead wird immer Störungen einfangen und mindesten um 1 oder 2 Digits schwanken.
Blende den Bereich bis 20 aus und Du bist safe.
Dann ggf. noch den Mittelwert aus n Analogwerten und alles wird ruhig.
Der Maschinen(um)bauer
Adler 30,48,67,69 Pfaff 130,141,142,145,335,1222, Typical GC20606-18, Sailrite 9" Clone und.....
https://youtube.com/@Special_Solutions
BLDC-Servos https://www.naehmaschinentechnik-forum. ... 33#p119733

Benutzeravatar
js_hsm
Edelschrauber
Edelschrauber
Beiträge: 5417
Registriert: Montag 27. September 2021, 23:40
Wohnort: Erkrath
Kontaktdaten:

Re: Fragen mit Bezug auf Thread Ansteuerung von BLDC Motoren für Nähmaschinen

#24 Beitrag von js_hsm »

int max_frequenz=14000;

Für die Beschleunigung nutze ich
int max_frequenz_change_up=max_frequenz/100;
und fürs Abbremsen
int max_frequenz_change_down=max_frequenz_change_up*4;

Gruß, Achim
Der Maschinen(um)bauer
Adler 30,48,67,69 Pfaff 130,141,142,145,335,1222, Typical GC20606-18, Sailrite 9" Clone und.....
https://youtube.com/@Special_Solutions
BLDC-Servos https://www.naehmaschinentechnik-forum. ... 33#p119733

Benutzeravatar
js_hsm
Edelschrauber
Edelschrauber
Beiträge: 5417
Registriert: Montag 27. September 2021, 23:40
Wohnort: Erkrath
Kontaktdaten:

Re: Fragen mit Bezug auf Thread Ansteuerung von BLDC Motoren für Nähmaschinen

#25 Beitrag von js_hsm »

toto hat geschrieben: Donnerstag 8. Februar 2024, 14:18
if (targetFrequency >= minFrequency) {
if(!isEnabled) {
digitalWrite(pinEN, LOW); /*Enable*/
currentFrequency = 30; // set currentFrequency high enough for first run
isEnabled = true;
}
}
else {
digitalWrite(pinEN, HIGH); //Disable
currentFrequency = 0;
noTone(pinPUL);
isEnabled = false;
return;
}
Da ist Dein Problem.
Du disablest bevor currentFrequency <=31 Hz ist

Edit: Ist bei dem oben geposteten Code auch so, wurde aber geändert in
if (frequenz_ist>=out_min) digitalWrite(Penb, LOW);/*Enable*/else digitalWrite(Penb, HIGH);//Disable
Der Maschinen(um)bauer
Adler 30,48,67,69 Pfaff 130,141,142,145,335,1222, Typical GC20606-18, Sailrite 9" Clone und.....
https://youtube.com/@Special_Solutions
BLDC-Servos https://www.naehmaschinentechnik-forum. ... 33#p119733

toto
Neu im Forum
Neu im Forum
Beiträge: 24
Registriert: Donnerstag 20. Juli 2023, 10:00

Re: Fragen mit Bezug auf Thread Ansteuerung von BLDC Motoren für Nähmaschinen

#26 Beitrag von toto »

js_hsm hat geschrieben: Donnerstag 8. Februar 2024, 14:34 Wichtiger wäre das Du verstehst was ich warum gemacht habe.
Tja, was soll ich sagen, das hatte ich mir schon eingebildet, was ja aber auch eine Form von Bildung ist sad

Danke mal wieder Achim, ich sehe mal zu, dass ich das erst mal anpasse bevor ich hier wieder überflüssig nachfrage.
Meine erstmal verwendeten Brems- / Beschleunigungswerte liegen übrigens bei 10. Das die zu niedrig sind war mir aber schon klar.

Liebe Grüße

Thorsten

Benutzeravatar
js_hsm
Edelschrauber
Edelschrauber
Beiträge: 5417
Registriert: Montag 27. September 2021, 23:40
Wohnort: Erkrath
Kontaktdaten:

Re: Fragen mit Bezug auf Thread Ansteuerung von BLDC Motoren für Nähmaschinen

#27 Beitrag von js_hsm »

Ja, wenn Du dann mit 40 abbremst kann beim schlagartigen wegnehmen des Fußes vom Pedal die Geschwindigkeit noch nicht weit genug unten sein für das Disablen. wink

Gruß, Achim
Der Maschinen(um)bauer
Adler 30,48,67,69 Pfaff 130,141,142,145,335,1222, Typical GC20606-18, Sailrite 9" Clone und.....
https://youtube.com/@Special_Solutions
BLDC-Servos https://www.naehmaschinentechnik-forum. ... 33#p119733

Benutzeravatar
js_hsm
Edelschrauber
Edelschrauber
Beiträge: 5417
Registriert: Montag 27. September 2021, 23:40
Wohnort: Erkrath
Kontaktdaten:

Re: Fragen mit Bezug auf Thread Ansteuerung von BLDC Motoren für Nähmaschinen

#28 Beitrag von js_hsm »

Bei mir ist max_frequenz 14000

max_frequenz_change_up=max_frequenz/100 =140
max_frequenz_change_down=max_frequenz_change_up*4 =560

Also brauche ich 25 Timerzyklen a' 10ms = 0,25s zum Bremsen aus der maximalen Drehzahl

Das entspricht fast dem aprupten heben des Fusses auf dem Pedal

Gruß, Achim
Der Maschinen(um)bauer
Adler 30,48,67,69 Pfaff 130,141,142,145,335,1222, Typical GC20606-18, Sailrite 9" Clone und.....
https://youtube.com/@Special_Solutions
BLDC-Servos https://www.naehmaschinentechnik-forum. ... 33#p119733

toto
Neu im Forum
Neu im Forum
Beiträge: 24
Registriert: Donnerstag 20. Juli 2023, 10:00

Re: Fragen mit Bezug auf Thread Ansteuerung von BLDC Motoren für Nähmaschinen

#29 Beitrag von toto »

Moin Achim,

ich habe eben noch mal etwas rumprobiert und geändert. Das Abbremsen scheint nun auch endlich richtig zu funktionieren.

Mal abgesehen von den unnötig großen unsigned long Variablen, die noch aus meinen ersten Versuchen stammten das Signal per digitalWrite im Loop zu generieren, war eine Subtraktion mit unsigned Werten zunächst schon mal fehlerträchtig sad.

Danach gab es beim Abbremsen, wenn der Motor dann schließlich zum Stillstand kam, in den meisten Fällen einen ziemlich kräftigen Schlag der den Motor auf dem Tisch einige Millimeter zur Seite springen ließ. Dies hatte ich zuvor, als ich den Antrieb sofort bei unterschreiten der Mindestfrequenz abgeschaltet hatte nicht beobachten können.
Dieses Verhalten verschwand erst als ich im Code sichergestellt hatte, dass die neue Ist-Frquenz nicht unterhalb von 31Hz legen kann (die Mindestfrequenz zum Starten liegt etwas höher). Wie ich schon schrieb, sind 31Hz die Mindestfrequenz die laut Doku von tone() verarbeitet werden kann. Je nach Frequenz aus der abgebremst wurde konnten die 31Hz im letzten Schritt vor dem disable unterschritten werden. In Deinem Code setzt Du sie aber auch runter bis auf 0. Macht das bei Deinen Motoren / Controllern kein Problem?

Was anderes noch:
Ich wollte die Tage einen Freund bitten mir eine Zahnriemenscheibe zu drucken. In einem anderen Thread schriebst Du, dass Du eine OpenScad-Datei verwendest, in der Du die Parameter einstellen kannst. Im Netz habe ich eine solche gefunden: https://github.com/rbuckland/openscad.parametric-pulley.
Falls das jetzt zufällig die gleiche wie von Dir verwendete ist:
in der Datei gibt es zwei Werte, additional_tooth_width und additional_tooth_depth, um die Passgenauigkeit der gedruckten Riemenscheibe an den Zahnriemen anzupassen. Hättest Du da Erfahrungswerte, oder sind die Werte auch jeweils vom Drucker, dem verwendeten Filament (PETG) oder dem Durchmesser der Riemenscheibe abhängig? Ich würde gern vermeiden, dass er unnötig viele Scheiben drucken muss.
Angedacht wären bei mir 60 oder 72 Zähne, da diese Riemenscheiben vom Durchmesser her über die vorhandene der Nähmaschine passen würden. Für den Motor dachte ich erstmal eine mit 12 Zähnen zu verwenden. Als Riemenprofil T5, passt das?

Liebe Grüße

Thorsten

Benutzeravatar
js_hsm
Edelschrauber
Edelschrauber
Beiträge: 5417
Registriert: Montag 27. September 2021, 23:40
Wohnort: Erkrath
Kontaktdaten:

Re: Fragen mit Bezug auf Thread Ansteuerung von BLDC Motoren für Nähmaschinen

#30 Beitrag von js_hsm »

toto hat geschrieben: Samstag 10. Februar 2024, 12:37 in der Datei gibt es zwei Werte, additional_tooth_width und additional_tooth_depth, um die Passgenauigkeit der gedruckten Riemenscheibe an den Zahnriemen anzupassen. Hättest Du da Erfahrungswerte, oder sind die Werte auch jeweils vom Drucker, dem verwendeten Filament (PETG) oder dem Durchmesser der Riemenscheibe abhängig? Ich würde gern vermeiden, dass er unnötig viele Scheiben drucken muss.
Angedacht wären bei mir 60 oder 72 Zähne, da diese Riemenscheiben vom Durchmesser her über die vorhandene der Nähmaschine passen würden. Für den Motor dachte ich erstmal eine mit 12 Zähnen zu verwenden. Als Riemenprofil T5, passt das?
Ich setze bei additional_tooth_width+0.2 und additional_tooth_depth +0.2 mm, das passt dan perfekt

Ich verwende XL Riemen (preiswerter) und 60/10 Zähne

Gruß, Achim
Der Maschinen(um)bauer
Adler 30,48,67,69 Pfaff 130,141,142,145,335,1222, Typical GC20606-18, Sailrite 9" Clone und.....
https://youtube.com/@Special_Solutions
BLDC-Servos https://www.naehmaschinentechnik-forum. ... 33#p119733

Antworten