Datum:
|
Auf der Basis von Arduino bin ich dabei einen Taschenrechner zu bauen, den ich hiermit vorstellen möchte. Der Taschenrechner besteht aus mehreren Komponenten. 1. Display: 15x 7-Segment LED 2. µC: ATmega1284p bei etwa 3,5V und 12MHz 3. Eingabe: 2x 3x4 Tastenfeld. 4. RTC - Realtimeclock mit DCF77-Signal extern zum Uhrzeit stellen Software: Alles wenn möglich in C und als Compiler die Umgebung von Arduino. Es werden alle Tasten Analog eingelesen. 3800Hz ist mein Grundtakt. Mit 95Hz wird die Anzeige refrescht. Der Multiplex ist 8:1. Als Arithmetik wird Integer verwendet. Das Zahlenformat hat folgenden Aufbau:
struct AVRational{ // 0.3 ... 3 x 10^expo int8_t expo; // <-- expo int32_t numer; // <-- numerator int32_t denum; // <-- denominator }; |
Die Hard- und Software wird als Opensource veröffentlicht. Die Software ist noch sehr am Anfang - aber es geht schon einmal die Zahleneingabe und die Zuordnung der vielen Funktionen. Bei meinem Tastaturlayout können bis zu 3 Tasten "gleichzeitig" gedrückt werden. Viel Freude bei der Durchsicht meiner Dokumente wünsche ich.
Datum:
|
Hallo Jens, ein Foto deines Prototyps fehlt! Du hast ja schon mal einen hergezeigt. Der Charme und Reiz der 7 Segmentanzeigen kommen nur mit einem Bild richtig rüber. Ich finde die Optik der großen 7 Segmentanzeigen genial und das erinnert mich an meinen ersten Taschenrechner (ein TI-30 mit rotem Led Display). Eine Stückliste hab ich nicht gefunden und wäre praktisch zum Nachbauen. Ich denke, dass sich dein Projekt auch gut als Ausgangsbasis für allerlei Schnickschnack wie Laufschrift, Timer, Uhr,… eignet, wenn man auf den Retro Look steht. Liebe Grüße Franz
Datum:
|
Franz U. schrieb: > .. Ausgangsbasis für > allerlei Schnickschnack wie Laufschrift, Timer, Uhr,… eignet, wenn man > auf den Retro Look steht. Im Quellcode ist ein Excelsheet (Arduino\Projects\calculator_02\7segmentdesign_new.xls) mit einem Zeichensatz für die 7-Segment Anzeige. Die 7-Segment Anzeige möchte ich noch ändern. Zur Zeit sind da 7,5mm breite LED drinn, es sollen aber 10mm breite LED werden.
Datum:
|
Anbei ein Bild vom Rechner als auch eine Materialliste.
Datum:
|
Ich bin etwas weiter gekommen und möchte neue Software veröffentlichen. Es gibt noch viel zu tun. Ein Taschenrechner ist eine große "Finite-state machine" -- Zustandsautomat. Es können jetzt 2 Eingaben gemacht werden ("Zahl" und "="), 1/x, ... Was genau noch zu tun ist kann man hier nachlesen. http://www.stateworks.com/active/download/Calculator.pdf Vom Bedienkonzept her halte ich mich an das Konzept vom Windows-Rechner.
Datum:
|
Ich habe weitere Funktionstasten definiert und die Hardware verändert. Das Bedienkonzept soll etwas anders als gewohnt werden. Zum Beispiel: Editieren von Werten innerhalb der schon eingegeben Formel. Das ist jetzt mal ein Zwischenstand.
Datum:
|
Die erste mathematische Funktion ist fertig (x^2). Das interne Datenformat erweist sich als sehr genau und zuverlässig. ;-)
:
Bearbeitet durch User
Datum:
|
Ein Bild vom "Taschenrechner" mit dem Ergebniss von 29x mal x^2 gedrückt. Die Anfangsszahl ist "1,0000001". Intern ergeben sich etwa 18 Stellen (62 Bit) Genauigkeit.
Datum:
|
Memory_Plus (M+) arbeitet jetzt. Addition und Multiplikation mit dem Bruchzahlen Datenformat .. "Slash Number System" funktionieren. (1 / (1 / (1 / 0.0038 - 263) -6) -3) = 0.0000e+00 Beim Rechnen mit ganzen Zahlen (Integer) entstehen keine oder wenig Rundungsfehler. Differenzen nahe Null sind gut zu verarbeiten.
Datum:
|
Meine Projektfiles sind ab jetzt auf Github. https://github.com/JensGrabner/snc98_Slash-Number-Calculator
Datum:
|
Ich finde dein Projekt richtig cool und möchte es gerne unter deinem Namen auf meiner Website www.elektonik-sammlung.jimdo.com veröffentlichen, wenn du nichts dagegen hast. Schreib mich einfach an, dann können wir die Details ausmachen ;-)
Datum:
|
Werbung kann ich immer brauchen. Also bitte mit Nennung meines Namens das Projekt veröffentlichen. Ist alles Open-Source-Open-Hardware. Das Layout für das Display ist gerade fertig. Die Platine kann hier bestellt werden. Mehr Informationen gibt es auf Github -- Wichtig: So richtig rechnen und benutzen kann man es "noch" nicht. Die Entwicklung der Hard- und Software wird noch etwa 12 Monate dauern. Das Tastaturlayout ist nahezu perfekt. Wichtig: Das Projekt heißt: "snc98 - Slash Number Calculator"
Datum:
|
Schön, wie du dich da reinhängst und nicht nur oberflächlich was zusammenfrickelst. Vorallem mit der provisorischen Tipse umzugehen stelle ich mir manchmal frustrierend vor. Tasten suchen, doch falsch getippt, ...
Datum:
|
Jens G. schrieb: > Die Platine kann hier > bestellt werden. https://oshpark.com/profiles/Jens_G
Datum:
|
Nils S. schrieb: > Vorallem mit der provisorischen Tipse umzugehen stelle ich mir manchmal > frustrierend vor. Für die Taster verwende ich ... "Eingabetaster, 12x12 mm, DIPTRONICS DTS-21N, 10 Stück" .. zu bestellen bei .. http://www.pollin.de/ mit der Bestellnummer: 420 763. Es sind Taster mit 160g Tastendruck. http://www.pollin.de/shop/dt/NjMyOTc1OTk-/Bauelemente_Bauteile/Mechanische_Bauelemente/Schalter_Taster/Eingabetaster_12x12_mm_DIPTRONICS_DTS_21N_10_Stueck.html
Datum:
|
Hmm schlechtreden kann man alles und was dagegen findet auch jeder gleich... Aber mit diesen Buttons würde ich mir die Arbeit nicht machen. Ich hab hier mehrere davon verbaut und nach ein paar Monaten Standzeit klemmen die und reagieren nicht mehr richtig. Im Dauer-Drück-Betrieb glaube ich nicht, dass die 4 Wochen durchhalten.
Datum:
|
Nils S. schrieb: > Aber mit diesen Buttons würde ich mir die Arbeit nicht machen. Besten Dank für den Hinweis. Diese Taster haben ein Standardformat. Sollte die Qualität nicht ausreichend sein, so kann ich zu einem anderen Hersteller wechseln. Qualität hat seinen Preis. Um den Taster wird es eine Hebelmechanik geben. Vorteile: 1. der Tastenweg wird länger 2. der Tastendruck wird kleiner 3. Taster werden mechanisch weniger belastet 4. die Tastgeräuche werden kleiner Eine Skizze dazu folgt noch. Ein Hinweis noch: Das Prellen der Tasten ist kein Problem, da ich mit Software jede Taste entprelle.
:
Bearbeitet durch User
Datum:
|
Nils S. schrieb: > Im Dauer-Drück-Betrieb glaube ich nicht, dass die 4 Wochen durchhalten. Da das Gerät eh nicht so filigran werden wird: besorg Dir eine alte Cherry G80 und nimm deren Tastenmodule. Die haben eine 1a Haptik und sind unkaputtbar. Ich sehe gerade, man bekommt die Dinger auch einzeln: https://www.cherry.de/cid/tastenmodule.htm? (JavaScript erforderlich)
Datum:
|
Diese Taster sind eine echte Alternative. Auch 12 x 12mm und nicht so hoch. https://www.conrad.at/de/drucktaster-12-vdc-001-a-1-x-aus-ein-cherry-switches-ml1a-11jw-tastend-1-st-706297.html
Datum:
|
Als Ersatz für Pollin-Taster: B3FS-4002P von Omron: http://www.tme.eu/at/details/b3fs-4002p/tact-pcb-mikroschalter/omron/ Mein Tastatur PCB ist auch für SMD ausgelegt.
Datum:
|
Wird sich denn an einem bestehenden Taschenrechner orientiert vom Fluss der Bedienbarkeit oder wird ein völlig eigenes KOnzept entwickelt?
Datum:
|
Bei der "Bedienbarkeit" wird sich "einiges" ändern. 1. Bis zu 3 Tasten "müssen" bei Funktionen "gleichzeitig" gedrückt werden 2. 15 Stellen zur Anzeige ermöglichen die Anzeige von Bedienbefehlen z.Bsp. MR MS MEx + - * /. (besonders wichtig bei Funktionen mit 3 Tasten) 3. Es wird bis zu 19 Klammerebenen geben 4. Maximal 19 Zahlen sollen verarbeitet werden (inkl. Memmory) 5. 9 Memmoryplätze die im EEProm gespeichert werden 6. max. 99 Eingabeschritte 7. eine eingebene Formel soll wiederholt verwendet werden können Ich habe einige Taschenrechner gekauft um die Unterschiede der Bedienbarkeit zu sehen. Da alles auf der Kommandozeile abläuft (eine Zeile zur Eingabe) .. da mache ich mir Gedanken, wie ich auf einer Eingabezeile navigiere.
:
Bearbeitet durch User
Datum:
|
8. ich erwarte weitaus weniger Fehler durch Rundung von Zahlen
Datum:
|
Jens G. schrieb: > Auf der Basis von Arduino bin ich dabei einen Taschenrechner zu bauen, > den ich hiermit vorstellen möchte. Schön. > Der Taschenrechner besteht aus mehreren Komponenten. > > 1. Display: 15x 7-Segment LED > 2. µC: ATmega1284p bei etwa 3,5V und 12MHz > 3. Eingabe: 2x 3x4 Tastenfeld. > 4. RTC - Realtimeclock mit DCF77-Signal extern zum Uhrzeit stellen > > Software: Alles wenn möglich in C und als Compiler die Umgebung von > Arduino. Gut. > Es werden alle Tasten Analog eingelesen. 3800Hz ist mein Grundtakt. Mit > 95Hz wird die Anzeige refrescht. Der Multiplex ist 8:1. > > Als Arithmetik wird Integer verwendet. > Das Zahlenformat hat folgenden Aufbau: > struct AVRational{ // 0.3 ... 3 x 10^expo > int8_t expo; // <-- expo > int32_t numer; // <-- numerator > int32_t denum; // <-- denominator > }; > Die Hard- und Software wird als Opensource veröffentlicht. Toll. > Die Software ist noch sehr am Anfang - aber es geht schon einmal die > Zahleneingabe und die Zuordnung der vielen Funktionen. Bei meinem > Tastaturlayout können bis zu 3 Tasten "gleichzeitig" gedrückt werden. Gut gut. > Viel Freude bei der Durchsicht meiner Dokumente wünsche ich. Danke.
Datum:
|
Nix fertig schrieb: > aber es geht schon einmal die >> Zahleneingabe und die Zuordnung der vielen Funktionen dieses Zitat bezieht sich auf den 14.07.2015 22:15 und ist damit nicht mehr gültig. Bei Interesse des Verlaufs meines Projektes verweise ich auf Github: https://github.com/JensGrabner/snc98_Slash-Number-Calculator https://github.com/JensGrabner/snc98_Slash-Number-Calculator/commits/master
:
Bearbeitet durch User
Datum:
|
Wer schon heute ein ähnliches Projekt sein Eigen nennen möchte, dem kann ich auf http://www.spikenzielabs.com/Catalog/index.php?main_page=product_info&cPath=1&products_id=762 verweisen. Mein Zielpreis liegt bei 99 Dollar. Etwas Geduld wird nötig sein ;-) .
Datum:
|
Mw E. schrieb: > Wird sich denn an einem bestehenden Taschenrechner orientiert vom Fluss > der Bedienbarkeit oder wird ein völlig eigenes KOnzept entwickelt? Ich bin dabei ein Statechart meiner bisherigen Arbeit zu erstellen. Daraus kann man das Bedienkonzept entnehmen.
Datum:
|
Eine recht ausgefeilte Variante für UPN findet man hier [1]. Dreh- und Angelpunkt sind SEHR zuverlässige Tasten. Soll der Taschenrechner kein Spielzeug bleiben, so muss man sich in jedem Fall blind auf die Eingaben verlassen können, auch noch in 4 Wochen. An dieser Stelle würde ich auf keinen Fall Kompromisse eingehen und auf wirklich erprobte Lösungen wie u.a. Cherry-Tasten zurück greifen. Auch der Entwickler (und die Nutzer) von Swiss Micros mußte leider diese Erfahrung machen :-( [1] https://www.swissmicros.com/
Datum:
|
Joe G. schrieb: > An dieser Stelle würde ich auf > keinen Fall Kompromisse eingehen ... Das stimmt soweit. Ein Preis-Leistungs-Wunder muss es also sein. Bei einem Verkaufspreis von 99 Dollar darf das Material nicht mehr als 33 Dollar sein. Da wird es mit qualitativ hochwertigen Tasten schon sehr eng. Das PCB kostet auch etwas. Wenn man sich so umschaut, so hat das Thema Tasten kein Hobbyprojekt wirklich beachtet. Ich habe mal 2 Numemrnblöcke für USB bestellt (in Summe sind das, ohne Versandgebühr, 20 Euro). Mit Software verhindere ich Mehrfacheingaben. Das Software-Tiefpassfilter benötigt etwas Zeit. Dann kann man nicht so schnell eingeben. Ein ackustischer Feedback ist über den Summer möglich. Aber, besten Dank für das mitdenken. Das Tastenfeld von Conrad ist es nicht ... weil die Kunststofftasten beginnen sich abzureiben und wackeln dann.
:
Bearbeitet durch User
Datum:
|
Jens G. schrieb: > Eine Skizze dazu folgt noch. Ich habe vom Patentamt ein Gebrauchsmuster gefunden, das sehr genau beschreibt, wie ich mir Kipptaster vorstelle. Titel: [DE] Lagerung mehrerer Wipptasten innerhalb eines Gehäuses https://depatisnet.dpma.de/DepatisNet/depatisnet?action=bibdat&docid=DE000029802341U1
Datum:
|
Ein Zwischenbericht: Bei der Anzeige und der Tastatur gibt es einen neuen Stand der Leiterplatte. Zu bestellen wie immer bei: https://oshpark.com/profiles/Jens_G Als Nächstes wird die Hauptplatine mit dem Prozessor gemacht. Das Stromversorgungskonzept muss überarbeitet werden, da der Ruhestrom zu hoch ist.
Datum:
|
Die Software ist etwas weiter gekommen. Ein Ringbuffer ist dazu gekommen. Der Ringbuffer verhindert, das Eingaben verloren gehen können -- sehr wichtig um die Funktionen sauber abarbeiten zu können. https://github.com/JensGrabner/snc98_Slash-Number-Calculator
Datum:
|
Jens G. schrieb: > Als Nächstes wird die Hauptplatine mit dem Prozessor gemacht. Das > Stromversorgungskonzept muss überarbeitet werden, da der Ruhestrom zu > hoch ist. Stromversorgungskonzept überarbeitet - Ruhestrom < 10µA.
Datum:
|
Eine neue Displayplatine ist von mir erstellt worden. Es können 3-Digit Display verwendet werden. http://www.tme.eu/at/katalog/#search=LTD040AUE-101A Die Display sind preiswerter und es muss weniger gelötet werden. 60 Lötstellen sind weniger als 150 Lötstellen bei 15 einzelnen Digits.
Datum:
|
Das Mainboard des Taschenrechners ist in Arbeit. Eine Übersicht über meine entwickelten PCB findet man hier: https://oshpark.com/profiles/Jens_G Weitere Informationen folgen.
Datum:
|
Hier .. mein neues Tastatur-Layout. Mit der "+/-" Taste und "0" .. "9" können 5 verschiedene Einheiten umgerechnet werden. 1. Temperatur °C <--> °F ("+/-" + "8") bzw. ("+/-" + "9") 2. Länge mm <--> mil ("+/-" + "5") bzw. ("+/-" + "6") 3. Gewicht kg <--> Lb ("+/-" + "2") bzw. ("+/-" + "3") 4. Verkehr Mile <--> km ("+/-" + "7") bzw. ("+/-" + "4") 4. Volumen l <--> US-gal ("+/-" + "1") bzw. ("+/-" + "0")
Datum:
|
Respekt vor deiner Arbeit! Aber mir wäre die Tastatur zu Überladen, 3-6 Tasten mehr dürften die Sache übersichtlicher machen. Ja, ich weiss: Neudesign; erstmal selber machen etc...
Datum:
|
Es ist schön das ein wenig Interesse hier gibt ;-) Es war ein langer Prozess bis ich die Zuordnung der Tasten so hatte -- bis zu 32 Tasten sind mit der Software möglich. Einen Analogeingang müsste ich dann mehr "verdrahten". Das Interesse ist aber eher sehr gering etwas zu verändern. Als nächstes wird es Tastaturplättchen auf 0,8mm PCB geben. Von der Software ist noch einiges zu machen -- es rechnet immer noch nicht -- bis zu 19 Zahleneingaben mit den Rechenoperationen können aber schon verwaltet werden - mit der Taste "CE" kann man von hinten nach vorne wieder fehlerhafte Eingaben löschen. "Mr" -- Memory read "M_" -- Memory safe "M+=" -- Add to Memory "Ex_" -- Exchange (tausch von Anzeigeregister mit Memory) "1/x" "x^2" "Quadrahtwurzel" .. gehen schon ;-)
Datum:
|
Thomas G. schrieb: > Respekt vor deiner Arbeit! Aber mir wäre die Tastatur zu Überladen, 3-6 > Tasten mehr dürften die Sache übersichtlicher machen. Ja, ich weiss: > Neudesign; erstmal selber machen etc... Ach ja, was auch immer zu beachten ist sind die Kosten .. bei einem erfolgreichem Projekt -- die Leiterplattenfläche sowie auch die Tasten mit Beschriftung kosten etwas -- weniger kann hier mehr sein.
:
Bearbeitet durch User
Datum:
|
Mw E. schrieb: > Wird sich denn an einem bestehenden Taschenrechner orientiert vom Fluss > der Bedienbarkeit oder wird ein völlig eigenes KOnzept entwickelt? Ja es wird sich etwas ändern -- Konstantarithmetic mit Variabler Konstante. (n + K) oder (K + n). Beispiele:
2 + = (4) = (6) = (8) 0 = (2) |
2 + 3 = (5) = (8) = (11) 0 = (3) |
2 + + 3 = (5) = (7) = (9) 0 = (2) |
Datum:
|
super Projekt! Wenn ich mehr Zeit habe möchte ich das gerne nachbauen Gruß Thomas
Datum:
|
Die 4 Grundrechenarten mit Konstantarithmetic und Tausch
x <-> y |
sind programmiert. (n + K), (K + n), (n - K), (K - n), (n x K), (K x n), (n / K), (K / n) .. in den Beispielen ist auf 2 Ziffern gerundet.
2 + = (4) = (6) = (8) 0 = (2) 2 + 3 = (5) = (8) = (11) 0 = (3) 2 + + 3 = (5) = (7) = (9) 0 = (2) |
2 - = (0) = (-2) = (-4) 0 = (-2) 2 - 3 = (-1) = (-4) = (-7) 0 = (-3) 2 - - 3 = (1) = (-1) = (-3) 0 = (-2) |
2 x = (4) = (8) = (16) 1 = (2) 2 x 3 = (6) = (18) = (54) 1 = (3) 2 x x 3 = (6) = (12) = (24) 1 = (2) |
2 / = (1,00) = (0,50) = (0,250) 1 = (0,50) 2 / 3 = (0,67) = (0,22) = (0,074) 1 = (0,33) 2 / / 3 = (1,50) = (0,75) = (0,375) 1 = (0,50) |
Datum:
|
Eine neue Reset-Schaltung ist entworfen worden. Damit kann ich mit FTDI
oder |
ICSP programmieren.
:
Bearbeitet durch User
Datum:
|
Neue Info -- main_CPU geändert und Software verbessert -- sqrt(2)^2 = 2 -- es gab Rundungsfehler -- https://github.com/JensGrabner/snc98_Slash-Number-Calculator
:
Bearbeitet durch User
Datum:
|
neue "Funktionen" eingepflegt:
a + c Arithmetic mean: AM(a,c) = ------- 2 Geometric mean: GM(a,c) = sqrt(ac) 2 Harmonic mean: HM(a,c) = ------------- (1/a) + (1/c) |
Datum:
|
Jens G. schrieb: > Konstantarithmetic und Tausch Das Vertauschen der Operanden bei zweimaligem Drücken der Operatortaste finde ich interessant, würde mit wünschen mein Taschenrechner könnte das auch, aber was ist mit 2 unterschiedlichen Operatoren ? a + * b = Das nutzt mein Rechner um das + als Tippfehler durch das * zu ersetzen.
Datum:
|
Ja genau so ist es auch bei mir -- Korrektur der Eingabe Das doppelte drücken der Operationstasten wird im Display durch einen Punkt markiert. Drücke ich 3x die gleiche Taste verschwindet der Punkt wieder. Wichtig: .. Zur Zeit kann ich "nur" mit 2 Zahlen umgehen. Nach der Eingabe von 2 Zahlen wird der Nutzer "genötigt" ein "=" zu drücken -- "gut Ding" braucht etwas Zeit in der Entwicklung. Die Eingabe und Korrektur von bis zu 19 Zahlen wird möglich sein.
:
Bearbeitet durch User
Datum:
|
Hallo Jens, kennst Du die UPN (Umgekehrte polnische Notation) Eingabe von Zahlen mit "ENTER" und Operanten? Ich habe diese damals in meinem Studium mit einigen HP Taschenrechnern erlebt. Konkret HP-41CX mit Modul-Erweiterungen. https://de.wikipedia.org/wiki/Umgekehrte_polnische_Notation Dieses Vorgehen zerlegt schon bei der Eingabe der Zahlen Punkt- vor Strichrechnung und Klammern. Mehr dazu im Wiki.
Datum:
|
Karl M. schrieb: > Hallo Jens, > > kennst Du die UPN (Umgekehrte polnische Notation) Eingabe von Zahlen mit > "ENTER" und Operanten? ja das kenne ich .. und es gab auch Anfragen wegen UPN. Antwort - mache ich nicht, da junge Leute diese Denkweise nicht kennen und sich umstellen müssten. Ich selbst hatte im Studium folgenden Taschenrechner genutzt. https://en.wikipedia.org/wiki/Elektronika_MK-61 Es währe sehr leicht diesen Rechner, als voll kompatible Emulation in Hardware, zu bauen -- aber klarer Nachteil: sehr lausige Genauigkeit, die ich überbieten möchte. Als Trost gegen UPN wird es max. 19 Klammerebenen geben. Welche Klammer in Verwendung ist wird im Display angezeigt.
Datum:
|
Jens G. schrieb: > Ich selbst hatte im Studium folgenden Taschenrechner genutzt. > https://en.wikipedia.org/wiki/Elektronika_MK-61 Das Teil ist ja kultig. ;-) Ich wusste gar nicht, dass die Sowjets UPN-Taschenrechner gebaut haben. Weiß nicht, ob ich hätte 85 Rubel dafür ausgeben wollen, aber wenn ich das gewusst hätte, hätt' ich mir möglicherweise von meiner ersten (und einzigen) SU-Reise auch sowas mitgebracht. Ich staune, dass sie zu dieser Zeit noch VFDs verbaut haben und keine LCDs. Dein Projekt finde ich ansonsten hübsch! – Brauch' es aber selbst nicht. Habe noch einen HP48G, der jedoch mittlerweile auch weitgehend in der Schublade bleibt, weil dessen Emulatoren dafür auf PC und Android einfach schneller zur Hand sind.
Datum:
|
HM (6, 24) = 9.6 AM (6, 24) = 15 GM (6, 24) = 12 |
Datum:
|
Eine kleine Statistik zu sqrt(1 - 100). 9900 Berechnungen wurden ausgeführt. Von den 9900 Zahlen passen 9821 Zahlen in den Bereich vom Fehler -4.20E-17 bis 4.20E-17. Fehler = (Ist / Exact) - 1.
:
Bearbeitet durch User
Datum:
|
Eine Grafik sagt mehr .. von -1E-15 bis +1E-15 die Häufigkeit vom Fehler bei sqrt(1 .. 100).
Datum:
|
Ein neues Mainboard ist in der Bestellung. https://oshpark.com/profiles/Jens_G Aktuelle Dokumente - wie immer hier: https://github.com/JensGrabner/snc98_Slash-Number-Calculator Ein Thermometer kommt drauf - mit Anschluss per Onewire.
Datum:
|
Die Resetbeschaltung ist mit einem "Brown-out Detect" erweitert worden. Jetzt gibt es keine Abstürze bei Unterspannung mehr. .. weil .. das BOD vom Atmel musste ich auf 1V8 stellen. Jetzt gibt es bei mehr als 10.000 Ein- und Ausschaltvorgängen keine Fehler mehr.
Datum:
|
Hi Jens, gefällt mir sehr gut und ich weiss, daß die Programmierung eines Taschenrechners nicht einfach ist (ich hab mir das theoretisch auch mal überlegt). Mach weiter - ich beobachte und lese mit. Dein Display gefällt mir übrigens hervorragend. Das erinnert mich an mein letztes Jahr gebautes: 4 Zeilen, je 16 Stellen auch mit 7-Segment (4fache). Gruss Harry
Datum:
|
Besten Dank für die Rückmeldung. Letztens gab es einen Fehler in der Subtraktion. ... es sind nach 4 Jahren der Entwicklung etwa 8.000 Programmzeilen geworden. 70 kByte von 128 kByte sind genutzt -- es besteht kein Zweifel, das alles hineinpassen wird.
Datum:
|
Der "Taschenrechner" arbeitet jetzt bei maxmal 2 Zahlen wie der Rechner von WIN_7 im .. "Standardmodus". Also: "2 + 3 * 5 = 25". Es wird die Möglichkeit geben im "Standardmodus" (2 Zahlen) oder im "Wissenschaftsmodus" (max. 19 Zahlen) zu arbeiten.
Datum:
|
Eine neue Displayplatine ist in Arbeit - diesmal mit etwas größeren LED-Anzeigen -- Formfactor - SC52 (Kingbright) -- die Platine ist 188 mm breit - vorher waren es 155 mm. Es soll zum Test die "LED-Anzeige VISHAY TDSO5160" verbaut werden. Hier können alle Platinen meines Projektes angeschaut und bestellt werden. https://oshpark.com/profiles/Jens_G
:
Bearbeitet durch User
Datum:
|
Hier mal ein Bild vom Rechner .. aktuelle Daten findet man wie immer hier: https://github.com/JensGrabner/snc98_Slash-Number-Calculator
Datum:
|
Eine neue Anzeige kommt in die Testphase - LTD056AUE https://www.tme.eu/de/katalog/#search=LTD056AUE https://github.com/JensGrabner/snc98_Slash-Number-Calculator/blob/master/Hardware/Pdf/snc98_Display_15x7-Seg_3-digit_LTD056_brd.pdf
Datum:
|
Jens G. schrieb: > Eine neue Anzeige kommt in die Testphase - LTD056AUE .. und kann hier https://oshpark.com/shared_projects/OycAseXp angesehen und bestellt werden.
:
Bearbeitet durch User
Beitrag #5408563 wurde vom Autor gelöscht.
Datum:
|
Die gelben Tasten werden .. "perfect purple" sein -- aus PCB 0,8 mm -- Beschriftung: "Gold auf dunkel violett". Hier können alle Platinen meines Projektes angeschaut und bestellt werden. https://oshpark.com/profiles/Jens_G
Datum:
|
Das Tastaturlayout und andere PCB-Dateien sind überarbeitet worden.
Datum:
|
Eine Eingabe wird je nach Modus (Std = Standard, Sci = Wissenschaftlich) unterschiedlich aufgelöst.
1. Std. - Mode: 2 + 3 * 5 = (2 + 3) * 5 = 25 .. von links nach rechts 2. Sci. - Mode: 2 + 3 * 5 = 2 + (3 * 5) = 17 .. von rechts nach links |
Als nächstes kommt die Eingabe von "(" + ")". Bei ")" wird sofort das Zwischenergbniss berechnet. Diese Klammern werden später zur Prioritätenberechnung (Punkt vor Strichrechnung) intern eingefügt. Ach ja: Die Anzeigen von Wenrun "LTD056AUE" funktionieren sehr gur- sind lieferbar und preiswert - die Qualität stimmtt - die Vorwiderstände kann ich weglassen - bei 3.3V begrenzt der µC den Strom sehr gut.
:
Bearbeitet durch User
Datum:
|
>die Vorwiderstände kann ich weglassen
Datum:
|
Ein kleines Rechenbeispiel - Berechnung von der Zahl Pi mit "Continued Fraction"
3+ 3 / 1 Fehler (exakter Fehler) 7 22 / 7 1.26e-3 15 333 / 106 -8.32e-5 1 355 / 113 2.67e-7 292 103993 / 33102 -5.78e-9 1 104348 / 33215 3.32e-10 1 208341 / 66317 -1.22e-10 1 312689 / 99532 2.91e-11 2 833719 / 265381 -8.72e-12 1 1146408 / 364913 1.61e-12 3 4272943 / 1360120 -4.04e-13 84 5419351 / 1725033 -3.98e-13 ( 2.21e-14) 2 80143857 / 25510582 -3.98e-13 (-5.79e-16) |
Das Ergebniss deckt sich in etwa mit Excel.
Datum:
|
Äxl (geloescht) schrieb: >>die Vorwiderstände kann ich weglassen alles klar soweit - Erklärung: 1. Bei voll geladenem Akku habe ich 4 V Versorgungsspannung. 2. leuchten alle Balsken der 7-Segmentanzeigen so ist die maximale Stromaufnahme etwa bei 250 mA 3. das ergibt eine Leistungsaufnahme von P = 1000 mW 4. bei 2 V Spannungsabfall an den LED sind das 500 mW für die 15 Anzeigen und 500 mW für den µC (für den µC kein Problem 40-polig mit Sockel) Es gibt kein Zweifel, das irgendetwas außerhalb der Spezifikation sein könnte) -- das was außerhalb der Spec. ist .. das ist der Strom nach GND an 2 Pins vom µC.
:
Bearbeitet durch User
Datum:
|
Jens G. schrieb: > Es gibt kein Zweifel, das irgendetwas außerhalb der Spezifikation sein > könnte) Bloss halt daß sich die Segmenthelligkeit innerhalb einer LED-Anzeige schon laut Datenblatt um 1:2 unterschieden kann, und nun als einzige Strombegrenzung der uC-Ausgang nochmal um 1:2 unterschiedlich sein kann, so dass manche 7-Segment-Felder 1/4 so hell sein können wie anderen - das ist näher an ausgeschaltet als an eingeschaltet. Man MACHT das einfach nicht, Schaltungen zu bauen, die nur mit den zufällig verbauten Bauteilen funktionieren und nicht mit ALLEN die dieselbe Typennummer tragen. Auch eine LED Anzeige, die bei 4V Akkuspannung zwar 2.3mA Segmentstrom (im Mittel) hat (LTD056AUE sind gar keine 2mA low current Anzeigen auch wenn das Datenblatt behauptet Extremely low current), wird bei 3V Akkuspannung nur noch 650uA haben und damit 1/3 der Helligkeit, und eigentlich hält LiIon bis 2.5V durch. Das ist auch gepfuscht. Ich weiss, Spannungsregler kosten Strom. Aber wenn man eh LED-Anzeigen nimmt, kann Strom nicht so entscheidend sein.
:
Bearbeitet durch User
Datum:
|
Es ist so - die LED haben einen Innenwiderstand und die Ausgaänge habe auch einen Innenwiderstand. In Summe sind das etwa 50 Ohm. Ich hatte vorher einen Widerstand von 22 Ohm drinn -- nur und nur bei dieser Platine lasse ich es weg. Also eine Verringerung des Widerstandes von 72 Ohm nach 50 Ohm. Der gesammte Strom hat sich um 10% erhöht -- neben dem Multiplex habe ich noch eine PWM von max. 50 %. Diese Anzeigen zeigen eine gleichmäßige Ausleuchtung. Es gibt LED die bei hohem Strom keine Helligkeit mehr erhöhen - das scheint hier so zu sein. Hinweis: Ich habe einen Unterspannungsschutz dabei -- bei weniger als 3,3 V geht die Schaltung nicht mehr an. Es muss per USB geladen werden. Ich verwende 3x AAA NimH Acku mit etwa 700 mAh. Ein Lipo Charger (250 mA) lädt die Zellen auf max. 1,4V auf.
Datum:
|
Michael B. schrieb: > Ich weiss, Spannungsregler kosten Strom. Na ja .. ganz so dramatisch ist es auch nicht - der µC wird von einem Holtek HT7333-A mit 3.3V versorgt. Im Leelauf braucht der gerade einmal 4µA und belastet bei mir den Akku dauerhaft. Im ausgeschalten Zustand benötigt mein Rechner weniger als 10µA. http://www.angeladvance.com/HT73xx.pdf
Datum:
|
Michael B. schrieb: > Jens G. schrieb: >> Es gibt kein Zweifel, das irgendetwas außerhalb der Spezifikation sein >> könnte) > > Auch eine LED Anzeige, die bei 4V Akkuspannung zwar 2.3mA Segmentstrom > (im Mittel) hat (LTD056AUE sind gar keine 2mA low current Anzeigen auch > wenn das Datenblatt behauptet Extremely low current), wird bei 3V > Akkuspannung nur noch 650uA haben und damit 1/3 der Helligkeit, und > eigentlich hält LiIon bis 2.5V durch. Ein kleines Rechenbeispiel U_Led bei 0mA etwa 1.9V. 70 Ohm Innenwiderstand von LED und Treiberausgang (µC). 1. 1.9V + 30mA * 70Ohm = 4.0V 2. 1.9V + 20mA * 70Ohm = 3.3V Will sagen. Bei einer Spannungsänderung von 4.0V auf 3.3V verringert sich der Strom um den Faktor 1.5 . Kein Problem in meinem Fall. Die Helligkeit der LED kann per Tastendruck in 7 Stufen eingestellt werden. Je Stufe verringert oder erhöht sich der Strom um etwa diesen Faktor.
:
Bearbeitet durch User
Datum:
|
Jens G. schrieb: > 70 Ohm Innenwiderstand von LED und Treiberausgang (µC). Die Innenwiderstände von Halbleitern sind stark nichtlinear. Da kannst du nicht einfach irgendeinen ohmschen Widerstand einsetzen. Ich habe auch schon (gemultiplexte) LEDs direkt an Controller gehängt, die mit 3 V oder weniger (2 x LR03) betrieben werden. Geht. Man muss sich nur dessen bewusst sein, dass mit entladenen Batterien die Lichtstärke heftig abnimmt. Erstens wird die Differenz zwischen Flussspannung der LED und Batteriespannung geringer, zweitens sinkt mit sinkender Versorgungsspannung die Stromergiebigkeit der Drainstrecken in den FETs im Controller ab. Für kleine Gimmicks ohne ernsthaften Wert (Demo-Objekte oder Spielereien) genügt es jedoch allemal.
Datum:
|
Jörg W. schrieb: > Jens G. schrieb: >> 70 Ohm Innenwiderstand von LED und Treiberausgang (µC). > zweitens sinkt > mit sinkender Versorgungsspannung die Stromergiebigkeit der > Drainstrecken in den FETs im Controller ab. Die Stromergiebigkeit des µC verändert sich nicht, da die Spannung des µC mit einem Längsregler stabilisiert ist.
Datum:
|
Jens G. schrieb: > Die Stromergiebigkeit des µC verändert sich nicht, da die Spannung des > µC mit einem Längsregler stabilisiert ist. OK
Datum:
|
Zunächst mal ein großes Lob! Ich verfolge die Entwicklung schon eine geraume Zeit. Da ich ein Taschenrechnerfossil bin (rechne täglich damit) zwei Fragen: Wie ist die Haptik deiner Tastaturmatrix und der zugehörigen Tasten und wie wird das alles übereinander montiert? Ist auch mal UPN geplant (benutze eigentlich nur UPN)?
Datum:
|
Als Taster werden folgende verwendet: https://www.tme.eu/de/katalog/#search=B3F-4050%20OMRON Die weiter oben abgebildetet PCB werden mit 0.8mm Dicke bestellt. Um die erforderiche Dicke von 1.2mm zu erreichen wird etwas Lötzinn auf die Rückseite gelötet und mit einer Zange auf 1.3mm gedrückt. Der Tastendruck ist etwa 30gf bis 35gf .. der Tastweg liegt bei etwa 1.2mm. Eine Schablone muss noch gemacht werden, damit ich nicht 2 Tasten gleichzeitig drücken kann. UPN - ist nicht geplant - dafür gibt es maximal viele Klammerebenen.
:
Bearbeitet durch User
Datum:
|
Ich habe ein Wege-Kraft Diagramm erstellt - ist nicht besonders genau - aber mal besser als keine Grafik. Der Tastendruck erfolgt etwa in der Mitte der Symbole. Durch die Hebelwirkung ergeben sich Unterschiede.
:
Bearbeitet durch User
Datum:
|
Jens G. schrieb: > Ich habe ein Wege-Kraft Diagramm erstellt - ist nicht besonders genau - > aber mal besser als keine Grafik. Etwas OT aber womit und wie hast du dass gemessen?
Datum:
|
J. T. schrieb: > Jens G. schrieb: >> Ich habe ein Wege-Kraft Diagramm erstellt - ist nicht besonders genau - >> aber mal besser als keine Grafik. > > Etwas OT aber womit und wie hast du dass gemessen? Das hatte ich schon länger vorbereitet. Von der Weg und auch Kraftauflösung sehr ungenau. 16 Werte im Weg und 1 g Auflösung in der Kraft (Digitalwaage). Der Weg wird mit einer Schraube M4 gemacht (es ist etwa eine Umdrehung, das macht 0.7 mm). Aufgrund der Hebelwirkung dürfte es sehr leicht sein diese Kurve aus den originalen Wege-Kraftdiagrammen zu extrapolieren. Der B3F-4050 ist die untere Kennlinie mit 130 gf.
:
Bearbeitet durch User
Datum:
|
Info: Im Moment arbeite ich an cbrt() .. x^1/3. Es ist nicht ganz einfach einen guten Algorithmus zu finden der schnell konvergiert und mit meinem internen Zahlenformat gut zurecht kommt. Ich bin fündig geworden. "A Way of Approximation of a Cube Root": http://ajmonline.org/2008/5.pdf Bei einem Startfehler von +/- 0.05 ergibt sich in einem Interpolationsschritt ein Fehler von +/- 0.000035.
Datum:
|
Jens G. schrieb: > Der B3F-4050 ist die untere Kennlinie mit 130 gf. Weil du es immer wieder schreibst: was ist die Einheit „gf“? Sollen das die altertümlichen „Pond“ sein (ca 1/100 N)?
Datum:
|
Jörg W. schrieb: > Jens G. schrieb: >> Der B3F-4050 ist die untere Kennlinie mit 130 gf. > > Weil du es immer wieder schreibst: was ist die Einheit „gf“? Sollen > das die altertümlichen „Pond“ sein (ca 1/100 N)? Weil .. hier gibt es immer wieder so schlaue Leute die sagen eine Kraft ist in Newton anzugeben - so stimmt diese Angabe wahrscheinlich auch auf dem Mond, wo ich aber nicht lebe. Also 1 gf entspricht dem Gewicht von einem Gramm. Es ist aber kein Gewicht sondern eine Kraft die auf etwas wirkt. In diesem Fall könnte man sagen - Man nehme ein Gewicht von einem Gramm und erzeuge damit eine Kraft von 1 gf (gramm-Kraft - frei übersetzt). 1 Gram-force [gf] = 9,80664999999998 Millinewton [mN]
:
Bearbeitet durch User
Datum:
|
Jens G. schrieb: > so stimmt diese Angabe wahrscheinlich auch auf dem Mond, wo ich aber > nicht lebe. Nein, stimmt sie natürlich nicht – denn dort hat deine Masse von 1 g eine viel geringere Gewichtskraft, dein Taster dagegen wird nach wie vor die gleiche Kraft benötigen. Ist es wirklich so schlimm, den Wert durch 100 zu teilen und "N" dranzuschreiben? > 1 Gram-force [gf] = 9,80664999999998 Millinewton [mN] So genau wird deine Messung sowieso nicht sein, dass du ihn nicht gleich mit 10 mN angeben könntest.
:
Bearbeitet durch Moderator
Datum:
|
Das ist schon sehr komisch - da macht ein Hersteller eine Grafik und schreibt gf in diese Grafik hinein und schon sei das völlig verkehrt. Meine Küchenwage zur Vermessung meines Tasters kennt nur eine Einteilung und die ist Gramm -- und deshhalb verwende ich es auch. Auch Hersteller von Tastaturen verwenden die Einheit gf. Zum Beispiel: Cherry Tastur mit 45 Gramm Kraft zur Eingabe.
Datum:
|
Jens G. schrieb: > Auch Hersteller von Tastaturen verwenden die Einheit gf. Naja, die Amerikaner sind bekanntlich eins der verbliebenen drei Länder, die nach wie vor auf Kriegsfuß mit SI-Einheiten stehen. Ich finde deine Messungen wirklich interessant, aber Maßeinheiten sollten eigentlich den Anspruch haben, dass man auf Anhieb weiß, was damit gemeint ist. Bei "gf" war zumindest bei mir dies nicht der Fall. Wie weiter oben geschrieben, davon mal ganz abgesehen, hieß die entsprechende Einheit vor SI mal „Pond“. (Hatte ich anfangs noch in der Schule so gelernt, SI machte sich erst während meiner Schulzeit wirklich breit.)
Datum:
|
Unsere Schalterlieferanten geben Kräfte in Newton an. Die messen allerdings mit einer Kraftmessdose und nicht mit einer Küchenwaage. Auf der Erde dürfte der Faktor 9,81 hinreichend konstant sein. Auf anderen Planeten bleibt die Federkraft gleich, die Gewichtskraft einer konstanten Masse ändert sich aber. D.h. die Menge an Gramm die Du brauchst um 100 mN aufzubringen ist eine andere, die 100 mN bis zum snap sind aber die gleichen.
Datum:
|
soul e. schrieb: > Unsere Schalterlieferanten geben Kräfte in Newton an. Die messen > allerdings mit einer Kraftmessdose und nicht mit einer Küchenwaage. > > Auf der Erde dürfte der Faktor 9,81 hinreichend konstant sein. Auf > anderen Planeten bleibt die Federkraft gleich, die Gewichtskraft einer > konstanten Masse ändert sich aber. D.h. die Menge an Gramm die Du > brauchst um 100 mN aufzubringen ist eine andere, die 100 mN bis zum snap > sind aber die gleichen. Also gut .. 440 mN Kraft werden benötigt um die Taste zu betätigen. Dazu wird ein Weg von etwa 0,4 mm benötigt. Nach dem Tastendruck gibt es eine Feedback von 195 mN. Erklärung: Feedback ist die Verringerung der Andruckkraft nach einem Tastendruck.
Datum:
|
Anbei möchte ich einen Eindruck über den Aufbau geben.
:
Bearbeitet durch User
Datum:
|
Eine kleine Statistik zu Cubicroot cbrt(1.0 - 1000.0). 9990 Berechnungen wurden ausgeführt. Fehler = (Ist / Exact) - 1. Der maximale Fehler lag bei 6,2E-15. Da ich intern auch sqrt() und eigene Algebra verwendet habe, ist dieses Ergebniss auch ein Nachweis über die Funktionen (+, -, *, /) der internen Berechnung. Als Startwerte zur Interpolation wurden 18 Werte von 1.00 bis 1.51 verwendet. Es wurde 2x interpoliert. Der Algorithmus verdreifacht die Genauigkeit mit jeder Interpolation.
Datum:
|
Ich habe die Anzahl Startwerte der Kubik-Wurzel (cbrt) nochmals erhöht auf 21 Werte .. jetzt sieht es gleich besser aus.
Datum:
|
.. und hier die Fehlerstatistik zur Quadrat-Wurzel (sqrt). Diese Funktion habe ich in der Kubik-Wurzel 2x verwendet.
Datum:
|
Ich habe die Startwerte der Kubik-Wurzel (cbrt) etwas modifiziert. Die Anzahl Werte (21) hat sich nicht verändert.
:
Bearbeitet durch User
Datum:
|
Berechnet man die erste Interpolation exact ... dann klappt es auch mit der Genauigkeit der Berechnung.
Datum:
|
Nach folgender Theorie habe ich ln() - Natürlicher Logarithmus - eingepflegt. Fast Algorithms for High-Precision Computation of Elementary Functions https://maths-people.anu.edu.au/~brent/pd/RNC7t.pdf Seite 32 - First AGM algorithm for ln Seite 33 - Argument expansion -> 2^k = 1e9 (5e8) Die Berechnung eines Wertes dauert etwa 950ms an Zeit. Eine kleine Animation im Display lässt es kurzweilig erscheinen. Der AGM Algorithmus wird dabei auch gestestet.
Datum:
|
Ergebnisse nahe bei Null verbessert. ln(1) = 0.
Datum:
|
Ich habe .. "log(x,b) returns the logarithm of x to the base b" .. auf "EE"+"1" eingebaut. 13 Digit sind richtig. https://www.rapidtables.com/math/algebra/logarithm/Logarithm_Base_Change.html
Datum:
|
2^x, a^x, e^x, 10^x hinzugefügt. https://github.com/JensGrabner/snc98_Slash-Number-Calculator Bei 2^x muss x in folgendem Bereich sein: "1e-9 <= abs(x) <= 320". Die Berechnung eines Wertes dauert etwa 650ms an Zeit.
:
Bearbeitet durch User
Datum:
|
Nach exp2() noch log2() als Statistik -- es wird der komplette Wertebereich ausgewertet. Input (x) 1.0000000014 .. 1.068e+96.
Datum:
|
Ich habe "Factorial Function n!" implementiert. Theorie zur Berechnung: http://www.luschny.de/math/factorial/approx/SimpleCases.html ""A higher precision approximation" https://github.com/JensGrabner/snc98_Slash-Number-Calculator Die Funktion benötigt etwa 2500ms an Rechenzeit. Kein Problem bei einem Taschenrechner - ich berechene die Fakultät von 0 bis 71 lückenlos. https://www.wikiwand.com/de/Fakult%C3%A4t_(Mathematik)
:
Bearbeitet durch User
Datum:
|
Ich veröffentliche mal ein Bild vom neuesten HW-Stand. Die Grundplatte ist ein Schneidbrett von IKEA "APTITLIG" (24 x 15cm) - Der Stahlgriff ist von Hornbach.
Datum:
|
Funktion tanh() erstellt. bis tanh(-11,092) = -1 ab tanh(+11.092) = +1
Datum:
|
Für cosh() habe ich die Statistik vom relativem Fehler gemacht.
Datum:
|
Für sinh() habe ich die Statistik vom relativem Fehler gemacht.
Datum:
|
Im Standardmode - "Std" rechnet der Rechner wie ein "Kaufmännischer Taschenrechner" laut diesem Dokument. http://www.sharp-calculators.com/files/composite_file/file/20-tr_in_der_primarstufe_web.pdf .. auf Seite 5. Das Beispiel auf Seite 6 funktioniert wie angegeben. ANS = Mr_0. Bei der Anzeige kann ich neben der Anzahl Zahlen jetzt auch .. "ohne und mit" nachvolgenden Nullen anzeigen. Bei 5-stelliger Anzeige also z.B. "3.0000" oder "3." anzeigen.
Datum:
|
Für atanh() habe ich die Statistik vom relativem Fehler gemacht.
Datum:
|
Die Genauigkeit von atanh() wurde verbessert. atanh( 1) = 1e90 atanh(-1) = -1e90
Datum:
|
Die Genauigkeit von atanh() wurde nochmals verbessert.