Daten vom ADU einlesen Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte
Autor |
|
|
|
BID = 794854
Offroad GTI Urgestein
Beiträge: 12733 Wohnort: Cottbus
|
|
Hallo Leute,
es geht um folgendes:
Die Daten eines Analog-Digital Wandlers (ADS1213) sollen mit einem Atmega eingelesen und auf einem LCD angezeigt werden.
Nur wie muss der µC programmiert werden, dass das auch funktioniert?
Gibt es schon fergite Bibliotheken, die man da einbinden kann?
Angesichts dieses Problem seht ihr mich ziemlich
Vielleicht hat ja jemand einen guten Tipp für mich.
P.S. Das ganze soll für eine mehrkanalige Spannungsmessung sein.
MfG Mathias
_________________
Theoretisch gibt es zwischen Theorie und Praxis keinen Unterschied. Praktisch gibt es ihn aber. |
|
BID = 794870
wulf Schreibmaschine
Beiträge: 2246 Wohnort: Bozen
|
|
Hallo,
wie du sicher bereits gemerkt hast hat der AD Umsetzer eine SPI Schnittstelle. Du brauchst einen µC mit einer SPI Schnittstelle (meist im USART enthalten) und dann hast du schonmal eine Hardwareunterstützung. Alternativ kannst du auch die gesamte Schnittstelle mit normalen I/O Pins ausprogrammieren, ist aber aufwändig.
Aber auch mit Hardwareschnittstelle wirst du einiges programmieren müssen. Eine Bibliothek für diesen AD Umsetzer (passend zu deinem µC) kannst du zwar im Internet suchen, aber ich hätte keine Hoffnung sowas zu finden.
Also LOS, ran an den Texteditor!!
Übrigens: Hast du schonmal eine AD Umsetzung bei 22Bit gemacht? Da ist auch die Signalverarbeitung auf der analogen Seite und die Spannungsversorgung der ADU kein Spaß mehr. Wenn du da nicht aufpasst gehen sehr schnell einige Bits im Rauschen oder in Störungen unter.
Grüße
Simon
EDIT: Für die Ansteuerung von HD44780 kompatiblen LCDs gibts für die meisten µC bereits Bibliotheken.
[ Diese Nachricht wurde geändert von: wulf am 31 Okt 2011 20:35 ] |
|
BID = 794877
Offroad GTI Urgestein
Beiträge: 12733 Wohnort: Cottbus
|
Zitat :
| Du brauchst einen µC mit einer SPI Schnittstelle |
Zur Anwendung kommt ein Atmega88. Und der sitzt praktischer Weise schon auf einer kleinen Experimentier-Platine.
Programmiert wird er dann in BASCOM.
Zitat :
| Hast du schonmal eine AD Umsetzung bei 22Bit gemacht? |
Nein.
Zitat :
| Wenn du da nicht aufpasst gehen sehr schnell einige Bits im Rauschen oder in Störungen unter. |
Das wäre nicht unbedingt das Problem. Eigentlich wollte ich einen 16Bit ADU verwenden, habe dann aber den gefunden, und er ist sogar noch billiger
Zitat :
| Also LOS, ran an den Texteditor!! |
Schön gesagt. Nur was muss da eingegeben werden?
Zitat :
| Für die Ansteuerung von HD44780 kompatiblen LCDs gibts für die meisten µC bereits Bibliotheken. |
Glücklicher Weise gibt es dafür auch noch tonnenweise Erklärungen auf AVR-Webseiten. Das wird dann wohl das kleinste Problem werden.
MfG Mathias
_________________
Theoretisch gibt es zwischen Theorie und Praxis keinen Unterschied. Praktisch gibt es ihn aber.
|
BID = 794880
Her Masters Voice Inventar
Avatar auf fremdem Server ! Hochladen oder per Mail an Admin
Beiträge: 5308 Wohnort: irgendwo südlich von Berlin
|
was hast du eigentlich gegen den eingebauten AD vom M88?
|
BID = 794882
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Hallo,
Typischerweise bedient man derlei Chip eher aus Sprachen wie C, denn C ist allgemein geeigneter, Hardware-Treiber zu schreiben, was ja hier gemacht werden muss.
Wie auch immer, der erste Schritt besteht daraus, die Kommunikation mit dem Chip herzustellen, also Daten lesen und schreiben.
Darauf aufbauend erfolgt dann die Kommunikation mit den Registern im ADC, die ja gebraucht werden, um den ADC zu konfigurieren.
Kann man Register des ADCs gezielt manipulieren, dann implementiert man darauf aufbauend ein paar Funktionen um den ADC zu initialisieren, einen Befehl auszuführen, zu testen, ob Daten bereit sind, Samples einlesen und so weiter.
Das alles geschieht halt auf Datenblatt-Basis, wo alle Register und die entsprechenden Bits definiert und erklärt werden. Das geht im Datenblatt ab Seite 18 los.
Zunächst wählt man via Instruction Register aus, welches Register (Registeradresse in Bit0-3) man mit welcher Wortbreite (Bit5-6) lesen (Bit7=1) oder schreiben (Bit7=0) will.
Der Adressoffset des Command Registers ist 0x04 und das Register ist 32 Bit groß. Man würde also, um es zu schreiben, folgenden Wert ins IR schreiben:
IR = 01100100
^^ ^ ^---- 0100 (0x4) ist Startadresse
|| +------ Bit 4 muss 0 sein
|+-------- gewünschte Wortbreite der Leseoperation 11 -> 4 Byte
+--------- schreiben
Hier könnte man das in eine Funktion kapseln, in BASIC viellecht so:
Function ADS_write_command_reg(Command as Long)
ADS_write_IREG(&H64)
ADS_write_long(Command)
End Function
Und so hangelt man sich durchs Datenblatt, bis alles im Texteditor steht .
Meistens beginnt man damit, symbolische Bezeichner für Registeradressen und Bit-Positionen festzulegen, z.B. ADS_INSTRREG_RW = 7 (Lese-Schreibe-Bit), ADS_ADS_INSTRREG_WORD_LEN = 5 (Wortbreite) usw.
Das klingt erstmal blödsinnig, macht es unglaublich leichter, nach zwei Wochen weiterzuprogrammieren, außerdem kann man daraus dann eine Bibliothek erzeugen, von denen auch andere profitieren.
_________________
|
BID = 794890
QuirinO Schreibmaschine
Beiträge: 2205 Wohnort: Behringersdorf
|
Die 22 Bit wirst du im Leben nicht erreichen, ich würde mich an deiner Stelle mit 10 oder 12 zufrieden geben. Rechne mal aus, in welche Millivolt-Bereiche du da vorstösst. Da Habe deine Bauteiltoleranzen bei 1% ja schon einen grösseren Einfluss als das Achte Bit, von Temperaturschwankungen, Referenzspannung, Rauschen der Versorgungsspannung, Offsets von Verstärkern etc. ganz zu schweigen... Ich würde Perls Meinung dazu gerne mal hören :-O
|
BID = 794903
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Ich schliesse mich da an:
Zitat :
| Die 22 Bit wirst du im Leben nicht erreichen, |
Bei einem sauberen Aufbau, ohne gröbere Schnitzer bei Schaltung und Layout, sollten 16 stabile Bit möglich sein, 18 Bit vielleicht mit Ach und Krach und viel Glück aber die weiteren Bits werden i.W. aus Rauschen bestehen.
Ruhige 20 Bit bekommt man nur bei sehr sorgfältigem Design zu sehen; da steckt dann schon echte Entwicklungsarbeit dahinter.
|
BID = 794906
Offroad GTI Urgestein
Beiträge: 12733 Wohnort: Cottbus
|
Zitat :
| Die 22 Bit wirst du im Leben nicht erreichen |
Dies ist mir, wie bereits erwähnt, durchaus bewusst.
|
BID = 795075
Offroad GTI Urgestein
Beiträge: 12733 Wohnort: Cottbus
|
@DonComi
Danke für die Erklärung.
Das ist ja doch mehr Aufwand, als gedacht.
Habe gerade noch eine Seite gefunden, auf der ein Quellcode für einen anderen ADU geschrieben steht: Hier
Überblickt jemand auf die Schnelle, inwieweit der Code für den ADS1213 brauchbar ist?
Anbei noch eine Prinzip-Skizze, der geplanten Schaltung.
MfG Mathias
|
BID = 795093
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Auf den ersten Blick nicht.
Das ist eine Arbeit von vielleicht drei, vier Stunden, dann läuft die Sache; vielleicht weniger.
Allerdings habe ich jetzt mal gegoogelt und http://www-user.tu-chemnitz.de/~heha/hs_freeware/ADS121x.zip gefunden. Der Verfasser hat sich allerdings, sagen wir mal so, nicht an allgemein anerkannte Programmierregeln gehalten, also sehr unübersichtlich und nicht modularisiert.
Mit ein bisschen Aufwand könnte man da sicherlich den interessanten Teil rausholen, ein wenig überarbeiten (vor allem IO-Geschichten) und dann nutzen.
_________________
|
BID = 795118
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| Anbei noch eine Prinzip-Skizze, der geplanten Schaltung. |
Schön.
Aber erwarte lieber weder von der Schaltung noch vom Programm, dass da irgendetwas auf Anhieb so läuft, wie du dir das vorstellst.
Du wirst ein oder zwei Muster bauen müssen, an dem du das Verhalten und die Probleme studieren und verbessern kannst, bevor du sagen kannst: So wird's gemacht!
Kurzum, du musst das lernen, wenn etwas brauchbares zustande kommen soll.
Momentan scheint mir, daß du folgende Aufgabenblöcke zu lösen hast:
* Digitales Interface des gewählten µC (an welche Ports schliesse ich was am besten an)
* Analoges Interface des ADC (Vorverstärker, Überspannungsschutz usw.),
* Programmierung der Schnittstelle zum ADC (Datenaustausch und Parametrierung des ADC)
* Programmierung der Schnittstelle zum Display
* Wahrscheinlich Programmierung einer Benutzerschnittstelle (z.B. Tastatur, RS-232, USB)
* Programmierung der eigentlichen Aufgabe (Kalibrierfaktoren, Steuerung der Kanäle, Umrechnungen Binär-BCD-ASCII, Darstellung auf dem Display).
Das alles wird nicht von heute auf morgen möglich sein, und ich garantiere dir eine Menge Fehler und stundenlange, wenn nicht tagelange, Suche nach diesen!
|
BID = 795124
Offroad GTI Urgestein
Beiträge: 12733 Wohnort: Cottbus
|
Zitat :
| und ich garantiere dir eine Menge Fehler und stundenlange, wenn nicht tagelange, Suche nach diesen! |
Da hast du völlig Recht.
Das bin ich aber auch schon von anderen Projekten gewohnt.
Bis jetzt hatte ich mich aber größtenteils auf Analogtechnik beschränkt.
_________________
Theoretisch gibt es zwischen Theorie und Praxis keinen Unterschied. Praktisch gibt es ihn aber.
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 23 Beiträge im Durchschnitt pro Tag heute wurden bisher 0 Beiträge verfasst © x sparkkelsputz Besucher : 182306605 Heute : 27 Gestern : 4419 Online : 568 10.11.2024 0:13 3 Besucher in den letzten 60 Sekunden alle 20.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0552010536194
|