Forum: Mikrocontroller und Digitale Elektronik Frage zu input capture


von Günther (Gast)


Lesenswert?

Frage zu input capture

Hallo,
kennt sich jemand mit input capture aus?

Ich mußte feststellen, daß bei einem PWM-
Signal die Summe aus high- und low-Zeiten
länger sind als die gesamte Periodendauer,
also z.B. 800 Counts high, 1043 Counts low,
aber nur 1590 Counts für eine Periode.
Ich benutze einen ATmega16, programmiert in
C (dank des ausgezeichneten Tutorials von
Chr. Schifferle auch für Anfänger kein Problem)
und abgefragt wird ein STM-160-30 (=ein Thermometer).
Das Ergbnis ist der Mittelwert aus 30 Abfragen,
die aber an sich kaum schwanken.
Rauschunterdrückung hat keinen Einfluß.

Am Oszi sieht es ganz normal aus, etwa
135 µs high, 183 µs low, zusammen 320 µs.

Also müßte die input-capture-Einheit des ATmega16
das Ergebnis verderben.

Weiß jemand einen Rat?
Günther

von crazy horse (Gast)


Lesenswert?

genau das habe ich zufällig gestern gemacht, funktioniert problemlos.

von Günther (Gast)


Lesenswert?

HAllo, Crazy Horse,
wie hast Du das gemacht - nur in C?
Ich habe auch andere Thermometer drangehängt
alle gehen daneben.
Vielleicht liegt es doch irgendwie an
meinem Programm ????
Kannst Du mir mal Deine Version schicken,
mal sehen ob mein Thermometer damit
richtig geht.
Viele Grüße
Günther

von crazy horse (Gast)


Lesenswert?

könnte ich machen - aber wie wärs mit deinem Programm?

von Günther (Gast)


Angehängte Dateien:

Lesenswert?

Hallo, crazy Horse,
vielen Dank für Deine Hilfe.
Deine Hilfe war schon vor Übermittlung Deines
Programms erfolgreich:
Ich wollte Dir gestern mein Programm zur Durchsicht
schicken und bei der Vorbereitung des Programms zum
Versand habe ich den logischen Fehler gefunden:
bei der Kontrolle auf Zählerüberlauf war eine
if-Schleife verkehrt herum geschrieben.

Nun funktioniert es bestens!
Allerdings muß ich jetzt ein Baustein mit
mehreren UND-Eingängen finden, weil es mehrere
Thermometer sind.

Den Code für die input-capture-Abfrage füge ich bei.

Viele Grüße
Günther

von crazy horse (Gast)


Angehängte Dateien:

Lesenswert?

na, prima.
hier dann noch mein Programm. Liefert allerdings keine negativen
Temperaturen (braucht nur einen Messbereich von 20-40°)

von crazy horse (Gast)


Lesenswert?

zeile
sensor = (100000*hzeit/periodendauer-32000);
muss natürlich heissen:
sensor = (100000*hi_time/periode-32000);

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.