Forum: Mikrocontroller und Digitale Elektronik Geschwindigkeitsmessung (SAB C80535)


von Tobias A. (Firma: BKH) (tobi420)


Lesenswert?

Hallo liebe Community,

für die Schule habe ich die Aufgabe ein Programm zur 
Geschwindigkeitsmessung zu entwickeln. Das Problem ist aber dabei, dass 
uns der Lehrer fast nichts erklärt und dadurch weiß ich nicht mal wo ich 
da anfangen soll.

Die Aufgabenstellung ist folgende:
Geschwindigkeitsmessanlage mit LCD Anzeige. Messung in km/h.
2 Interupts 1 Timer Start/Stop

Das ist die Aufgabenstellung, doch wie bereits erwähnt weiß ich hier 
nicht einmal wo ich anfangen sollte mit dem Programm. Deswegen wollte 
ich hier einmal fragen ob mir hier jemand helfen kann.

Die einzige Idee die ich und mein Mitschüler zu dieser Aufgabe bis jetzt 
hatten, ist das System durch zwei Lichtschranken zu realisieren, da man 
ja so den Zeitraum erfassen kann, den ein Objekt auf einer gewissen 
Strecke zwischen den zwei Sensoren braucht und anhand dessen kann man ja 
dann die Geschwindigkeit berrechnen. Das Problem ist nur das ich und 
auch mein Mitschüler keine Ahnung haben wo wir da mit dem Progamm 
anfangen sollen, geschweige denn was wir da überhaupt Programmieren 
müssen.

Vielen dank schonmal im Vorraus.

von irgendeiner (Gast)


Lesenswert?


von Thomas S. (thomas_s72)


Lesenswert?

Welche Kenntnisse sind denn vorhanden? Welche Hardware? Habt ihr einen 
C-Compiler für den µC oder soll das in Assembler gehen?

Habt ihr schonmal Texte in einem LCD Modul ausgegeben? All das sollte 
geklärt sein.

Prinzip:

Interrupt 1 wird beim Start von Lichtschtranke 1 ausgelöst. Da wird ein 
Timer mit einer sinnvollen Frequenz gestartet und auf 0 gesetzt.

Der Timer zählt nun hoch.....

Interrupt 2: Timer wird gestoppt. Wert auslesen. Der gelesene Wert 
entspricht einer bestimmten Zeit, diese hängt von der Taktfrequenz ab.

V=s/t, also die Strecke zwischen LS1 und LS2 durch die gemessene Zeit 
teilen, das gibt die Geschwindigkeit.

In Text umwandeln und am LCD ausgeben.
Zu beachten ist noch dass der Timer nicht ohne Ende zählen kann. 
Überläufe müssen behandelt werden.

Wo hängt es nun?

von Tobias A. (Firma: BKH) (tobi420)


Lesenswert?

Erstmals danke für die schnellen Antworten.

Soweit ich weiß soll das nur über einen Compiler laufen, da wir für die 
Messung der Geschwindigkeit keine echten Sensoren nutzen sondern, diese 
dann anscheinend nur simmulieren. Also unser Lehrer meinte wir hätten 
dann einfach ein Gerät das die Taktflaken simmuliert.

An Vorkenntnissen, wir können in C gut programmieren, wovon wir beide 
aber leider keine Ahnung haben, ist die Interrupt Steuerung. Das hat 
unser Lehrer so schwammig erklärt, das man davon nichts verstanden hat.

Und wir hatten bis jetzt noch keine Praktischen Aufgaben wo wir Texte 
auf einer LCD Anzeige ausgeben sollten, dies wurde uns bis jetzt auch 
nur ungefähr erklärt, wie es gehen soll.

Von daher, grundlegend wüsste ich, wie ich das Progamm schreiben sollte, 
aber dann ab den Interrupts fängt es an zu hapern.

: Bearbeitet durch User
von Thomas S. (thomas_s72)


Lesenswert?

Ich nutze immer die Methode der kleinen Schrite:

1. LCD am Prozessor anschließen.
2. Initialisierung machen
3. Texte beispielsweise ausgeben.

Dazu bemühe ich Google und das Datenblatt des LCDs. Ein Scope kann dabei 
hilfreich sein.

Auch zu Interrupta 8051 gibt es viele Beispiele, die sucht man sich 
wenns LCD etwas anzeigt.

Also: Schritt 1: "Hallo Welt" ins LCD, dann kommt der nächste Schritt.

