Pages: 1 2 3 [4] 5   Go Down
Author Topic: Projekt Drehachse für Fräsmaschine  (Read 6059 times)
0 Members and 1 Guest are viewing this topic.
"The old Europe"
Offline Offline
Edison Member
*
Karma: 1
Posts: 2005
Bootloaders suck!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

'UL' steht fuer 'unsigned long'.

Bei der berechnung ist ja derauf zu achten, dass die zahlen auch in die variablen 'hineinpassen'.

Wenn man z.b.

Code:
Serial.println(1000*1000);

verwendet, dann wuerde man als ergebnis '1000000' erwarten, bekommt aber '19690'. Der compiler nimmt bei ZAHLEN ohne weitere spiezifikationen an, dass es signed integer sind (-32768...32767). Hier sind 30*32768 uebergelaufen und 19690 ist der rest.

Durch spiezifikation mit 'UL' sage ich der maschine deutlich, dass sie die zahl als unsigned 32bit variable zu betrachten hat (0...4.3Mrd), dann rechnet er 'richtig'.

Die deklaration der variable innerhalb einer funktion hat den vorteil, dass sie ausserhalb nicht mehr vorhanden ist. Man kann so z.b. bei geschachtelten funktionen den selben variablen namen verwenden, weil die aeussere funktion die in der inneren definierte nicht sieht. Weiterhin steht der speicher fuer diese variablen beim verlassen der funktion wieder zur verfuegung. Globale variablen leben ewig.

Ich habe die formel in 2 teile geteilt, weil ich das uebersichtlicher finde. Ausserdem habe ich 'DELTA' fuer die serielle ausgabe benoetigt.


Bezueglich der spindel:

Also der drehtisch soll sich z.b. mit der z-position des fraeskopfes bewegen. Ich dachte schon, das sollte phasen-starr mit der spindel-rotation selbst sein.

Oder meinst du doch soetwas?

« Last Edit: August 31, 2011, 05:15:32 am by madworm » Logged

• Upload doesn't work? Do a loop-back test.
• There's absolutely NO excuse for not having an ISP!
• Your AVR needs a brain surgery? Use the online FUSE calculator.
My projects: RGB LED matrix, RGB LED ring, various ATtiny gadgets...
• Microsoft is not the answer. It is the question, and the answer is NO!

Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Madworm,
vielen Dank für deine Erklärung die helfen mir wirklich sehr, ich verstehe immer mehr was da passiert.
Synchronität nicht mit der Z-Bewegung sondern mit der Spindeldrehzahl wie Deine erste Vermutung. Die Spindeldrehzal ist aber nicht sehr groß < 200 RPM. In späteren Schritten könnte ich mir vorstellen die Drehachse auch mit den anderen Maschinenachsen zu kombinieren. Aber erst mal barauche ich die Kombination mit der Spindel.
Ich muss jetzt erst noch ein anderes Projet weiter bringen, heute Abend werde ich das ausprobieren. Ich bin gespannt und freue mich schon darauf.
Vielen Dank
DrFlopp
Logged

"The old Europe"
Offline Offline
Edison Member
*
Karma: 1
Posts: 2005
Bootloaders suck!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Machbar ist es jedenfalls.

Logged

• Upload doesn't work? Do a loop-back test.
• There's absolutely NO excuse for not having an ISP!
• Your AVR needs a brain surgery? Use the online FUSE calculator.
My projects: RGB LED matrix, RGB LED ring, various ATtiny gadgets...
• Microsoft is not the answer. It is the question, and the answer is NO!

Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Madworm,
vielen Dank für das Video, das muss doch hinzubekommen sein.
Ich habe deinen Code jetzt ausprobiert, ich habe dabei die Übertragungsrate und das ein und ausschalten des Interrupts variirt. Ich habe die Spindel mit konstant 150 RPM rotieren lassen. Im Anhang findes Du ein Textdokument mit den Daten aus dem Terminal-Fenster. Ich bilde mir ein einen Einfluß der Übertragungsrate und der Interruptfunktion erkennen zu können.
Befriedigend ist das aber irgend wie nicht oder?
Gruß DrFlopp
 

* Messung.txt (2.84 KB - downloaded 12 times.)
Logged

