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: 5410
Registriert: Montag 27. September 2021, 23:40
Wohnort: Erkrath
Kontaktdaten:

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

#11 Beitrag von js_hsm »

toto hat geschrieben: Freitag 2. Februar 2024, 14:08 Ist beim Aktualisieren von tone() gewährleistet, dass der letzte "Ton" vor der Aktualisierung noch zu Ende gespielt werden kann? Oder gewährt dies z.B. ein vorangehender Aufruf von noTone()? Ansonsten könnte doch hier wieder das Problem auftreten können, dass die Beschleunigung unerwünscht hoch ausfallen könnte, oder nicht? Das würde nach meinem derzeitigen Verständnis dann doch speziell bei langsamer Momentangeschwindigkeit und fixer an die Maximalgeschwindigkeit angepasster Timer1 Laufzeit problematisch werden können, da tone() dann öfter als tatsächlich nötig aufgerufen wird.
Im Setup
Timer1.initialize(10000);//10ms //Wert in µs
Timer1.attachInterrupt(set_frequenz); // Frequenzfolger sollwert


void set_frequenz(){
if (frequenz_soll>=out_min) digitalWrite(Penb, LOW);/*Enable*/else digitalWrite(Penb, HIGH);//Disable

if (frequenz_soll<frequenz_ist){
if((frequenz_ist-frequenz_soll)>max_frequenz_change_down){
frequenz_ist= frequenz_ist-max_frequenz_change_down;
if (frequenz_ist<0)frequenz_ist=0;
tone(PclkX,frequenz_ist);
}else{
frequenz_ist=frequenz_soll;
tone(PclkX,frequenz_ist);
}
}
if (frequenz_soll>frequenz_ist){
// Serial.print("grösser 0 Freq: ");
// Serial.println(frequenz_ist);
if((frequenz_soll-frequenz_ist)>max_frequenz_change_up){
frequenz_ist= frequenz_ist+max_frequenz_change_up;
tone(PclkX,frequenz_ist);
}else{
frequenz_ist=frequenz_soll;
tone(PclkX,frequenz_ist);
}
}
}

Alles ohne eine Stepper Library

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

#12 Beitrag von toto »

Moin Achim,

die TimerOne Lib hatte ich mir gestern nach Deinem Hinweis schon mal angesehen. Vielleicht hätte ich vorher schon mal einen Blick auf die Arduino Libraries-Seite werfen sollen huh.
Heute morgen kurz bevor ich mich rausqäulte um unserem Hund zu seinem Recht zu verhelfen sah ich dass Du nun sogar Code gepostet hast. Habe herzlichen Dank für all die Infos die Du hier unermüdlich bereitstellst. Soviel hatte ich wirklich nicht erwartet.
Nach all der geleisteten Nachhilfe sollte da nun hoffentlich nichts mehr schiefgehen shy .

Ich werde berichten wie es ausgegangen ist. Das wird aber sicher nicht schon heute sein smile

Liebe Grüße und nochmal vielen Dank

Thorsten

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

#13 Beitrag von toto »

Moin Achim,

ich habe heute den Motor das erste Mal laufen gesehen smile und soweit funktioniert das Programm auch erstmal, denke ich.
Ein paar Dinge fielen mir aber auf und eine Verständnisfrage ist beim Schreiben des Codes auch wieder aufgepoppt. Im Netz habe ich dazu nichts finden können.

Wie ich schon schrieb, ist dies das erste Mal, das ich einen Schrittmotor in der Hand habe, Vergleiche fehlen mir daher. Der Motor kommt mir recht laut vor, auch höre ich da die ganze Zeit so ein leicht mahlendes Geräusch raus. Ist das normal? Oder der evtl. der mangelnden Qualität des gewählten Motors oder falscher Ansteuerung geschuldet?

Beim Umbau des Pedals hatte ich mich zunächst noch geärgert, dass ich nur ein 3adriges Kabel mit 1mm^2 im Hause hatte. Nun denke ich aber, dass es dünner auch gar nicht hätte sein dürfen. Beim analogRead komme ich nicht auf den Maximalwert von 1023 (max 1021). Das hängt wohl mit dem Leitungsverlust (derzeit 2m Kabel) zusammen, oder? An das Pedal muss ich eh noch mal ran, es fehlen noch eine geeignete Kabeldurchführung, Verschlussstopfen und eine Druckfeder.

