Forum: Mikrocontroller und Digitale Elektronik Wahl eines Controllers für bestimmte Aufgabe


von Witali G. (witali)


Lesenswert?

Hallo alle hier,

ich habe gerade ausgelernt und bin Berufsanfänger. Meine Aufgabe ist 
nach einem geeigneten Controller zu suchen. Er soll 12 Spannungswerte 
von 3 PSDs (so eine Art Lichtsensor, 4 Spannungen pro PSD) messen und 
daraus pro PSD 2 Werte berechnen (1 Multiplikation, 1 Division und 2 
Additionen bzw. Substraktionen in der Berechnung enthalten). Es sollen 
ca. 70 solche Messungen mit Berechnung in Zeitabständen von 0,075s 
durchgeführt werden und die berechneten Werte zunächst gespeichert und 
dann per serielle Schnittstelle (z.B. SPI, I2C, RS485) an die zentralle 
Steuerung auf Entfernung bis ca. 10m übermittelt werden. Und dann das 
ganze von Vorne.

Wie sollte man die Wahl des Controller richtig angehen? Welche 
Wortbreite? Welche serielle Schnittstelle? Was sollte man sonst noch 
beachten?

Wäre froh wenn erfahrene Leute mir mit ein paar Tipps helfen würden!

Danke!

von Timo P. (latissimo)


Lesenswert?

Also was die serielle Schnittstelle angeht:

Hast du zu der einen Zentrale auch nur EINEN Controller, der Daten an 
die Zentrale übermittelt? Dann nimm UART. Sehr einfach zu nutzen. Vor 
allem bei Atmega Controllern von atmel

Soll das ne einzelanfertigung werden oder Massenproduktion? Soll der 
Controller also möglichst klein oder möglichst billig gehalten werden?

von Timo P. (latissimo)


Lesenswert?

Welche Genauigkeit für die ADC-Werte brauchst du?

im übrigen hören sich 75ms für ca 70ADC-Messungen brutal kurz an, denke 
das wirst du nicht schaffen.

Son ADC braucht für die Wandlung eine gewisse Zeit.....

Oftmals haben Controller 8 Channel 10-bit A/D-converter. Reichen tut 
also ein kleiner Controller nicht. Evlt mal überlegt, zwei kleine zu 
nehmen? zb. zwei ATMEGA8 für je ca. 1,50?

von (prx) A. K. (prx)


Lesenswert?

Ein AVR schafft 15000 AD-Wandlungen pro Sekunde. Hier werden nur ~1000 
gebraucht. Klingt nicht nach einem Problem. Und von mehr als 10-Bit AD 
ist nirgends die Rede.

Ein Analogmuxer erweitert problemlos auf 12 AD-Kanäle.

von Andreas V. (tico)


Lesenswert?

> ca. 70 solche Messungen mit Berechnung in Zeitabständen von 0,075s

Also ca. 1 Messung pro ms. Das ist kein Problem, aber die meisten 
Controller haben nur 8 ADC Eingänge. Wenn Du die analogen Spannungen 
nicht multiplexen kannst, musst Du einen Controller mit ausreichend 
Eingängen verwenden. Da würde der ATmega640 in Frage kommen. Der ist 
auch für alles weitere (Berechnungen, serielle Übertragung) mehr als 
schnell genug.

von (prx) A. K. (prx)


Lesenswert?

Wenn's ohne Muxer auskommen soll und ein 100-Pinner dafür etwas 
überbordend erscheint: Atmel mag bei den bei kleineren Typen mit den 
ADCs geizen, Microchip nicht. Deren ebenfalls umgängliche 16-Bitter 
PIC24/dsPIC30/33 haben im 40/44-er Gehäuse 13 Kanäle.

von Witali G. (witali)


Lesenswert?

Danke für die Rückmeldung!

Zur Übertragung der Messungen soll ein Bussystem verwendet werden, da 
mehrere Messmodule im System geplant. RS232 ist wohl ungeeignet aber mit 
UART lässt sich auch RS485 realisieren oder?

