Forum: Mikrocontroller und Digitale Elektronik uC mit mind. 10 ADC-Eingängen


von Dominik R. (vision)


Lesenswert?

Hallo Zusammen,

ich stehe vor der Aufgabenstellung, mit einem uC (vorzugsweise ATmega) 
10 Sensoren abzufragen, die alle ein analoges Signal liefern.
Am einfachsten wäre es ja, wenn der uC 10 ADC-Eingänge hätte. Leider 
haben die meißten ATmegas ja nur 6 (im DIP) oder 8 (als SMD) 
ADC-Eingänge. Da das ganze auch noch gut von Hand zu löten sein soll, 
würde ich DIP auch preferieren.
Hat einer einen Tipp für mich, ob es da einen uC mit mindestens 10 
ADC-Eingängen gibt, oder ob ich beispielsweise besser einen externen 
ADC-IC nehme?

Auf die Angaben bei reichelt über die Anzahl der Analog-Eingänge 
verlasse ich mich lieber nicht. Da steht der ATmega8A-PU z.b. mit 14 
Analog-Eingängen drin. Meines Erachtens hat der aber doch nur 6, oder?

http://www.reichelt.de/Atmel-ATMega-AVRs/ATMEGA-8A-PU/3/index.html?&ACTION=3&LA=446&ARTICLE=119677&GROUPID=2959&artnr=ATMEGA+8A-PU

Danke schonmal...

von Rene H. (Gast)


Lesenswert?

Hast Du schon mal den Atmel MCU Selector bemüht?

Aber wie ich das sehe wird es da als DIP nicht geben.

Grüsse,
René

von Dennis (Gast)


Lesenswert?

Atmega2560 hat 16x 10bit allerdings tqfp.

diesen könntest aber auf einen adapter löten.
könntest aber auch ein arduino nehmen da sitzt der auch drauf.

von Matthias L. (Gast)


Lesenswert?

TQFP 0.5mm kann man bei ordentlicher Platine (mit Lötstopplack) ohne 
Probleme mit der Hand löten.

von Wolfgang H. (frickelkram)


Lesenswert?

Hi Dominik,

Dominik R. schrieb:
> Hallo Zusammen,
>
> ich stehe vor der Aufgabenstellung, mit einem uC (vorzugsweise ATmega)
> 10 Sensoren abzufragen, die alle ein analoges Signal liefern.
...
> Hat einer einen Tipp für mich, ob es da einen uC mit mindestens 10
> ADC-Eingängen gibt, oder ob ich beispielsweise besser einen externen
> ADC-IC nehme?

Hast Du mal überlegt zumindest einen Teil der Eingänge zu multiplexen? 
Eine Eingangsbeschaltung benötigst Du ja wahrscheinlich sowieso 
(Verstärker, Puffer, Eingangsfilter), dann sollte ein Multiplexer auch 
noch rein passen. Oder hast Du eine harte Anforderung an die Meßzeiten 
und kannst deshalb nicht multipexen?

von ich (Gast)


Lesenswert?

Dennis schrieb:
> Atmega2560 hat 16x 10bit allerdings tqfp.
>
> diesen könntest aber auf einen adapter löten.
> könntest aber auch ein arduino nehmen da sitzt der auch drauf.

Wenn du ihn auf einen Adapter löten kannst, dann kannst du ihn auch 
gleich auf die Platine löten. Warum einen 100poligen Adapter 
zwischenlöten?

von Dennis (Gast)


Lesenswert?

weil es ggf auf lochraster kommen könnte,steht nichts dabei daher wäre 
dies eine möglichkeit.

von ./. (Gast)


Lesenswert?

> uC 10 ADC-Eingänge

PIC16F886: 14 ADC-Eingänge

von Udo S. (urschmitt)


Lesenswert?

Warum so ein 100 pin Monster wenn man genausogut einen 4051 
Analogmultiplexer nehmen kann?

von Dominik R. (vision)


Lesenswert?

Danke schonmal für die Vorschläge.

An einen Multiplexer hatte ich auch schon gedacht. Wie funktioniert das 
bei einem Multiplexer, dass ich weiss, von welchem Sensor das Ergebnis 
kommt. Über eine Steuerleitung?

Das mit dem Atmega2560 bzw. Arduino ist auch 'ne super Idee. Löten traue 
ich mir glaube ich nicht zu, aber wenn es den eh schon auf einem 
fertigen Board gibt, um so besser.

