Forum: Mikrocontroller und Digitale Elektronik Programm für diy Widerstandsdekade


von T.M .. (max)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe mir eine Widerstandsdekade gebaut und bin nun am Überlegen wie 
man das Programm weiter verbessern könnte.
Momentan gibt man einfach den gewünschten Wert ein zB "1", "2"
Drückt man dann die Raute-Taste wird der Wert gestellt und 
freigeschaltet.
Mit der *-taste kann man alles wieder löschen und die Verbindung 
zwischen den Buchsen ist wieder offen.

Ich würde nun gerne eintippen können
1 + A + 5 für 1,5Ohm
oder 1 + B + 5 für 1,5kOhm
oder 1 + C + 5 für 1,5MOhm

Wie würde man das denn machen? Ich dachte erst mit einem Array. Dass man 
die Zahl vor dem Faktor dann an die entsprechende Stelle schiebt..das 
funktionierte auch im Ansatz erscheint mir aber doch umständlich.
Ein anderer Ansatz, der mir in den Sinn gekommen ist, die Zahl vor dem 
Faktor mit diesem dann zu multiplizieren..

Wie würdet ihr das denn angehen?

: Verschoben durch User
von Name (Gast)


Lesenswert?

Setz ein Flag für A, B, oder C und bei # ließt du dass dann aus und 
multipliziert das ganze entsprechend vor der "Ausgabe".

von Tek (Gast)


Lesenswert?

Oder Du nutzt # als Dezimaltrennzeichen und A,B,C um die Eingabe 
abzuschliessen:

1#5A -> 1,5 Ohm
1#5B -> 1,5 kOhm
1#5C -> 1,5 MOhm

Das sollte das verarbeiten noch etwas einfacher machen

von Jens M. (schuchkleisser)


Lesenswert?

Nee, der Weg ist schon richtig.
Man sagt (zumindest bei uns in der Fa.) 1R5, 1M5 oder 1k5.
Also die Tasten passend umbeschriften und los, dann ist das direkt und 
einfach zu merken.
Einfach so tippen wie man spricht: 2-2-k-1-go. 1-M-5-go. 1-0-k-go.
Schön wäre auch k-1-go für 100R, einfacher zu tippen.

Als algo natürlich was angepasstes.
Du merkst dir doch jetzt auch die Tasten vor dem "go". Da muss das 
Case/select ja nur um ein select ergänzt werden.
Also
- Setze R auf 0
- Erste Stelle Zahl: Setze R auf X. Faktor: Merke F.
- Zweite Stelle Zahl: Setze R*10, plus X. Faktor: Merke F.
- Dritte Stelle Zahl: Setze R*10, plus X; F/10. Faktor: Merke F.
- 4. dito
- 5. dito
- Go? Dann RxF, Relais setzen und los.

Das gibt z.B. bei 22k1:
R=2 F=0
R=22 F=0
R=22 F=1000
R=221 F=100
RxF=22100 und los.

von Patrick C. (pcrom)


Lesenswert?

Ajjjj, sorry aber wuerde praktischer mit bistabiler relais. Dann kann 
man einfach per batterie ansteuern. Jetzt musz mann kontinu speisen 
(oder bin ich da falsch ?)

Ich benutze fast taglich der OS-270 von ietlabs und bin sehr zufrieden 
damit aber $$$

Was ich sehr praktich finde ist durchsteppen in E12/E24/E48 series um 
einen guten wert zu finden.

von T.M .. (max)


Lesenswert?

Hallo,

vielen Dank für eure Antworten! Das klingt ja interessant.
Ja wie Jens das beschrieben hat mit der Eingabe finde ich auch für mich 
am logischsten
"Du merkst dir doch jetzt auch die Tasten vor dem "go". Da muss das
Case/select ja nur um ein select ergänzt werden."

Ich habe mal den Teil mit der Eingabe und Ausgabe auf die Relais hier 
kopiert:

Mir ist noch nicht ganz klar was genau du mit "Merke F" meinst bzw die 
Idee dahinter.