Es ist keine Einzelanfertigung aber auch keine großen Stückzahlen. 
Sollte natürlich günstig sein aber auf jeden Cent geht es auch nicht an. 
Bei der Größe genau so: soll klein sein aber die kleinsten Abmessungen 
sind auch nicht die erste Priorität.

Hab zugegeben etwas verwirrend erklärt. Die 70 Messungen liegen im 
Abstand von 75ms voneinander und jede solche Messung besteht aus 4 
Spannungsmessungen und 2 Berechnungen pro PSD mit insgesamt 3 PSDs. Also 
insgesamt 12 Spannungsmessungen und 6 Berechnungen in 75ms und das ganze 
70 Mal, dann Werte zur Steuerung übertragen. Ich hoffe dass ich jetzt 
Klarheit reingebracht habe.

Vom AD-Wandler her sind wohl 12 Kanäle nötig und die Auflösung 
mindestens 10 Bit, besser 12-Bit.

Wie ist es mit der Wortbreite? Welche Rolle spielt sie in diesem 
speziellen Fall?

von (prx) A. K. (prx)


Lesenswert?

Witali G. schrieb:

> Wie ist es mit der Wortbreite? Welche Rolle spielt sie in diesem
> speziellen Fall?

Bei diesen geringen Anforderungen: keine. 8bitter sind aber einfacher in 
der Handhabung als beispielsweise 32bitter.

Das bischen Rechnerei schafft jeder. Da würde ich eher auf den 
Gesamtaufwand schauen. Das Entwicklungssystem mit seinen Kosten und 
Fähigkeiten könnte ein Kriterium sein. Forensupport auch: hier im Board 
bist du da bei AVRs besser dran als mit irgendetwas anderem.

von David (Gast)


Lesenswert?

Wenn die platzverhältnisse es zulassen würde ich ebenfalls einen 
atmega640 empfehlen. Der hat 16ADC mit 10 Bit auflösung. Von der 
Geschwindigkeit her kein Thema. Wird dich zwar etwa 6Euro/stk kosten, 
wenn du keine Stückzahlen hast, aber dafür gibts mit dem AVRStudio/GCC 
Compiler eine gratis entwicklungsumgebung in C welche kostenlos und in 
der einarbeitung easy ist...

bei geforderten 12 Bit auflösung wirds schwiriger, aufwändiger und 
teurer, wäre nur zu empfehlen wenn umbedingt nötig...

von (prx) A. K. (prx)


Lesenswert?

Wenn's dennoch 12 Bits sein sollen: Die o.A. 16bit PICs bieten das. 
Dafür ist die (kommerzielle) Entwicklungsumgebung aber bischen teurer 
als avr-gcc.

von Tobias K (Gast)


Lesenswert?

Du könntest auch einen MSP430 verwenden.
Dort giebt es Derivata mit 12 Bit ADC Wandler oder 16 Bit Sigmal Delta 
Wandler.

von Pascal O. (raven761)


Lesenswert?

Damit wir mal alle Prozessoren durchgegangen sind. Die MSP430er sind 
auch sehr gut :-) 16 Bit, 12 Bit ADC, bis zu 8 Ports. Außerdem äußert 
stromsparend! Die ARM Prozessoren sind auch net schlecht, aber brauchen 
dementsprechend auch viel Saft. Du wirst aber bestimmt recht viel 
Rechenleistung brauchen. Ich würd auch nur n 16 oder 32 Bit µC nehmen, 
grad wenn du einen AD Wandler benutzen willst, der mehr als 8 Bit 
Auflösung hat.

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Kommt drauf an, was für Rechnungen durchgeführt werden sollen.
Für Multiplikation/Division sollte schon ein Hardware-Multiplier 
vorhanden sein. Reichen Integer aus oder werden Fließpunktzahlen 
benötigt?

von (prx) A. K. (prx)


Lesenswert?

> Für Multiplikation/Division sollte schon ein Hardware-Multiplier
> vorhanden sein.

Bei der Division bringt dich der Multiplier nicht wirklich weiter.

