PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dringend: Spannungmessung mit ATmega16 und LEDs als Ausgabe



Blackham
28.08.2008, 22:24
Hallo zusammen,

bin neu in der ATmega Liga :cheesy: Habe bisher hauptsächlich 8051 Controller in Assembler programmiert. Aber nun zu meinem Problem:
Ich möchte als kleine Zugabe für eine Präsentation am kommenden Dienstag noch eine kleine Auswerteschaltung für Kraftsensoren bauen und dies vorführen, anstelle der lahmen Multimeter.
Die Voraussetzungen sind folgende:
Insgesamt müssen 3 Sensoren ausgewertet werden.
Die Sensoren haben eine Betriebsspannung von 15Volt.
Gemessen werden Spannungen im Bereich von -5V bis +5V.
ATmega16 Controller sind vorhanden.


Mein Ziel:
Eine Schaltung, die alle drei Sensoren durch drei "Ampeln" (also je 3 LEDs [grün,gelb,rot]) auswertet. Grob geschätzt sollte zwischen -1V und 1V grün leuchten, zwischen -2V bis -1V sowie zwischen 1V und 2V die gelbe LED leuchten und alles kleiner -2V und größer 2V soll rot leuchten.


Meine Herangehensweise: (Wie gesagt habe ich noch nie mit ATmega16 hantiert.)
Mein erster Schritt wäre eine Spannungsteiler zu bauen, der die 15V DC vom Netzgerät in 5V Versorgungsspannung wandelt. Diese würde ich dann auf PIN10 (VCC) sowie PIN30(AVDC) legen.
Masse lege ich auf PIN11 und PIN31, jeweils GND.


Meine Fragen:
Kann ich alle 3 Signale in einen ATmega16 bringen? Sprich kann ich bei PORT A die PINs 33-40 einen eigenen analogen Eingang zuweisen?
WIE WEISE ICH DAS ZU (ALS C-CODE)?
Kann ich 9 Ausgangsignale machen, also eine konstante DC Spannung mit der ich LEDs betreiben kann? Welchen Wert hat die Spannung?
WENN JA, WIE SIEHT DAS ALS C-CODE AUS?
Wird der Controller zu heiss wenn 3 LEDs betrieben werden?



Wie gesagt, ich bin schwer im Zeitdruck und würde mich freuen wenn ihr mir noch schnell helfen könntet!

Danke schööööön!

markusj
28.08.2008, 23:23
Hi,

die Kurzform: Nimm ein Multimeter.
Langform: Das ganz ist sicher machbar (wenngleich es einige Probleme gibt, kein ATMega mag negative Eingangsspannungen etc.)
Aber: Du hast keine Vorkenntnisse über die ATMegas und um sich da vernünftig einzuarbeiten reichen vier bis fünf Tage meiner Meinung nach nicht aus.
Du brauchst Informationen über das Hardwaredesign (RN-Wiki, ATMega-Grundschaltung).
Und du brauchst Wissen über den Funktionsumfang und die Funktionsweise der ATMegas (Datenblatt/RN-Wiki/mikrocontroller.net)

Zu deiner Frage:
Der ATMega16 hat im DIP40-Gehäuse acht ADC-Eingänge, also der komplette Port A (Pin 33 bis 40).
Intern hat der ATMega16 genau einen ADC-Wandler. Um die Signale auszulesen, musst du dem internen Multiplexer "sagen", welchen Kanal er auswählen soll. Nach einer gewissen Stabilisierungszeit kannst du dann Werte auslesen.
Wie das ganze genau geht? Datenblatt, Abschnitt ADC VOLLSTÄNDIG durchlesen, da gibt es noch andere (wichtige) Informationen.

Zu den Ausgängen: Steht alles im Datenblatt, IO-Pin kennt vier Zustände: Eingang, Eingang+Pullup, Ausgang Low, Ausgang High.
Low und High entsprechen GND und VCC, Details siehe Datenblatt, Abschnitt I/O-Ports.

Blackham
29.08.2008, 00:48
Würde vielleicht ein Gleichrichter aus 4 Dioden weiterhelfen? Dann sollte die Spannung immer positiv sein. Das Vorzeichen spielt bei mir keine Rolle, sondern vielmehr der Betrag.

