Forum: Mikrocontroller und Digitale Elektronik Projekt Fahrradtacho mit Amega8515 und 7-Seg. LCD. Suche jemanden der mir mit meiner Software hilft.


von Martin Angermair (Gast)


Angehängte Dateien:

Lesenswert?

Hallo an alle Microcontroller Freunde!

Mein kleines Projekt:

Ein MC mit LCD Ansteuerung (Direkt, ohne LCD Treiber).

Die Grundfunktion ist im Prinzip wie ein Fahrrad Tacho.
- Geschwindigkeit (über Reed Schalter und Magnet am Vorderrad, jede 
umdrehung bring einen Impuls)
- Trip Anzeige (Gefahrene Kilometer bzw. Meter)
- Uhrzeit
Was noch hinzukommt wäre optional zur erfassung des 
Reedschalters(umschalten mit DIP Schalter) das Anzeigen von GPS Kompass 
Daten - aber nur die aktuelle Gradzahl (Himmelsrichtung). Ich habe das 
schon ausprobiert, das Garmin GPS sendet jede Sekunde über serielle 
Schnittstelle eine Zeichenreihenfolge raus. Eines der Zeichen ist die 
Grad Zahl zum Beispiel 55°.

Ich hab in deinen Schaltplan reingezeichnet, siehe Anhang.
Den Button UP und Down den ich eingezeichnet habe soll verwendet werden 
zum bediehnen (Nachjustieren, Radumfang einstellen, Anzeige umschalten).

Ich programiere schon ewig rum, bin aber anscheinen zu blöd dazu...

Hat jemand lust mir dabei zu helfen??
Gruß Martin

von Thomas (Gast)


Lesenswert?

Hallo!

gibt es einen grund dafür das "nur" ein 7 Segment Display verwendet 
wird?
Nachteile die mir Spontan einfallen:
 - Aufwändige Hardware, viele Leitungen
 - relativ großer controller notwendig
 - relativ aufwändig in der Ansteuerung (HD4470 etc. ist m.E. einfacher)
 - Umständliche Bedienung

So ein alphanumerisches LCD Display (z.b. 16x2) wäre doch viel schicker!

Gruß
Thomas

von Sven (Gast)


Lesenswert?

Wenn du unterschiedliches machen willst und auf Entergiesparen wert 
legst, kannst du dir auch das Nokia display ansehen, preiswert einfach 
und ein Grafikdisplay.

von Karl H. (kbuchegg)


Lesenswert?

Problem ist natürlich, dass du von deinen verfügbaren Pins schon mal 32 
für das LCD opfern musst. Da bleibt dann für den Rest nicht mehr viel.
Die Umschaltung zwischen Reed-Kontakt und Garmin ist nämlich meiner 
Meinung nach so wie gezeichnet keine gute Idee. Woher soll der µC denn 
wissen, wer da gerade an seinem Pin die Pegel verändert? Sowas macht man 
normalerweise so, dass man 2 Pins dafür hat, an einem hängt der Reed 
Kontakt am anderen der Garmin und mit einem zusätzlichen Umschalter 
(bzw. durch die Benutzerführung) wählt man aus, wessen Daten man an der 
Anzeige sehen will.
Der 32kHz Quarz. Ja ich weiß, ist verführerisch, weil man ja auch eine 
Uhr bauen will. Aber bringts das wirklich? Zum einen hast du eine weit 
herunter gesetzte Taktfrequenz, die dir bei vielen andern Dingen das 
Leben schwer macht, zb beim Pollen des Reed-Kontakt einganges. Der 
Magnet an der Speiche flitzt am Kontakt vorbei und dein µC ist eine 
lahme Schnecke, der noch nicht mal bei regelmässigem Hinsehen auf den 
Pin dieses Vorbeiflitzen bemerkt? Wohlgemerkt: zusätzlich zur Arbeit, 
die der µC damit hat, das LCD vor dem Gleichspannungtod zu schützen! 
Jetzt mal vom ganzen 'Problemkreis' ISP-Flashen abgesehen. Eine Uhr kann 
man auch mit einem höher getaktetem Quarz aufbauen. Das ist kein 
Hexenwerk.