Die gewählten testweisen Werte für Beschleunigung / Abbremsen sind noch etwas dünn, aber endgültig wird das auch erst an der Nähmaschine ausgetestet werden, oder?

Beim Gaswegnehmen bleibt der Motor kurz bevor das Pedal wirklich wieder in Nullstellung ist abrupt stehen, quasi wie eine Vollbremsung aus allerdings sehr geringer Geschwindigkeit, normal?

Die Sollfrequenz bestimme ich im Loop. Für das Setzen der Variablen, die dann vom Timer1 dann verwendet wird, deaktiviere ich kurz die Interrupts. Was aber wohl eher unnötig ist, da außer hier nirgendwo sonst ihr Wert geändert wird. Für das Lesen dieser Variablen in der Timerfunktion fand ich allerdings nirgends die Möglichkeit für einen geschützten Zugriff. Sie könnte dadurch doch noch während des Lesens der ersten Bytes im Loop schon wieder geändert werden, oder läuft die Timerfunktion ohne Unterbrechung in einem Stück durch? Doch eher nicht? Die von mir gemessene Laufzeit dieser Funktion beträgt zwischen etwa 250 und 270 Mikrosekunden, wovon etwa 210 Mikrosekunden auf tone() entfallen. Gemessen hatte ich das bei einem testweisen direkten Aufruf der Methode im Loop, den Timer hatte ich dafür dann auskommentiert.

Die Timerfunktion habe ich etwas umgeschrieben, ist aber von der Funktionalität, wenn ich mich nicht täusche, gleich zu Deiner. Die Laufzeiten beider sind auch ziemlich gleich.

Wenn Du magst schicke ich Dir meinen Code zu. Ich kann ihn auch gern hier posten. Das möchte ich aber nicht einfach ungefragt tun. Bei all der Hilfe die Du hier geleistet hast sehe ich den als ein gutes Stück Deines geistigen Eigentums an.

Ein Video vom laufenden Motor kann ich hier nicht posten, oder?

Liebe Grüße

Thorsten

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

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

#14 Beitrag von js_hsm »

Mit richtigem Anschluß und dem richtigen Stromwert muss mit der DM556 ein ruhiger Lauf möglich sein. (vgl.mein Video)
Welche Mikroschrittauflösung hast Du gewählt ?
Wie ist die Tot- bzw. Minimalfrequenz?

Videos bei youtube hochladen und hier den Link posten.

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

#15 Beitrag von toto »

Moin Achim,

der Lauf an sich ist ruhig, bezogen auf die Gleichmässigkeit, falls Du das meinst.

Ich habe erstmal die 1600 Schritte aus Deiner Beispielrechnung in Beitrag 57 Deines eingänglich genannten Thread benutzt.

Die von mir verwendete Minimalfrequenz ist 31Hz, was laut Doku das Minimum ist, was tone() verarbeiten kann.
Die Maximalfrequenz ist derzeit 16kHz, ebenfalls an die Beispielrechnung angelehnt.

Der Strom ist auf 2,7A (RMS-Angabe des Controllers) eingestellt, Du nanntest mir in einem anderen Beitrag 2A. Der Motor hat jedoch entgegen der Beschreibung auf der Website nicht 3,5A sondern 4,2A. Das hatte ich vor dem Verkabeln nicht gesehen.

Die Sollfrequenz berechne setze ich auf 0, falls analogRead mir eine 0 liefert, ansonsten bestimme ich sie durch:
map(analogValue, 1, 1023, (long)minFrequency, (long)maxFrequency)

