Forum: Mikrocontroller und Digitale Elektronik analog Multiplexer 16 Eingänge auf 8 Ausgänge u. LCD auslesen


von Marcel F. (kellertuer)


Lesenswert?

Gibts sowas? Ich habe nichts gescheites gefunden, außer Video oder 
Ethernet-Arrays.. das ist mir zuviel des Guten.

Es sollen ganz simpel 16 analoge Signale auf 8 ADC's eines Atmel geführt 
werden, erst die einen 8, dann die anderen 8. Dabei sollen die Kanäle 
weder durch Massen getrennt werden, noch muss der Chip besonders schnell 
sein.

Das man das auch mit Transistoren lösen kann, ist mir klar, jedoch 
sollte  das nur Plan B sein.

von Thomas E. (thomase)


Lesenswert?

Marcel F. schrieb:
> Das man das auch mit Transistoren lösen kann, ist mir klar
Mir nicht.

74HC4053. Triple 2-channel analog multiplexer/demultiplexer.

mfg.

von Marcel F. (kellertuer)


Lesenswert?

Thomas Eckmann schrieb:
> Triple 2-channel analog multiplexer/demultiplexer.

Über die bin ich auch schon gestoßen. 3 IC's sind mir zuviel, deshalb 
fragte ich nach 16 zu 8 :)

Um deine Unklarheiten bezüglich der Transistoren zu klären: es kommen 
nur die Stufen 0,1,2 und 3 Volt vor.

von holger (Gast)


Lesenswert?

>74HC4053. Triple 2-channel analog multiplexer/demultiplexer.

74HC4051 8 Channel to 1 multiplexer;)

von Marcel F. (kellertuer)


Lesenswert?

holger schrieb:
> 74HC4051 8 Channel to 1 multiplexer;)

alles nett, geht aber an der Fragestellung vorbei :O)

die geposteten Varianten hab ich auch alle selbst gefunden. Googel kann 
ich bedienen, denk ich :)

von Thomas E. (thomase)


Lesenswert?

holger schrieb:
> 74HC4051 8 Channel to 1 multiplexer;)

Und was soll das bringen?

mfg.

von Thorsten (Gast)


Lesenswert?

evtl. von Maxim: MAX4758, MAX4759, MAX4760

von holger (Gast)


Lesenswert?

>> 74HC4051 8 Channel to 1 multiplexer;)
>
>Und was soll das bringen?

Er hat gesagt es muss nicht schnell sein.
Spart dann auch noch 6 ADC Eingänge;)

von Marcel F. (kellertuer)


Lesenswert?

holger schrieb:
> Spart dann auch noch 6 ADC Eingänge;)

falsch, würde 7 sparen :)

jedenfalls wäre das auch nur plan b.

von Sam .. (sam1994)


Lesenswert?

Thomas Eckmann schrieb:
> holger schrieb:
>> 74HC4051 8 Channel to 1 multiplexer;)
>
> Und was soll das bringen?

Ganz einfach, der TO braucht zwar 16->8, vergisst aber dass der avr 
immer nur einen Kanal wandeln kann. D.h. 16->1 bringt genauso viel, bzw. 
ist besser da der interne Demux nicht gebraucht wird (soweit ich weiß 
braucht der zum umschalten auch seine Zeit). Außerdem könnte man 
mithilfe eines 4bit Zählers, die maximale Geschwindigkeit zum Einlesen 
der Daten erreichen, da HW-seitig umgeschalten werden kann (ADC dann im 
Freerunning-mode).

von Marcel F. (kellertuer)


Lesenswert?

Samuel K. schrieb:
> vergisst aber dass der avr
> immer nur einen Kanal wandeln kann.

das stimmt, an sowas hab ich nich gedacht! unter diesen bedingungen ist 
ja 16->8 wirklich sinnlos..

von Olaf (Gast)


Lesenswert?

> Ganz einfach, der TO braucht zwar 16->8, vergisst aber dass der avr
> immer nur einen Kanal wandeln kann.

Naja, es hat ja noch keiner gesagt fuer welchen Controller genau. 
vielleicht ist Atmel ja mittlerweile schon so schlau wie Renesas und hat 
auch Controller mit mehr als einem AD-Wandler die dann parallel arbeiten 
koennen?

Olaf

von Marcel F. (kellertuer)


Lesenswert?

Olaf schrieb:
> fuer welchen Controller genau

ich hab an einen kleinen gedacht, der 8 ADC's hat, zB der ATMEGA16

von Thomas E. (thomase)


Lesenswert?

Marcel F. schrieb:
> der 8 ADC's hat

Der hat nur einen ADC mit vorgeschaltetem 8 zu 1 Mux. Da haben die 
anderen schon Recht. Mit einem 16 zu 1 Mux auf einen Eingang erreichst 
du das Gleiche.

mfg.

von Marcel F. (kellertuer)


Lesenswert?

Thomas Eckmann schrieb:

> Der hat nur einen ADC mit vorgeschaltetem 8 zu 1 Mux.

