Ich hatte im Netz die Idee gefunden, eine gewöhnliche USB Maus mit einem grossen "CNC-Handwheel" zu modifizieren um u.a. ein wenig Stationsgefühl zu bekommen. Besagtes Teil ist um die 15€ aus China beschafft und erstaunlich solide gefertigt. Der alte , mechanische Encoder entfernt, der neue angeschlossen, aber es tut sich nichts: die neue Hardware wird nicht erkannt....Mit dem alten Encoder läuft die Maus, wenn ich den "Chinesen" am Oscar habe, zeigt er zwei Signale, die zeitlich verschoben sind gleichzeitig, wenn ich drehe.... Wo könnte hier ein Fehler liegen? Hat hier jemand ähnliches versucht und möchte mal seine Erfahrungen mitteilen? freundliche Grüsse Wolfgang
Das wird ohne exakte technische Daten niemand sagen können. Welche Maus? Welches Chinateil? Schaltbild?
Eventuell passt das Raster/Größe des Encoders nicht. Bilder bitte bzw. Bezeichnungen.
Hallo, vielen Dank an euch Beiden für euer Interesse: hier gebe ich meine verfügbaren Infos an: Zur Maus: M-S48a MS48a M S48a Kugelmaus Kugel Maus Mouse USB Scrollrad 3Tasten beige NEU das Bild zeigt die Maus vor der Operation..... Zum Handrad: Geeignet für CNC Systeme, Gravieren Bearbeitung, usw Hochwertige, langlebige Features: Terminal: 4 100PPR, Puls je Umdrehung Material: Aluminium Legierung 4 Drahttyp : A, B, OV, VCC Elektrische Daten: Versorgungsspannung: DC 5 V Leistung: 100rpm Temperatur: minus 30 bis 85 celsius Ausgangswellenform: Rechteckwelle Farbe: Schwarz Größe: ca. 60 x 34mm/2.36 x 1.34 ""(OD X H) Gewicht: 210g Schaltbilder sind leider nicht vorhanden,aber Bilder die Idee kam hierher: www.dxpraxis.de/zub.html#knopf freundliche Grüsse Wolfgang
:
Bearbeitet durch User
Beitrag #5548498 wurde vom Autor gelöscht.
Danke, aber das Wesentliche fehlt noch immer. Wie hast Du den Encoder verdrahtet? Was lässt Dich annehmen, dass der neue Encoder einfach anstatt des alten einsetzbar ist? ( Anschlussbild, Codetype ). Encoder sind nicht alle gleich ( Grey Code? )
:
Bearbeitet durch User
Hallo, du fragst: Was lässt Dich annehmen, dass der neue Encoder einfach anstatt des alten einsetzbar ist? Ich bin davon ausgegangen, dass es bei mir genauso funktionieren würden, wie in dem angegebenen Internetbeitrag: www.dxpraxis.de/zub.html#knopf möglicherweise hätte es mit einer anderen Maus so geklappt? Angeschlossen habe ich den neuen Encoder: Die Datenleitungen an A + B, "+" und "-" der Mausversorgung an "0" und Vss des neuen Encoders. freundliche Grüsse Wolfgang
:
Bearbeitet durch User
Linux-Rechner und nen alten PC mit LPT-Port ??? Dann so in der Art:
1 | #include <stdio.h> |
2 | #include <stdlib.h> |
3 | #include <unistd.h> |
4 | #include <fcntl.h> |
5 | #include <signal.h> |
6 | #include <sys/ioctl.h> |
7 | #include <linux/lp.h> |
8 | |
9 | /* Drehencoder am LPT-Port
|
10 | * Programm liest an LPT angeschlossenen Drehgeber ein
|
11 | * und simmuliert bei jeden Drehschritt einen Tastendruck
|
12 | * auf Cursor Tasten Up/Down
|
13 | *
|
14 | *
|
15 | * ENCODER Sub-D Stecker 25pol.
|
16 | * ┌─────┐
|
17 | * │ ┌─┐ │ ┌──────────────────────────────┐ ┌────────┐
|
18 | * │ └─┘ │ │ ───────────────────────────── │
|
19 | * └┬─┬─┬┘ A = 12 │ 1 ╲ * * * * * * * * * * * * * ╱ 13 │
|
20 | * │ │ └──────────────┘ 14 ╲ * * * * * * * * * * * * ╱ 25 │
|
21 | * │ │ GND = 18-25 ───────────────────────── │
|
22 | * │ └──────────────────────────────────┴─┴─┴─┴─┴─┴─┴─┘ │
|
23 | * │ B = 13 │
|
24 | * └────────────────────────────────────────────────────────────┘
|
25 | *
|
26 | */
|
27 | |
28 | #define DEVICE "/dev/lp0" // LPT Device zum lesen
|
29 | #define ENC_A LP_POUTPA // Drehgeberanschluß A an Input-Leitung PaperOut
|
30 | #define ENC_B LP_PSELECD // Drehgeberanschluß B an Input-Leitung Select
|
31 | |
32 | int lpt_fd; |
33 | |
34 | // ------------------------------------------------------------------------------------------------------------
|
35 | // Funktionen werden angesprungen wenn der Encoder bewegt wird
|
36 | void on_enc_right (void) |
37 | {
|
38 | int x = system ("xdotool key Down"); |
39 | }
|
40 | void on_enc_left (void) |
41 | {
|
42 | int x = system ("xdotool key Up"); |
43 | }
|
44 | // ------------------------------------------------------------------------------------------------------------
|
45 | void end_func (int sig) |
46 | {
|
47 | // LPT Port schließen
|
48 | close(lpt_fd); |
49 | printf("\nLPT-Encoder beendet\n"); |
50 | exit(0); |
51 | }
|
52 | // ------------------------------------------------------------------------------------------------------------
|
53 | void init_func (void) |
54 | {
|
55 | // LPT Port öffnen, Reset
|
56 | if ((lpt_fd=open(DEVICE, O_WRONLY)) < 0) { |
57 | printf("LPT-Encoder kann %s nicht öffnen\n", DEVICE); |
58 | end_func(0); |
59 | }
|
60 | ioctl(lpt_fd, LPRESET); |
61 | printf("LPT-Encoder gestartet\n"); |
62 | |
63 | //Signalhandler einrichten
|
64 | signal(SIGTERM, end_func); |
65 | signal(SIGINT, end_func); |
66 | }
|
67 | // ------------------------------------------------------------------------------------------------------------
|
68 | int get_lpt_value (void) |
69 | {
|
70 | // Raw-Value LPT Port, Statusleitungen holen, zurückgeben
|
71 | int port_val; |
72 | |
73 | if (ioctl(lpt_fd, LPGETSTATUS, &port_val) < 0) { |
74 | printf("LPT-Encoder kann nicht von %s lesen\n", DEVICE); |
75 | end_func(0); |
76 | }
|
77 | port_val^=LP_PBUSY; |
78 | return port_val; |
79 | }
|
80 | // ------------------------------------------------------------------------------------------------------------
|
81 | int main (void) |
82 | {
|
83 | static const int enc_tab[] = {0,0,-1,0,0,0,0,1,1,0,0,0,0,-1,0,0}; |
84 | static int enc_last=0; |
85 | int port_val; |
86 | int enc_delta; |
87 | |
88 | init_func(); |
89 | |
90 | while (1) { |
91 | // Encoder jede ms abtasten
|
92 | usleep(1000); |
93 | port_val = get_lpt_value(); |
94 | enc_last = (enc_last << 2) & 0x0F; |
95 | if (port_val & ENC_A) enc_last |=1; |
96 | if (port_val & ENC_B) enc_last |=2; |
97 | enc_delta = enc_tab[enc_last]; |
98 | |
99 | if (enc_delta == -1) on_enc_right(); |
100 | else if (enc_delta == 1) on_enc_left(); |
101 | }
|
102 | // Wird nie erreicht
|
103 | end_func(0); |
104 | }
|
Ich hab den Encoder am PC um durch ellenlange PDF-Dokumente zu scrollen. Macht sich für mich besser wenn ich durch Kirchenbücher oder andere Archivunterlagen suche als am Mausrad zu drehen.
Hallo Thomas, vielen Dank für deinen Beitrag. So ein "dicker Knopf" hat viele angenehme Seiten. Du fragst : Linux-Rechner und nen alten PC mit LPT-Port ??? Leider nein. Die Handhabung nach deinen Ausführungen würden mich als " PC-nur-user" auch vermutlich überfordern. freundliche Grüsse Wolfgang
Thomas G. schrieb: >
1 | > * ENCODER Sub-D Stecker 25pol. |
2 | > * ┌─────┐ |
3 | > * │ ┌─┐ │ ┌──────────────────────────────┐ ┌────────┐ |
4 | > * │ └─┘ │ │ ───────────────────────────── │ |
5 | > * └┬─┬─┬┘ A = 12 │ 1 ╲ * * * * * * * * * * * * * ╱ 13 │ |
6 | > * │ │ └──────────────┘ 14 ╲ * * * * * * * * * * * * ╱ 25 │ |
7 | > * │ │ GND = 18-25 ───────────────────────── │ |
8 | > * │ └──────────────────────────────────┴─┴─┴─┴─┴─┴─┴─┘ │ |
9 | > * │ B = 13 │ |
10 | > * └────────────────────────────────────────────────────────────┘ |
11 | > * |
12 | > */ |
Oha: mit C & ASCII-art kann man also auch Drehgeber mit Speisespannung versorgen... und zwar drahtlos! Weiss das der Compiler?
Noa Sonbalg schrieb: > Oha: mit C & ASCII-art kann man also auch Drehgeber mit Speisespannung > versorgen... und zwar drahtlos! > Weiss das der Compiler? Dem Compiler ist der Aufbau des Drehgebers relaiv egal... Ihm ist es ebenso egal daß mein Drehgeber auch nur 3 Anschlüsse besitzt. A und B liegen über Pull-Ups der Druckerschnitstelle an 5 Volt.
Thomas G. schrieb: > Noa Sonbalg schrieb: >> Oha: mit C & ASCII-art kann man also auch Drehgeber mit Speisespannung >> versorgen... und zwar drahtlos! >> Weiss das der Compiler? > > Dem Compiler ist der Aufbau des Drehgebers relaiv egal... > Ihm ist es ebenso egal daß mein Drehgeber auch nur 3 Anschlüsse besitzt. > A und B liegen über Pull-Ups der Druckerschnitstelle an 5 Volt. Ich bezweifle jedoch dass dem Drehgeber mit Anschluss > 4 Drahttyp : A, B, OV, VCC es egal ist dass er keine Speisespannung bekommt. Ausser mir entgeht dass es sich bei diesem Drehgeber tatsächlich um ein ausschliesslich elektomechanisches Exemplar handelt; dann frage ich mich aber wozu bei der Herstellung der Aufwand für den VCC-Anschluss getrieben wurde.
Hallo, du schreibst: Ausser mir entgeht dass es sich bei diesem Drehgeber tatsächlich um ein ausschliesslich elektomechanisches Exemplar handel Ich habe das Teil geöffnet und bin sicher, dass es eine opto-elektrische Impuslerzeugung hat. freundliche Grüsse Wolfgang
Noa Sonbalg schrieb: > Ausser mir entgeht dass es sich bei diesem Drehgeber tatsächlich um ein > ausschliesslich elektomechanisches Exemplar handelt; dann frage ich mich > aber wozu bei der Herstellung der Aufwand für den VCC-Anschluss > getrieben wurde. Oh, man möge mir bitte vergeben, daß ich dem TO nicht mit seinem Drehgeber konkret helfen konnte und mir daher angemaßt habe MEINE Variante zu posten, wie ich sie nutze. Ich tat dies in der Hoffnung, daß es dem TO trotzdem hilft, da er im Eingangsbeitrag schrieb: >Hat hier jemand ähnliches versucht und möchte mal seine Erfahrungen mitteilen? Und nun geh' nem anderen ans Bein strullern oder verkriech dich wieder unter deinen Stein unter dem du scheinbar lediglich zum stänkern vorgekrochen kamst.
@TO Verwendest Du die alte Mauselektronik weiterhin? So wie ich das lese hast Du einfach das USB Kabel an den neuen Encoder angeschlossen. Lies die mal den Beitrag Deines Ideengebers richtig durch. Der verwendet nämlich die alte Elektronik der Maus weiterhin und ersetzt nur den dort verbauten Encoder durch den Neuen.
Hallo, nein, nichtdoch den Encoder einfach..... Ich hab es genauso gemacht , wie der Ideengeber auch und mehrere von diesen alten Mäusen besorgt, aber dennoch will es noch nicht. Übrigens funzen die Microschalter trotzdem, wenn der Encoder auch nicht geht. Er hat sich inzwischen auch bei mir gemeldet und vielleicht läßt sich mit vereinten Kräften das Problem lösen. So einfach aufgeben liegt mir garnicht. So freue ich mich auch über die vielen Beiträge bisher. freundliche Grüsse Wolfgang
Hallo, nochmal zum Abschluß: alles funzt jetzt korrekt. Es war ein dummer Anschlußfehler durch Stecker und Buchsen , der sich erstaunlicherweise durch alle Testanorddnungen hindurch halten konnte...Glücklicherweise ohne neue Defekte auszulösen, Handrad und alle Platinen sind heile geblieben. Mein Dank an alle, die versucht haben mir zu helfen. freundliche Grüsse Wolfgang
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.