von Justus S. (jussa)


Lesenswert?

Dominik R. schrieb:
> An einen Multiplexer hatte ich auch schon gedacht. Wie funktioniert das
> bei einem Multiplexer, dass ich weiss, von welchem Sensor das Ergebnis
> kommt.

natürlich von dem, dessen Signal du gerade durchschaltest...

von Joe (Gast)


Lesenswert?

Ein Atmega32 u.ä. (DIP) hat 8 ADC's.

Nimm einen CD4051 8-Kanal analoger Multiplexer dazu, das dürfte reichen.

Joe

von Matthias L. (Gast)


Lesenswert?

Je nach Sensor kannst du die auch abschalten und die Analogausgänge 
"parallel" an einen ADC-Eingang hängen...

von leluno (Gast)


Lesenswert?

eine schlichte Lösung wäre ein Zweiter Atmega im slave-betrieb

von Matthias L. (Gast)


Lesenswert?

>eine schlichte Lösung wäre ein Zweiter Atmega im slave-betrieb

Ja genau. Mit Kommunikationsprotokoll dazwischen....

von Dominik R. (vision)


Lesenswert?

Justus Skorps schrieb:
> natürlich von dem, dessen Signal du gerade durchschaltest...

Ich bin noch recht neu im Bereich uC und habe noch nie mit Multiplexern 
gearbeitet. An sich ist mir die Funktionsweise im groben klar. Mehrere 
Eingänge werden auf einen Ausgang gelegt. Aber wie das mit der 
Durchschaltung funktioniert ist mir bisher halt noch nicht bekannt. Gibt 
es da in Digital Input der bei jedem High einen Eingang weiter schaltet, 
oder wie läuft das?

Lg
Dominik

von Peter D. (peda)


Lesenswert?

ATtiny861:
DIP-20
11 ADC-Eingänge 10Bit

von Wolfgang H. (frickelkram)


Lesenswert?

Hi Dominik,

Dominik R. schrieb:
> Danke schonmal für die Vorschläge.
...
> Das mit dem Atmega2560 bzw. Arduino ist auch 'ne super Idee. Löten traue
> ich mir glaube ich nicht zu, aber wenn es den eh schon auf einem
> fertigen Board gibt, um so besser.

dann suche Dir doch eine passendes Arduino Zusatzplatine z.B. auf eBay.
Alternativ kannst Du auch über Sensor-Adapter nachdenken, die Dir die 
Ergebnisse digital, z.B. über I2C oder SPI-BUS liefern. Du kannst 
entweder fertige I2C A/D Wandler mit entsprechendem BUS nehmen oder 
selbst etwas mit z.B. AT-Tiny13-ern bauen.

Mach Dir vorher noch mal Gedanken über die benötigten Abtastraten. Jeder 
Wandler braucht eine gewisse Zeit um einen Analogwert messen zu können. 
Wenn Du mit einem einzigen A/D Wandler im Multiplex-Betrieb arbeitest 
addieren sich die Zeiten. Wenn Du mehrere A/D Wandler parallel betreibst 
und die Ergebnisse nur abrufst ist das wahrscheinlich insgesamt 
schneller.

Die Genauigkeit ist ein zusätzliches Problem. Beim Multiplexer musst Du 
eventuell Wartezeiten einhalten, damit sich nach dem Umschalten der 
Signalpegel vor der Messung einstellen kann. Bei vielen, verteilten A/D 
Wandlern musst Du auf das Design der Versorgungspannung achten. Wilder 
Drahtverhau und schlecht gefilterte Spannungen führen da schnell zu 
falschen Ergebnissen.

Überschlage also mal ein paar Randbedingungen bevor Du Dich für ein 
bestimmtes Verfahren entscheidest.

von Wolfgang H. (frickelkram)


Lesenswert?

Matthias Lipinsky schrieb:
>>eine schlichte Lösung wäre ein Zweiter Atmega im slave-betrieb
>
> Ja genau. Mit Kommunikationsprotokoll dazwischen....

Ja. Dafür gibt es fertige Libs ... Ich vermute mal das die Hardware für 
Dominik die größere Hürde ist als die Software ...

von Buck Rogers (Gast)


Lesenswert?

leluno schrieb:
> eine schlichte Lösung wäre ein Zweiter Atmega im slave-betrieb

