PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : min 8 analogeingänge an A/D Wandler



surf_andre
10.03.2005, 23:23
Hallo zusammen

Habe da mal ne Frage in sachen A/D wandler...

Ich möchte ne Heizungssteuerung bauen die neben der Normalen Heizung auf einen Speicher lädt.

Für die Steuerung habe ich mir gedacht das ich so min. 8 PT100 oder der gleichen Temp. Sensoren brauche, die die Vor-, Rücklauf- und Speichertemperaturen aufnehmen.

Nun weiß ich noch nicht genau wie ich die ganzen sensoren am besten an die µC bringe...

Habe mir überlegt das ich das entweder mit einem PCF8591 über I²C oder über einen TLC549 mache.

Nun stellt mir aber die Frage wie ich die einzelnen Analogsignale am besten und einfachsten auf die bausteine Muxe...
Denn eigentlich wollte ich mir den Bus nicht mit PCF8591 volllegen...

Achja noch etwas zu dem System auf dem das Basiert:
µC ist ein at89s8252
LCD Direkt am controller
Ein-/ ausgänge über I²C

Hat jemand sowas schon mal gemacht oder hat eine Idee?

mfg
andré

Winne
10.03.2005, 23:52
Ich benutze einen ATMega 32 der hat 8 Analogeingänge auf PortA und ne I²CISP, JTAG und UART(RS232)
der önnte auch deine 8 sensoren anstricken und ist billiger bei I²C zum 8252 haste noch nen par Ports für Tastatur und nen display frei.

Joe
11.03.2005, 00:16
Jo, sinnvoller ist das schon, direkt einen MC zu nehmen, der schon Analog-Eingänge hat. Gibt aber auch genügend externe Wandler (MAX192 und TLC3548 nehme ich gerne).
PT100: da brauchts entweder spezielle A/D-Wandler oder etwas Analogtechnik, um den geringen Sensorhub auch sinnvoll nutzen zu können. Schöne Sachen gibts dafür u.a. bei LT und TI, aber auch ordinäre OP-Technik ist möglich.
Noch einfacher: inzwischen gibts diverse Senoren, die schon ein digitales Ausgangssignal liefern. Damit bist du wahrscheinlich am besten bedient.

surf_andre
11.03.2005, 00:39
Also die Analog verarbeitung von dem PT100 in ein 0-5V signal ist nicht das problem. Da habe ich schon was...

Das mit dem ATMEGA32 ist nicht schlecht, aber da kommt die faulheit doch etwas durch, der zeitmangel und der platzmangel im Kopf... Mach mal etwas Abendschule und dann noch ne "neue Sprache" lernen ist gerade nicht so angesagt....
Aber die Idee werde ich mal etwas weiter verfolgen...

Peter Dannegger
11.03.2005, 00:51
Am einfachsten, Du nimmst DS18B20 Sensoren, da hast Du direkt einen Digitalwert (1/16° Auflösung).

Programmbeispiel:

http://home.tiscali.de/peterd/appl/soft/c51/thclock/index.htm


Peter

surf_andre
11.03.2005, 15:39
Ich habe noch mal so etwas gestöbert...

Bin auf einen CMos baustein HEF 4051 getroffen, ist ein 1-8 analog Multi-/Demultiplexer.
http://www.standardics.philips.com/products/hef/pdf/hef4051b.pdf

Wenn ich das richtig sehe müßte man doch mit dem auf einen AD wandler 8 Analog signale setzten können... bzw soviele Signale wie ich durch kaskadierung haben will.

Rudo
11.03.2005, 17:08
Nun stellt mir aber die Frage wie ich die einzelnen Analogsignale am besten und einfachsten auf die bausteine Muxe...wie du inzwischen rausgekriegt hast, gibt es ganz viele Wege nach Rom.
Welcher davon der beste und einfachste fuer Dich ist, haengt aber von ganz vielen Randbedingungen ab, die wir nicht alle kennnen. Da kann das Forum Dir die Entscheidung nicht abnehmen.
Beispielsweise noch ein Weg : LTC1290D (-> Linear Technology)

