Forum: HF, Funk und Felder SDR empfang mit " dickem Knopf"


von Wolfgang W. (mc_marcon)


Lesenswert?

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

von Stefan M. (derwisch)


Lesenswert?

Das wird ohne exakte technische Daten niemand sagen können.
Welche Maus?
Welches Chinateil?
Schaltbild?

von meckerziege (Gast)


Lesenswert?

Eventuell passt das Raster/Größe des Encoders nicht. Bilder bitte bzw. 
Bezeichnungen.

von Wolfgang W. (mc_marcon)


Angehängte Dateien:

Lesenswert?

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.
von Stefan M. (derwisch)


Lesenswert?

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
von Wolfgang W. (mc_marcon)


Lesenswert?

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
von Thomas G. (blasebalg)


Angehängte Dateien:

Lesenswert?

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.

von Wolfgang W. (mc_marcon)


Lesenswert?

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

von Noa Sonbalg (Gast)


Lesenswert?

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?

von Thomas G. (blasebalg)


Lesenswert?

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.

von Noa Sonbalg (Gast)


Lesenswert?

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.

von Wolfgang W. (mc_marcon)


Lesenswert?

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

von Thomas G. (blasebalg)


Lesenswert?

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.

von Zeno (Gast)


Lesenswert?

@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.

von Wolfgang W. (mc_marcon)


Lesenswert?

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

von Wolfgang W. (mc_marcon)


Lesenswert?

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
Noch kein Account? Hier anmelden.