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
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
Wenn du unterschiedliches machen willst und auf Entergiesparen wert
legst, kannst du dir auch das Nokia display ansehen, preiswert einfach
und ein Grafikdisplay.
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?
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 :-)
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
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.
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
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?
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.
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.
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.
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.
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.