Aber seis drum.
Du sagst, du programmierst schon eine Weile rum. Welche Teile 
funktionieren denn schon? Irgendwas wirst du ja wohl schon fertig haben? 
Woran hängt es denn?

von m.n. (Gast)


Lesenswert?

Mit der Berechnung der Drehzahl kann ich Dir vielleicht weiterhelfen. 
Beitrag "Frequenz / Drehzahl, 4-stell. 7-Segm.-LCD, ATtiny45"
Bei der Ansteuerung mit Schieberegistern kannst Du auch einen Tiny84 
oder Tiny861 im 14 bzw. 20-pol Gehäuse verwenden.

Vielleicht baue ich die Schaltung für mein Fahrrad einmal fertig, wobei 
ich den vorhandenen Nabendynamo nutzen werde.
Zum einen zur Stromversorgung mit beleuchteter Anzeige und zum anderen 
zur Drehzahlbestimmung (es sind 16 oder 17 Impulse/U).
Geschwindigkeit (aktuell+Durchschnitt) und Strecke reichen mir zu meinem 
Glück.

Da ich nur bei Sonnenschein fahre, brauche ich keinen Kompass und auch 
kein GPS. Der Weg ist das Ziel und der Weg ändert sich nach Lust und 
Laune :-)

von Martin A. (airmartl)


Lesenswert?

Hallo Thomas & Sven,
der Grund für 7seg LCD ist, das man diese auch noch bei starker 
Sonneneinstrahlung lesen kann.

#################################################################

Hallo Karl-Heinz
Du hast recht, für ein Sinnvolles einlesen von Reed und Garmin braucht 
man zwei verschiedene Pin. Das heißt mir reichen die Pins vom MC nicht 
aus.
Weil du von der Takt frequenz schreibst, da hab ich eigentlich gar keine 
ahnung welche ich da wählen soll.
Gibts eigentlich einen MC der zum ansteuern.

Das ich schon eine Weile rumprogramiere heißt noch lange nicht das ich 
auch viel geschafft habe :)
Ich habe den Timer0 so programmiert das er bei überlaufen einen interupt 
auslöst, der dann das LCD toggelt (alle pins umkehren), somit wird das 
LCD mit 32Hz angesteuert. Wirklich weiter bin ich noch nicht gekommen, 
bin mir mittlerweile auch nicht mehr sicher ob ich auf dem Richtigen weg 
bin.
Was meinst du mit dem "'Problemkreis' ISP-Flashen"?

Der Grund warum ich ohne LCD Treiber auskommen wollte, ist damit die 
Platine schön klein und einfach wird (möglichst wenig Bauteile...)

Gruß Martin

von Karl H. (kbuchegg)


Lesenswert?

Martin Airmartl schrieb:

> Das ich schon eine Weile rumprogramiere heißt noch lange nicht das ich
> auch viel geschafft habe :)
> Ich habe den Timer0 so programmiert das er bei überlaufen einen interupt
> auslöst, der dann das LCD toggelt (alle pins umkehren), somit wird das
> LCD mit 32Hz angesteuert. Wirklich weiter bin ich noch nicht gekommen,

Kannst du schon Zahlen gesteuert ausgeben?

> Was meinst du mit dem "'Problemkreis' ISP-Flashen"?

Na ja.
Bei 32kHz musst du die ISP Frequenz schon so weit runterdrehen, dass das 
Flashen zur Qual wird.

> Der Grund warum ich ohne LCD Treiber auskommen wollte, ist damit die
> Platine schön klein und einfach wird (möglichst wenig Bauteile...)

Na ja.
Aber auch das LCD hat eine gewisse Größe, daher hast du auch eine 
gewisse Mindestgröße für die Platine. Wenn man klein bauen will, dann 
baut man mit SMD und dann wird die Fläche gleich wieder 'größer'. 
Zumindest für ein paar Schieberegister, mit denen man sich Pins 
freischaufelt sollte es ja dann doch reichen.

