- Posts: 183
- Thank you received: 21
Mal wieder: Arduino und Rapsberry als Treiber-Boards - Deutsches Howto
- wicki
- Offline
- Elite Member
-
Less
More
7 years 6 months ago #130195
by wicki
Replied by wicki on topic Mal wieder: Arduino und Rapsberry als Treiber-Boards - Deutsches Howto
zwischenergebnisse mit arduino zum auswerten eines 1600 edges/umdrehung-drehwinkelgebers:
ansteuerung des schrittmotors (1/2-schritt) mit 1.6kHz - (160 u/min)
resultiert dann in rund 6.5kHz (6339,56kHz) am ausgang des gebers.
das wird vom arduino noch recht zuverlaessig erfasst und ueber einen ringbuffer
seriell mit 115kbaud ausgegeben.
_aber_......
das problem ist wohl die hohe aufloesung von 1600 edges/turn und wenn der schrittmotor
im halbschritt laeuft, dann "federt" er beim anhalten scheinbar leicht zurueck und es wird
eine rueckwaertsbewegung erfasst (1 oder 2 1600stel).
(bei hoehren drehzahlen habe ich eine geringere fehlerqoute als bei sehr langsamen
drehzahlen. vielleicht ist es auch ein mechanisches problem durch vibrationen)
vermutlich waere es klueger, einen encoder zu verwenden, der genau so viel signale/umdrehung
wie auch der motor macht.
oder ich zaehle nur 4 vollstaendige rechtecksignale als einen schritt.
wie machen das andere?
ansteuerung des schrittmotors (1/2-schritt) mit 1.6kHz - (160 u/min)
resultiert dann in rund 6.5kHz (6339,56kHz) am ausgang des gebers.
das wird vom arduino noch recht zuverlaessig erfasst und ueber einen ringbuffer
seriell mit 115kbaud ausgegeben.
_aber_......
das problem ist wohl die hohe aufloesung von 1600 edges/turn und wenn der schrittmotor
im halbschritt laeuft, dann "federt" er beim anhalten scheinbar leicht zurueck und es wird
eine rueckwaertsbewegung erfasst (1 oder 2 1600stel).
(bei hoehren drehzahlen habe ich eine geringere fehlerqoute als bei sehr langsamen
drehzahlen. vielleicht ist es auch ein mechanisches problem durch vibrationen)
vermutlich waere es klueger, einen encoder zu verwenden, der genau so viel signale/umdrehung
wie auch der motor macht.
oder ich zaehle nur 4 vollstaendige rechtecksignale als einen schritt.
wie machen das andere?
Please Log in or Create an account to join the conversation.
- pl7i92
- Offline
- Platinum Member
-
Less
More
- Posts: 1872
- Thank you received: 358
7 years 6 months ago #130266
by pl7i92
Replied by pl7i92 on topic Mal wieder: Arduino und Rapsberry als Treiber-Boards - Deutsches Howto
seit 1982 werden 80er Chips eingesetzt mit 1mhz
in asm programmiert die dann ein TTL produzieren und ein Richtungssignal setzen Haidenhain TNC <200
ein flipflop reduziert das Signal auf 1 Takt
ist aber nicht das wahre wenn ich volle Signalqualität wegen Rechnerleistung reduzieren muss 2019
in asm programmiert die dann ein TTL produzieren und ein Richtungssignal setzen Haidenhain TNC <200
ein flipflop reduziert das Signal auf 1 Takt
ist aber nicht das wahre wenn ich volle Signalqualität wegen Rechnerleistung reduzieren muss 2019
Please Log in or Create an account to join the conversation.
- wicki
- Offline
- Elite Member
-
Less
More
- Posts: 183
- Thank you received: 21
7 years 6 months ago #130273
by wicki
wieviel kHz koennen die denn verarbeiten?
ich kriege mit dem arduino momentan 13kHz abgetastet, die werte umgerechnet und
mit 115kBaud ausgegeben. theoretisch fuer 8 encoder.
ich nehme an, das mit asm noch mehr geht - und ein raspberry sollte das ganz locker
mit mehr als 20 kHz schaffen.
da ist dann auch bei den gebern das ende erreicht.
oben der output eines encoderkanals, unten das abtastsignal des arduino.
ab 10kHz wird es etwas grenzwertig.
(den frequenzanzeigen des oscs. darf man nur bedingt trauen - mehr als ein grober
richtwert sind die nicht)
ich bastel gerade die linCNC-reader componente und bin mir grad noch nicht sicher,
ob ich direkt lesen oder via shmem die daten annehmen soll.
im moment tendiere ich zu shmem.
Replied by wicki on topic Mal wieder: Arduino und Rapsberry als Treiber-Boards - Deutsches Howto
ist aber nicht das wahre wenn ich volle Signalqualität wegen Rechnerleistung reduzieren muss 2019
wieviel kHz koennen die denn verarbeiten?
ich kriege mit dem arduino momentan 13kHz abgetastet, die werte umgerechnet und
mit 115kBaud ausgegeben. theoretisch fuer 8 encoder.
ich nehme an, das mit asm noch mehr geht - und ein raspberry sollte das ganz locker
mit mehr als 20 kHz schaffen.
da ist dann auch bei den gebern das ende erreicht.
oben der output eines encoderkanals, unten das abtastsignal des arduino.
ab 10kHz wird es etwas grenzwertig.
(den frequenzanzeigen des oscs. darf man nur bedingt trauen - mehr als ein grober
richtwert sind die nicht)
ich bastel gerade die linCNC-reader componente und bin mir grad noch nicht sicher,
ob ich direkt lesen oder via shmem die daten annehmen soll.
im moment tendiere ich zu shmem.
Please Log in or Create an account to join the conversation.
- wicki
- Offline
- Elite Member
-
Less
More
- Posts: 183
- Thank you received: 21
7 years 6 months ago - 7 years 6 months ago #130351
by wicki
Replied by wicki on topic Mal wieder: Arduino und Rapsberry als Treiber-Boards - Deutsches Howto
jetzt habe ich die abtastrate mit dem arduino auf 20kHz hoch bekommen.
aber richtig testen kann ich nun doch noch nicht:
grad eben hat sich der gestern eingetroffene 600p/r- encoder (der tatsaechlich
2400 edges/turn lieferte) stillschweigend verabschiedet.
kein output-signal mehr da :S
und das mit den 20kHz muss ich auch nochmal revidieren:
erfassen kann ich zwar so schnell - aber wenn ich die erfassten daten
ausgebe, dann sackt die abtastrate auf 7kHz ab
muss ich doch noch was dran optimieren.....
aber richtig testen kann ich nun doch noch nicht:
grad eben hat sich der gestern eingetroffene 600p/r- encoder (der tatsaechlich
2400 edges/turn lieferte) stillschweigend verabschiedet.
kein output-signal mehr da :S
und das mit den 20kHz muss ich auch nochmal revidieren:
erfassen kann ich zwar so schnell - aber wenn ich die erfassten daten
ausgebe, dann sackt die abtastrate auf 7kHz ab
muss ich doch noch was dran optimieren.....
Last edit: 7 years 6 months ago by wicki.
Please Log in or Create an account to join the conversation.
- wicki
- Offline
- Elite Member
-
Less
More
- Posts: 183
- Thank you received: 21
7 years 6 months ago #130431
by wicki
Replied by wicki on topic Mal wieder: Arduino und Rapsberry als Treiber-Boards - Deutsches Howto
ich habs getan.... 
(aber noch nicht veroeffentlicht - weil: muss noch testen)
ethsh.comp kann jetzt die daten aus bis zu 5 encodern einlesen, die
von einem arduino seriell ankommen.
sie werden von einem userpace-reader angenommen und per shmem
an linCNC weitergreicht.
der reader liefert die jeweils aktuellen daten mit 115kbaud an. aber nur, wenn
sich werte aendern. ansonsten wird die position 1xsekunde uebertragen.
das protokoll ist einfach:
byte
6 x STX
1 x endodernr
4 x encoderposition
der arduino kann 4 encoder mit bis zu 20kHz einlesen. (8 sollte auch gehen,
aber wer braucht das?) und die encoder koennen selbst auch nur bis 20kHz.
leider hat einer der encoder (400/600 p/r bzw. 1600/2400 e/r) wohl einen wackler
(der 600er). mal liefert er daten, mal nicht. kann also noch nicht richtig mit
mehreren achsen testen.
aber nun koennte ich mal wieder hilfe gebrauchen:
in ethsh.0.par-00.pos steht jeweils die aktuelle encoderposition.
wie koppel ich das nun am sinnvollsten an linuxCNC an ?
wie sage ich ihm also:
verwende ethsh.0.par-00.pos als position-fb
?
gibt es da irgendwo eine beispiel-config, die ich mir ansehen sollte?
vielleicht eine, die das vorgehen bei nur einer achse beschreibt?
waere prima, wenn mir da jemand helfen koennte.
wicki
(aber noch nicht veroeffentlicht - weil: muss noch testen)
ethsh.comp kann jetzt die daten aus bis zu 5 encodern einlesen, die
von einem arduino seriell ankommen.
sie werden von einem userpace-reader angenommen und per shmem
an linCNC weitergreicht.
der reader liefert die jeweils aktuellen daten mit 115kbaud an. aber nur, wenn
sich werte aendern. ansonsten wird die position 1xsekunde uebertragen.
das protokoll ist einfach:
byte
6 x STX
1 x endodernr
4 x encoderposition
der arduino kann 4 encoder mit bis zu 20kHz einlesen. (8 sollte auch gehen,
aber wer braucht das?) und die encoder koennen selbst auch nur bis 20kHz.
leider hat einer der encoder (400/600 p/r bzw. 1600/2400 e/r) wohl einen wackler
(der 600er). mal liefert er daten, mal nicht. kann also noch nicht richtig mit
mehreren achsen testen.
aber nun koennte ich mal wieder hilfe gebrauchen:
in ethsh.0.par-00.pos steht jeweils die aktuelle encoderposition.
wie koppel ich das nun am sinnvollsten an linuxCNC an ?
wie sage ich ihm also:
verwende ethsh.0.par-00.pos als position-fb
?
gibt es da irgendwo eine beispiel-config, die ich mir ansehen sollte?
vielleicht eine, die das vorgehen bei nur einer achse beschreibt?
waere prima, wenn mir da jemand helfen koennte.
wicki
Please Log in or Create an account to join the conversation.
Moderators: Muecke
Time to create page: 3.496 seconds