Zum Ausgang:
Ein Kollege meinte ich solle die LEDs über Optokoppler durch den Mikrocontroller ansteuern. Wenn ich ne logische 1 auf den PIN-Ausgang lege, würde VCC ausgegeben.

Hab mal mit EAGLE eine Schaltung gemacht. Weiss nicht welche Vorwiderstände die Optokoppler brauchen. Muss ich in Datenblättern nachschauen :wink:

wkrug
29.08.2008, 08:53
Insgesamt müssen 3 Sensoren ausgewertet werden.
Die Sensoren haben eine Betriebsspannung von 15Volt.
Gemessen werden Spannungen im Bereich von -5V bis +5V.

Wie geht das denn ?
Die Sensoren haben also eine Eingangsspannung von + 15 V ?
Am Ausgang der Sensoren kommen dann aber +5V und -5V gegen Masse raus ?
Dann ist also ein kleines Netzteil oder eine Ladungspumpe eingebaut ;-)
Ich meine doch eher, das die Betriebsspannung durch 2 geteilt wird und somit im Ruhezustand 7,5V am Ausgang gegen Masse anliegen.
Und dann die Spannung je nach Belastung Werte zwischen +2,5 V und +12,5V annehmen kann.
Das lässt sich mit einem Spannungsteiler auf die gewünschten Werte bringen.
Der ATMEGA 16 kann als Referenz mehrere Verschiedene Quellen haben, die man per Software auswählen kann.
1. Die interne Referenz ( 2,56V soweit ich weiß )
2. Die Versorgungsspannung des Controllers
3. Eine extern angeschaltete Referenz

In einem muß ich markusj aber recht geben, wenn Du noch nie mit diesen Controllern gearbeitet hast, kannst Du dein Projekt vermutlich nicht bis Dienstag realisieren.
2 bis 3 "intensive" Wochen wären da realistischer.
Das Datenblatt des ATMEGA hat mehr als 300 Seiten, von denen Du dir für deine Aufgabenstellung ca. 30% reinziehen musst.
Dann ist aber noch keine Zeile geproggt.

Wenns wirklich so eilig ist, würd ich das lieber in Hardware mit Operationverstärkern machen.
Ein paar LM324 kosten nicht viel und einer pro Ampel sollte ausreichen.
Noch dazu passt der Spannungsbereich deiner Sensoren besser zum Operationsverstärker. d.h kein zusätzliches Netzteil.

Blackham
29.08.2008, 10:54
also die betriebsspannung von 15V wird, wie du erkannt hast in einen messverstärker gegeben, der dann -5V bis +5V Werte ausgibt. Könnte über Potis, die intern in den Verstärkern sind, den Offset auf 5V legen, so dass ich dann 0V bis 10V am Ausgang hätte. Müsste dann halt wieder vor den Eingängen nen Spannungsteiler stellen, der die Spannung halbiert (gemessene darf nicht größer sein als VCC).

Über die OPV müsste ich dann eine Verstärkerschaltung bauen? Aber wie sage ich der Schaltung dass das LED ab einem bestimmten Wert wieder ausgeht?

Hubert.G
29.08.2008, 10:58
Meine Herangehensweise: (Wie gesagt habe ich noch nie mit ATmega16 hantiert.)

Mein erster Schritt wäre eine Spannungsteiler zu bauen, der die 15V DC vom Netzgerät in 5V Versorgungsspannung wandelt. Diese würde ich dann auf PIN10 (VCC) sowie PIN30(AVDC) legen.
Masse lege ich auf PIN11 und PIN31, jeweils GND.
Spannungsteiler funktioniert sicher nicht, für die Stromversorgung des µC brauchst du dazu einen Spannungsregler wie 7805.

markusj
29.08.2008, 11:39
Über die OPV müsste ich dann eine Verstärkerschaltung bauen? Aber wie sage ich der Schaltung dass das LED ab einem bestimmten Wert wieder ausgeht?
Du musst den OPV als Komparator betreiben und die Schwellspannung via Poti einstellen, wäre zumindest wäre das mein erster Ansatz.
Ich muss allerdings gestehen, dass meine Kenntnisse der Analogtechnik eher ... weniger ausgeprägt sind.

mfG
Markus

Hubert.G
29.08.2008, 11:55
Wenn du das ganze sehr einfach halten willst, dann verwende einen, oder in deinem Fall drei, LM3914.