(PS: Ich hatte leider einen Fehler im Eingangspost. Ich kann nur 
ganzzahlig Widerstände auswählen: 1,2,3..

Die E-Reihen sollen dann auch folgen, wobei mir da die Implementierung 
klar ist wie ich das machen könnte. Leider deshalb keine bistabilen 
Relais weil die um ein vielfaches teurer waren. Für meinen 
gelegentlichen Zweck ist das so ausreichend und liegt wohl mit den 
ganzen Widerständen bei ca 50/60 Euro..das ist doch ein ganzes Stück 
weit weg von dem ietlabs Teil
1
  key_pressed = keypad.getKey();
2
3
  switch (key_pressed)
4
  {
5
    case '0' ... '9': 
6
      wert = wert * 10 + (key_pressed - '0');
7
      printserial();
8
      break;
9
10
    case 'k':
11
      //faktor = 10; ??
12
      printserial();
13
      break;
14
15
    case 'M':
16
      //faktor = 100000; ??
17
      printserial();
18
      break;
19
20
    case '=':
21
      shiftOut(wert);
22
      digitalWrite(5, HIGH); /*stellt Verbindung durch*/
23
      printserial();
24
      break;
25
26
    case '*':
27
      wert = 0;
28
      digitalWrite(5, LOW); /*trennt Verbindung*/
29
      shiftOut(8388607); /*alle relais aus*/
30
      break;
31
  }
debug ausgabe:
1
void printserial() {
2
  Serial.print("R: "); Serial.print(wert); Serial.print(" F: "); Serial.println(faktor);
3
}

: Bearbeitet durch User
von Jens M. (schuchkleisser)


Lesenswert?

F ist der Faktor.
Erstmal auf 1(R), 1000(k) oder 1000000(M) setzen und bei nachfolgenden 
Ziffern wieder jeweils durch 10 Teilen.
Das gibt genau den Multiplikator den du brauchst, egal wo du ihn 
eintippst.

Mit 25 Relais kannst du ja 25 Bit darstellen, also mit 1R Teilung bis 
33M554432 hoch.
Leider werden dir "unten" die Kontakte Probleme machen, da 
Übergangswiderstand, und "oben" da zuwenig Stromfluss.
Aber ich glaube da kranken alle Dekaden dran, von daher egal.

: Bearbeitet durch User
von T.M .. (max)


Lesenswert?

Hallo, ok danke. Das muss ich mir mal ausprobieren, damit ich eine 
Vorstellung davon bekomme.

Ja eigentlich sind es nur 23 Relais. Eins ist dafür gedacht alles 
aufzutrennen und das andere schließt bei <128Ohm die restlichen Relais 
kurz, damit man nicht zuviele Kontaktwiderstände hat im kleineren 
Bereich

von Mart (Gast)


Lesenswert?

Patrick C. schrieb:
> Ajjjj, sorry aber wuerde praktischer mit bistabiler relais. Dann kann
> man einfach per batterie ansteuern. Jetzt musz mann kontinu speisen
> (oder bin ich da falsch ?)
>
> Ich benutze fast taglich der OS-270 von ietlabs und bin sehr zufrieden
> damit aber $$$
>
> Was ich sehr praktich finde ist durchsteppen in E12/E24/E48 series um
> einen guten wert zu finden.

Einfach zu goldig: 10 - 20 Fehler im Text. Für dich sollte die Note 7 
eingeführt werden.

von Patrick C. (pcrom)


Lesenswert?

Mart schrieb:
> Einfach zu goldig: 10 - 20 Fehler im Text. Für dich sollte die Note 7
> eingeführt werden.

Und welches teil war fuer dich nicht deutlich ?

Grusze von Patrick der Niederlaender.

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Nimm doch Tasten wie diese 
https://de.aliexpress.com/item/B3F-50sets-lot-Tactile-Push-Button-Switch-with-hat-Momentary-Tact-12x12x7mm-DIP-Through-Hole-4pin/32603919095.html 
und baue dir eine Eingabetastatur genau nach Maß. Die klaren Abdeckungen 
unterlegst du mit der jeweiligen Tastenbeschriftung, aus dem Drucker 
(entweder auf normalem Papier oder transparenter Folie gedruckt).

von Wolfgang (Gast)


Lesenswert?

Jens M. schrieb:
> Nee, der Weg ist schon richtig.
> Man sagt (zumindest bei uns in der Fa.) 1R5, 1M5 oder 1k5.

Woanders sagt man 1.5, 1.5k, 1.5M ;-)

Die Verwendung der Buchstaben (R,k,M) als Dezimaltrennzeichen ist doch 
nur ein Zugeständnis an die schlechte Lesbarkeit beim Druck, weil ein 
Punkt schnell mal undeutlich ist.

von Jens M. (schuchkleisser)


Lesenswert?

Richtig.
Braucht allerdings in diesem Fall eine Kommataste.
Aber da es weder dein noch mein Gerät ist soll OP sich mal einen Kopp 
machen wie er das umsetzt.
Ich würde meins so bauen wie ich es beschrieben habe. Wäre leichter zu 
merken, schneller zu sprechen/tippen, einfacher zu bauen.

Wobei ich andersrum auch sagen muss das ich in fast 40 Jahren Elektronik 
bislang ohne Dekade ausgekommen bin. Mach ich was falsch?

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.