gut, wieder was gelernt. In welcher Preisklasse bewegt man sich denn, 
wenn man nen uC mit 8 parallelen ADC haben will? Gibts sowas überhaupt?

von Thomas E. (thomase)


Lesenswert?

Marcel F. schrieb:
> Gibts sowas überhaupt?

Zwei sind nicht ungewöhnlich (Xmega). Aber acht?.

mfg.

von Matthias L. (Gast)


Lesenswert?

>nen uC mit 8 parallelen ADC haben will?

Wozu brauchst du das denn?

Wenn du wirklich zeitgleich samplen willst, dann suche mal bei analog 
devices. Es gibt Wandler, die können alle Kanäle zeitgleich samplen und 
einzeln digitalisieren.

von Marcel F. (kellertuer)


Lesenswert?

ne, so wichtig ist das nicht. Ich will die Werte einer Digitalwaage 
abfangen. Das geht nur darüber, die Signale des Displays abzufangen. Die 
Waage aktualisiert das Display ca 1 mal pro Sekunde. Das Display hat 4 
Commons. Es wird 4fach multiplext und deshalb setzen sich die Signale 
aus den Werten 0,1,2 und 3 V zusammen.
16 Leitungen hat das Display. Naja, dann hol ich mir die Werte alle 
nacheinander, ist ja nich wild! Selbst dann hab ich immernoch genug 
Platz, um das Display mehrere hundert mal pro Sekunde abzufragen und nen 
gescheiten Wert zu mitteln.

von Klaus (Gast)


Lesenswert?

Marcel F. schrieb:
> ne, so wichtig ist das nicht. Ich will die Werte einer Digitalwaage
> abfangen. Das geht nur darüber, die Signale des Displays abzufangen.

Du willst also ein gemultiplextes (vermutlich LCD) Display mit einem ADC 
mitlesen? sportlich !

MfG Klaus

von Marcel F. (kellertuer)


Lesenswert?

Klaus schrieb:
> sportlich

was meinst du damit?

von Sam .. (sam1994)


Lesenswert?

Er meint das ist schwer zu erreichen. Ich würde auf gar nicht tippen. 
Die Treiber sind alle sehr schnell im Multiplexen.

von Marcel F. (kellertuer)


Lesenswert?

ich hab hier ne Periode von 75Hz und eine Periode besteht aus 8 
verschiedenen "Zeitschlitzen", also 600Hz. In diesen 600Hz = 1,7ms muss 
ich alle 16 Leitungen möglichst mehrmals auslesen. Gehen wir von 5 mal 
pro Leitung aus. Macht 80 ADC-Umsetzungen pro 1,7ms, also pro Umsetzung 
21us. Im Datenblatt steht "13 μs- 260 μs Conversion Time". Welche Zeit 
such ich mir jetz aus?

von Sam .. (sam1994)


Lesenswert?

ok das ist sehr langsam. Meinen Lcd Treiber hier (PCF8577) würdest du 
nicht geloggt bekommen. Nimm doch einfach das schnellste, du kannst die 
Frequenz des ADC auch verdoppeln, dann kommst du auf 6,5us (dabei sinkt 
die Genauigkeit, aber du brauchst ja nur 2bit). Also das reicht dir 
aufjedenfall.

von Marcel F. (kellertuer)


Lesenswert?

achso, der ADC brauch 260us bei 10bit und entsprechend weniger bei 
weniger bit? supi, passt mir ;)

von Klaus (Gast)


Lesenswert?

Ich bleib bei sportlich.

MfG Klaus

von Sam .. (sam1994)


Lesenswert?

Der ADC braucht wie im Datenblatt bei 10bit 13-260µs. Sobald man 
darunter geht (<13µs), gehen die Bits (Auflösung) runter.

Klaus schrieb:
> Ich bleib bei sportlich.

Bei den Daten gehe ich zu einfach, wenn man kein Bascommer ist.

von Marcel F. (kellertuer)


Lesenswert?

Klaus schrieb:
> sportlich

Erläutere mir deine Zweifel. Ich lerne gern dazu.

@samuel: "Der ADC braucht wie im Datenblatt bei 10bit 13-260µs"
Was bedeutet denn das genau? Kann ich nicht genau vorhersagen, wie lange 
der ADC brauchen wird? Es kann also sein, dass er mal nach 13us und mal 
nach 260us fertig ist, je nach Wetter?

von Sam .. (sam1994)


Lesenswert?

Lies dir mal das Tut zum thema ADC durch. Der hat nämlich eine eigene 
Clock.

von Klaus (Gast)


Lesenswert?

OK, es geht nicht nur um die Geschwindigkeit, du mußt auch synchron mit 
der Multiplexfrequenz messen. Ansonsten bekommst du Werte, die du nicht 
den einzelnen Phasen beim Multiplexen zuordnen kannst. Dazu ist eine 
Synchronisation deines µC mit dem Display erforderlich. Außerdem ist 
eine volle Kontrolle der Timings des Sample and Hold und des ADC Moduls 
erforderlich.