von spess53 (Gast)


Lesenswert?

Hi

>Der Grund warum ich ohne LCD Treiber auskommen wollte, ist damit die
>Platine schön klein und einfach wird (möglichst wenig Bauteile...)

Dann sieh dir mal DOG-Displays an. Für jeden Typ gibt es auch eine 
Ausführung, die ohne Beleuchtung auskommt.

http://www.lcd-module.de/produkte/dog.html

Ohne Beleuchtung sind die auch nicht höher wie ein controllerloses 
Display.

MfG Spess

von c-hater (Gast)


Lesenswert?

Karl Heinz schrieb:

> Problem ist natürlich, dass du von deinen verfügbaren Pins schon
> mal 32
> für das LCD opfern musst.

Braucht man eigentlich nicht. Multiplexing funktioniert auch mit 
"nackten" LCDs ganz hervorragend. Nur das Schema ist etwas komplizierter 
als z.B. mit LEDs, aber wiederum auch nicht SO VIEL komplizierter, daß 
es eine Herausforderung darstellen würde. Im Prinzip muß man bloß einmal 
pro Frame ein Merkbit toggeln lassen und die Ausgaben des Muxers an 
sämtliche Steuerleitungen immer abhängig vom aktuellen Zustand dieses 
Merkbits entweder 1:1 durchreichen oder vor der Ausgabe invertieren. 
Kinderkram.

Tatsächlich werden also nur zwölf Pins für die Ansteuerung des LCD 
benötigt, womit eigentlich ein Tiny2313A oder sowas schon vollkommen 
ausreichend für die Anwendung wäre.

> Zum einen hast du eine weit
> herunter gesetzte Taktfrequenz, die dir bei vielen andern Dingen das
> Leben schwer macht, zb beim Pollen des Reed-Kontakt einganges.

Wer nicht pollt, sondern den Pin einen Interrupt werfen läßt, hat solche 
Probleme nicht, sondern kann sogar ziemlich lange pennen gehen...
Wann begreifst du endlich, daß Polling auch mal der dümmste aller 
denkbaren Ansätze sein kann?

von Karl H. (kbuchegg)


Lesenswert?

c-hater schrieb:

> Braucht man eigentlich nicht. Multiplexing funktioniert auch mit
> "nackten" LCDs ganz hervorragend. Nur das Schema ist etwas komplizierter
> als z.B. mit LEDs, aber wiederum auch nicht SO VIEL komplizierter, daß
> es eine Herausforderung darstellen würde. Im Prinzip muß man bloß einmal
> pro Frame ein Merkbit toggeln lassen und die Ausgaben des Muxers an
> sämtliche Steuerleitungen immer abhängig vom aktuellen Zustand dieses
> Merkbits entweder 1:1 durchreichen oder vor der Ausgabe invertieren.
> Kinderkram.

Jetzt hast du mich kalt erwischt.
Da brauchst du aber noch externe Hardware. Denn es gibt je keine 
gemeinsame Kathode oder Anode für jede Stelle sondern nur die gemeinsame 
Backplane.


> Wer nicht pollt, sondern den Pin einen Interrupt werfen läßt, hat solche
> Probleme nicht, sondern kann sogar ziemlich lange pennen gehen...
> Wann begreifst du endlich, daß Polling auch mal der dümmste aller
> denkbaren Ansätze sein kann?

Ist schon ok. Ich hätt übrigens gleich mal den Input-Capture Pin 
genommen. Aber das nur nebenbei.
Das bedingt aber, dass er seinen Reed-Kontakt auf einen Interrupt 
Eingang legen muss. Was er zur Zeit nicht hat, weil er auch den Garmin 
dran hängen will und für den braucht er wiederrum den UART. Daher bleibt 
ihm zur Zeit nichts anderes übrig als Pollen.

OK, wenn er das LCD multiplext, dann kriegt er die Pins frei. Obwohl ich 
überlegungsmässig immer noch nicht verstanden hab, wie du ohne externe 
Hardware so ein nacktes LCD multiplext.

von Mike (Gast)


