Autor |
Messsignalauswertung im ADU Atmega32 |
|
|
|
|
BID = 454377
Radio Gesprächig
Beiträge: 119
|
|
Hallo zusammen..Ein Schulprojekt hat mich auf eure Seite gebracht und beschäftigt mich schon ne ganze weile..den Elektrische teil denke ich haben wir jetzt hinbekommen..nun geht es um den Programmierten teil.
|
|
BID = 454379
Kleinspannung Urgestein
Beiträge: 13359 Wohnort: Tal der Ahnungslosen
|
|
Und,was wollte uns der Dichter jetzt damit sagen?
Ich habe auch (fast) keine Ahnung,aber bei meinem Mega8 heißt das Ding ADC
AnalogDigitalConverter...
Was ist ADU?
_________________
Manche Männer bemühen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitätstheorie.
(Albert Einstein) |
|
BID = 454380
Radio Gesprächig
Beiträge: 119
|
Im Anhang habe ich mal die Schaltung mit angefügt...es handelt sich um ein Lichtmesser!
Messen von einer nichtelektrischen Größe..in diesem Fall "Helligkeit" mit einem Sensor (BPW21)in Strom ...und dann gewandelt in eine Spannung über einen OP(AD8571) weitergeleitete über eine Bereichschaltung (FET) auf den ADU eingang..die FET hängen selbst an den µC Ausgang....das ganze soll auf einem Display mit einem ATMEGA32 in AVR-Assebler in LUx dargestellt werden...Der Spektralbereich der Diode BPW21 ist dem Auge gleich.
Das Display ist von Pollin:
LCD-Modul GOLDENTEK GC-1602G0
2-zeiliges LC-Display mit integriertem Controller KS0066 (HD44780 kompatibel). Das Display verfügt pro Zeile über je 16 Zeichen.
Technische Daten:
- 2 Zeilen x 16 Zeichen Text
- integrierter Controller KS0066 (HD44780 kompatibel)
- Betriebsspannung +5 V
- regelbarer Kontrast
- Anzeigefläche 64x15 mm
Maße (BxHxT): 85x35x10 mm.
Bitte um reichlich antworten und hilfen hierzu.
Lg Patrick
|
BID = 454381
Radio Gesprächig
Beiträge: 119
|
Der dichter hat sich vertippt.
|
BID = 454383
Kleinspannung Urgestein
Beiträge: 13359 Wohnort: Tal der Ahnungslosen
|
Tja,wie gesagt viel Plan habe ich auch nicht...
Und assembler ist mir so unbekannt wie das innere des Mondes,ich habe es nur mit Bascom geschafft Spannungen zu messen und umzuwandeln.
Zumindest mit 8 Bit,bei 9 und 10 komme ich mit der Verarbeitung des Hi und Low Wertes noch nicht klar....
Was ich bisher weiß(auf den Mega8 bezogen)
Du kannst direkt nur bis Vcc messen.Also 5V.Bei mehr brauchst nen Spannungsteiler.
Der ADC kann freilaufend oder zur Einzelmessung konfiguriert werden.
Bei Einzel muß jede Messung im Programm extra gestartet werden.
Du sagst dem ADC,welchen Eingang er nehmen soll.
Definierst eine Variable,wo er das Ergebniss der Wandlung ablegt.
Ist er fertig,hast du je nach gewählter Auflösung einen Wert darin stehen.
Wie du das aber jetzt weiterverarbeitest und zur Anzeige bringst
So weit bin ich auch noch nicht vorangekommen
_________________
Manche Männer bemühen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitätstheorie.
(Albert Einstein)
|
BID = 454385
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Im Prinzip ist das richtig.
Wenn du eine über 5..6 Dekaden der Intensität lineare Anzeige brauchst, solltest du das Photoelement in einen Kurzschluss arbeiten lassen und den dann fliessenden Strom messen.
Dazu musst du den Opamp als invertierenden Verstärker beschalten.
Auch die Bereichsumschalter machen Sinn , aber ich würde dafür aber keine diskreten FETs verwenden, sondern ein Analogschalter IC, wie etwa den CD4051 oder 74HC4051.
Diskrete FETs als Schalter sind erst von Vorteil, wenn du es mit so extrem kleinen Strömen zu tun hast, daß die Leckströme der im IC enthaltenen Schutzdioden Fehler verursachen. Solche Leckströme müsste man dann aber auch beim Entwurf der gedruckten Schaltung berücksichtigen.
Im Extremfall kann man sogar Reedrelais verwenden, aber dazu brauchtest du auch einen besseren Verstärker.
Ich denke, bei einem Anfängerprojekt ist ein solcher Aufwand nicht gerechtfertigt.
In jedem Fall solltest du diese Schalter aber nicht, wie eingezeichnet, auf der Eingangsseite der Widerstände sondern auf der Ausgangsseite anordnen.
Alternativ zu dieser Schaltung kannst du mit einem nichtinvertierenden Verstärker das Photoelement im Leerlauf arbeiten lassen.
Als Resultat erhältst du dabei eine Spannung, die proportional zum Logarithmus der Lichtintensität ist.
Bei nicht allzuschwachen Beleuchtungsverhältnissen wird sich die EMK des Photoelements meist zwischen etwa 200mV und 600mV bewegen und 700mV selbst im vollen Sonnenlicht nicht erreichen, sodaß du eine feste Verstärkung vorsehen kannst.
Du solltest das Photolement zusammen mit dem Verstärker und dem Umschalter in einem kleinen allseitig geschlossenen Blechgehäuse unterbringen, damit du dir nicht Störungen durch Netzspannung und/oder Digitalsignale einfängst.
Auch die Versorgungsspannung sollte in diesem Gehäuse nochmal geglättet werden.
_________________
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !
[ Diese Nachricht wurde geändert von: perl am 31 Aug 2007 5:41 ]
|
BID = 454473
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Zitat :
|
Bitte um reichlich antworten und hilfen hierzu.
|
Du musst doch Vorkenntnisse in AVR-Assembler haben, wenn man dich beauftragt, sowas zu programmieren.
Habt ihr das in der Schule gelernt? Wenn nein, warum dann der Aufwand?
---
@Kleinspannung
ADU steht für Analog-zu-Digital-Umwandler, ich hätte erwartet, dass du da von selbst draufkommst.
ADC ist das gleiche und Deutsche Bezeichnungen haben was .
zum Thema:
wie von Kleinspannung angesprochen gibt es mehrere Modi des ADU ( ) und für welche man sich entscheidet hängt maßgeblich von der gewünschten Abtastfreuqnez ab.
Ich rate zu keiner sehr hohen Abtastfrequenz, sondern von vielleicht 16 Abtastungen pro Sekunde und dann der Bildung eines Mittelwertes. Die Auflösung des ADU sollte 10 Bit sein, dann wird das schon sehr genau. Genaugenommen kann man auf die Mittelwertbildung verzichten, ist aber sauberer.
Dann müssen diese Daten skaliert werden und am besten ohne große Rechnerei (du arbeitest mit Maschinenkode, da macht es keinen Sinn, eine Fließkommarithmetik zu programmieren...). Mann kann sowas gut mit großen Zahlen machen (mehrere Register).
Zur Darstellung auf dem Display:
Es gibt viele Archive, die kompletten Assemblerkode für AVRs haben, um die Standarddisplays anzusteuern. Wenn du die Quelle nennst, sollte das kein Problem sein, die zu implementieren. Schließlich geht es primär um die Messung und nicht ums Display.
Nochwas:
Datenblätter der entsprechenden µCs werden nicht aus Spaß gemacht, die darin enthaltene Dokumentation, vorallem jene von ATMEL, sind klasse.
und nochwas:
Muss es denn ausgerechnet ASM sein? Wenn ihr in C programmieren könntet, dann könnte man (wenns unbedingt sein muss) sogar Fließkommezahlen verarbeiten lassen, was zwar dauert im Gegensatz zu gewöhnlichen Operationen aber was den Kode evtl. um einiges einfacher macht.
Der 'm32 hat 32kB Flashlänge. Das ist sehr viel, denn werdet ihr in reinem Assembler vermutlich nicht mal zu 10% vollbekommen, es sei denn, es werden Tabellen zur Darstellung des Wertes angelegt, was übrigens einiges Rechnen und damit Zeit erspart.
_________________
|
BID = 454476
Kleinspannung Urgestein
Beiträge: 13359 Wohnort: Tal der Ahnungslosen
|
Zitat :
DonComi hat am 31 Aug 2007 14:10 geschrieben :
|
@Kleinspannung
ADU steht für Analog-zu-Digital-Umwandler, ich hätte erwartet, dass du da von selbst draufkommst.
ADC ist das gleiche und Deutsche Bezeichnungen haben was
|
Entschuldigung!
Aber bei allem,was ich bisher so gelesen habe(meist deutsch)hieß das Teil immer ADC...
_________________
Manche Männer bemühen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitätstheorie.
(Albert Einstein)
|
BID = 454479
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Klar, die Englische Bezeichnung lautet ADC, dass ist ja auch korrekt.
Aber warum englisch, man kann es doch auch mit einer deutschen Bezeichnung bennen, zumindest hier im Forum, wo die offizielle Sprache Deutsch ist.
Aber hast schon recht, ADW wäre eindeutiger gewesen
_________________
[ Diese Nachricht wurde geändert von: DonComi am 31 Aug 2007 15:12 ]
|
BID = 454515
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Da sowieso alle wissen, was gemeint ist, ist das Thema ADU-ADC-ADW doch keine Diskussion wert.
Nur beim Gegenstück, dem DAC, kann es auf deutsch schon mal zu Verwechslungen kommen.
_________________
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !
|
BID = 454537
Radio Gesprächig
Beiträge: 119
|
Hallo zusammen!
@ConDomi
Genau dich habe ich gesucht....man sagte mir hier im Forum ich sollte dich zu meinem Problem ansprechen..
Kenntnisse in Assembler habe ich..zumindest das,was bei uns in der Schule behandelt wurde (Grundlegendes)...Wir haben vom Lehrer ein Projekt auferlegt bekommen
"Luxmeter" ...dieses sollen wir realisieren..Schaltungstechnisch (Siehe ersten Beitrag Anhang) denke ich sind wir schon gut voran gekommen..Das Projekt wird mit zwei Personen ausgeübt..meine Wenigkeit und meinem Klassenkameraden.
Zu Programmierung haben wir uns ein Evaluationboard von Pollin gegönnt und einen Atmega32 (Ich weiß..der ist ziemlich groß und für diese Anwendung überflüssig...wir haben aber an die Zukunft gedacht falls wir mal weiter spieln wollen mit dem µC) es hätte sicherloich auch ein Atmega8 ausgereicht.. oder noch kleiner... mal schauen vielleicht besorge ich mir ein kleineren.
Folgendes Display haben wir uns bei Pollin besorgt:
LCD-Modul GOLDENTEK GC-1602G0
2-zeiliges LC-Display mit integriertem Controller KS0066 (HD44780 kompatibel). Das Display verfügt pro Zeile über je 16 Zeichen.
Technische Daten:
- 2 Zeilen x 16 Zeichen Text
- integrierter Controller KS0066 (HD44780 kompatibel)
- Betriebsspannung +5 V
- regelbarer Kontrast
- Anzeigefläche 64x15 mm
Maße (BxHxT): 85x35x10 mm.
langsam zweifel ich an der Kompatibilität zum HD44780!!!
Diese haben wir über das Extensionport des Pollin untereinander verbunden:
Mit dem AVR Tutorial haben wir versucht das Display zu Inizialisieren.
das ging schon mal schief...
(Um eines schon mal auszuschließen.....das Evaluationboard mit Atmega funktioniert!!! Haben wir mit ein Testprogramm schon ausprobiert..
was meinst du mit mehrere Modi des ADU?
Wenn du uns zu einer kleinen Abtastfrequenz ratest,nehmen wir den Rat gerne an!
Datenblatt des Controllers ist vorhanden!
Mit C haben wir leider nichts am Hut obwohl hier sehr viel im Netz dafür ist.
Das würde uns auch unser lehrer nicht abnehmen
Was meinst du mit Tabellen zur Darstellung des wertes anlegen?
Wie kann ich mir das Vorstellen?
Der Wert soll auf dem Display inn Lux angegeben werden.
Lg Patrick
|
BID = 454538
Radio Gesprächig
Beiträge: 119
|
@ Perl....
Ist das jetzt ein Nachteil das ich die FET genommen habe... So wie ich sie beschaltet habe sind sie aber richtig...So wie du es meinst hatte ich es schon!
|
BID = 454541
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| Ist das jetzt ein Nachteil das ich die FET genommen habe |
Wenn die FETs klein genug sind (!) ist das kein Nachteil, aber ich denke die Analogschalter 4016 bzw. 4066, oder die Multiplexer 4051 bis 4053 sind bequemer anzuwenden.
Zitat :
| So wie ich sie beschaltet habe sind sie aber richtig...So wie du es meinst hatte ich es schon! |
Ich hatte ja schon geschrieben warum das so nicht optimal ist. Wenn du es anders nicht hinbekommst, weil du zuwenig Steuerspannung für die n-FETs hast, kannst du es aber so lassen. Wenn man es mit sehr kleinen Signalen zu tun hat oder schnell umschalten will, muß man aber auf solche Details achten.
_________________
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !
|
BID = 454563
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Zitat :
|
langsam zweifel ich an der Kompatibilität zum HD44780!!!
|
Doch, ist er; definitiv!
Habt ihr denn die Ausgangsregister der Ports richtig beschroieben? Also die Register DDRx und PORTx? Wenn die Bits im DDRx-Register nicht gesetzt sind, dann kann ein Pin auch nicht auf high oder low schalten.
Ich denke da an die E-, RS-, RW- und Datenpins.
Ich habe hier
https://forum.electronicwerkstatt.d.....54187
mal ein Dokument zur exakten Initialisierung hochgeladen. Danach habe ich mich immer gehalten, auch in Assembler, und es hat immer geklappt.
Mit Tabellen meinte ich folgendes:
Du bekommst vom ADC/ADU ja nur eine Zahl zwischen 0 und 1023 (10 Bit Auflösung), die folgenden Zusammenhang mit der gemessenen Spannung hat:
ADC-Wert/ADC-Auflösung = Spannung/Referenzspannung.
Stellt man das zur anligenden Spannung um, erhälst du:
Spannung = ADC-Wert*Referenzspannung/ADC-Auflösung
Beispielsweise liegt eine Spannung von 2,5V an, wenn die Auflösung 10Bit ist (das entspricht 1024 Schritte, in der die Spannung kodiert ist) und die Referenzspannung 5V beträgt.
So, und um das Ergebnis nicht ausrechnen zu müssen kann man sich behelfen, indem man Tabellen anlegt (Platz ist reichlich vorhanden) und für jedes Mögliche ADC-Ergebnis (0-1023) einen fixen Wert im Speicher abzulegen. Man macht dann ein bischen was mit dem gelesenen Wert, addiert den als Offset auf den Tabellenanfang und ließt dann das Ergebnis aus. Innerhalb weniger Taktzyklen hat man dann das Ergebnis , dass es nur noch entsprechend darzustellen gilt. (wobei hier 1. die Zeit reicht, um das auszurechnen und
2. das mit dem Offset zwar auch hier möglich ist, man aber mit Zahlen >8 Bit zu tun hat.)
Außerdem muss man noch den Zusammenhang von Spannung [U] und Beleuchtungsstärke [lx] beachten.
_________________
[ Diese Nachricht wurde geändert von: DonComi am 31 Aug 2007 22:22 ]
|
BID = 454604
Radio Gesprächig
Beiträge: 119
|
Hier nochmal das Display im Anhang..
Gibt es hierfür eine Standardbelegung?
Wenn ja wo..für diesen Controller
|