Forum: Mikrocontroller und Digitale Elektronik Taschenrechner Umbau AVR


von Alfred P. (zigarrre)


Lesenswert?

Ich will nur so zum Spaß und Übungszwecken einen Ur-alten 
TexasInstruments Taschenrechner (hab ihn gerade nicht bei der Hand 
deshalb kann ich nicht sagen welches Model genau) mit LED-Display mit 
einem AVR Ausrüsten um mit dem dann alle möglichen spielereien zu 
machen.

Als AVR dachte ich an einen Atmega8-16PU weil ich von denen noch ein 
paar herumliegen habe und der genug Leistungsreserven für meine Zwecke 
haben sollte. Ich will dieses Projekt dann immer weiter (softwareseitig) 
ausbauen, deshalb habe ich daran gedacht den µC von Anfang an mit 12 
oder 16 Mhz per Quarz zu takten.

Programmiert soll das ganze in C mit AVR-GCC werden.

Die Schlatung sollte möglichst klein sein da sie ja in das 
Rechnergehäuse passen muss. Die alte Platine war ca 6,6cm x 4,8cm groß.

Derzeit bin ich aber noch beim Hardwaredesign. Dabei ergeben sich jedoch 
einige Fragen/Probleme:

1. Der Rechner ferfügt über ein 9 Stelliges 8-Segment (7 + 1 für Punkt) 
LED-Display. Um das mit den mir nur begrenzt zur Verfügung stehenden 
Pins anzusteuern habe ich an eine Kombination aus schieberegistern und 
Multiplexing gedacht. Ich weiß aber nicht wie viele Stellen ich zu einem 
Multiplexing-Element zusammenfügen soll. Alle auf einmal werden 
warscheinlich die LEDs nicht verkraften (finde auf den Anzeigen leider 
keinen Namen also wirds mit Datenblatt leider nichts), oder? Ich hätte 
sonnst noch an 3*3 gedacht. 4+3 hätte ich ausgeschlossen weil dann ja 
die 3er Gruppe heller ist als die 4er, oder habe ich da einen 
Denkfehler?

2. Beim Multiplexing brauche ich doch 8-Pins und pro Stelle einen 
weiteren oder? Also wenn ich zb 3 Stellen Multiplexe brauche ich 11 
Pins, oder?

3. Kann ich die Schieberegister für Multiplexing schnell genug mit SPI 
bzw. einer Softwarelösung ansteuern?

4. Im alten Rechner waren 2 SN75492N als LED-Treiber verbaut. Die könnte 
ich doch eigentlich gleich weiterverwenden, oder?

5. Die Tastatur scheint als eine Art Matrix von der 13 Pins weggehen 
gelöst zu sein. Das heißt ich werde auch noch für die Eingabe 
Schieberegister brauchen. Kann ich ein und Ausgabe Register gleichzeitig 
am SPI betreiben?

6. Ich würde das ganze gerne mit einem Akku betreiben. Was für Akkus 
eignen sich hierfür am besten (Davor waren 2 AA Akuzellen drinnen die 
aber schon defekt waren)?

7. Wie würde die Ladeschaltung für die Akkus aussehen (Habe leider 
keinerlei Erfahrung mit Akkus)?

8. Wie erzeuge ich aus der Akkuspannung die Spannung für meinen µC bzw. 
die anderen Komponenten?

9. Wieviel Strom braucht ein Atmega-16PU mit 16Mhz getaktet ungefähr? 
Ich würde nähmlich auch noch gerne eine Uhr einbauen, die sollte aber 
natürlich den Akku nicht zusehr belassten. Als Ausweichlösung habe ich 
mir gedacht könnte ich ja noch einen Attiny einbauen der nur die Uhrzeit 
"weiterzählt" und vieleciht auch noch andere kleine Aufgaben übernimmt.

Eine paar Pins für (externe) Anschlussmöglichkeiten von denen ich später 
vieleicht gebrauch machen will solten auch noch überbleiben.

Habe ich überhaupt eine Chance das alles im beschränktem Platzangebot 
des Rechners unterzubringen (Ich denke es sollte gehen)?

Sobald die grundlegenden Fragen/Probleme zur Hardware gelöst sind reiche 
ich natürlich noch einen Schaltplan nach.

