PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Analoger Komperator (ATTiny2313), Timer



Lord_Vader
14.11.2008, 19:57
Hi,

hab da ein problem. Wie richte ich den analogkomperator am Attiny2313 in bascom (und schalttechnisch) so ein, dass ich damit eine spannung messen kann?

Mein vorhaben ist es über einen Spannungsteiler aus NTC und festwiderstand eine spannung zu messen.

Was ich bis jez ausfindig machen konnte war:
CONFIG ACI = ON|OFF, COMPARE = ON|OFF, TRIGGER=TOGGLE|RISING|FALLING

Aber wie frag ich den jetzt ab? Warum compare? natürlich soll der vergleichen bzw die differenz zwischen spannungsteiler und masse auslesen können. Trigger is ja nur für ein Interrupt wenn ich das richtig sehe.

Ausserdem noch eine kleine frage: Gibt es einen fortlaufenden Counter bzw eine Zeit in ms oder µs vom start des Atmels? In Qbasic oder anderen sprachen gibt es immer soetwas wie Timer, welcher eine zeit zurückgibt. Genausoetwas bräuchte ich dann auch nochmal ^^

MfG Vader

stefan_Z
14.11.2008, 22:31
Der Comperator vergleicht nur, ein ADC könnte direkt messen.

Besserwessi
14.11.2008, 23:06
Wie schon gesagt, der Comperator ist kein AD Wandler (der nur ein 1 Bit Wandler). Man müßte sich also erst einen AD Wandler bauen. Das geht z.B. mit Hilfe eines Foliencondensators (z.B. 1 nF) am Comperator eingang gegen Masse und einem Widerstand. Für die messung des NTCs könnte man den NTC gegen Masse (oder einen IO PORT) auch an den Comperator Eingang schalten. Den anderen Comperator Eingang legt man am besten an die Halbe Spannung.
Die Messung geht dann darüber, wie lange es dauert den Kondensator umzuladen. Bei 1 nF und ca. 1 kOhm gibt das ein Zeit von etwa 1 ms, die sich sehr gut messen läßt. So kann man sogar mehr als 10 Bit Auflösung erreichen.

Eine forlaufende Zeit gibt es nicht. Man kann aber einen Timer programmieren so das er dann ab dann fortlaufend hochzählt, etwa alle µs. Wenn es um lange Zeiten (> 1 s) geht, muß man das wohl von Hand in einem Timer Interrupt machen.

Lord_Vader
15.11.2008, 02:44
Ah ok. Das ist natürlich schade. Das muss ich wohl doch eher nen ATMega8 oder sogar 32 nehmen. Hab leider nur nochn 32 da. Wäre schade um die ganzen pins. Gut zu AD Wandler is ja ein beispiel in Bascom. Nur was speichert der getadc befehl? Etwa die Spannung in V als ganzzahl + gleitkommastellen wenn ich ein float/double nehme?
Falls ja, ist das genau das richtige.

Danke schonmal dazu.
Wie sieht es mit dem TIMER aus? Mir geht es darum einen wert in eine variable schreiben zu können, der wert wird laufend im hintergrund mitgezählt. Natürlich geht das mit interrupts. Aber die art finde ich viel schöner und ich kann einfacher die zeit messen. Sagen wir mal ich speichere den aktuellen wert AktZeit = Timer (quasi wie in QBasic) und subtrahiere später wieder mit der aktuellen zeit Zeitvergangen=Timer-AktZeit.

Gibt es sowas?