PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATmega8 & Sensorik



ShadowPhoenix
25.04.2004, 18:31
Hallo!

Ein wichtiges Thema für mich, denn ich möchte gerne wissen, wie ich mit dem ATmega8 zB. Temperatur- od. Lichtsensoren auswerten kann.
Der Chip hat doch PortC (PC0-PC5) zur Verfügung.
Damit kann man angeblich "Analoge Spannungen" messen.

Blöde Anfängerfrage: Was ist eine analoge Spannung?
Ist das das, was ich brauche, um Sensoren nicht nur in 0 und 1 sondern in 0-255 auszuwerten?
Wenn ja, dann wäre das perfekt!

Bitte helft mir weiter!
MfG,
ShadowPhoenix

recycle
25.04.2004, 19:11
Blöde Anfängerfrage: Was ist eine analoge Spannung?

Eine Spannung ist eigentlich immer analog.
Ein digitaler Eingang kann aber nur feststellen, ob die Spannung "High" oder "Low" ist, sprich ob sie höher oder geringer als ein bestimmter Schwellwert ist. Ein A/D Eingang unterscheidet verschieden hohe Spannungen.



Ist das das, was ich brauche, um Sensoren nicht nur in 0 und 1 sondern in 0-255 auszuwerten?

Ja, das ist es.
Ob es beim ATMeag wirklich die Ports PC0-PC5 sind, weiss ich nicht, beim ATMeag16 sind PA0-PA7 die analogen Eingänge. Aber das kannst du wenn du dir nicht sicher bist im Datenblatt nachgucken.
Du kannst allerdings auch an die A/D Eingänge nicht irgendeine Spannung anlegen sondern musst unter einem Maximalwert. ausserdem musst du die Pinne AREF und AVCC beschalten.
Guck mal auf Kion's Homepage (http://www.kreatives-chaos.com) unter AVR-Grundschaltung nach, da ist die Beschaltung für die Nutzung der A/D Eingänge gut beschrieben.

ShadowPhoenix
25.04.2004, 20:49
Danke!
Ist das so richtig:
Die Referenzspannung gibt den Maximalwert an.
Also wenn die AREF gleich 5V ist, dann sieht das so aus:
0V - Wert 0
5V - Wert 5

Ist das so richtig?
Bei meinem Beispiel ATmega8 gibt es die Ports PC und in Klammer steht ADC.
Kann ich die PC Ports nun als AD Wandler verwenden?

Eine wichtige Frage:
Ich werde den Pin AREF nicht beschalten, und somit die interene Spannungsreferenz nutzen. Also in meinem Fall 5V.
Gut, kann ich nun an die AD-Ports einfach den Sensor anschliessen?
Also ohne Widerstand? Weil eigentlich ist der Sensor doch der Widerstand!?

Ich stelle mir das so vor:
Von VCC nach Sensor und von Sensor nach ADPort

Kann ich das so machen? Denn die Spannung an den AD's darf ja nicht mehr als die Referenz (mein Fall 5V wie schon erwähnt) haben.

Bitte gebt mir paar Tips und Antworten :-b

MfG,
ShadowPhoenix

recycle
26.04.2004, 03:05
Ich glaube im ersten Teil ist das so wie du es schreibst alles richtig. Ich kenn mich da aber leider auch nicht so sehr gut mit aus, deswegen warte lieber nochmal auf Antwort von jemandem der sich da wirklich auskennt.



Ich stelle mir das so vor:
Von VCC nach Sensor und von Sensor nach ADPort

Das kommt drauf an, welchen Sensor, bzw. was du genau als Sensor verwenden willst. Ich befürchte in vielen Fällen wird es nicht ganz so einfach sein.
Du solltest vielleicht dazu schreiben, was du als Sensor verwenden willst, dann kann dir das wahrscheinlich eher jemand beantworten.

ShadowPhoenix
26.04.2004, 14:20
Naja eigentlich würde ich eine generelle Lösung für Sensoren brauchen.
Denn ich werde schon unterschiedliche Sensoren verwenden (Licht,Temp,Bewegung).