Nein, eine schlichte Lösung ist ein 4051 aber nicht ein 2. MC der auch 
erst mal programmiert werden muss damit er überhaupt was macht.

von Justus S. (jussa)


Lesenswert?

Dominik R. schrieb:
> Ich bin noch recht neu im Bereich uC und habe noch nie mit Multiplexern
> gearbeitet. An sich ist mir die Funktionsweise im groben klar. Mehrere
> Eingänge werden auf einen Ausgang gelegt. Aber wie das mit der
> Durchschaltung funktioniert ist mir bisher halt noch nicht bekannt. Gibt
> es da in Digital Input der bei jedem High einen Eingang weiter schaltet,
> oder wie läuft das?
>
> Lg
> Dominik

http://www.mikrocontroller.net/articles/Multiplexen

von Uwe (de0508)


Lesenswert?

Hier ist ein weitere Vorschlag;

einen atmega32u4 auf diesem Board:

http://www.ehajo.de/Bausaetze/Atmega32U4-Breakout-Board?source=2

Lochraster und Steckbrett sind auch möglich.

von Wolfgang H. (frickelkram)


Lesenswert?

Ok, damit das Löten einfacher wird
http://www.watterott.com/de/Analog/Digital-MUX-Breakout
Dazu das Datenblatt vom 74HC4067 im Internet suchen.

von LostInMusic (Gast)


Lesenswert?

>Gibt es da in Digital Input der bei jedem High einen Eingang weiter
>schaltet, oder wie läuft das?

Es gibt n Steuereingänge zum Auswählen eines der 2^n Eingänge.

von Stefan (Gast)


Lesenswert?

Der analog Multiplexer funktioniert genau so, wie derinterne im 
Mikrocontroller. Du stellst ein, auf welchen Eingang er schalten soll. 
Beim AVR gibts dazu ein Register, beim externen Multiplexer sind es drei 
Steuerleitungen (für die Werte 0-7).

von wieOskar (Gast)


Lesenswert?

Servus,

in der Regel hat ein MC sowieso nur einen ADC der intern gemultiplext 
ist. Also macht es zeitlich keinen Unterschied wo man das Multiplexing 
macht. Außerdem kann ein AtMega die Daten auch gar nicht parallel 
verarbeiten. Das nur zum Thema harte anforderungen an Messzeiten.
 Ich würde einfach nach einen passenden analog Multiplexer suchen, die 
gibt es meißt mit 8 bzw 16 Eingängen.

von Dominik R. (vision)


Lesenswert?

Stefan schrieb:
> Der analog Multiplexer funktioniert genau so, wie derinterne im
> Mikrocontroller. Du stellst ein, auf welchen Eingang er schalten soll.
> Beim AVR gibts dazu ein Register, beim externen Multiplexer sind es drei
> Steuerleitungen (für die Werte 0-7).

Jetzt hab auch ich das mal kapiert. Damit kann ich arbeiten. Die 
messzeit sollte kein Thema sein. Dann kann ich ja einfach einen ATmega8 
nehmen, den ich hier eh noch rumliegen habe, einen 8-Kanal-Multiplexer 
und schon habe ich sozusagen 15 analoge Eingänge (6 direkt am uC, wovon 
einer vom Multiplexer belegt ist und eben 8 am Multiplexer)...

Dankööööö

von Michael S. (rbs_phoenix)


Lesenswert?

1. :
Peter Dannegger schrieb:
> ATtiny861:
> DIP-20
> 11 ADC-Eingänge 10Bit

2. :

Dominik R. schrieb:
> und schon habe ich sozusagen 15 analoge Eingänge (6 direkt am uC, wovon
> einer vom Multiplexer belegt ist und eben 8 am Multiplexer)...

Bei mir macht 6-1+8 nicht 15 sondern 13 ;)

von Dominik R. (vision)


Lesenswert?

Michael Skropski schrieb:
> Bei mir macht 6-1+8 nicht 15 sondern 13 ;)

Hast ja Recht ... :-)

von Uwe (de0508)


Lesenswert?

Hallo Dominik,

bitte lies auch die beiden application notes von Atmel zum Thema ADC.
So sind deine Anforderungen an die Genauigkeit nicht so hoch, erst 
recht, wenn du Vcc=+5V als Referenzspannung einstellst !

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.