Ob das mit deinem µC klappt? Ich würde versuchen, die Wägezellen selbst 
auszulesen. Auch nicht ganz einfach, aber die chinesischen 
Waagenhersteller schaffen es auch.

MfG Klaus

von Sam .. (sam1994)


Lesenswert?

Da fällt mir gerade ein: Ist ein Lcd-Treiber auf der Platine? Falls ja 
wird er wahrscheinlich mit I2C angesprochen, da kann man mithören.

von Marcel F. (kellertuer)


Lesenswert?

Klaus schrieb:
> synchron mit
> der Multiplexfrequenz messen

Darüber hab ich mir auch schon Gedanken gemacht. Ich glaube, die 
Synchronität ist nicht so wichtig, denn ich bekomm nur im Umschaltmoment 
der Waage falsche Werte. Da die Waage aber nur aller Sekunde den Wert 
ändert, kann ich damit leben. Ich lese die Periode dann zwar versetzt 
aus, aber die Summe der einzelnen Spannungen bleibt gleich.

Bsp: für ein aktiviertes Segment kommt diese Folge von Spannungen:
Leitung 1: 2,2,0,1,1,1,3,2
Leitung 2: 1,1,3,2,2,2,0,1
Diff:  -1,-1,3,1,1,1,-3,-1

Summe der Beträge: 12 (entspricht aktiviertem Segment, für ein 
deaktiviertes Segment beträgt die Summe 8)

Ob ich nun beim ersten Wert anfange 8 Werte mitzuschneiden und die 
Differenz bilde, oder beim 5. anfange und 8 Werte mitschneide, das 
spielt keine Rolle.

Die Fehler zu erkennen ist dann Softwaresache.


Ein Treiber is nich drauf. Da ist ein schwarzer Klecks, dort geht alles 
rein und raus(LCD, Tasten, DMS).. noch nicht mal ein OPV ist da drauf..

von Klaus (Gast)


Lesenswert?

Marcel F. schrieb:
> Die Fehler zu erkennen ist dann Softwaresache.

Na dann mal los!

MfG Klaus

von Marcel F. (kellertuer)


Lesenswert?

Ich melde mich wieder, wenn mein Kopf raucht ;)
Oder spätestens wenn das Ding läuft..

von Marcel F. (kellertuer)


Lesenswert?

Möge ein mod mal bitte in der Überschrift ergänzen: "+ LCD auslesen", da 
der zweite Teil der Diskussion sich ja mehr ums Display dreht :)

von Marcel F. (kellertuer)


Lesenswert?

So, ich habe mich entschieden, dass Synchronität doch wichtig ist, da 
ich nicht knallhart in ASM code und so Zeitvorhersagen schwierig sind. 
Die wären jedoch wichtig, um im Takt zu bleiben (ich muss sicherstellen, 
dass mit einem exakten Vielfachen der Displayfrequenz arbeite, da sich 
sonst recht schnell die Abtastzeitpunkte aus den entsprechenden Zyklen 
verschieben würden).

Also werde ich einen externen Interrupt-Takt aus dem Displaytakt 
erzeugen und kann dann sicherstellen, dass immer zum richtigen Zeitpunkt 
gelesen wird. Kann der MC während einer AD-Umsetzung eigentlich sein 
Programm weiter ausführen oder ist er dann busy?

von Marcel F. (kellertuer)



Lesenswert?

So, der halbe Weg ist geschafft.

Auf dem Bild seht ihr in blau einen von 16 Kanälen der 
Displayansteuerung, dabei sind gut die 8 "Zeitschlitze" zu erkennen, die 
sich immer wiederholen. Darunter in gelb seht ihr die visuelle Ausgabe 
der AD-Umsetzungen. Habe einen Pin auf high gesetzt, solange der ADC 
beschäftigt ist.
Ein gelber, dicker Peak steht für 16 AD-Umsetzungen (16 Kanäle müssen 
pro Zeitschlitz abgetastet werden), auf dem 2. Bild ist das besser zu 
erkennen.

Die passende Multiplex-Hardware mit nem 4067 ist auch schon gebaut, wird 
vom MC angesteuert und funktioniert. Kleine Kinderkrankheiten sind noch 
zu beheben und die Auswertung bzw Ausgabe der gesampelten Daten muss 
noch gecoded werden. Aber jetz is erstmal WE :)

von Marcel F. (kellertuer)


Lesenswert?

Mittlerweile erkennt der AVR das auf dem Display der Waage angezeigte 
Gewicht und speichert es in ner Variable, dh wenn zB 126g auf der Waage 
angezeigt werden, befindet sich in der Variable der Wert 126.

Der Rest ist Kleinkram:
- Auswerten von "g", "kg" etc
- Ausgabe bereitstellen

Damit darf ich mich dann also offiziell als sportlich bezeichnen?? ;O)

Wenn das Projekt fertig ist (Doku, Schaltplan etc), werd ichs hier 
veröffentlichen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.