Ich hoffe ihr könnt mir mit meinen Fragen/Problemen weiterhelfen!

mfg
zigarrre

von syttm (Gast)


Lesenswert?

Du kannst Schieberegister kaskadieren, dann sind alle stellen gleich 
hell

von tt2t (Gast)


Lesenswert?

4. die SN75492N kannst Du weglassen, die Schieberegister treiben die 
LEDs

5. siehe letzten Post, SR kann man kaskadieren

6. nimm einen LiPo, der hat 3.6/3.7 Volt

7. dafür gibt es fertige Chips, z.B. von maxim-ic.com

8. versorge alle ICs und die LEDs direkt aus dem Akku, keinen Regler, 
der braucht wieder selber Strom

von Sebastian (Gast)


Lesenswert?

Ich nehme an, das ist ein TI-30 oder ähnlich. Also mal der Reihe nach:

Display:
Das Display wird im Original ganz regulär gemultiplext - 9:1. Alles 
andere wäre damals vom Aufwand nicht vertretbar gewesen, zudem klappt 
das mit roten LEDs ganz gut mit dem Impulsbetrieb. Ich würde, wenn das 
Layout es zuläßt, die acht Segmentleitungen auf einen Port des Mikros 
führen, und die Ziffern über einen Zähler ansteuern - CD4017. Ein 
Treibertransistor pro Ziffer ist dann aber leider nötig. Dafür braucht 
man dann nur 8 Leitungen für die Segmente, und zwei für den Zähler - 
Takt und Reset. Damit sind es zusammen zehn.
Wenn man nur Ziffern braucht, reduziert ein Decoder (SN74(LS)47 oder 
CD4511) die Pinanzahl auf die Hälfte.
Ja, die alten Treiber lassen sich verwenden. Sind aus heutiger Sicht 
nicht umwerfend praktisch, gehen aber.
Auch ist ein Schieberegister schnell genug für die Segmentdaten, falls 
nötig.

Tastatur:
Herkömmliche Matrix, jede Taste ein Kreuzungspunkt. Wahlweise Zeilen 
treiben, Spalten zurücklesen oder umgekehrt. Für die treibende Seite 
kann ebenfalls ein Zähler benutzt werden, wie oben. Einlesen könnte man 
tatsächlich über Schieberegister. Entprellung braucht man, kann aber in 
Software erfolgen.

Akku:
Der TI benutzte Step-Up, Effizienz war nicht so toll damals. Kann man 
nachmachen, oder vielleicht zwei LiPo-Akkus in Reihe. Könnte reichen für 
das Display, auch wenn es etwas knapp ist.

Ladeschaltung:
Es gibt einen spannungs- und strombegrenzten Lader mittels L200 für 
Li-Ion, ggf. auch für LiPo als Schaltung im Netz. Ansonsten Spezial-IC 
(Maxim o.ä.). NiMH ist aufwendiger, wenn man es gut machen will. Oder 
Akku entnehmbar machen und extern laden.

Stromverbrauch:
Der Atmel ist hier die geringste Sorge - das Display lutscht den Akku 
schnell leer, wenn es immer an ist. Auf Tastendruck zuschalten ginge, 
Takt des AVR niedrig halten, oder Keyboard-Wakeup und ext. RTC

Fazit:
Geht schon, man sollte aber möglichst SMD-Teile verwenden, notfalls 
doppelseitig bestücken. Layouterfahrung empfehlenswert.

Ich hatte mal eine andere Idee: TI-1795+ mit einem MSP430F4x ausstatten, 
unter Beibehaltung des originalen LCD und der Solarversorgung. Leider 
kriege ich das Display nicht kontaktiert, da mit "leitendem Tesafilm" 
kontaktiert, und das Layout der Gummitastatur ist nicht so einfach. 
Daher liegt das Projekt unbegrenzt auf Eis.

von Lehrmann M. (ubimbo)


Lesenswert?


von Joachim B. (jojo84)


Lesenswert?