Hmm... aber ich möchte den AVR nicht abrauchen und daher warte ich lieber noch auf eine Antwort, wie man Sensoren am besten an die ADC Ports anschliesst.

MfG,
ShadowPhoenix

Gottfreak
26.04.2004, 22:16
Naja eigentlich würde ich eine generelle Lösung für Sensoren brauchen.

Eine generelle Lösung gibt's nicht! Die Spezifikationen des Sensors stehen im Datenblatt und da musst du schon 'reingucken.
Der Sensor muss in jedem Fall mit zwei verschiedenen Potentialen verbunden werden. Da durch ADCs praktisch kein Strom fließt (Eingänge eben), kannst du keinen Sensor einfach zwischen Vcc und deinen Port machen. Der brauch noch irgendeine Verbindung zu 'ner anderen Spannung (oft GND).
Wenn Aref 5V ist (und Agnd=0V), sind 5V der Maximalwert. Also je nachdem, welche Auflösung dein ADC hat, 255 (bei 8 bit), 511(bei 9 bit) oder 1023(bei 10 bit). Andere Auflösungen sind mir bei AVRs noch nicht untergekommen.

MarkusH
05.05.2007, 00:40
Weis zufällig jemand welche Maximalspannung generell an einem ADC-Port (oder besser am Timer-Port zur Impulszählung) anliegen darf um eine Beschädigung des AVRs auszuschliessen? Darf ich über Vcc?

Gruß, Markus

Yossarian
05.05.2007, 00:45
Hallo
das dürfte im Datenblatt stehen.Normalerweise nicht höher als die Betriebsspannung(5V).

Mit freundlichen Grüßen
Benno

MarkusH
05.05.2007, 01:30
Ich hab im Datenblatt nichts gefunden was eindeutig darauf hinweist das es schädlich ist, deshalb die Frage. Ich möchte einen 12V-Impuls zählen und habe die Signalquelle so angeschlossen:


+-|>|- +5V
|
Eingang --10k--+--10k--+--| CMOS-Eingang
| |
10nF +-|<|- GND
|
GND

Nur leider braucht die Diode anscheinend noch 0,5V, so dass am Pin eine Spannung von 5,5V herrscht. Ich weiß nicht was ich dagegen tun kann.

Hubert.G
05.05.2007, 10:47
Die beiden Dioden am Eingang dürften dich wohl vor Schaden bewaren, auf der vollkommen sicheren Seite bist du aber wenn du anstelle oder parallel zum 10nf einen 8k2 Widerstand schalten würdest.
Die beiden Dioden sind ebenso wie die integrierten Dioden als Schutzdioden anzusehen und sollten daher nicht für den Normalbetrieb missbraucht werden.
Die Eingangsspannung auf allen Pins darf nur die Betriebsspannung +0,5V sein, Ausnahme ist nur der Reset-Pin, der hat allerdings auch keine Schutzdioden. Das steht in den Datenblättern unter Electrical Characteristics.
Hubert

MarkusH
05.05.2007, 16:54
Wieso "missbraucht"? Ich dachte ich könnte diese Schaltung für den Normalbetrieb benutzen. Die Eingangsspannung kann zwischen 0 und 60V variieren, mich interessiert aber nur ob sie null ist oder nicht.
Da hab ich noch ein anderes Problem, der Timer1-Pin steht ja immer auf 5V, der bemerkt bei meiner Schaltung ja gar keinen Unterschied. Kann der pin nicht standardmäßig auf 0V liegen?
Markus

Hubert.G
05.05.2007, 22:48
Die Dioden sind nun mal Schutzbeschaltung auch wenn sie vielfach für den Betrieb verwendet werden, Spannungen reduziert man mit Spannungsteiler. In deinem Fall kannst du auch ein normales Port nehmen.
Ich weiss nicht welches dein Timer1-Pin ist, vieleicht hast du den internen PullUp aktiviert.
Hubert

Lektor
06.05.2007, 14:35
was ist mit einer Z-Diode 5V