mikrocontroller.net

Forum: Projekte & Code Noch ein Taschenrechner auf ATMega Basis


Autor: Gero D. (srswift)
Datum:
Angehängte Dateien:

Bewertung
10 lesenswert
nicht lesenswert
Eigentlich verwendet ja kein Mensch mehr einen Taschenrechner. Aber da 
ein wahrer Bastler über die Frage "Wofür soll das gut sein?" erhaben 
ist, warum nicht?

Das Projekt hat eine Historie, die soll hier aber nicht im Fokus stehen. 
Die aktuelle inkarnation sollte
- UPN (Umgekehrte Polnische Notation) haben (wie die alten HPs
- leicht wissenschaftlich sein (Winkelfunktionen, Logarithmen, ...)
- mit den altmodischen Siebensegmentanzeigen leuchten (LED) - wegen der 
Nostalgie
- Halbwegs klein sein
- praktisch verwendbar sein.

Am Anfang hab ich ein wenig mit dem ATMega8 herumexperimentiert. Die 
Idee, eine eigene Mathematikbibliothek zu schreiben ist schnell zu den 
Akten gelegt worden, nachdem ich mir die verfügbaren Double-Funktionen 
im BASCOM angeschaut hatte. Meiner Meinug nach bleibt da kein Wunsch 
unerfüllt. Nur Leider war der Mega8 damit dann voll. Der ATMega 328 war 
dann der Prozessor meiner Wahl.

Die Suche nach "passenden" Siebensegmentanzeigen gestaltete sich auch 
ein wenig aufwändiger, am Ende hatte ich ein achtstelliges Modul mit 
MAX7219 auf dem Basteltisch. Eigentlich wollte ich das Multiplexen der 
einzelnen Anzeigeelemente ja den Prozessor machen lassen, aber der 
Siebensegmentcontroller ist wirklich ein nützlicher Zeitgenosse.

Am Ende brauchte mein BASCOM-Code nur 45% des Flashs des ATMega328.
Die 28 Tasten sind fast alle doppelt belegt, die Tasten werden gepollt. 
Die Speicher (ich gönne mir den Luxus von 10 Speichern) liegen im 
EEPROM, genau so wie die Einstellungen (rad/grd, Anzeigemodus)

Die Leiterplatte ist doppelseitig und 100x65mm groß. Damit konnte ich 
sie in der Freien Eagle-Version gerade noch layouten.

Das Gerät nimmt bei 5V Betriebsspannung und einer 88888888 in der 
Anzeige etwa 150mA, das ist natürlich der Tod jeder kleinen Batterie. 
Deshalb geht die Anzeige in einen "Schlafmodus", es wird nur ein 
Dezimalpunkt angezeigt.
Dabei geht dann die Stromaufnahme auf etwa 40mA zurück. Immer noch viel.

Die Stromsparmodi des ATMega verwende ich noch nicht.

Die Stromversorgung ist noch eine kleine Herausforderung. In der Theorie 
braucht das Gerät 5V. In der Praxis funktioniert es auch mit einer 
LiPo-Zelle. Dabei fließen im Ruhemodus 35mA und bei voller Anzeige etwa 
90.

Was fehlt noch? Ein Gehäuse, da muß ich mir noch etwas gutaussehendes 
ausdenken.

So, für Hinweise und Kritik bin ich dankbar. Schaltung und 
BASCOM-Sourcen dann, wenn sich jemand dafür interessiert.

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
5 lesenswert
nicht lesenswert
Gero D. schrieb:
> Schaltung und BASCOM-Sourcen dann, wenn sich jemand dafür interessiert.

Ohne die hat es unter "Projekte & Code" nichts verloren.

Autor: Gero D. (srswift)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da hast Du natürlich recht. Wenn sich keiner dafür interessieren sollte, 
kann es aber sowieso gelöscht werden.

Autor: Wilhelm M. (wimalopaan)
Datum:

Bewertung
3 lesenswert
nicht lesenswert
Minitrons hätte ich noch retro-iger gefunden ;-)

Autor: Ralf-Peter G. (ralfpeter)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Hallo Gero,

lass doch mal Deine Schaltung und das Programm sehen, man kann ja nur 
dazulernen.

Autor: Gero D. (srswift)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wilhelm M. schrieb:
> Minitrons hätte ich noch retro-iger gefunden ;-)

Stimmt natürlich. Das beißt sich aber mit meinem Lasterhaft (halbwegs 
klein, praktisch verwendbar). Und wirklich beschaffbar sind die netten 
kleinen Röhren ja auch nicht wirklich ...

