Das Elektor-Forum schließt seine Pforten (siehe auch http://www.elektormagazine.de/forum). Ab Freitag, den 15. März, ist es nicht mehr möglich, sich im Forum einzuloggen. Alle Inhalte des Forums bleiben jedoch bis Ende März noch sichtbar. Am 01. April wird das Forum schließlich komplett geschlossen.

LB-4 Drehzahlmesser

Postby mitch » Sat May 08, 2010 12:00 am

Hallo,
ich habe ein Problem mit dem berechnen der Drehzahl. Bis Ups ist kein Problem und pro Minute eigendlich auch nicht. Was ich nur nicht verstehe ist eine Gleichung:

UpM = 1 / (4*tp)

wie kommt man auf diese Gleichung?
wo sind die 120 Striche hin?
wie soll die Gleichung aussehen wenn ich nicht 120 Striche habe.
?????????
Fragen über Fragen mich wundert das nur ich hier im Forum ein Problem damit habe

Ich habe schon mehrfach die gleichungen aus gerechnet. Wenn ich
Ups aus rechne und dann Ups * 60 rechne komme ich aufs gleiche ergebnis. Aber warum 1/ (4*tp)???
mitch
 
Posts: 6
Joined: Fri Jan 03, 2014 2:13 pm

Postby alexbeielektor » Sun May 09, 2010 12:00 am

Guten Morgen,

auf der Seite 33 findest Du im LB 4 die Erläuterung dazu. Bei diesem Beispiel wird gezeigt, dass 4 Perioden (T=tn+tp), oder hier 4*tp einer Umdrehung des Motors entsprechen. Das mit der Berechnung liegt also an dem Beispiel mit der Strichscheibe.

Versteif Dich nicht zu sehr auf die Lösung, sie ist nur eine Möglichkeit etwas zu realisieren. Wenns mit Deinem Ansatz funktioniert ists doch prima.
alexbeielektor
 
Posts: 32
Joined: Fri Jan 03, 2014 2:12 pm

Postby mitch » Sun May 09, 2010 12:00 am

Hallo,
danke für die schnelle Antwort, nur verstehen tu ich es immer noch nicht. Auf S 33. hat die scheibe ja auch nur 4 Perioden aber unsere schei hat 120? Also in einer Umdrehung 120 Perioden. Ich verstehe da einfach nicht den zusammenhang!...
mitch
 
Posts: 6
Joined: Fri Jan 03, 2014 2:13 pm

Postby alexbeielektor » Sun May 09, 2010 12:00 am

Also ich verstehe das so...wenn also die Scheibe 120 Striche hat, entspricht das einer Umdrehung.
Die Periodendauer T entspricht ja immer einer Lücke und einem Strich. Siehe Seite 33 "Anzahl der Striche = Anzahl der Lücken = ns = z.B. 4" heißt also hier ns=120.

demzufolge ist T = 1/120 Also eine Umdrehung durch die 120 Strich/Lücken...das entspricht einer Periode.

das ist ja auch alles theoretisch...wie schnell letztendlich sich die Scheibe dreht liegt ja daran wie schnell die Striche da entlang fetzen.
Das wird ja gemessen, mit der daraus resultierende Zeit lässt sich dann ja die Geschwindigkeit bzw. die Umdrehungen messen.
alexbeielektor
 
Posts: 32
Joined: Fri Jan 03, 2014 2:12 pm

Postby subzero » Sun May 09, 2010 12:00 am

hi,

also du bist nicht der erste der damit seine schwierigkeiten hatte ich hatte diesbezüglich auch mal nen thread aufgemacht wo die moderatoren es sehr gut erklärt haben hier der link:

http://www.elektor.de/forum/foren-ubersicht/elektor-foren-der-treffpunkt-fur-elektroniker/mikrocontroller-fernlehrgang-%28tfh%29/lehrbrief-4-check-box.1121002.lynkx?highlight=Upm
subzero
 
Posts: 135
Joined: Fri Jan 03, 2014 2:13 pm

Postby endress » Fri May 14, 2010 12:00 am

Da ich mir meine Gabellichtschranke zerschossen habe, musste ich mir auf die schnelle etwas anderes einfallen lassen. Es wird zwar nicht jeder zufällig einen Drehwinkelgeber herumliegen haben, aber ich finde das funktioniert ganz gut und der Bastelaufwand ist um einiges geringer

Nur zum Absichern : Das Scope zeigt mir +4,5 Volt an, das kann ich so an den Port legen ? Nicht negativ, nicht grösser 5 Volt. Nicht, dass ich noch etwas übersehen habe. Den Verlust der Lichtschranke kann ich verschmerzen, aber wenn mir der CC03er hops geht, ist mein Wochenende im Eimer.
Attachments
versuchsaufbau-LB4-klein.jpg
endress
 
Posts: 77
Joined: Fri Jan 03, 2014 2:02 pm

Postby mitch » Sat May 15, 2010 12:00 am

Hallo,

du kannst den drehgber problemlos an Port an schließen. Das Signal ist ja nicht größer als 5V und die 0,5 V weniger damit sollte der controler auch noch zurecht kommen.
mitch
 
Posts: 6
Joined: Fri Jan 03, 2014 2:13 pm

Postby endress » Thu May 27, 2010 12:00 am

Gelöscht wegen Doppelpost
endress
 
Posts: 77
Joined: Fri Jan 03, 2014 2:02 pm

Postby endress » Thu May 27, 2010 12:00 am

Ich bins jetzt so oft durchgegangen und habe fast alles auf die Musterlösung angepasst. Mal abgesehen davon, dass ich 100 "Striche" habe und die Berechnung nicht ganz stimmt, schwanken bei meiner Lösung die Werte so stark, dass sie unrealistisch sind und die Umdrehungen pro Minute sind absoluter Unsinn. Sieht jemand, was ich falsch gemacht habe ?


#include
#include

unsigned char bit P1_0 @ 0x90;
float TMZ = 1085e-9;

/********************************************************************************************/
/*** Start des Hauptprogramms ***************************************************************/
/********************************************************************************************/

void main (void) // Start des Hauptprogramms
{

unsigned int zaehlerp,zaehlern,zw;
float tp,tn,Periodendauer,Umdrehungen;

/* Initialisierung Serielle Schnittstelle */
SCON=0x52;
TMOD |=0x20;
TH1=0xfd;
TR1=1;
TI=1;

// Ausgabefenster löschen
printf("\x1b\x48\x1b\x4a");
// Infotext
printf("Programm Drehzahlmesser\n");
printf("=======================\n\n\n");
printf("Impuls Breite tp =\n\n");
printf("Impuls Pause tn =\n\n");
printf("Periodendauer T =\n\n\n\n");
printf("Motordrehzahl U =");

// T2CON = 0x00; // ges. Register auf 0 C_T2 = 0 T2 arbeitet als Timer
C_T2=0; // Timer Betrieb
T2MOD = 0x00;

while(1)
{

TH2=0; // Zählregister wieder auf 0
TL2=0;

// Werte für pos Pulsweite ermitteln
while(P1_0); // solange wie Eingang 1
while(!(P1_0)); // warten bis log 1 am eingang anliegt
TR2 = 1; // Zählung starten
while(P1_0); // solange wie Eingang 1
TR2 = 0; // Zählung stoppen
zaehlerp = 256 * TH2 + TL2; // Werte zusammensetzen in Var schreiben

TH2=0; // Zählregister wieder auf 0
TL2=0;

// Werte für neg Pulsweite ermitteln
while(!(P1_0)); // solange wie Eingang 0
while(P1_0); // solange wie Eingang 1
TR2 = 1; // Zählung starten
while(!(P1_0)); // solange wie Eingang 0
TR2 = 0; // Zählung stoppen
zaehlern = 256 * TH2 + TL2; // Werte zusammensetzen in Var schreiben

tp = zaehlerp * TMZ;
tn = zaehlern * TMZ;

Periodendauer = tp + tn;
Umdrehungen = 1 / (2*Periodendauer);

_wait_ms(200);

printf("\x1b\x59\x24\x35");
zw = zaehlerp * 1e6;
printf("%5u Mikrosekunden ",zw);

printf("\x1b\x59\x26\x35");
zw = zaehlern * 1e6;
printf("%5u Mikrosekunden ",zw);

printf("\x1b\x59\x28\x35");
zw = Periodendauer * 1e6;
printf("%5u Mikrosekunden ",zw);

printf("\x1b\x59\x2c\x35");
zw = Umdrehungen * 1e6;
printf("%5u Umdrehungen / Minute ",zw);
}

}
endress
 
Posts: 77
Joined: Fri Jan 03, 2014 2:02 pm

Postby mikedek » Fri May 28, 2010 12:00 am

Hallo Endress,

den einzigen Unterschied, den ich auf der schnelle gesehen habe, ist,
das Du den Port P1_0 nicht als Eingang intialisiert hast. P1_0 = 1;

mikeclsch
mikedek
 
Posts: 7
Joined: Fri Jan 03, 2014 1:52 pm

Next

Return to Mikrocontroller-Fernlehrgang (TFH)

Who is online

Users browsing this forum: No registered users and 1 guest