"The old Europe"
Offline Offline
Edison Member
*
Karma: 1
Posts: 2005
Bootloaders suck!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Unter meinen idealbedingungen kann ich das nicht nachvollziehen. Ich habe mir ca. 5 minuten die ausgabe angesehen, nicht 1x gab es falsche rpm werte. Ich wuerde sagen, du hast ein problem mit der signalqualitaet des encoders. Wenn dein oszilloskop einen masken-test kann, dann koenntest du mal nach ausreissern in der pulslaenge des encodersignals suchen. Vielleicht langt es auch schon einen schmitt-trigger einzufuegen, der die pulsform aufraeumt. Oder ein staerkerer externer pull-up widerstand + RC filter gegen unrat auf der leitung.

Die viel zu hohen drehzahlen entsprechen ja zu kurzen zeiten, also wird der interrupt zu oft ausgeloest. Das ist fakt. Mit einem 'mono-flop' koenntest du dafuer sorgen, dass ein puls vom encoder einen puls wohl definierter laenge erzeugt. Die pulsdauer kann man dann so einstellen, dass ein zu frueh einsetzender falscher puls ignoriert wird. Mit einem nicht re-trigger baren mono-flop dazwischen sollte die drehzahl niemals hoeher als X gemessen werden koennen.

http://www.datasheetcatalog.org/datasheets/120/375514_DS.pdf
« Last Edit: August 31, 2011, 04:43:53 pm by madworm » Logged

• Upload doesn't work? Do a loop-back test.
• There's absolutely NO excuse for not having an ISP!
• Your AVR needs a brain surgery? Use the online FUSE calculator.
My projects: RGB LED matrix, RGB LED ring, various ATtiny gadgets...
• Microsoft is not the answer. It is the question, and the answer is NO!

Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Leute,
ich habe jetzt eine neue Encoderscheibe gefertigt. Damit bekomme ich recht gute Werte für die Drehzahl. Allerdings nur solange ich den Schrittmotor nicht anschließe. Die Schrittmotorströme scheinen das Encodersignal zu Stören. Ich werde jetzt mal versuchen die Schrirmung für das Motorkabel aufzulegen. Ich werde die Motorseitige Schirmung mal auf Masse legen, die treiberseitig versuche ich es dnn mal mit dem GND-Pin.
Ich habe die Regelung jetzt von Drehzahl auf Delta-T umgestellt. Dann benötige ich wesentlich weniger Divisions-Operationen und Float-Daten, sollte also besser funktionieren.

Habt Ihr bessere Ideen?
Gruß DrFlopp
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Leute,
ich habe jetzt das Problem eingegrenzt. Wenn ich dis Spannungs versorgung für den Motor am PololuBoard anschließe bekomme ich keine Probleme mit dem Encoder. Ich habe jetzt die Schirmung des Motorkabels auf beiden seiten aufgelegt. Motorseite am Gehäuse, Treiberseite auf den Minuspol der Versorgung.
Hat jemand eine Idee wo ich noch nach dem Fehler suchen kann?
Viel Grüße
DrFlopp
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Es ist eine Menge geschafft. Ich habe den Encoder jetzt deutlich verbessert, ich habe die Sromversorgung der Lichtschrane jetzt vollständig über den Arduono laufen, früher noch über die Fräsmaschine. Die neue Encoderscheibe liefert wesentlich sauberere Signale. Jetzt ist ganz deutlich zusehen wenn ich die serielle Kommunikation einschalte habe ich größere Ausfälle in der Regelung als wenn ich sie ausschalte. Bei ausgeschalteter serieller Kommunikation habe ich aber immer noch einen stotternden Lauf. Ich habe noch einen Smoosing Filter eingebaut, doch das hilft nicht sehr viel. Als nächstes versuche ich ein Notchfilter, ich weiß aber noch nicht so genau wie ich das programmieren soll.
Viele Grüße
DrFlopp
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Leute,
ich habe nun ein Notch-filter ausprobiert in dem ich gesagt habe bitte keine Abweichngen von mehr als 10% zulassen. Das Ergebnis war nicht befriedigend. Ich weiß nicht warum aber ich bin auf die Idee gekommen die Schiermung des Motorkabels auf der Aktorseite vom Gehäuse zu lösen und siehe da alles ist GUT!!!. Die Karre Läuft Freude große Freude, Hi Hi!!
Guß DrFlopp
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Leute,
die gestrige Euphorie war vielleicht estwas verfrüht. Heute ging wieder nichts. Ich habe jetzt das Encoder Kabel auch geschirmt, das funktiniert jetzt. Ich habe nur noch geringe Schwankungen in den Messwerten, die ich auf Ungleichmäßigkeiten in der Spindeldrehzahl zurück führe, also sollte das funktionieren.
Jetzt hatte ich das Problem, dass mein Steppertreiber sehr heiß wurde. Ich habe einen kleinen 12V Lüfter mit auf die Platiene gebaut, und blase den Pololu-Treiber an. Der wird dadurch so gut gekühlt, dass man ihn auch anfassen kann.
Doch kaum dass man ein Problem gelöst hat kommt auch gleich das nächte. Ich erreiche nicht mehr die erforderliche Drehzahl am Stepper. Ich habe im Allegro Datenblatt gelesen, dass der Chipp 2 Microsecunden minimale Periodendauer verträgt. 
http://www.pololu.com/file/download/a4988_DMOS_microstepping_driver_with_translator.pdf?file_id=0J450
Meine erforderliche Periodendauer liegt bei 5516 micros() bei minimaler Spindeldrehzahl. Das schafft der Motor nicht mehr. Bei ca 16000 micros() läuft er noch sehr sauber.
Wo kann das Problem liegen?
Viele Grüße
DrFlopp
Logged