Autor: Gero D. (srswift)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ralf-Peter G. schrieb:
> Hallo Gero,
>
> lass doch mal Deine Schaltung und das Programm sehen, man kann ja nur
> dazulernen.

Hier der Schaltplan. Im Prototyp ist natürlich kein 7805 als 
Festspannungsregler eingebaut, sondern ein LM 2931 Z-5, der ist aber 
anschlusskompatibel.

Autor: Gero D. (srswift)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Ralf-Peter G. schrieb:
> Hallo Gero,
>
> lass doch mal Deine Schaltung und das Programm sehen, man kann ja nur
> dazulernen.

UNd hier die BASCOM Sourcen, ist so sicher nicht schön, man sieht 
deutlich, dass die Software über viele Iterationen und mit einigen 
Irrwegen entstanden ist. Jetzt, wo sie halbwegs funktioniert, könnte sie 
ein Refactoring vertragen, (z.B. entweder Subs oder GOSUB, lokale 
Variablen, ...)

Man hat halt nie Zeit, etwas richtig zu machen, aber immer Zeit, etwas 
noch einmal zu machen.

Autor: Theor (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Gero D. schrieb:
> Eigentlich verwendet ja kein Mensch mehr einen Taschenrechner. Aber da
> ein wahrer Bastler über die Frage "Wofür soll das gut sein?" erhaben
> ist, warum nicht?
> [...]

Ich finde Deinen Taschenrechner richtig nett. Eine hübsche Sache. Toll 
gemacht. :-)

(Die Displays sehen auf dem Foto richtig "strahlend" aus. Vielleicht 
könnte man den Strom noch um einiges reduzieren und es trotzdem gut 
ablesen).

Autor: Frank K. (fchk)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Ein LCD wäre vielleicht sinnvoller gewesen. So eines z.B.: ebay 
#391500775918

Als Taster hätte ich die hier genommen:
https://www.reichelt.de/eingabetaster-schaltspannung-24v-ws-dit-1-ws-p7143.html?

fchk

Autor: Michael B. (laberkopp)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Gero D. schrieb:
> Hier der Schaltplan

AVCC und AGND sollte man wohl anschliessen wenn man PORTC benutzt, auch 
ohne Analogfunktion zu nutzen.

Ansonsten schöne Platine.

Über die Verwendung von float-Funktionen wirst du dich noch ärgern,
1 ENTER 3 / 3 * sollte halt 1 ergeben.

Autor: Gero D. (srswift)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael B. schrieb:
> Gero D. schrieb:
>> Hier der Schaltplan
>
> AVCC und AGND sollte man wohl anschliessen wenn man PORTC benutzt, auch
> ohne Analogfunktion zu nutzen.
>
> Ansonsten schöne Platine.
>
> Über die Verwendung von float-Funktionen wirst du dich noch ärgern,
> 1 ENTER 3 / 3 * sollte halt 1 ergeben.

Welche negativen Auswirkungen haben die offenen AVCC und AGND in der 
Praxis?

Mein Rechner gibt bei 1 ENTER 3 / 3 * genau 1 aus. Die Double-Lib ist, 
soweit ich gesehen hab, richtig gut!

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gero D. schrieb:
> Hier der Schaltplan.

Gero D. schrieb:
> UNd hier die BASCOM Sourcen,

Danke. Jetz kann's hierbleiben.

Autor: Joe G. (feinmechaniker) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tolles Projekt!
Endlich mal ein UPN-Rechner :-) Ansonsten kannte ich als Nachbau nur die 
Serie von swissmicros. Könntest du noch eine kleine Ansicht der 
Tastenbelegung und die Eagle-Files hier reinstellen. Das würde die 
Nachnutzung erheblich vereinfachen.

Autor: Matthias H. (homa)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Finde das Projekt interessant. Reicht die freie Bascom Variante aus? 
Würde mich über den Quellcode freuen.
Als Tastatur Schablone könntest Du eine Pappe bedrucken, Löcher 
bohren/stanzen und mit Abstandshaltern an den vorhandenen Löchern in der 
Platine befestigen. Dann sieht der Prototyp nicht so unvollständig aus.

Da gab es eine zeitliche Überschneidung :-) - Danke für den Code!
Ja die Eagle Datei wäre auch noch toll ...

: Bearbeitet durch User
Autor: Gero D. (srswift)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So, hier die Tastaturbelegung. Und die Leiterplattenfiles.
Soweit ich weiß, unterstützt die BASCOM-Demoversion den Flash immer nur 
zur Hälfte, mit 45% ist der Taschenrechner da noch knapp drunter, es 
könnte also klappen. Ich hab die Vollversion, kann es also leider nicht 
überprüfen.