Hier ist dann doch mal der Anfang meiner Timerfunktion:
void setFrequency() {
if (targetFrequency >= minFrequency) {
if(!isEnabled) {
digitalWrite(pinEN, LOW); /*Enable*/
currentFrequency = 30; // set currentFrequency high enough for calculation in first run
isEnabled = true;
}
}
else {
digitalWrite(pinEN, HIGH); //Disable
currentFrequency = 0;
noTone(pinPUL);
isEnabled = false;
return;
}

Den Teil in der if-Abfrage mit currentFrequency = 30 benutze ich, damit ich in der ersten Berechnung bei der Beschleunigung über oder auf die 31Hz kommen kann. Im Grunde könnte ich das wohl auch direkt beim disable setzen, wie mir gerade auffiel.

Einen youtube Account habe ich nicht, das wollte ich eigentlich auch gern so lassen smile

Ich habe mir eben nochmal Dein "Pfaff31 Schrittmotor und Zahnriemen" angesehen / angehört. So unähnlich klang es dann doch nicht und die Ähnlichkeit nahm dann auch noch ein wenig zu, nachdem ich meinen Motor während des Laufens mal in die Hand nahm und er nicht mehr lose auf dem Tisch lag rolleyes

Liebe Grüße

Thorsten

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

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

#16 Beitrag von js_hsm »

Reduzier den Strom.
Der 4,2A Motor an meiner Adler 30 läuft mit ca 2A !

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

#17 Beitrag von toto »

Moin Achim,

den Strom habe ich nun reduziert.

Für mein dafürhalten läuft das eigentlich recht gut, seit ich weiß woher das "mahlende" Geräusch kommt. Wobei ich erstmal keinen Unterschied durch den geänderten Strom wahrnehme.

Nachdem ich noch mal kurz nachgedacht habe, ist das oben erwähnte abrupte Stoppen logisch. In der untersten Pedalstellung, wenn also vom analogRead eine 0 kommt disable ich den Antrieb ja ohne erst noch weiter abzubremsen. Ob das nun in der Praxis gut, quasi auch als Notstop, oder dumm ist kann ich mangels Näherfahrung nicht beurteilen.

Was mir vorhin aber noch auffiel ist, dass die Werte von analogRead nicht konstant sind. Wenn ich ganz vorsichtig das Pedal bewege (es gibt einen kleinen Leerweg) um den Motor gerade eben in Drehung zu bringen, springt das gelesene Signal zwischen 0 (disable) und 1 (31Hz) bei unveränderter Pedalstellung (es hat noch keine Rückstellfeder).

Liebe Grüße

Thorsten

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

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

#18 Beitrag von js_hsm »

Deswegen nutze ich
a: Totwert fürs Fußpedal, z.B. 50, darunter ist Stillstand mit Disable
b: wenn notwendig einen 1..4,7µF Kondensator am Analogeingang gegen Gnd.

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: 5410
Registriert: Montag 27. September 2021, 23:40
Wohnort: Erkrath
Kontaktdaten:

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

#19 Beitrag von js_hsm »

toto hat geschrieben: Dienstag 6. Februar 2024, 14:08
Die Sollfrequenz berechne setze ich auf 0, falls analogRead mir eine 0 liefert, ansonsten bestimme ich sie durch:

if (analogValue<Toter Bereich) analogValue=0;
map(analogValue, Toter Bereich, 1023, (long)minFrequency, (long)maxFrequency)
Gruß, Achim

Edit.
Meinen Quelltext hier zu posten würde mehr verwirren als klären da ich mehrere Typen von Fusspedalen erkenne und entsprechend auswerte.
Alles ist verzweigt in verschiedene Funktionen dafür.
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

#20 Beitrag von toto »

Moin Achim,

vielen Dank nochmal für Deine Mühe. Da wäre inzwischen mal ein Kasten Bier oder so fällig, Erkrath ist ja nicht so weit weg.

Das mit dem Kondensator werde ich ausprobieren. Auf solche Lösungen käme ich schon mal mangels Elektronikkenntnis nie.

Offen gestanden verstehe ich allerdings die Lösung mit dem Totpunkt nicht. Den Sollwert bestimme ich ja wie geschrieben aus den Pedalwerten. Wenn ich nun erst ab einem bestimmten höheren Wert den Antrieb auf enable setze (derzeit ab 1) erreiche ich doch erst mal nur, dass ich das Pedal weiter durchtreten muss bis der Motor anläuft. 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.
Für mein Verständnis ginge das doch nur anders, wenn ich z.B. im Timer das disable ignoriere solange der letzte Ist-Wert eine bestimme Frequenz noch nicht unterschritten hat. Der Motor also erst noch weiter abgebremst wird, bevor ich ihn dann tatsächlich disable. Oder habe ich da doch was Grundlegendes missverstanden?

Deinen Quelltext hatte ich zu keinem Zeitpunkt erwartet smile . Ich bin eigentlich mit dem persönlichen Ziel gestartet, das Ganze trotz mangelnder Erfahrung auf diesem Gebiet anhand Deiner Erläuterungen aus dem Ursprungsthread selbst umsetzen zu wollen. Das hat ja aber bislang leider nur leidlich funktioniert huh

Liebe Grüße

Thorsten

Antworten