Mal wieder: Arduino und Rapsberry als Treiber-Boards - Deutsches Howto

More
27 Mar 2019 07:05 - 27 Mar 2019 07:17 #129755 by wicki

Die groste DRO der welt ! :) Schon !


danke
man muss halt was tun gegen nachlassende sehstaerke ;-)

aber der treiber kann auch 7-segmenter ansteuern.
die sind etwas kleiner und dann ist man preislich auch in dimensonen,
bei denen kein tablet mehr mitkommt:
www.amazon.de/8-Stelle-Anzeige-MAX7219-D...RZXKX218B7F2T395M1RG

sind auf dem weg aus chinesien zu mir. bins gespannt, wann sie ankommen
aber man kann damit halt nicht aplhanumerisch - und man kann kein tetris drauf spielen....

und das sollte auch ein arduino locker schaffen. aber wenn ich preis/leistung von raspberry zero
und arduino mit eth- oder wlan-shield vergleiche, dann faellt das ganz klar zugunsten vom
raspberry aus.


jetzt ist auch der quad-modus fuer den raspberry-treiber wieder gaengig (der war bei
basteln verloren gegangen).
und wenn das die tests jetzt wirklich bis 5kHz mitmacht, dann komme ich auf
(5000*(1/120))*60 = 2500mm/minute bei 1/120mm aufloesung.
das ist mehr als meine maschinchen verpacken, denke ich.
Last edit: 27 Mar 2019 07:17 by wicki.

Please Log in or Create an account to join the conversation.

More
27 Mar 2019 11:43 #129766 by pl7i92
die 7segment gibt es auch in grossen grössen für wenig geld
und jeweils in 2er ziffern erweiterbar
mit den 7219 habe ich auch schon einiges mit den mechatroniker Auszubildenden realisiert
tolle teile

Please Log in or Create an account to join the conversation.

More
28 Mar 2019 17:46 #129843 by wicki
sodele,

einer der drehwinkelgeber ist jetzt da.
funktionieren tut er auch.
jetzt wie ich nur noch nicht, ob und wie ich ihn anschliesse.
ist ja auch ein mechanisches problem...

die optionen:

einfach auf linCNC-input pins gehen?
ist vielleicht nicht so clever und sinnvoll, weil man dann ja das etwas schraege
encodersignal (www.thingbits.net/products/incremental-p...otary-encoder-400p-r)
dort zerlegen muss.

mit einem rasberry oder arduino das signal in absolute positionen (bzw. bewegungen)
umrechnen und die daten per raw-eth senden?
klingt naheliegend....

oder nach einem fertigen encoderchip fuer diese geber suchen?
gibts bestimmt....

die zweite moeglichkeit ist vermutlich die sinnvollste.

Please Log in or Create an account to join the conversation.

More
28 Mar 2019 19:43 #129851 by Mike_Eitel
Das ist kein schräges sondern das normale Encoder Signal. Durch den 90°Versatz kannst Du die Richtung bestimmen. Und wenn Du's passend zu LCNC machen willst solltest Du im Arduino Increments daraus machen. Wie bei MESA ;-)

Please Log in or Create an account to join the conversation.

More
28 Mar 2019 20:57 #129855 by wicki

Das ist kein schräges sondern das normale Encoder Signal.


na, ich hatte gehofft/erwartet, dass da so ein richtiger 2-bit-zaehler rauskommt.
naja, geht ja auch so.
und auf dem teil steht "400" drauf - und ich hatte auch 400er und 600er bestellt.
erstaulicherweise liefert es aber 1600 ticks pro umdrehung. wie es mit der
reproduzierbarkeit aussieht dass muss ich noch testen.

aber ich gaube, mit einem einem kleinen hebelarm dran, kann man daraus auch
einen super messtaster bauen.
ob ein rapsi-zero aber das steuern von led-matrix kommunikation und erfassen
von 4 encodern gleichzeitig schafft, das weisss ich auch noch nicht.
ein "normales" raspberry wird es hinbekommen.

vielleicht nehme ich n arudino als konzentrator.

Please Log in or Create an account to join the conversation.

More
28 Mar 2019 21:07 #129857 by Mike_Eitel

Please Log in or Create an account to join the conversation.

More
28 Mar 2019 22:17 #129867 by wicki

400 x 4 Flanken = 1600


d.h.: die mit 1600p/r beworben werden haetten 6400 ?

www.ato.com/incremental-rotary-encoder-shaft-1600-ppr

das mag ich irgendwie nicht so recht glauben - auch wenn das teil mal eben das 30-fache kostet...

Please Log in or Create an account to join the conversation.

More
29 Mar 2019 09:11 #129890 by wicki
29.03.2019 - LinuCNC Treiberpaket - Neue Version

Endlich ist wieder eine neue Version zum Testen fertig geworden.
Download