surf_andre
11.03.2005, 17:47
Na ich wollte ja nur mal wissen wer was gemacht hat und wie die erfahrungen mit dem weg waren...

Ich werde das wohl mal mit dem dem MUX ( HEF 4051 ) und einem PCF8591 testen denn wenn man könnte mit der kombi so 32 analog eingänge realisieren... Ist zwar für meine Anwendung etwas viel aber auf jeden fall genug. Werde das mal versuchen modular hinzubekommen damit es einfach ist mal was nachzuflicken....

Aber für weiter ideen bin ich immer offen :-D

Peter Dannegger
11.03.2005, 20:58
Na ich wollte ja nur mal wissen wer was gemacht hat und wie die erfahrungen mit dem weg waren...

Ich habe testweise 7 Stück DS1820 / DS18B20 parallel an 20m Kabel (2-adriger Klingeldraht) betrieben.

Meine Erfahrungen damit sind sehr gut, alles lief auf Anhieb.

Die Meßwerte werden in 0,5° (DS1820) bzw. 0,1° (DS18B20) angezeigt.

Mit einer Taste werden die einzelnen Meßstellen ausgewählt.

Die Drahtanschlüsse der Sensoren habe ich in Schrumpfschlauch eingeschrumpft.



Peter

surf_andre
12.03.2005, 00:00
Sagt mal wo gibt es denn die beschriebenen Dallas DS1820?
Habe sie beim großen C und bei reichelt nicht gefunden..
Und wie liegen die preislich?

andre

Elektrikser
12.03.2005, 00:30
Es gibt da zwei Typen:
- DS18S20
- DS18B20

Habe nur Erfahrungen mit dem DS18S20. Bin ganz zufrieden mit denen. Das einzige was mich ein bißchen stört, ist dass sie ein TO92 Gehäuse haben und nicht wasserfest sind. Ich habe seit einem Test, bei dem ich den Sensor ins Eiswasser gehalten habe und die Tüte, in dem er sich befand, volllief, einen um 3°C falsch gehenden Sensor. Konnte ihn bis jetzt nicht dazu überreden wieder richtig zu messen...

Reichelt und Conrad führen diese. (DS18S20)
Preis? Um die 6€...

Gruß Gerd G.

Elektrikser
12.03.2005, 00:37
Uuuuupps,:confused:. Was ist denn da los?

Reichelt: DS18S20 --> 5,45€
Conrad: DS18S20 --> 4,95€, vorher 6,11€

Seit wann ist Conrad billiger???

Rudo
12.03.2005, 01:30
Reichelt und Conrad führen diese. (DS18S20)
Preis? Um die 6€...das ist ja WUCHER.
Ein Microcontroller mit vier Analogeingaengen (P87LPC767) kostet maximal 3,-, ein KTY81-110 ca. 0,5 Euro.

Peter Dannegger
12.03.2005, 02:31
das ist ja WUCHER.
Ein Microcontroller mit vier Analogeingaengen (P87LPC767) kostet maximal 3,-, ein KTY81-110 ca. 0,5 Euro.

Du hast noch den ganzen analog-Krimskrams (Operationsverstärker, Präzisionsspannungsreferenz, Präzisionswiderstände) vergessen und Deine Arbeitszeit, das alles erstmal zu kalibrieren.

Auch brauchst Du eine höherwertige Verdrahtung und Steckverbinder, da deren Übergangswiderstände mit in die Messung einfließen.
Eventuell sogar 4-Drahtanschluß und auch für jeden Sensor extra Leitungen, parallel schalten ist da nicht.

Und die nötige Software zur Kennlinienkorrektur ist auch nicht ohne.


Rechne mal richtig, dann sind die DS18xx-Dinger dagegen spottbillig !


Peter

Bernd
12.03.2005, 07:08
... Tüte, in dem er sich befand, volllief, einen um 3°C falsch gehenden Sensor. Konnte ihn bis jetzt nicht dazu überreden wieder richtig zu messen...

Hmmm, wenn's wirklich dringend ist und er konstant falsch geht, nimm seine Kennlinie auf und mach eine Tabelle mit den richtigen Werten ;)

