Hallo liebe Leute,
Ich hab ein Problem. Ich habe in der Schule eine Aufgabenstellung
bekommen und kenn mich dabei nicht aus, darum bitte ich euch um Hilfe!
Ich soll die Drehzahl einer Drehmaschine messen. Dazu soll ich einen
geeigneten Sensor finden. Dieser Sensor soll den gemessenen Wert zum
mikrocontroller senden und dieser Wert soll dann am LCD-Display
angezeigt werden.
Das mit dem Sensor hab ich mir folgender maßen vorgestellt:
ICh bringe eine Leuchtdiode zu leuchten. Dann schließe ich einen
Widerstand am mikrocontroller. Nun klebe ich auf die Drehmaschine einen
Sticker. Wenn nun sich die Maschine dreht, leuchtet die Leuchtdiode den
Sticker an und der Sticker reflektiert das Licht zum Widerstand. Somit
verändert sich die Spannung am Widerstand und man weiß, dass eine
Umdreung gelegt worden ist.
Nun aber, weiß ich nicht wie man das Programm im MPLAB schreibt. Deshalb
wollte ich euch fragen, ob jemand von euch mir weiter helfen kann? Ich
bitte euch um Hilfe, ich wäre euch wirklich sehr dankbar!
Mit freundlichen Grüßen
>Ich hab ein Problem. Ich habe in der Schule eine Aufgabenstellung>bekommen und kenn mich dabei nicht aus, darum bitte ich euch um Hilfe!
Das solltest du aber, sonst würde man dir die Aufgabe nicht
stellen. Irgendwo im Unterricht war das wohl mal dran.
>Nun aber, weiß ich nicht wie man das Programm im MPLAB schreibt. Deshalb>wollte ich euch fragen, ob jemand von euch mir weiter helfen kann?
Siehe oben.
lukas schrieb:> Nun aber, weiß ich nicht wie man das Programm im MPLAB schreibt.
Fsng mal selbst mit dem Programm an.
IO-Einstellungen, usw.
Sobald das fertig ist, herzeigen und spezifische Frage stellen.
Floh schrieb:> Fsng mal selbst mit dem Programm an.>> IO-Einstellungen, usw.>> Sobald das fertig ist, herzeigen und spezifische Frage stellen.
Ich weiß, dass ich den Spannungswert des Widerstandes mal einlesen muss
also:
void main(void)
{
int ADCwert;
....
dann muss man einen Zähler einbauen, der bei jedem Wert, das
hereinkommt, zählt. somit weiß ich, dass eine weitere Umdreung gemacht
worden ist. und das muss ich dan am LCD, das auf dem mikrocontroller
ist, anzeigen.
?? :(
Frank L. schrieb:> ...und dringend bei der nächsten VHS einen Grundkurs Deutsch buchen!>> Aber auch hingehen und nicht schwänzen wie den Programmierunterricht!!!
Ich bitte ja nur um Hilfe. Wenn mir jemand Programmzeilen zeigt, weiß
ich wovon er redet und was das Programm genau mach. Doch das
Selbstschreiben hab ich nicht drauf. Ich wäre sehr erfreut, wenn du mir
weiter helfen konntest ?! :(
lukas schrieb:> Ich weiß, dass ich den Spannungswert des Widerstandes mal einlesen muss> also:
Ich will ein Auto bauen. Ich weis wie ich das Radio anschließe -.-
Logisch denken.
1. Grundgerüst des Programms
2. Ein-/Ausgabe festlegen
3. Programmatischer Entwurf, was mach ich wann wie oft?
4. Programmieren.
Übrigends, ich nehme nur lauffähigen Code als Anhang zur Kenntnis, keine
platten Umschreibungen.
lukas schrieb:> Selbstschreiben hab ich nicht drauf. Ich wäre sehr erfreut, wenn du mir> weiter helfen konntest ?! :(
Ein paar Tpss hast du ja schon bekommen.
Einen wichtigen noch von mir:
In Schritten arbeiten!
Die Aufgabe kommt dir jetzt komlpiziert vor, weil du alles auf einmal
siehst und nicht weißt, wie das alles zusammenhängen soll.
Teil dir die Arbeit auf!
Die Drehzahl und das LCD sind erst mal völlig uninteressant. Jetzt
willst du erst mal nur deinen Sonsor abfragen und wenn deine Markierung
auf der Wlle so steht, dass sie das Licht reflektiert, soll eine LED
angehen.
Mehr nicht.
Übrigens: Mit dem ADC wirst du nicht viel Freude haben. Brauchst du auch
nicht. Dich interessiert ja die eigentliche Spannung nicht. Du willst
nur wissen ob sie hoch oder niedrig ist. Eigentlich willst du auch das
noch gar nicht wissen. Eigentlich willst du nur wissen, wann sie von
niedrig auf hoch (oder umgekehrt) wechselt.
So gesehen richtest du dir am besten deine Hardware so her, dass bei
unbeleuchtetem Photowiderstand möglichst 5V an deinem Portpin ankommen
und bei beleuchtetem möglichst 0V. Denn dann ist dein "Sensor" aus Sicht
des Programmes auch nichts anderes als ein Schalter/Taster. Und den
solltest du ja erst mal auswerten können, so dass bei Betätigung eine
LED angeht.
Nicht von der Komplexität der kompletten Aufgabe beeindrucken lassen.
Aufteilein in einfachere Teilprobleme heisst die Devise.
Diese Teilprobleme dann lösen und nach und nach die Einzelteile
zusammenführen.
Als Sensor könnstest du den Reflexkoppler CNY70 nehmen. Da hast du Send-
und Empfangsdiode in einem Gehäuse. Der ist genau für sowas gemacht.
Zur Messung der Drehzahl gibt es ein Prinzig zwei Möglichkeiten:
1. Du verbindest den Sensor mir einem Interrupt-Eingang und
inkrementierst in der ISR eine Variable. Nach einer konstanten Zeit wird
der Wert ausgelesen und zurückgesetzt.
2. Beim PIC kannst du einen der Timer extern takten. So wird dein Timer
zum Zähler. Vorteil gegenüber Variante 1 ist, dass du eine deutlich
geringere Interruptbelastung hast. Nun lässt du einen anderen Timer
immer nach einer konstanten Zeit einen Interrupt auslösen. In der ISR
liest du jetzt den ersten Timer (Zähler) aus.
So, jetzt bist du gefragt mit der Umsetzung. Was hast (oder kannst) du
denn schon? Schon mal mit den Timern des PIC gearbeitet? Hast du schon
eine funktionierende LCD-Ansteuerung?
Auf welchem Level läuft das Ganze denn?
Schulprojekt?
Ausbildung/berufsbildende Schule?
Studium?
heinzhorst schrieb:> 2. Beim PIC kannst du einen der Timer extern takten. So wird dein Timer>> zum Zähler.
Die erste Aufgabenstellung hast du mir ja schon herausgefunden :) -
besten Dank! In den kommenden Tagen werde ich mal diesen Sensor
bestellen.
Wenn ich dann diesen Sensor habe, werde ich es auf den mikrocontroller
anschließen.
Wenn jetzt angenommen die Maschine eine Umdreung macht, so muss dieser
wert eingelsen werden und auf der LCD-Anzeige angezeigt werden. Also
sozusagen ein Timer realisiert werden. Wenn sich die Spannung, oder was
auch immer dieser Sensor misst, verändert, so zählt der Zähler/Timer
eine Zahl weiter. z.B: eine Umdreung wurde schon gemacht also steht auf
der LCD: 1 ; => jetzt kommt eine zweite Umdreung -> Sensor leitet diesen
Wert weiter -> Wert wird eingelesen -> Timer zählt eine Zahl weiter
also: 2. Dies müsst ich jetzt programmieren :/ ..