Am Anfang war es nur eine kleine Spielerei, um die Möglichkeiten des ATMega einmal so richtig kennenzulernen. Mit der Zeit entstanden eine ganze Familie von Taschenrechnern, die sich im praktischen Einsatz mehr oder weniger bewährt haben.
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 eine oder andere hatte ich an anderer Stelle im Netz schon geschrieben, sowohl die Leiterplatten, als auch den BASCOM-Code hab ich unter GPL gestellt, nachputzen und rumkritisieren ist ausdrücklich erwünscht.
Was hatte mir am Anfang vorgeschwebt?
- UPN (Umgekehrte Polnische Notation) haben (wie die alten HPs
- leicht wissenschaftlich sein (Winkelfunktionen, Logarithmen, ...)
- mit den altmodischen Siebensegmentanzeigen leuchten (LED)
- 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. Der Rechner hat 28 Tasten, die fast alle doppelt belegt sind, 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.
IMG_0932_jpg.jpg
So richtig fertig ist ein Projekt ja eigentlich nie. Ein Gehäuse gehört für mich aber dazu, damit aus einer Leiterplatte ein Gerät wird. Also, dem 3D-Drucker ein Modell zu lesen gegeben und ihn einige Stündchen arbeiten lassen. Ein einzelliger LiPo-Akku, eine Ladebuchse und ein Schiebeschalter passen auch noch mit hinein. Das kann sich schon fast sehen lassen. Hier und da hakelt es noch ein wenig. Mein Prototyp ist aus PLA mit der 0.4er Düse gedruckt. Dabei bin ich bei den cura-Vorgaben geblieben, nur den Füllgrad hab ich auf 50% gesetzt. Mein Druck war etwas unsauber, ich denke, da muss man noch mal an den Einstellungen drehen. Das Akkufach ist mit 47x43mm groß genug, daß auch andere Akkus hineinpassen sollten.
IMG_1043.jpg
In etwa diesem Zustand hab ich mein Projekt dann zum ersten mal in einem Mikrocontrollerforum zur Diskussion gestellt, es gab einige Ideen, Interesse an den Leiterplatten und Schaltplänen und einige, die den Rechner nachgebaut haben. Mit der ersten Softwareversion bleibt doch einiges im ATMega ungenutzt. Fast die Hälfte des FLASH, von RAM und EEPROM gar nicht zu reden. Also die nächste Version könnte programmierbar sein.
Ich hab mich bei der Programmierbarkeit ein wenig zwischen den alten UPN-HP-Taschenrechnern und den russischen Elektronikas orientiert. Mit dem Ziel, einige der vielen Programmen, die in Büchern und auf Webseiten herumschwirren, nachnutzen zu können.
Die Software hat einige Verbesserungsrunden über sich ergehen lassen müssen. In der Endgültigen Version hat der Rechner:
10 Zahlenspeicher
100 Programmschritte
16 Unterprogrammebenen
GOTO, GOSUB, IF<0, IF=0 und IF>0
Da die Zahlenspeicher im Programmmodus doch recht häufig geschrieben werden, hab ich sie im RAM gecached und schreibe sie nur wenn der Rechner auf Eingaben wartet zurück in den EEPROM.
IMG_1127b.jpg
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 eine oder andere hatte ich an anderer Stelle im Netz schon geschrieben, sowohl die Leiterplatten, als auch den BASCOM-Code hab ich unter GPL gestellt, nachputzen und rumkritisieren ist ausdrücklich erwünscht.
Was hatte mir am Anfang vorgeschwebt?
- UPN (Umgekehrte Polnische Notation) haben (wie die alten HPs
- leicht wissenschaftlich sein (Winkelfunktionen, Logarithmen, ...)
- mit den altmodischen Siebensegmentanzeigen leuchten (LED)
- 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. Der Rechner hat 28 Tasten, die fast alle doppelt belegt sind, 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.
IMG_0932_jpg.jpg
So richtig fertig ist ein Projekt ja eigentlich nie. Ein Gehäuse gehört für mich aber dazu, damit aus einer Leiterplatte ein Gerät wird. Also, dem 3D-Drucker ein Modell zu lesen gegeben und ihn einige Stündchen arbeiten lassen. Ein einzelliger LiPo-Akku, eine Ladebuchse und ein Schiebeschalter passen auch noch mit hinein. Das kann sich schon fast sehen lassen. Hier und da hakelt es noch ein wenig. Mein Prototyp ist aus PLA mit der 0.4er Düse gedruckt. Dabei bin ich bei den cura-Vorgaben geblieben, nur den Füllgrad hab ich auf 50% gesetzt. Mein Druck war etwas unsauber, ich denke, da muss man noch mal an den Einstellungen drehen. Das Akkufach ist mit 47x43mm groß genug, daß auch andere Akkus hineinpassen sollten.
IMG_1043.jpg
In etwa diesem Zustand hab ich mein Projekt dann zum ersten mal in einem Mikrocontrollerforum zur Diskussion gestellt, es gab einige Ideen, Interesse an den Leiterplatten und Schaltplänen und einige, die den Rechner nachgebaut haben. Mit der ersten Softwareversion bleibt doch einiges im ATMega ungenutzt. Fast die Hälfte des FLASH, von RAM und EEPROM gar nicht zu reden. Also die nächste Version könnte programmierbar sein.
Ich hab mich bei der Programmierbarkeit ein wenig zwischen den alten UPN-HP-Taschenrechnern und den russischen Elektronikas orientiert. Mit dem Ziel, einige der vielen Programmen, die in Büchern und auf Webseiten herumschwirren, nachnutzen zu können.
Die Software hat einige Verbesserungsrunden über sich ergehen lassen müssen. In der Endgültigen Version hat der Rechner:
10 Zahlenspeicher
100 Programmschritte
16 Unterprogrammebenen
GOTO, GOSUB, IF<0, IF=0 und IF>0
Da die Zahlenspeicher im Programmmodus doch recht häufig geschrieben werden, hab ich sie im RAM gecached und schreibe sie nur wenn der Rechner auf Eingaben wartet zurück in den EEPROM.
IMG_1127b.jpg
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von srswift ()