Also viel wurde ja schon gesagt, ich wollte nur noch einen Vorschlag 
bzgl. der Schieberegister machen:
da wurde ich eher zu einem TLC5940 tendieren. Das sind zwar eigentlich 
PWM-Treiber, aber das mmacht ja nix. Der primäre Grund ist einfach der, 
daß ich vermute, daß dadurch das Layout einfacher wird. Von den 
Wald-und-Wieser-Schieberegistern (xx595 glaub ich) bräuchtest du dann ja 
immerhin 9 Stück. Von den TLC5940 nurnoch 5. Klar sind die größer (mehr 
Pins), aber da kannst du ja einfach mal gucken, ob das nicht ne 
Möglichkeit wäre.
Dazu kommt natürlich noch der Vorteil, daß du die Akkulebensdauer im 
PWM-Betrieb deutlich verlängern kannst.
Und die SPI-Frequenz müßte dicke ausreichen (bei den AVRs bei 400kHz 
glaub ich). Ist aber auch total unkritisch, weil du ja (wahrscheinlich) 
eh nur immer eine Helligkeit auf dem Display fährst.

von Alfred P. (zigarrre)


Lesenswert?

>http://petergof.com/x-ray/images/ti30_2000.jpg
Inwieweit hilft mir das weiter?

Wenn das original gemultiplexed wird werd ich das auch machen. Hab bei 
nochmaliger Betrachtung auch festgestellt das das Display eh nur ~12 
Anschlüsse hat.

Wenn die LED-Treiber sowieso nicht so optimal sind werde ich wohl neue 
nehmen da ich eh nicht weiß wie ich die alten auslöten soll.

Ich werde aber auch fürs multiplexing Schieberegister benutzen. Was 
wären dafür die besten? Ich hätte an 2 74xx595 gedacht, da die recht 
einfach zu bedienen sind und es darüber unmengen Tutorials gibt. Der 
TLC5940 klingt auch recht interessant, da erspare ich mir ja die Treiber 
LEDs. Wie viel kostet der und wo bekomme ich den (finde ihn nirgends)? 
Von dem bräuchte ich bei Multiplexig ja nur einen, oder? Wie viele Pins 
brauch ich für den am µC? Mit dem kann ich ja PWM machen (also das 
Display faden) ohne einen PWM-Channel am µC zu verbrauchen, oder? Das 
wäre nähmlich ein nettes Zusatzfeature.

>6. nimm einen LiPo, der hat 3.6/3.7 Volt
Der Atmel8-16PU braucht 4,5-5,5V der Akku hat aber nur 3,7V. Zwei in 
Reihe wären wieder zuviel, also brauche ich so oder so ein Regler oder 
sowas in die Richtung um an meine 5V zu kommen.

Wie viel würde mich solche Akkus + Ladesteuerung und Spannungsregler 
(oder mit was auch immer ich die Spannung für die Schaltung generiere) 
kosten? Der L200 klingt interessant, kann ich den vieleicht gleich mit 
einem unstabilisiertem Netzteil betreiben?

Mit SMD/Layouting-Erfahrung kann ich leider nicht dienen. Hab bis jetzt 
nur mit Lochrasterplatinen gearbeitet, aber für deises Projekt werde ich 
wohl eine ätzen. SMD löten wird mit meinem Lötkolben sowieso nicht drinn 
sein.

Das mit der RTC ist eine gute Idee da ich den µC recht hoch takten werde 
weil ich genug Leistungsreserven (für teiweise viele paralelle Aufgaben) 
haben will. Was wäre eine gute und vor allem günstige RTC?

Der Rechner ist perfekt für Umbauarbeiten da Tastatur und Display noch 
mit Flachbandkabeln mit echten drähten angebunden sind. Und er groß 
genug ist um die Schaltung unterzubringen.

mfg
zigarrre

von Joachim B. (jojo84)


Lesenswert?

Moin,

die ollen LED-Treiber kannst du dir so oder so sparen. Steht ja auch 
schon oben weiter bereits. Selbst bei "normalen" Schieberegistern 
liefern die Ausgänge genug Strom, daß du die LEDs direkt dranhänken 
kannst.

Den TLC5940 kannst du dir als Sample von TI kostenlos zuschicken lassen. 
Wie das Ding anzuschließen ist steht in den AppNotes und hier im Forum 
an verschiedenen Stellen drin. Aus dem Kopf weiß ich das nicht, und ein 
bißchen Eigeninitiative soll ja auch dabei sein ;) . Du brauchst auf 
jeden Fall 2 für SPI, eine für den Zählertakt des 5940, eine für 
Blank... also so um die 4-6, ich weiß es nicht mehr.
Klar kannst du mit dem Ding auch multiplexen. Dann muß du nur verdammt 
schnell neue PWM-Daten in das Ding reinschubsen. Das ist dann Sache des 
Programmierers...

@Layouten:
dann mußt du es eben üben. Du kannst schlecht die Größe der Platine in 
so enge Grenzen stecken und dann verlangen, daß alle Bauteile da in DIP 
draufpassen =) . SMD ist zeitgemäß und eigentlich ein Muss beim Layouten 
(finde ich).

Von dem Atmega gibt es auch eine Low Voltage Variante. Die kannst du 
nehmen.

von Norbert (Gast)


Lesenswert?

Zumindest meine TI-57/58/59 haben intern mit mindestens 11 Stellen 
Genauigkeit gerechnet. Du solltest also ein wirklich gutes 
Gleitkomma-Paket für den AVR zur Verfügung haben.
Standard ist - glaube ich - float mit ca. 5-6 Stellen Genauigkeit.

von Karl H. (kbuchegg)


Lesenswert?

Norbert schrieb:
> Zumindest meine TI-57/58/59 haben intern mit mindestens 11 Stellen
> Genauigkeit gerechnet. Du solltest also ein wirklich gutes
> Gleitkomma-Paket für den AVR zur Verfügung haben.

Zumindest die alten Taschenrechner haben meistens/oft mit BCD 
gearbeitet. Zusammen mit den einfachen CPU's war das einer der Gründe, 
warum sie um einiges langsamer als selbst die ersten µC waren.

Spielte aber auch keine Rolle. Der Benutzer ist immer noch um 
Größenordnungen langsamer.

von Alfred P. (zigarrre)


Lesenswert?

>Selbst bei "normalen" Schieberegistern
>liefern die Ausgänge genug Strom, daß du die LEDs direkt dranhänken
>kannst.
Das würde ich nicht sagen. Der 74xx595 zb verkrafftet zwar pro Port 25mA 
aber insgesammt nur 70mA jeweils an Vcc und Vdd, selbst mit dem 
workaround aus dem Schieberegister Tutorial hat man dann nur 140mA also 
17,5mA pro LED und ich kann mir nicht vorstellen das das zum Multiplexen 
reicht.

>... ein bißchen Eigeninitiative soll ja auch dabei sein ;)
Ja, sicher, dachte mir nur wenn du mir den schon empfielst wirst du ihn 
ja schon verwendet haben und wissen wie viele Pins der braucht.

Für den 74xx595 brauche ich nur 3 Pins (wenn ich SCL(Reset) weglasse). 
Aber die Zusatzfunktionen vom TLC5940 wären mir die 1-2 Pins mehr wert.

>dann mußt du es eben üben. Du kannst schlecht die Größe der Platine in
>so enge Grenzen stecken und dann verlangen, daß alle Bauteile da in DIP
>draufpassen =) . SMD ist zeitgemäß und eigentlich ein Muss beim Layouten
>(finde ich).
Naja ich halte SMD von Hand löten ohne (teurem) spezialwerkzeug und viel 
übung für ein Ding der unmöglichkeit (Auser vieleicht bei so Sachen wie 
Wiederständen und Kodensatoren in einer der größeren SMD Baugrößen). 
Aber vieleicht irre ich auch.

Die Low-Volatage Veriante geht aber leider nur bis 8Mhz. Ist es so 
schwer aus den 3,7V bzw 7,4V 5V zu generieren?

mfg
zigarrre

von Joachim B. (jojo84)


Lesenswert?

Alfred P. schrieb:
> Die Low-Volatage Veriante geht aber leider nur bis 8Mhz.

Ja, "offiziell" geht die LV-Variante nur mit 8 MHz. Aber auch nur, weil 
Atmel die nicht mit 16 oder 20 MHz testen will :) . Oder weil es 
vorkommt, daß da einer von 125874 bei 2V und 20 MHz nicht richtig läuft.
Es ist auch an einigen Stellen im Netz zu finden, daß Leute ihre LV-AVRs 
mit Takten weit jenseits der Spezifikation betrieben haben.
Die "normale" Variante läuft ja auch nicht nur bis 16 MHz und bei 16,5 
geht nix mehr... Probier es aus, ich bin sicher, daß das funktionieren 
wird...

Alfred P. schrieb:
> Naja ich halte SMD von Hand löten ohne (teurem) spezialwerkzeug und viel
> übung für ein Ding der unmöglichkeit

nee, so schlimm ist das nicht. Bei ICs lötest du ja icht Pin für Pin an 
(kann man auch ;) ). Sondern da gibt es diese Methode, daß du erst ne 
dicke Lötnaht über alle Pins ziehst und dann mit Flussmittel und 
Entlötlitze alles Überschüssige wegnimmst. Stimmt, das muß man mal geübt 
haben, aber es ist wirklich einfacher, als man denkt. Ich empfehle es 
wirklich.

@Strom und Multiplexen:
darum wurde dir ja auch nahegelegt nicht zu multiplexen :) . Oder 
feuere mit entsprechend weniger Strom. Dann sind deine Leds zwar 
dunkler, aber dein Akku lebt länger.

Alfred P. schrieb:
> Ist es so
> schwer aus den 3,7V bzw 7,4V 5V zu generieren?
nein, ist es nicht. Entweder Low-Drop-Linearregler oder eben 
Schaltregler. Aber beides (finde ich) schwieriger, als den AVR bei der 
Spannung und 16 MHz laufen zu lassen :) .

von bingo (Gast)


Lesenswert?

> Die Low-Volatage Veriante geht aber leider nur bis 8Mhz.

Probier doch mal die -16-Variante bei 3.7 Volt (Du sagtest ja oben, Du 
hättest einige davon), bei mir laufen 3 Stück davon ohne Probleme, 1 
weiterer zickt allerdings.

von Alfred P. (zigarrre)


Lesenswert?

>darum wurde dir ja auch nahegelegt nicht zu multiplexen :)
Wer hat mir das nahegelegt? Ohne Multiplexen wirds wohl nicht gehen denn 
ich glaube nicht das ich da genügend Schieberegister unterbringe um an 
72 Pins zu kommen. Aber der TLC5940 gefällt mir recht gut, werde mir den 
mal genauer ansehen.

Ich denke das Layout sollte sich auch ausgehen wenn ich die ICs in DIP 
Bauform und so Sachen wie Wiederstände und Kondensatoren als SMD in 0805 
oder 0603 verbaue.

>Probier doch mal die -16-Variante bei 3.7 Volt
Hab leider keine Spannungsquelle die 3,7V liefert.

mfg
zigarrre

von Joachim B. (jojo84)


Lesenswert?

Alfred P. schrieb:
> Wer hat mir das nahegelegt? Ohne Multiplexen wirds wohl nicht gehen denn
> ich glaube nicht das ich da genügend Schieberegister unterbringe um an
> 72 Pins zu kommen. Aber der TLC5940 gefällt mir recht gut, werde mir den
> mal genauer ansehen.

Mach, wie du meinst :) . Du wolltest Vorschläge haben und hast ja auch 
einige bekommen. Ich persönlich finde die Idee von Sebastian gut (mit 
dem 4017, weil da auch immer nur einer Ziffer an ist. Ist dann quasi 
auch gemultiplext, nur daß du dich um nix außer den Takt für den 4017 
kümmern mußt...

Alfred P. schrieb:
> Ich denke das Layout sollte sich auch ausgehen wenn ich die ICs in DIP
> Bauform und so Sachen wie Wiederstände und Kondensatoren als SMD in 0805
> oder 0603 verbaue.

Auch hier: mach, wie du meinst :) . Ich würd das nicht so machen (bin 
auch kein SMD-Spezielist), aber wenn du das hinkriegst ist doch ok. Nur 
frag ich mich, warum die es nicht wenigstens versuchen willst, wenn du 
eh eine Platine ätzt. Ich würde sogar zwei Versionen erstellen: eine mit 
DIP-Fassungen (zum üben und rumexperimentieren) und eine mit SMD-ICs...

Alfred P. schrieb:
> Hab leider keine Spannungsquelle die 3,7V liefert.

Nein? Kann das nicht ein normaler LM317? Und jetzt keine Ausrede, auch 
den gibts als kostenloses Sample... ;)

Gruß

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.