Re: Drehzahl ermitteln mit Digitalport Kategorie: Programmierung (von krassos - 3.08.2005 13:42) | ||
Als Antwort auf Drehzahl ermitteln mit Digitalport von Stefan - 3.08.2005 10:04 | ||
| ||
> Hallo, > > ich hätte eine kurze Frage zum Anschluss am Digitalport P1H0. > Ich möchte die Drehzahl eines Fahrradreifens messen. Ich benutze hierfür den Sensor des Fahrradcomputers. > Immer wenn ein Magnet (an den Speichen besfestigt) an dem Sensor vorbei geht schaltet dieser durch. > Ich schlie�e am Sensor die 5 V Festspannung der C-Control II an (mit R = 10k in Reihe) immer wenn der > Sensor durchschaltet entseht ein Rechteckimpuls. Diesen Impuls möchte ich mit dem Digiport auswerten > (Impulszähler). Ich weis aber nicht, wie ich den Digiport anschlie�en muss. einfach parallel dem 5 V Kreis? thread geschwindigkeit { run 32; //es muss ein main-thread vorhanden sein, in dem steht: run geschwindigkeit // diese zeile ist überflüssig. long drehzahl, zeit; float d_reifen; drehzahl = 0; zeit = 0; d_reifen = 0.5; string s,e; lcdext.init(); zeit = system.timer(); loop { // // �berlauf abfangen // if zeit < 0 // zeit = system.timer() + (2147483647 - zeit); if zeit<0 //�berlauf abfangen {ports.getcount(0);zeit=zeit = system.timer();} else { if(system.timer()- zeit)>=1000 { drehzahl = (ports.getcount(0) * 1000)/(system.timer() - zeit); s = ""; str.putlong(s,drehzahl); lcdext.clear(); lcdext.cursorpos(1,0); e= "1/s"; s = s+e; lcdext.print(s); sleep 100; zeit = system.timer(); //diese zeile sollte unmittelbar nach getcount folgen, durch das sleep //fügst du sonst eine messungenauigkeit von 1/10 s ein } } }} Hallo, der Code kann wohl so funktionieren, bitte beachte die Sache mit dem Main-Thread. Der Forenbetreiber hat übrigens code-tags bereitgestellt, um code übersichtlich darzustellen und Formatierungen nicht zu verlieren. Bitte benutze diese auch. Das von Dir auskommentierte weist auf einen richtigen Gedankengang hin. Irgendwann nach genau 2147483647 Millisekunden läuft der Zähler über nach -2147483648. Eine Differenzbildung in diesem Bereich bringt natürlich ungültige Ergebnisse und mu� abgefangen werden. Ich würde einfach im Fall zeit<0 keine Berechnung durchführen und auf die nächste gültige Messung warten. Gru� krassos | ||
Antwort schreiben Antworten: |