"The old Europe"
Offline Offline
Edison Member
*
Karma: 1
Posts: 2005
Bootloaders suck!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Da der stepper in erster naeherung eine induktivitaet ist, geht sein drehmoment ja mit steigender step-frequenz nach unten da XL mit der frequenz steigt. Der motor sollte sich also bei zu hoher step-frequenz sehr leicht mit den fingern stoppen lassen.

Zur kompensation muss die versorgungsspannung fuer die motoren merklich angehoben werden, damit der strom in den wicklungen schnell genug ansteigen kann. Die maximal zulaessige spannung legt der treiber fest.
Logged

• Upload doesn't work? Do a loop-back test.
• There's absolutely NO excuse for not having an ISP!
• Your AVR needs a brain surgery? Use the online FUSE calculator.
My projects: RGB LED matrix, RGB LED ring, various ATtiny gadgets...
• Microsoft is not the answer. It is the question, and the answer is NO!

Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Madworm,
das Problem ist gefunden, ich habe den Stepp pin auf den Arduino Pin 10 gelegt. Parallel hatte ich das Signal auch auf den LED-Pin 13 gelegt. Mit dem Ociloskop konnte ich dann nachmessen, dass ich auf dem LED-Pin 13 ein schönes Rechteck liegen katte, doch auf dem PIN10 eine konstante Ppannung. Dann habe ich den PIN 9 ausprobier, mit dem selben Ergebnis. Ein kurzer Blick auf das Board zeigt PIN 9 und PIN10 sind PWM-Ports, PIN13 nicht - Scheinbar ist das der Grund. Kann das jemand erklären?
Viele Grüße
DrFlopp

Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 251
Posts: 21223
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Da der stepper in erster naeherung eine induktivitaet ist, geht sein drehmoment ja mit steigender step-frequenz nach unten da XL mit der frequenz steigt. Der motor sollte sich also bei zu hoher step-frequenz sehr leicht mit den fingern stoppen lassen.

Zur kompensation muss die versorgungsspannung fuer die motoren merklich angehoben werden, damit der strom in den wicklungen schnell genug ansteigen kann. Die maximal zulaessige spannung legt der treiber fest.

madworm
Das stimmt nur zum Teil.
Das stimmt für Spannungsgesteuerte Schrittmotore. Bei dieser Ansteuerung kannst Du die Spannung aber nicht über die Nennspannung des Schrittmotors erhöhen da ansonsten bei langsamer Drehzahl der Strom zu groß wird.
Stromgesteuerte Schrittmotore mit dem Entsprechenden Treiber begrenzen den Strom und so kann der Motor nicht durchbrennen. Für diese Ansteuerung beraucht es ca die 4-fache Nennspannung des Motors.
Grüße Uwe
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Leute,
ich habe jetzt mein erstes Zahnrad mit dieser Konfiguration gefräst. Es sieht sehr gut aus.
Gruß
DrFlopp
Logged

"The old Europe"
Offline Offline
Edison Member
*
Karma: 1
Posts: 2005
Bootloaders suck!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Das stimmt für Spannungsgesteuerte Schrittmotore.

Verwendet so etwas ueberhaupt jemand...

Und der hier verwendete treiber gehoert ja zur sinnvolleren kaste.

@DrFlopp: wo sind die bilder?
Logged

• Upload doesn't work? Do a loop-back test.
• There's absolutely NO excuse for not having an ISP!
• Your AVR needs a brain surgery? Use the online FUSE calculator.
My projects: RGB LED matrix, RGB LED ring, various ATtiny gadgets...
• Microsoft is not the answer. It is the question, and the answer is NO!

Pages: 1 2 3 [4] 5   Go Up
Jump to: