PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 4 Spannungen mit ATmega32 vergleichen



Gableguy
17.11.2009, 12:15
Hallo,

ich habe 4 LDR´s, die ich gerne an den ATmega32 anschließen würde, um dann in einer Endlosschleife immer von zwei LDR´s die Spanungen zu vergleichen.
Es sollen die Eingänge untereinander verglichen werden, also ohne eine Referenzspannung.
Ich stehe aber etwas auf dem Schlauch, wo ich die LDR´s anschließe, und was ich davor schalten muss usw.
Habe zurzeit die LDR´s an ein LM324 angeschlossen, und an den Ausgängen hängen LED´s. Die LED´s sollen später Motoren sein.
Die Aufgabe vom LM324 soll aber der mC übernehmen.
Habe an den ADC gedacht, aber dieser braucht doch immer eine Ref Spannung, oder?

Kann mir da eventuell jemand helfen?

LG

askazo
17.11.2009, 13:00
Wenn Du analoge Spannungen per µC miteinander vergleichen willst, geht das nur über den ADC. Und dieser braucht zwangsläufig immer eine Referenzspannung, damit er weiß, wie er die Spannung auflösen soll.
Allerdings haben die ATMegas ja praktischerweise eine interne Referenzspannungsquelle, von daher kannst Du die ADCs problemlos nutzen.

Du hast auch die Möglichkeit, je zwei ADC-Eingänge als Differenzeingang zu benutzen, so dass Du direkt die Spannungsdifferenz der beiden LDRs geliefert bekommst.

Wie Du die LDRs anschließt, kommt darauf an, welche Spannung an den LDRs anliegt und welche Referenzspannung Du gewählt hast. Evtl. musst Du dann noch einen Spannungsteiler zwischen LDR und ADC schalten.

Gruß,
askazo

shedepe
17.11.2009, 13:00
Du könntest ja einfach die beiden LDRs in abhängigkeit zur Ref Spannung messen und dann Messergebnis1- Messergebnis2 machen, sollte letztendlich auf das gleiche hinauslaufen.

Gableguy
17.11.2009, 13:12
Hallo,

danke für die Antworten.
Wo stelle ich denn ein, dass ich z.B. Eingang ADC0 mit ADC1 vergleichen will, also einen von beiden Eingängen meine Ref-Spannung ist?
Ich kann die VErsorgungsspannung meiner Schaltung variieren.
Die Eingänge vom mC vertragen ja nur Vcc, also 5V.
Das lässt sich ja wie bereits erwähnt durch einen Spannungsteiler einstellen.
Aber in meiner Schaltung habe ich 2 Potis verbaut, zum abgleichen. Wie würde es denn jetzt mit dem mC funktionieren?

LG

shedepe
17.11.2009, 13:29
Beim ADC des Atmega32 kann man nur einstellen ob man die interne Referenzspannung von 2,56V oder 1,1V oder die externe Referenzspannung am Pin AREF verwenden. Du könntest jetzt natürlich einen der LDRs als AREF verwenden. Ich hätte es allerdings wie oben genannt gemacht.
Also ADC0 und ADC1 z.B zu einer AREF von 5V messen und dann die einzelnen Messergebnisse von einander subtrahieren. Sollte letztendlich auf das gleiche hinauslaufen, wie wenn man ADC0 direkt mit ADC1 vergleichen will.


Der Spannungsteiler muss so eingestellt werden, dass nie mehr als 5V am uC anliegen

Gableguy
17.11.2009, 14:25
Hallo,

@shedepe
also so eine Art Wheatstonsche Messbrücke, wenn die Differenz zwischen ADC0 und ADC1 null ist, dann ist es i.O.
Habe die Schaltung mal angehängt, da ich immer noch ciht weis, wo ich jetzt meine mC anschließe.
Habe auch mal eine Wheatstonsche Messbrücke aufgebaut, wenn der eien Sensor mehr Licht bekommt, dann ist die Spannung positiv und bei dem anderen ist sie negativ.
Könnte man damit nicht was machen? Sobald sich die Spannung ins negative ändert Motor so rum drehen, und bei positiv andersrum.
Aber ich bekomme die Brücke nicht genau auf 0 abgeglichen. Aber da könnte man doch bestimmt Schwellwerte festlegen.

LG

shedepe
17.11.2009, 14:34
Erst mal, was willst du überhaupt erreichen ?
An deiner Stelle würde ich das ganze nur digital, also mithilfe von Software mit dem uC machen, da kannst man sich dann Analog aufbauten größtenteils sparen.

Die LDRs schließt du einfach an einen freien ADC Pin deines Mikrocontrollers an

Wo man diese findet und wie man sie software technisch verwendet kannst du dem Datenblatt entnehmen.
Zudem gibt es auf Mikrocontroller.net ein gutes Tutorial zu AVR-GCC wo auch der ADC beschrieben wird

Gableguy
17.11.2009, 14:43
Hallo shedepe,

ich will erreichen, das mein mC erkennt, welcher LDr weniger Licht bekommt und darauf sofort reagiert.
Habe mal die Messbrücke an den Komparator vom mC angeschlossen, aber ich bekomme es nciht genau abgeglichen, eine LED brennt immer.
Also die LDR´s ohen Poti usw. an die ADC Eingänge, und Ref Spannung 5V.
Dann die beiden Spannungen an den ADC Eingängen von der Ref abziehen und das Ergebnis von beiden Rechnungen miteinander vergleichen, habe ich das so richtig verstanden?

Lg

shedepe
17.11.2009, 14:54
Ich glaube da hast du etwas missverstanden.
Die schließt die LDRs direkt oder mit einem Spannungsteiler an den mC an.
DH. LDR1 an ADC0 und LDR2 and ADC1 z.B.
dann liest du mit hilfe des ADC die Spannungen and ADC0 und ADC1 ein und speicherst sie in variablen. Dann kann du die beiden Variablen von einander subtrahieren und je nach dem ob das ergebnis negativ oder positiv ist, weist du welcher LDR mehr licht abbekommt

Wenn das ergebnis 0 ist sollten beide LDRs die gleiche Lichtmenge abbekommen

Gableguy
17.11.2009, 15:13
Hallo,

das hört sich einfach an, aber der ADC braucht doch noch eine Referenzspannung, welche nehme ich denn da, oder ist das egal, da ich die ja nicht verwende?
Ich hänge bei der Referenzspannung, ob interen, exteren, oder AREF?

shedepe
17.11.2009, 15:20
ob du die interne oder die externe als AREF verwendest ist nebensächlich
nur die am ADC pin angelegte spannung darf halt nur zwischen GND und AREF liegen

An deiner stelle würde ich mich noch mal gründlich über die Funktionsweise des ADCs im Atmega32 informieren.
Das könnte dir dabei helfen:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#ADC_.28Analog_Digital_Converter.29

Neutro
17.11.2009, 17:05
Hi Gableguy,

hast du überhaupt schon einmal mit Controllern gearbeitet? Verstehe mich bitte nicht falsch, ich will dir deswegen bestimmt keinen Vorwurf machen, jeder muss mal klein anfangen und ich musste auch erst Erfahrungen damit sammeln bis ich eigene Projekte hinbekommen habe. Hast du dich schon mal mit den entsprechenden Tutorials beschäftigt? Welche Programmiersprache möchtetst du verwenden? Soll deine Schaltung eine Art "Sonnenverfolger" werden?
Wenn wir diese Sachen wissen können wir dir auch gezielter helfen.

Gruß

Neutro

Gableguy
19.11.2009, 13:31
Hallo,
ja, ich habe schon mit mC gearbeitet.
Habe es auch jetzt soweit hinbekommen, das mein ADC auf die Eingänge reagiert.
Habe an AREF 5V angelegt. Mein Spannungsteiler liefert ir bei Sonnelicht 4,5V.
Aber meine Ausgänge schlaten noch nicht so wie ich will. Ich bekomme die LED´s nicht beide ausgeschaltet. Wenn beide LED´s ausgeschaltet sind, würde bedeuten, dass beide LDR´s optimal ausgerichtet sind.
Hat von euch jemand eine Idee, wie ich die LDR´s kalibriert bekomme, ider die Schaltung empfindlicher bekomme? Kanni ch da was am Code ändern, oder eher an der Schaltung?

LG und DANKE


LG

shedepe
19.11.2009, 14:21
Du könntest z.B im Code einen Schwellenwert festlegen bei dem die LEDs beide ausschaltest, wenn man davon ausgehn kann dass du die LEDs mit dem uC schaltest.

Neutro
19.11.2009, 19:02
Eine Möglichkeit wäre dir die ADC Werte im Terminal oder Display anzeigen zu lassen, dann kannst du dementspechend auch die Grenzwerte festlegen. Wenn beide LEDs nicht gleichzeitig leuchten sollen kannst du das doch relativ einfach im Code so programmieren

Gableguy
26.11.2009, 10:43
Hallo,

habe das jetzt mit den LDR´s und dem ADC versucht. Es hat auch einigermaßen geklappt, doch die LED´s haben erst reagiert, wenn ich ganz nah mit dem Finger an den LDR´s vorbeigefahren bin.
Jetzt suche ich eine Schaltung, die ich vor den Eingang des mC bauen kann mit den LDR´s, die mir dann eine brauchbare Spannung liefert.
Habe es schon mit einer Wheatstonschen Messbrücke versucht, diese ist ja sehr genau, aber da bekomme ich einmal eine positive und einmal eine negative Spannung raus. die negative Spannung kann ich ja nicht an den mC Eingang legen. Hat von euch jemand eine Idee?
Wäre für alles dankbar.

LG

Richard
26.11.2009, 14:09
Du solltest die LDR mal mit kleinen Pappröhchen oder ähnliches
etwas abschirmen dann werden sie etwas empfindlicher. Was
soll das denn werden? Ldr´s sind eher nur für langsame Änderungen
wie Dämmerungsschalter oder Sonnenfolger brauchbar. Als Linienfolger
eher nicht.

Gruß Richard

Neutro
26.11.2009, 17:54
Da gibt es noch einige Möglichkeiten:
1.) Den ADC Wert per Software "empfindlicher" machen
2.) Den LDR in einem Spannungsteiler betreiben und damit an einem
OP Verstärker anschließen der als nicht invertierend beschaltet ist.
Mit dem Ausgang des OP´s dann auf den ADC. Die Verstärkung kannst du dann einfach mit einem Trimmer einstellen der als veränderlicher Rückkopplungswiderstand dient. Die erforderlichen Einstellungen an Software und Trimmer müsste man denn durch ausprobieren herausfinden. Als OP würde ich einen TL082 empfehlen.

Gruß

Neutro

Gableguy
27.11.2009, 12:28
Hallo,

es soll eine Nachführung werden (optisch).
Habe den LDR schon an einem Spannungsteiler gehabt.
Der war aber falsch dimensioniert.
Der LDR hat bei Sonnenschein einen Widerstand von 40Ohm, bei Dunkelheit über 50MOhm.
Weis da nicht, wie ich den anderen Widerstand dimensionieren soll.

Besserwessi
27.11.2009, 12:56
Wenn es für die nachführung nur darauf ankommt, dass die 2 LDRs den gleichen Widerstand haben, kann man auch den Spannungsteiler aus 2 LDRs machen. Wenn die gleich sind, hat man die halbe Spannung. Als Vorteil ist man so unabhängig von der absoluten Helligkeit, und man braicht nur noch 2 Kanäle messen.

Für sehr wenig Licht (R > 100 k) sollte man noch einen Kondensator (10-100 nF) dazuschalten, damit die Spannung etwas gepuffert ist für den AD-eingang.

Gableguy
27.11.2009, 13:08
Hallo,

also so?
Und wo mache ich jetzt den Kondensator hin?

LG

Hubert.G
27.11.2009, 16:56
Nach GND (Erde) oder +5V, der Effekt ist der gleiche.

Richard
27.11.2009, 19:18
Nach GND (Erde) oder +5V, der Effekt ist der gleiche.

Gewöhne Dir besser gleich an die richtigen Zeichen zu benutzen,
ehe Du dich an die falsche gewöhst! Erde ist nicht GND, Erde ist der
Schutzleiter oder auch Abschirmung bei Kabeln. Gnd hat unten
nur einen Querstrich. Erde und GND sind micht zwangsläufig verbunden
und wenn Deine Schaltung kein Gnd hat.....funktioniert sich nicht.....

Ich würden Kondensator eher an Gnd und adc Eingang legen
(aus Gewohnheit).

Gruß Richard

Gableguy
27.11.2009, 19:54
Hallo,

sorry, wegen der falschen Zeichen, werde das nächste mal daran denken, musste aber schnell gehen, aber das ist keine Entschuldigung.
Soll ich den Kondensator also parallel zu den beiden LDR´s setzen?
Oder vom Mittelabgriff des Spannungsteiler der zum PORT geht, zu GND?

Aber was mache ich mit den unterschiedlichen Werten bei Sonnenlicht?

LG

Richard
27.11.2009, 20:30
Vom Mittelabgiff (natürlich :-)).
Untersiedliche Werte willst/sollst/brauchst Du doch um etwas regeln
oder Steuern zu können. Ohne eine Abweichung kannst Du nicht
Feststellen vohin Du Regeln/Gegenregeln solltest. Genaugenommen
gibt es reine Regelung ohne Abweichungen, ohne Abweichungen
braucht NIX Geregelt werden... OOOHHH wäre das schöööön, aber auch
sau langweilig. :-(

Du solltest jetzt wirlich einmal genau erklähren was die Bastelei
am Ende Bezwecken soll. Falls Du es selber weist. :-)


Gruß´Richard

Gableguy
28.11.2009, 11:02
Hallo,

es soll eine optische Nachführung werden. Ich wollte zwei LDR´s nebeneinander und die anderen zwei übereinander anordnen.
Und dann mit dem mC jeweils zwei LDR's vergleichen und mit dem mC die Motoren ansteuern.

LG

Valentin
28.11.2009, 12:55
Nimm doch einfach ein + aus LichtDIODEN. Also eine oben, eine unten, eine links und eine rechts. Diese Dinger kommen einfach an einen Port und du steuerst deinen Roboter über einen Laserstrahl. Diese Lösung wird viel besser funktionieren, als mit LDRs, da die Dioden relativ klein sind. Dann solltest du allerdings doch noch einen OpAmp mit LDR am Eingang verwenden, um dann vier kleine Transistörchen anzusteuern, die das normale Licht rausfiltern. Du kannst auch den Ausgang jeder Diode mit einem Pullup-LDR versehen, da kommt das gleiche raus. Aber du sparst dir die Umwandlungen und kannst viel schneller reagieren!
Valentin

Besserwessi
28.11.2009, 13:03
Fotodioden haben hier nur wenigvorteile gegenüber LDRs. Die LDRs sollten schnell genug sein im Vergleich zu den Motoren der Nachführung.
Die LDRs habe gerade den Vorteil, dass die Schaltung sehr einfach ist, ohne Verstärkung usw.

Die Kondensatoren sollten von der Analogen Masse (GND Pin auf der Seite mit AREF und AVcc) zu den AD Eingängen. Wenn man genug Licht hat kann man die auch erstmal weglassen. Die Spannungsteiler aus je 2 LDRs kommt mit der Mitte an den AD Eingang, die Enden an GND und AVcc.

Valentin
28.11.2009, 15:28
OK, so gehts auch, aber Fotodioden liefern mit Pullup schon ein relativ digitales Signal!
Deshalb habe ich diese Dinger auch vorgeschlagen.
und für die LDRs braucht man wieder ADC.
Allerdings stimmt es auch, dass die Motoren viel zu langsam sind.
Valentin

Gableguy
29.11.2009, 11:45
Hallo,


das mit dem benötigten AD Wandler ist aber kein Problem, mein mC hat ja einen.
Ich werde die Schaltung mal aufbauen und testen, melde mich dann wieder.
@Besserwessi:
Meinst du jetzt, die Kondensatoren für die Ref-Spannung am mC, oder soll der Kondensator an den LDR Spannungsteiler?


LG

Besserwessi
29.11.2009, 12:04
Die Kondensatoren waren für die AD Eingänge gemeint. Der Grund dafür ist, dass die AD Eingänge eigentlich für Quellen mit einem Widerstand kleiner als 20 kOhm gedacht sind. Mit dem extra Kondensator geht es dann auch noch mit höheren Widerständen.

Der Kondensator an AREF solle auch besser ran, ist aber nicht so wichtig, wenn die Spannung sonst stabil ist.

TomEdl
29.11.2009, 12:29
Der Kondensator an AREF solle auch besser ran, ist aber nicht so wichtig, wenn die Spannung sonst stabil ist.

Wenn ich kurz mal meinen Senf dazugeben darf:
Ohne Keramik-Kondensator an AREF (am besten 100nF) fängt man sich schnell 50Hz-Störungen vom Stromnetz ein. Das hängt natürlich stark von den Leitungsführungen am Layout ab, aber es kann passieren.

Grüße
Thomas

Gableguy
07.12.2009, 12:28
Hallo,

habe mal den Spannungsteiler mit den beiden LDR`s aufgebaut.
Den Mittelabgriff auf den AD Eingang des ATmegas32 gesetzt und ein Display angeschlossen.
Auf dem lasse ich mir die digitalen Werte anzeigen. Aber es schwankt noch sehr stark. Kann ich noch irgendwas davor schalten z.B. Spannungsfolger?
Hat jemand eine Idee.

DANKE

Besserwessi
07.12.2009, 16:09
Wenn es nicht besonders hell ist, kann ein Kondensator vom AD Eingang nach Masse helfen, denn die LDRs alleine können etwas sehr hochohmig sein. Besser wird es auch mit einem Spannugnfolger kaum.

Besonders bei Kunstlicht hat man oft auch eine 100 Hz Modulation von den Lampen. Dagegen hilft es die Werte etwa zu mitteln, idealerweise über ein vielfaches vom 10 ms oder besser 20 ms.

Die Grundvorraussetzungen für den AD sollten natürlich auch stimmen:
Takt richtig, Enkoppelkondensatoren an AVcc und Vcc und besser auch der Kondensator an AREF.