Ich werde in den naechsten Tage nochmal eine komplette Neuinstallation auf Basis
dieser Veroeffentlichung vornehmen und gefundene Fehler korrigieren.

Wahrscheinlich kommt dann auch noch ein Encoder-Modul fuer China-Drehwinkelgeber dazu.

Was das Paket enthaelt
######################

ethraw.comp-Treiber
Sendet linuxCNC-OUT-Pins zum Rapsberry und empfaengt GPIO-IN-Pins von dort.
Sendet zudem linuxCNC-Float-Values per UDP an beliebige IP-Adresse.


Laeuft z.zt. nur mit PREEMPT bzw. im Userspace.
Fuer RT-Systeme muss der ethsh.comp-Treiber verwendet werden.


ethsh.comp-Treiber
Sendet linuxCNC-OUT-Pins zum Rapsberry und empfaengt GPIO-IN-Pins von dort.
Sendet zudem linuxCNC-Float-Values per UDP an beliebige IP-Adresse.
ethsh.comp macht das aber nicht eigenstaendig sondern benoetigt ein
externes Programm im Userspace (pcIOethRaw) das das Kommunikation
via shared-Memory handlet.


raspIOethRaw
Das Raspberry-seitige Gegenstueck zu obigem Treiber. Details weiter unten.

linCNC_max
Raspi-Seitiger UDP-Client zur Anzeige von linCNC-Float Values (positionen)
auf einer fast beliebig grossen LED-matrix


etheraw.ino
Zur Zeit etwas spiefmuetterlich behandelter Arduino-Client fuer den
ethraw.comp-Treiber


und dann gibts noch

pcIOethRaw
Driver und Test-Tool fuer den ethraw.comp-Treiber.
Dient zum Testen der PC/Rapsberry-Kommunikation _UND_ als PC-seitiger Treiber,
wenn die "ethsh.comp"-Komponente verwendet wird.
"ethsh" ist eine RT-Kompomente, die ausschliesslich ueber shared-Memory
kommuniziert.

Please Log in or Create an account to join the conversation.

More
30 Mar 2019 13:38 #129967 by wicki
Nun also wie versprochen:
30.03.2019 Testinstallation - Step by step auf einem Vanilla-System

wget erste.de/ethraw/linCNC_eth.20190329_09.tgz
(bzw. letzte aktuelle version)


tar -xzvf linCNC_eth.20190329_09.tgz

halcompile --compile ethraw.comp &&cp ethraw.so ........../linuxcnc.2.7.14.TEST/rtlib/
#Compiling realtime ethraw.c
#Linking ethraw.so

halcompile --compile ethsh.comp &&cp ethsh.so ........./linuxcnc.2.7.14.TEST/rtlib/
Compiling realtime ethsh.c
Linking ethsh.so

# kopieren in das rtlib-Verzeichnis

cp ethraw.so ethsh.co /..path_to_linCNC-source..../linuxcnc.2.7.14.TEST/rtlib/


# compilieren vin pcIOethRaw.c
# in diesem Fall ohne rtlib: //#define WITH_RT_SHMEM // we use RT-shmem

gcc pcIOethRaw.c -o pcIOethRaw

# starten von pcIOethRaw
# Netzwerk-Device und UDP-Adresse ggf. anpassen.
# letzteres nur, wenn ein UDP-Display benutzt wird

sudo ./pcIOethRaw -i eno1 -r 01:02:03:04:05:06 -s 06:05:04:03:02:01 -k 12391 -u 192.168.0.242 -d 64


# linuxCNC starten

linuxcnc INI/ethsh.type0.ini

# wenn nun im linuxcnc manuell eine Achse verfahren wird, dann sollten die Positionen
# per UDP versendet werden:
# (sichtbar wg. "-d 64"-Parameter beim /pcIOethRaw-Aufruf)


#Sending UDP socket: 6 port 666 floatkey:0 validfloatval: 1.112 lastfloatval: 1.112
#Sending UDP socket: 6 port 666 floatkey:0 validfloatval: 1.071 lastfloatval: 1.071
#Sending UDP socket: 6 port 666 floatkey:0 validfloatval: 1.071 lastfloatval: 1.071


# ebenfalls sichtbear sein sollten im tcpdump die RAW-eth-Pakete, die der Treiber beim
# Verfahren der Achsen versendet:

tcpdump -i eno1 -s 100 -n -x
tcpdump -i eno1 -s 100 -n -x

13:59:28.743227 01:02:03:04:05:06 > 06:05:04:03:02:01 Null Information, send seq 0, rcv seq 0, Flags [Command], length 48
0x0000: 420d 0000 0000 0000 0000 2849 1740 9c0c
0x0010: 0000 0000 0000 0000 0000 0000 0000 0000
0x0020: 0000 0000 0000 0000 0000 0000
13:59:28.746648 01:02:03:04:05:06 Null > 06:05:04:03:02:01 SNA Information, send seq 0, rcv seq 0, Flags [Command], length 48
0x0000: 420d 0000 0000 0000 0000 2849 1740 9c0c
0x0010: 0000 0000 0000 0000 0000 0000 0000 0000
0x0020: 0000 0000 0000 0000 0000 0000