Das mit dem Dimmen der Anzeige ist eine Gute Idee, könnte ich als 
Zweitbelegung auf eine der Tasten legen ... Danke für die Idee.

Beide Chips unterstützen ja jeweils einen Ruhemodus, da könnte dann noch 
mal Strom gespart werden. Schaumerma.

Autor: Enrico Eichelhardt (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich schon einen Taschenrechner selber bauen müsste, dann würde ich 
die Tastatur genauso bauen wie bei einem Telefon. Sonst muss man beim 
Tippen jedesmal umdenken.

Telefon:
123
456
789
 0

Taschenrechner:
789
456
123
0

Autor: Joachim B. (jar)
Datum:

Bewertung
3 lesenswert
nicht lesenswert
Enrico Eichelhardt schrieb:
> die Tastatur genauso bauen wie bei einem Telefon. Sonst muss man beim
> Tippen jedesmal umdenken.

schon mal auf den Nummernblock deiner PC Tastatur geschaut?

Umdenken musst du eh immer, weder werden die die Nummernblöcke noch dein 
Telefon umbauen.

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Enrico Eichelhardt schrieb:
> dann würde ich die Tastatur genauso bauen wie bei einem Telefon.

Wenn Du ein dänisches Telephon nimmst, machst Du alles richtig.

https://i.etsystatic.com/13404655/r/il/77d15f/1028456476/il_570xN.1028456476_hcqf.jpg

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gero D. schrieb:
> So, hier die Tastaturbelegung.

Was ist mit Ziffern A bis F ?

Sind auch auf 7-Segment-Anzeigen darstellbar
mit Kleinbuchstaben b und d : A b C d E F

Autor: Gero D. (srswift)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Josef G. schrieb:
>
> Was ist mit Ziffern A bis F ?
>
> Sind auch auf 7-Segment-Anzeigen darstellbar
> mit Kleinbuchstaben b und d : A b C d E F

Guter Einwand. Ich hab mich dagegen entschieden, die Hexadezimaleingabe 
und Darstellung mit einzubauen. Zum einen hätten die 6 zusätzlichen 
Ziffern die Tastatur
- entweder vergrößert. Bei meinem Schaltungsansatz wären noch vier 
weitere Tasten möglich, hätte das Kraut nicht fett gemacht, aber gefiel 
mir nicht.
- oder die Rechenfunktionen (Winkel, Logarithmus u.s.w) in die "zweite 
Reihe" verbannt. Dabei hätte ich die schöne Belegung der Rechentasten 
mit Funktion/Umkehrfunktion verloren
- eine 2. Funktionstaste und damit eine Dreifachbelegung. Das wollte ich 
(noch) nicht.

Dazu kommt noch, daß ich die Hexadezimalrechnung immer dann benötige, 
wenn ich eh am Rechner sitze. Die Winkelfunktionen brauch ich schon mal 
in der Werkstatt.

Autor: Enrico Eichelhardt (Gast)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Rufus Τ. F. schrieb:
> Wenn Du ein dänisches Telephon nimmst, machst Du alles richtig.

Gute Idee. Das Telefon auf den Taschenrechner auszurichten ist natürlich 
auch eine Möglichkeit. Das müsste dann auch noch mit TV Fernbedienungen 
so gemacht werden. Im Prinzip eine Einführung eines internationalen 
Standards für Nummernblöcke.

Joachim B. schrieb:
> schon mal auf den Nummernblock deiner PC Tastatur geschaut?

Ja, genau danach sollte man sich dann richten.

Autor: Joe G. (feinmechaniker) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
2 lesenswert
nicht lesenswert
Wenn UPN, dann sollte man ruhig auf die Erfahrungen von HP 
zurückgreifen. Als HP nach der zwanziger und dreißiger Serie die HP-10C 
(Voyager) Serie einführte war die Ergonomie für eine zügige UPN 
Bedienung perfekt. Diese wird heute noch verwendet, HP35 oder DM42 als 
Nachfolger des legendären HP41. Ich wage zu behaupten, ernsthafte UPN 
Nutzer mögen nur genau dieses Layout.
Im Prinzip ist jedoch die Tastenbelegung für einen Nachbau relativ egal, 
da Gero sein Programm so aufgebaut hat, dass die Funktion auf einen 
beliebigen Scan Code gemappt werden kann.

Autor: Gero D. (srswift)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ein kleines Update der Software. Ein wenig Codebereinigung, Das Dimmen 
der Anzeige liegt jetzt als Zweitbelegung auf dem "+", ein 
Zufallszahlengenerator auf dem "*".

Für Hinweise / Fehlerkorrekturen bin ich dankbar.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.