Gast
#455619
Hallo,
ich habe einen Temperatursensor SMT 160-30, der ein PWM-Signal ausgibt
über die serielle Schnittstelle an meinen Rechner angeschlossen. Die
Abfrage des Signals funktioniert auch. Jetzt habe ich aber noch Probleme
mit der Auswertung.
Das PWM-Signal hat eine Frequenz von 2-4 KHz. Ich arbeite mit Visual C++
6.0.
Ich muss nun das Verhältnis zwischen High- und Low-Pegel-Dauer messen.
Bisher habe ich folgenden Code:
int k=0;
int high=0;
int Signal;
double Durchl=100000.0; //double um beim teilen einen float-Wert zu
erhalten
while(k<Durchl)
{
Signal=m_rs232.GetCDHolding(); //Signal neu einlesen
high+=Signal;
k++;
}
m_Temp=(((high/Durchl)-0.32)*212.77);
Mit diesem Code habe ich nun leider Schwankungen von teilweise mehr als
4° und eine CPU-Auslastung von 60-100%.
Hat jemand eine Idee wie ich die Auswertung verbessern kann? Habe schon
versucht, zuerst eine Flanke zu erkennen und dann erst mit der Messung
zu starten um nicht mittendrin zu zählen anzufangen. Geht mit wenig
Aufwand jedoch nur beim Start der Messung. Und es treibt die
CPU-Belastung noch weiter hoch.... :(