> Du wirst aber bestimmt recht viel Rechenleistung brauchen.

Herrje, jetzt kommt bestimmt noch jemand der die paar Rechnungen nicht 
unterhalb vom Pentium-4 hinbekommt.

Leute, bleibt auf dem Teppich. 6 Berechnungen alle 75ms schafft ein AVR 
mit Links und im Rückwärtsgang. Auch als Fliesskommarechnung.

von Random .. (thorstendb) Benutzerseite


Lesenswert?

> aber brauchen dementsprechend auch viel Saft.

Dich schon mal bei STM32 (ARM Cortex-M3) umgeschaut haben tun? :-)

Vorteil einer ARM Architektur ist, dass du 32Bit Genauigkeit mit 1 Takt 
abhandeln kannst. Ausserdem kannste wegen der PLL die Taktfrequenz 
dynamisch halten. Oder durch ausmessen genau an deine Anforderung 
anpassen. Wäre ne überlegung wert.

VG,
/th.

von Peter D. (peda)


Lesenswert?

Pascal O. schrieb:
> Damit wir mal alle Prozessoren durchgegangen sind.

Der 8051 fehlt noch.

Da hätten wir z.B. den Silabs C8051F330:
- 25MHz
- 20 Pin (DIP oder QFN)
- 16 Analogeingänge 10 Bit.

Damit die Rechenleistung für alle Deine float-Berechnungen reicht, kann 
man ihn noch runtertakten.
Sonst langweilt er sich bei 25MHz ja nur.


Peter

von (prx) A. K. (prx)


Lesenswert?

Random ... schrieb:

> Vorteil einer ARM Architektur ist, dass du 32Bit Genauigkeit mit 1 Takt
> abhandeln kannst.

Nicht wirklich ideal für den Anfänger. Bis er die diversen Handbücher 
durch hat... Sind mindestens 4 beim STM32: Core, Allgemein, Modell, 
Errata.

von Witali G. (witali)


Lesenswert?

Vielen Dank an euch alle für die Hilfe!

In der Firma wo ich bin wurden früher schon MSP430 von Texas Instruments 
verwendet und daher die Entwiklungstools schon vorhanden. Ich sollte 
aber nach Alternativen schauen, die evtl. mehr bieten. Daher wäre es 
wohl von Vorteil einen MSP430 zu verwenden.

Der hier müsste doch auch geeignet sein, was sagt ihr dazu? Was ich da 
nicht verstehe sind die Angaben zu der Kanalzahl des ADC. 12 externe und 
4 interne Kanäle, was bedeutet das denn?

http://focus.ti.com/docs/prod/folders/print/msp430f5418.html

von (prx) A. K. (prx)


Lesenswert?

Witali G. schrieb:

> Der hier müsste doch auch geeignet sein, was sagt ihr dazu? Was ich da
> nicht verstehe sind die Angaben zu der Kanalzahl des ADC. 12 externe und
> 4 interne Kanäle, was bedeutet das denn?

Die 12 externen sind diejenigen, die dich interessieren. Interne Kanäle 
messen beispielsweise Versorgungsspannung, Offsetspannung, Temperatur.

Ja, der passt. Und wenn ihr sowieso schon MP430er einsetzt und auch das 
80er Gehäuse nicht dagegen spricht, dann bleibt doch dabei. Besser sind 
die anderen dafür auch nicht, allenfalls kleiner und evtl. billiger. 
Aber der Preis spielt nur bei grossen Stückzahlen eine Rolle, darunter 
dominiert der Entwicklungsaufwand.

von josef (Gast)


Lesenswert?

Es gibt von TI auch noch die 32-bit Familie PICCOLO. Die kann ziemlich 
schnell rechnen. MAC - (multiply and accumulate) in einem Zyklus. 
Typischerweise fuer Filteralgorithmen. Ansonsten sind die 12-bit ADCs 
sehr genau 11.5 ENOB (echte Bits).

-> http://www.ti.com/corp/docs/landing/f280xx-piccolo/index.htm

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.