Zeigt es etwas an?

von Peter D. (peda)


Lesenswert?

Zuerst legt man den Meßbereich und die Genauigkeit fest.
Dann den Abstand der beiden Lichtschranken.
Dann rechnet man die Zeit für die kleinste und für die größte 
Geschwindigkeit aus.
Und erst dann kann man anfangen, zu programmieren.

Es ist nämlich ein Unterschied, ob man die Geschwindigkeit von Schnecken 
oder von Photonen messen will.

von Tobias A. (Firma: BKH) (tobi420)


Lesenswert?

Das können wir leider erst nächste Woche Testen, weil wir den Unterricht 
dann erst wieder haben.
Dadurch das wir das Prinzip mit den Lichtsensoren nur Theoretisch 
machen, weil wir keine Sensoren zur verfügung haben, ist der 
Messberreich schon festgelegt.

von Tobias A. (Firma: BKH) (tobi420)


Lesenswert?

Wir haben keine LCD anzeige zur verfügung wesewegen wir das leider nicht 
testen können. Gibt es noch eine andere Möglichkeit, da wir momentan 
sonst nicht wissen wir wir weiter kommen sollen.
Mit freundlichen Grüßen Tobi&Sven

von Michael X. (Firma: vyuxc) (der-michl)


Lesenswert?

Habt ihr schon mal was mit dem 535 gemacht? Das sind steinalte µCs von 
Siemens, 8051 kompatibel. Kein Flash, kein ISP, nix. Das Handling ist 
für heutige Verhältnisse unterirdisch.
Ich bezweifle auch daß es für diese Magercontroller auch einen halbwegs 
vernünftigen C-Compiler gibt, geschweige denn eine halbwegs brauchbare 
IDE. Als die Dinger aktuell waren war Assembler Stand der Dinge.

Macht was auf aktueller Hardware. Das ist deutlich weniger Frustrierend 
wie der alte Kram.

von Thomas E. (thomase)


Lesenswert?

Michael X. schrieb:
> Macht was auf aktueller Hardware. Das ist deutlich weniger Frustrierend
> wie der alte Kram.

Das ist ja sehr hilfreich. Damit solltest du dich aber an die Schule 
wenden. Die nimmt für die Anschaffung von aktueller Hardware gerne deine 
Spende entgegen.

: Bearbeitet durch User
von m.n. (Gast)


Lesenswert?

Tobias A. schrieb:
> Wir haben keine LCD anzeige zur verfügung wesewegen wir das leider nicht
> testen können.

Das ist doch bestens: drückt Eurem 'bösen' Lehrer einfach den µC in die 
Hand und fertig. Ohne Anzeige kann er Euch ja keine falschen Meßwerte 
nachweisen.

Nicht, um Eure Hausaufgaben zu machen, aber als im I-net frei verfügbare 
Quelle für eine Geschwindigkeitsmessung mit LC-Anzeige auf einem AVR: 
http://mino-elektronik.de/7-Segment-Variationen/LCD.htm#lcd6
Wenn Ihr ein eigenes Programm auf die Beine stellen wollt, solltet Ihr 
auch den Quelltext nachvollziehen können.

Auch, wenn der Lehrer nicht alles erklärt hat, dann müßt Ihr ihn einfach 
einmal fragen. Das habe ich früher auch gemacht ;-)

von Bernd H. (bhallinger) Benutzerseite


Lesenswert?

Von Keil gibt es den Compiler. Die freie Variante kann man für solch 
eine Aufgabe verwenden. Der Code wird sicher nicht größer als damit 
geht.

Und doch sicher ich hab vor vielen Jahren diesen Controller mit eben 
diesem Compiler programmiert....

von Thomas E. (thomase)


Lesenswert?

Bernd H. schrieb:
> Von Keil gibt es den Compiler.

Hat der nicht auch einen Simulator?

von Johannes S. (Gast)


Lesenswert?

Tobias A. schrieb:
> Wir haben keine LCD anzeige zur verfügung wesewegen wir das leider nicht
> testen können.

Und eine serielle Schnittstelle? Ausgabe von Texten auf PC 
Terminalprogramm?

Michael X. schrieb:
> Als die Dinger aktuell waren war Assembler Stand der Dinge.

Keil hatte auch einen Pascal Compiler, der wurde auch gerne an Schulen 
benutzt.

von Peter D. (peda)


Lesenswert?

Michael X. schrieb:
> Kein Flash, kein ISP, nix. Das Handling ist
> für heutige Verhältnisse unterirdisch.

D.h. Du kennst diese Boards nicht, sondern äußerst nur erdachte 
Vermutungen.

Da ist mindestens ein RAM drauf und ein UART-Bootloader, d.h. man kann 
Programme in den RAM laden und ausführen. Je nach Typ ist noch ein Flash 
drauf oder ne Stützbatterie für den SRAM.
Nur ein heutiger Debugger fehlt, man muß also über LEDs oder 
UART-Ausgaben debuggen.

Michael X. schrieb:
> Ich bezweifle auch daß es für diese Magercontroller auch einen halbwegs
> vernünftigen C-Compiler gibt, geschweige denn eine halbwegs brauchbare
> IDE.

Der ist überhaupt nicht mager, sondern war sogar der Startschuß, auch 
MCs in breiter Front in C zu programmieren. Ich hab damit auch 1995 
angefangen, in C zu programmieren. Damals gab es schon die ersten 
Flash-80C51 (AT89C2051).

Vom Keil C51 gibt es eine Eval-Version auf 2kB limitiert und ohne 
float-Lib. Soweit ich mich erinnere, wird auch der Resetvektor auf 
0x8000 verschoben, wo bei den Eval-Boards rein zufällig der SRAM 
anfängt.

von R. M. (rmax)


Lesenswert?

Peter D. schrieb:

> Vom Keil C51 gibt es eine Eval-Version auf 2kB limitiert und ohne
> float-Lib. Soweit ich mich erinnere, wird auch der Resetvektor auf
> 0x8000 verschoben, wo bei den Eval-Boards rein zufällig der SRAM
> anfängt.

Ich kenne das mit einem FlipFlop und einem XOR-Glied, mit denen die 
beiden Hälften des Adreßraums vertauscht werden. Das FF wird von /Reset 
zurückgesetzt (EPROM unten) und von A15 gesetzt. Damit "katapultiert" 
sich eine Monitor- oder Debugging-Firmware in den oberen Adreßbereich 
und erlaubt anschließend den Upload des zu testenden Programms ins RAM 
ab Adresse 0.

So zu finden auf dem 80C535-basierten "VolksController"-Board, der in 
den 90ern im FB Feinwerktechnik der FH-Karlsruhe zum Einsatz kam.

von Stefan F. (Gast)


Lesenswert?

Hab ich das richtig verstanden, daß du eine Geschwindigkeits-Messung mit 
LCD Anzeige programmieren sollst, aber Dir stehen weder Sensoren noch 
die LCD Anzeige zur Verfügung?

So geht das nicht!

von Dieter F. (Gast)


Lesenswert?

Stefan U. schrieb:
> So geht das nicht!

Das würde ich nicht unterschreiben :-)

von Klaus R. (klara)


Lesenswert?

Thomas E. schrieb:
> Michael X. schrieb:
>> Macht was auf aktueller Hardware. Das ist deutlich weniger Frustrierend
>> wie der alte Kram.
>
> Das ist ja sehr hilfreich. Damit solltest du dich aber an die Schule
> wenden. Die nimmt für die Anschaffung von aktueller Hardware gerne deine
> Spende entgegen.

Mit 20 € käme man sicher weiter. Aber es könnte auch sein, daß der 
Lehrer dann neu lernen müßte. Manchmal ist dies das größere Problem.
mfg klaus

von Faktor (Gast)


Lesenswert?

Klaus R. schrieb:
> Aber es könnte auch sein, daß der
> Lehrer dann neu lernen müßte. Manchmal ist dies das größere Problem.

Sehe ich auch so.

Als Schule bekommt man sicherlich ein paar Eval-Boards a` la Discovery, 
XPresso, usw. für lau. Education wird gefördert. Sind ja die Anwender 
von morgen. ;-)

von Michael X. (Firma: vyuxc) (der-michl)


Lesenswert?

Peter D. schrieb:
> Michael X. schrieb:
>> Kein Flash, kein ISP, nix. Das Handling ist
>> für heutige Verhältnisse unterirdisch.
>
> D.h. Du kennst diese Boards nicht, sondern äußerst nur erdachte
> Vermutungen.

Sicher. Ich hab noch irgendwo ein 80537 Developmentboard rumfahren.
Trotzdem ist das rummachen mit einem Monitorprogramm ziemlich aus der 
Mode. Für Anfänger wäre auch ein anständiges Debugging hilfreich.

von Johannes S. (Gast)


Lesenswert?

Faktor schrieb:
> Als Schule bekommt man sicherlich ein paar Eval-Boards a` la Discovery,
> XPresso, usw.

Neumodisches Teufelszeug, da kann man doch die 30 Jahre alten Skripten 
nicht mehr gebrauchen und müsste sich in was neues einarbeiten...

von Route_66 H. (route_66)


Lesenswert?

Klaus R. schrieb:
> Mit 20 € käme man sicher weiter. Aber es könnte auch sein, daß der
> Lehrer dann neu lernen müßte. Manchmal ist dies das größere Problem.
> mfg klaus

Johannes S. schrieb:
> Neumodisches Teufelszeug, da kann man doch die 30 Jahre alten Skripten
> nicht mehr gebrauchen und müsste sich in was neues einarbeiten...

Dazu müsste man ganz einfach unser Bildungsministerium in die Wüste 
schicken!

Die Lehrer sind in den wenigsten Fällen daran Schuld.

: Bearbeitet durch User
von Tobias A. (Firma: BKH) (tobi420)


Lesenswert?

Johannes S. schrieb:
> Tobias A. schrieb:
>> Wir haben keine LCD anzeige zur verfügung wesewegen wir das leider nicht
>> testen können.
>
> Und eine serielle Schnittstelle? Ausgabe von Texten auf PC
> Terminalprogramm?
>
> Michael X. schrieb:
>> Als die Dinger aktuell waren war Assembler Stand der Dinge.
>
> Keil hatte auch einen Pascal Compiler, der wurde auch gerne an Schulen
> benutzt.

Ja wir haben die Möglichkeit das über ein Terminalprogramm zu testen.

von Tobias A. (Firma: BKH) (tobi420)


Lesenswert?

Stefan U. schrieb:
> Hab ich das richtig verstanden, daß du eine Geschwindigkeits-Messung mit
> LCD Anzeige programmieren sollst, aber Dir stehen weder Sensoren noch
> die LCD Anzeige zur Verfügung?
>
> So geht das nicht!

Aber genau so ist es leider. Deswegen wissen wir auch nicht wo wir da 
anfangen sollen.

von Schreiber (Gast)


Lesenswert?

Johannes S. schrieb:
> Faktor schrieb:
>> Als Schule bekommt man sicherlich ein paar Eval-Boards a` la Discovery,
>> XPresso, usw.
>
> Neumodisches Teufelszeug, da kann man doch die 30 Jahre alten Skripten
> nicht mehr gebrauchen und müsste sich in was neues einarbeiten...

es gibt...
1. einen Lehrplan

2. Vorgegebene Abschlussprüfungen in der Berufsschule.

3. ein sehr begrenztes Budget für Material. Das ganze dann noch bitte 
Schülertauglich. Ein einfaches Steckbrett ist unzweckmäßig...

4. nicht für alles neue passende Literatur/Skripte. Das muss didaktisch 
sinnvoll aufbereitet sein, sonst nutzt die beste Technik nichts und der 
Schüler versteht auch nichts

5. Ausreichender Zeitansatz für Personal. Mit 2 Stunden/Woche kann man 
keine Sammlung pflegen und erweitern.

von Lothar (Gast)


Lesenswert?

Klaus R. schrieb:
> Mit 20 € käme man sicher weiter. Aber es könnte auch sein, daß der
> Lehrer dann neu lernen müßte

Wie gesagt gibt es für 28 EUR neue vollständig kompatible 8051 Boards 
mit Bootloader und Debugger, da müsste der Lehrer nichts ändern und auch 
die Prüfungen bleiben gleich:

http://de.rs-online.com/web/p/entwicklungskits-prozessor-mikrocontroller/8652378/

Könnten sich die Schüler vielleicht sogar selber leisten, statt eine 
weitere Smartphone APP :-)

von Johannes S. (Gast)


Lesenswert?

Schreiber schrieb:
> es gibt...

Und da wundert man sich über den Fachkräftemangel?

von m.n. (Gast)


Lesenswert?

Lothar schrieb:
> Wie gesagt gibt es für 28 EUR ...

Und Du glaubst mit dieser Anschaffung wäre auch nur ein Problem des TO 
gelöst? Meines Erachtens mangelt es an Interesse, sich mit dem Problem 
auseinanderzusetzen.
Selbst nach einem Monat herrscht beim TO noch völlige Planlosigkeit, 
sodaß jede Antwort hier überhaupt nicht verstanden wird.
Schuld ist natürlich der böse Lehrer, der die Lösung zur Aufgabe nicht 
gleich mitgeliefert hat.

von Schreiber (Gast)


Lesenswert?

Johannes S. schrieb:
> Und da wundert man sich über den Fachkräftemangel?

Ob man jetzt Assembler auf einem 8051, einem PIC oder einem ARM 
programmieren lernen soll, das Prinzip ist das gleiche.

Nur, dass alte Prozessoren meist einen übersichtlicheren Befehlssatz 
haben, was durchaus erwünscht ist. Didaktisch wertvoller wäre es 
allerdings, wenn man das nicht vorhandene LCD durch (hoffentlich 
verfügbare) ein 7-Segment-Anzeigen ersetzt.

von Lothar (Gast)


Lesenswert?

Schreiber schrieb:
> Assembler auf einem 8051, einem PIC oder einem ARM

Assembler auf einem Cortex-A 32-bit z.B. Raspberry Pi ist für einen 
Anfänger machbar aber Cortex-M hat schon viele merkwürdige Fallstricke 
da an der falschen Stelle gespart. Und Cortex-A 64-bit ist wohl nur noch 
für optimierende Compiler was.

von Schreiber (Gast)


Lesenswert?

Lothar schrieb:
> Assembler auf einem Cortex-A 32-bit z.B. Raspberry Pi ist für einen
> Anfänger machbar aber Cortex-M hat schon viele merkwürdige Fallstricke
> da an der falschen Stelle gespart.

Also dann och besser den 8051.
Bis man bei einem üblichen ARM-Prozessor alle Register initialisiert hat 
(in Assembler) ist man bei einem 8051 schon fast mit dem Programmieren 
fertig.

Besonders übersichtlich ist der Befehlssatz von einem ARM auch nicht. 
Beim 8051 passt alles auf ein Blatt Papier. Hat also auch Vorteile, so 
ein Museumsprozessor.

von Lothar (Gast)


Lesenswert?

Schreiber schrieb:
> Also dann doch besser den 8051 Bis man bei einem üblichen ARM-Prozessor
> alle Register initialisiert

Wir fangen mit dem 8051 an aber ein einfacher ARM wie z.B. der ARM11 im 
Raspberry Pi 1 da muss nichts gross initialisiert werden. Im Gegensatz 
zum Cortex-M braucht der erst mal auch nicht unbedingt einen Stack. Und 
für den Anfang kommt man mit den 30 ursprünglichen Assembler-Befehlen 
vom ersten ARM2 aus das sind sogar weniger als beim 8051. Gibt 
haufenweise Bare-Metal Tutorials dazu.

von Stefan F. (Gast)


Lesenswert?

>> Hab ich das richtig verstanden, daß du eine Geschwindigkeits-Messung mit
>> LCD Anzeige programmieren sollst, aber Dir stehen weder Sensoren noch
>> die LCD Anzeige zur Verfügung?

> Aber genau so ist es leider. Deswegen wissen wir auch nicht wo wir
> da anfangen sollen.

Es sollte klar sein, daß es unmöglich ist, ein nicht existentes Display 
anzusteuern. Ebenso kannst du das Programm ohne Sensoren nicht testen.

Was du also als allererstes brauchst ist ein Display und die 
dazugehörige Anleitung. Während du auf die Hardware wartest, kannst du 
ja schonmal die Anleitung dazu lesen.

Was den Sensor angeht, kann man den durch eine Simulations-Schaltung 
anchbilden, wenn man denn sehr genau weiss, wie das Ausgangssignal 
aussehen wird. Also finde das heraus, baue dann eine 
Simulationsschaltung.

Ich habe das starke Gefühl, daß du da in Wahrheit GAR NICHTS 
programmieren sollst, sondern eine Vorgehensweise planen sollst. Von 
Akademikern erwartet man, dass sie das können. Im Beruf sind solche 
Probleme alltäglich. Da muss man oft Konzepte erstellen und Aufwände 
schätzen, obwohl viele Voraussetzungen noch unklar sind. Daher würde so 
eine Übungsaufgabe durchaus Sinnvoll sein.

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.