# Wenn statt "ethsh" (mit pcIOethRaw) der Treiber ethraw verwendet wird, dann ist
# _kein_ pcIOethRaw erforderlich. Das Handling der Kommunikation regelt dann
# der ethraw-Treiber selbst.

linuxcnc INI/ethraw.type0.ini


# Der tcpump sieht dann etwas anders aus, da der Treiber die zusaetzlich die
# Postionsdaten mit in das RAW-Pakt einpackt:

tcpdump -i eno1 -s 100 -n -x

14:02:02.098782 01:02:03:04:05:06 > 06:05:04:03:02:01 Null Information, send seq 0, rcv seq 0, Flags [Response], length 48
0x0000: 0000 0000 0000 0000 0200 0000 0000 0600
0x0010: 0000 0000 0000 0000 0000 0000 0000 0000
0x0020: 0000 0000 0000 0000 0000 0000
14:02:02.839895 01:02:03:04:05:06 > 06:05:04:03:02:01 Null Information, send seq 0, rcv seq 0, Flags [Command], length 48
0x0000: 0000 0000 0000 0000 0100 0000 0000 0700
0x0010: 0000 0000 0000 0000 0000 0000 0000 0000
0x0020: 0000 0000 0000 0000 0000 0000




# Nun zur Rapsberry-Seite.
# Zunaechst ein "echtes" Raspberry (kein "Zero") zur Steuerung der Motoren.
# Die Anschlussbelegung ist in GPIO.h definiert.


# Compilieren des Treibers:

gcc rasPIioEthRaw.c -o rasPIioEthRaw -lpthread -lbcm2835

# und starten:

sudo ./rasPIioEthRaw -i eth0 -s 01:02:03:04:05:06 -r 06:05:04:03:02:01 -d 16 -u 192.168.0.241

# Durch "-d 16" werden alle eingehenden (passenden) Raw-Eth-Pakete angezeigt.
# Beim Verfahren einer Achse sollte es so aussehen:
# (nach dem Test den debug-Mode wieder deaktivieren nicht vergessen!)

(kann das ding hier keine fixed-fonts?)

Ethernet Header
|-incomming source address : 01:02:03:04:05:06
|-expected source address : 01:02:03:04:05:06
|-incomming destination address: 06:05:04:03:02:01
|-expexted destination address : 06:05:04:03:02:01
|-type: 00 00 payload :04:00:00:00:00:0D size: 62
|-validoutval : 04:00:00:00:00:0D (from sender) sndrawcount: 34
|-validinval :0D:00:00:00:00:00 recrawcount: 0
|-validfloat key(05) : 0.0000

Ethernet Header
|-incomming source address : 01:02:03:04:05:06
|-expected source address : 01:02:03:04:05:06
|-incomming destination address: 06:05:04:03:02:01
|-expexted destination address: 06:05:04:03:02:01
|-type: 00 00 payload : 00:00:00:00:00:0D size: 62
|-validoutval : 00:00:00:00:00:0D (from sender) sndrawcount: 35
|-validinval : 0D:00:00:00:00:00 recrawcount: 0
|-validfloat key(00) : 0.1437


#Wenn nun an den Pins
9 10
#A-Step 2 0 GPIO17 11 12
#A-Dir 3 2 GPIO27 13 14

# ein TA6600 mit STEP/und DIR und am Pin

#Enable 1 7 GPIO4 7 (1==OFF) 8

# der TA6600-Enable angeschlossen wird, dann sollte sich beim manuellen Verfahren
# der A-Achse der Motor drehen.


# und ich dreh jetzt ne Runde mit dem Moped ;-)

# Im naechsten Schitt folgt der Anschluss eines Drehwinkelgebers an diesen Motor.
# Achja: wer schon ein LED-Matrix-Display mit dem 7219 gebastelt hat, der kann
# das an ein Raspberry-zero anschliessen und die Ausgaben dort beobachten.
#compilieren:

gcc linCNC_max.c -o linCNC_max -lbcm2835

# und starten:

./linCNC_max
The following user(s) said Thank You: tommylight

Please Log in or Create an account to join the conversation.

More
30 Mar 2019 16:51 #129980 by pl7i92
Das wird ja immer besser
nicht das das noch ein thema in der arduino community wird da stagnierts bei grbl


Bei dem wetter Fährt man Cabrio

Please Log in or Create an account to join the conversation.

Time to create page: 0.090 seconds
Powered by Kunena Forum