Lesenswert?

Karl Heinz schrieb:
> c-hater schrieb:
>
>> Braucht man eigentlich nicht. Multiplexing funktioniert auch mit
>> "nackten" LCDs ganz hervorragend. Nur das Schema ist etwas komplizierter
>> als z.B. mit LEDs, aber wiederum auch nicht SO VIEL komplizierter, daß
>> es eine Herausforderung darstellen würde. Im Prinzip muß man bloß einmal
>> pro Frame ein Merkbit toggeln lassen und die Ausgaben des Muxers an
>> sämtliche Steuerleitungen immer abhängig vom aktuellen Zustand dieses
>> Merkbits entweder 1:1 durchreichen oder vor der Ausgabe invertieren.
>> Kinderkram.
>
> Jetzt hast du mich kalt erwischt.
> Da brauchst du aber noch externe Hardware. Denn es gibt je keine
> gemeinsame Kathode oder Anode für jede Stelle sondern nur die gemeinsame
> Backplane.
>

Das klingt etwas schräg. Es gibt natürlich spezielle multiplexing-fähige 
LCDs mit mehr als einer Gegenelektrode. Wie man sowas ohne speziellen 
Controller benutzt kann man sich z.B. in einer App-Note von Atmel 
anschauen (AVR340).

Ich habe für solche LCD allerdings noch keine besonders gute 
Bezugsquelle gefunden.

von c-hater (Gast)


Lesenswert?

Karl Heinz schrieb:

> Jetzt hast du mich kalt erwischt.

Eher du mich...

> Da brauchst du aber noch externe Hardware. Denn es gibt je keine
> gemeinsame Kathode oder Anode für jede Stelle sondern nur die gemeinsame
> Backplane.

Ja, darauf hatte ich schlicht nicht geachtet. Gewohnheitsmäßig bin ich 
von dem (für mich) Gewohnten ausgegangen und das sind Displays mit sehr 
vielen Segmenten und die haben halt auch mehrere Backplanes.

Ich würde allerdings fast behaupten, daß auch das vorliegende Display 
zumindest zwei Backplanes besitzt. Das ist ja für den TO leicht zu 
überprüfen.

Damit würde man dann zwar nicht auf zwölf Pins kommen, aber immerhin auf 
18, was die Pin-Situation ja auch schon erheblich entspannen würde. Mit 
Tinys ist's dann zwar Essig, aber die Mega8-Klasse würde dann reichen.

von Thomas (Gast)


Lesenswert?

Da ist es schon fertig was du suchst:

Beitrag "Standard LCD mit Controller steuern"

Mit Atmega162, funktioniert sogar..

Gruß
Thomas

von Karl H. (kbuchegg)


Lesenswert?

c-hater schrieb:

> Ich würde allerdings fast behaupten, daß auch das vorliegende Display
> zumindest zwei Backplanes besitzt. Das ist ja für den TO leicht zu
> überprüfen.

Siehst du. Da hab ich wieder nicht aufgepasst. Im Schaltplan sind 2 
Backplanes eingezeichnet. Da hätt ich allerdings auch schalten können.

>
> Damit würde man dann zwar nicht auf zwölf Pins kommen, aber immerhin auf
> 18, was die Pin-Situation ja auch schon erheblich entspannen würde.

Exakt. Er braucht ja nicht viele. Ein paar wenige mehr würden ja schon 
reichen.

von m.n. (Gast)


Lesenswert?

Karl Heinz schrieb:
> Im Schaltplan sind 2
> Backplanes eingezeichnet. Da hätt ich allerdings auch schalten können.

Das sind zwei Anschlüsse der selben Backplane; daher kann man einen 
Anschluß auch weglassen.
Multiplexen von LCDs geht immer zu Lasten des Kontrastes, der sich zudem 
noch abhängig von der Versorgungsspannung ändert.
Wenn man Ausgangspins sparen will -> Schieberegister.

von Sepp Neuer (Gast)


Lesenswert?

Hallo Martin,

hast du schon eine Lösung für dein Problem?

Sepp

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.