Rudo
12.03.2005, 14:11
Du hast noch den ganzen analog-Krimskrams (Operationsverstärker, Präzisionsspannungsreferenz, Präzisionswiderstände) vergessen und Deine Arbeitszeit, das alles erstmal zu kalibrieren.

Auch brauchst Du eine höherwertige Verdrahtung und Steckverbinder, da deren Übergangswiderstände mit in die Messung einfließen.
Eventuell sogar 4-Drahtanschluß und auch für jeden Sensor extra Leitungen, parallel schalten ist da nicht.

Und die nötige Software zur Kennlinienkorrektur ist auch nicht ohne.


Rechne mal richtig, dann sind die DS18xx-Dinger dagegen spottbillig !


Peterich hab doch schon oefters KTY eingesetzt, soo praezisionsartig brauch ich ja meistens nicht die Temp.-Messung, Versorgungsspannung, standard Metallfilmer u. 1 Poti (MC = 80C535) tuns auch.
Vor mir liegt jetzt trotzdem ein Tuetchen mit 10Stck. DS18B20 und ich hab mir auch schon mal dein C-Prog. dafuer angeschaut ;)
Mein Beweggrund war aber letztlich : kein Bock, jetzt einen LPC-Emulator anzuschaffen oder mal wieder einen 8591(ist auch fies teuer) vorm 2051 zu klemmen - also auf, auf zur 1-wire Technik :)

surf_andre
13.03.2005, 17:23
wo wir hier gerade bei tabellen sind, weiß jemand wo das verfahren und erstellen mit den tabellen für nen `51 beschrieben ist? habe zwar das kochbuch aber komme damit nicht klar

andre

edgar
13.03.2005, 17:37
http://www.progforum.com/showthread.php?t=662&highlight=tabellen+8051

a
u
s
p
r
o
b
i
e
r
e
n


:)

Winne
13.03.2005, 18:23
wo wir hier gerade bei tabellen sind, weiß jemand wo das verfahren und erstellen mit den tabellen für nen `51 beschrieben ist? habe zwar das kochbuch aber komme damit nicht klar

andre


in C macht man das mit arrays

Z.B.



Pointers can be grouped in arrays, which can have up to 8 dimensions.
Example:

/* Declare and initialize a global array of pointers to strings
placed in SRAM */
char *strings[3]={"One","Two","Three"};
/* Declare and initialize a global array of pointers to strings
placed in FLASH
The pointer array itself is also stored in FLASH */
flash char * flash messages[3]={"Message 1","Message 2","Message 3"};
/* Declare some strings in EEPROM */
eeprom char m1[]="aaaa";
eeprom char m2[]="bbbb";
void main(void) {
/* Declare a local array of pointers to the strings placed in EEPROM
You must note that although the strings are located in EEPROM,
the pointer array itself is located in SRAM */
char eeprom *pp[2];
/* and initialize the array */
pp[0]=m1;
pp[1]=m2;
}



in Assembler mit EQU für Konstanten
als aller Erstes




.EQU UDRE=0x5
.EQU RXC=0x7
.EQU USR=0xB
.EQU UDR=0xC
.EQU SPSR=0xE
.EQU SPDR=0xF
.EQU EERE=0x0
.EQU EEWE=0x1
.EQU EEMWE=0x2
.EQU EECR=0x1C
.EQU EEDR=0x1D
.EQU EEARL=0x1E
.EQU EEARH=0x1F
.EQU WDTCR=0x21
.EQU MCUCR=0x35
.EQU GICR=0x3B



und für Variablen arays



Tabellenname DB 34,42,46.......
oder
tabelle_2 DW 0xff34,0x3223,..........
oder schlicht mit
string 160 Dup (".")
string_test DB ("test")



natürlich benötigst du dann pointer welche dir den entsprechenden Wert aus dem Array holen dafür verwendet man für gewöhnlich integer- oder long- variablen in einfachen Fällen char.

surf_andre
13.03.2005, 20:23
ja danke edgar mal sehn ob ich damit weiter komme... sonst melde ich mich noch mal...

andré