Forum: Mikrocontroller und Digitale Elektronik Microcontroller Auswahlhilfe


von Daniel S. (snipod)


Lesenswert?

Hi,
Ich arbeite gerade an einem Projekt, in dem ich aus 5 i2c Sensoren mit 
einem Multiplexer Daten auslese. Diese Daten werden dann verrechnet und 
mit Hilfe von 5 SPI DACs als Analogspannung ausgegeben.
Ich frage mich gerade welche microcontroller sich dafür besonders 
eignen. Ich habe viel Erfahrung mit dem ESP32, das wäre aber zu viel des 
Guten. Mit den guten alten Atmel 8 Bit AVRs habe ich auch schon einiges 
gemacht, aber sind die nicht ein bisschen überholt?

Ich brauche eigentlich nur I2C, SPI, 5 Gpio für CS, 3-5 weitere IOs für 
Einstellschalter und das ganze bei 3V3.
Vielleicht doch mal ein STM32?
Einfach, günstig und mit so wenig externen Komponenten wie möglich wäre 
schön... bin gespannt auf Eure Meinungen:)

von Jonas B. (jibi)


Lesenswert?

>Ich habe viel Erfahrung mit dem ESP32, das wäre aber zu viel des
>Guten.

Hast du den genug Zeit dich einzuarbeiten in eine neue Architektur? 
Ansonsten Schuster bleib bei deinen Leisten, nehme halt den ESP32. Der 
langweiligt sich nicht nur in deinem Projekt ;)

Gruß J

von A. S. (Gast)


Lesenswert?

Daniel S. schrieb:
> Einfach, günstig und mit so wenig externen Komponenten wie möglich wäre
> schön... bin gespannt auf Eure Meinungen:)

Unter 10.000 Stück lohnt die Einarbeitung kaum, wenn es keine weiteren 
Showstopper gibt: Platz, Strom, etc.

Ansonsten ist die Frage eher wie: ich muss 5 Kisten regelmäßig 
transportieren. Ich weiss nicht, wie groß oder wie weit. Welches Auto 
ist dafür gut? Ich habe einen VW-Bus, soll ich mir noch ein kleineres 
Auto kaufen, weil das weniger Benzin braucht.

von A. S. (Gast)


Lesenswert?

Daniel S. schrieb:
> Einfach, günstig und mit so wenig externen Komponenten wie möglich wäre
> schön... bin gespannt auf Eure Meinungen:)

Unter 10.000 Stück lohnt die Einarbeitung kaum, wenn es keine weiteren 
Showstopper gibt: Platz, Strom, etc.

Ansonsten ist die Frage eher wie: ich muss 5 Kisten regelmäßig 
transportieren. Ich weiss nicht, wie groß oder wie weit. Welches Auto 
ist dafür gut? Ich habe einen VW-Bus, soll ich noch ein Auto kaufen, das 
weniger Benzin braucht? Ich hab auch einen Smart, aber fährt man noch 
damit?

von Rainer S. (rsonline)


Lesenswert?

Daniel S. schrieb:
> Mit den guten alten Atmel 8 Bit AVRs habe ich auch schon einiges
> gemacht, aber sind die nicht ein bisschen überholt?

Nein, die werden immer noch haufenweise eingesetzt.
Für Deinen Zweck genau richtig, da Du ja auch schon Erfahrung damit 
hast.

Was ich eher als Schwachpunkt ansehen würde ist das I2C.
Da hakt es schon mal, wenn es nicht richtig programmiert ist, oder 
unvorhergesehene Dinge auf dem I2C Bus passieren.
Ganz speziell beim Einlesen von Daten!
Gibt es die Sensoren nicht mit SPI Schnittstelle?
Dann wäre auch alles einheitlich.

Als Controller kommen in Frage:
ATMEGA88PA oder größer (168, bzw. 328).
Wenn mehr Pins gebraucht werden
ATMEGA644PA, der hat schon 64k Flash Speicher, das sollte reichen.

von ... (Gast)


Lesenswert?

> alten Atmel 8 Bit AVRs habe ich auch schon einiges
> gemacht, aber sind die nicht ein bisschen überholt?

Zweifelsfrei. Selbst eine schnurlose Winztastatur beherbergt
heute ein 32 Bitter.

> Vielleicht doch mal ein STM32?

Nur zu! Du solltest dir aber mindestens noch die kleinen
ARMs von TI ansehen. Die haben bei seriellen Schnittstellen
aller Art, auch bei kleinen Gehaeusen, regelmaessig die Nase
vorn.

Bzgl. I2C sind allerdings Silabs C8051 und Renesas RX
das Mass der Dinge. Die haben fuer jedes moegliche I2C-Event
einen extra Interruptvektor. Nie war I2C-Handling einfacher.

von Andreas B. (bitverdreher)


Lesenswert?

A. S. schrieb:
> Unter 10.000 Stück lohnt die Einarbeitung kaum, wenn es keine weiteren
> Showstopper gibt: Platz, Strom, etc.
Du hast Hobby vergessen. ;-)

Daniel S. schrieb:
> Vielleicht doch mal ein STM32?
Das wäre nicht so unangebracht, je nach Zeit und Laune. Wir schreiben ja 
immerhin schon das Jahr 2021. ;-)

Rainer S. schrieb:
> Daniel S. schrieb:
>> Mit den guten alten Atmel 8 Bit AVRs habe ich auch schon einiges
>> gemacht, aber sind die nicht ein bisschen überholt?
>
> Nein, die werden immer noch haufenweise eingesetzt.
> Für Deinen Zweck genau richtig, da Du ja auch schon Erfahrung damit
> hast.
Sehe ich genauso. Wenn es schnell gehen soll: Auf jeden Fall.

von Olaf (Gast)


Lesenswert?

> Du hast Hobby vergessen. ;-)

In dem Falle wuerde ich eine 600Mhz MCU nehmen weil man dann viel mehr 
Spass hat und Geld keine besondere Rolle spielt. :)

Olaf

von A. S. (Gast)


Lesenswert?

Die einzige Anforderung ist also vielleicht, dass SPI und I2C getrennt 
vorhanden sind.

Keine Angabe ob im Stunden, Sekunden oder ms-Bereich einfache Additionen 
oder Fourier-transformationen notwendig sind. Und ob SPI und I2C nicht 
auch gebitbanged werden können.

von John P. (brushlesspower)


Lesenswert?

Daniel S. schrieb:
> Ich habe viel Erfahrung mit dem ESP32, das wäre aber zu viel des
> Guten

Ja wäre es....na und?

Er kostet 3-4 Euro und ist einfach zu verarbeiten.
Du hast reserven ohne Ende. Du wirst sie nicht brauchen, aber wenn du 
langeweile hast kannst du deine Daten in einer Blutooth App ansehen oder 
alles in die Cloud schieben, oder den internen Flash zum speichern 
nutzen.

von yakman (Gast)


Lesenswert?

Daniel S. schrieb:
> Ich arbeite gerade an einem Projekt, in dem ich aus 5 i2c Sensoren mit
> einem Multiplexer Daten auslese. Diese Daten werden dann verrechnet und
> mit Hilfe von 5 SPI DACs als Analogspannung ausgegeben.

Jeder mit I2C und SPI.
Also praktisch jede µc-Serie auf der Welt.

Also würde ich den nemen, wo dir die Toolchain am ehesten zusagt.
Was dann der ESP ist, weil die Toolchain kennst du schon.

von Daniel S. (snipod)


Angehängte Dateien:

Lesenswert?

Hi,
schon mal vielen Dank für Eure Antworten!

ich möchte noch etwas präziser auf meine Anforderungen eingehen, 
vielleicht können wir es dann besser spezifizieren.

Es sollen aus 5 x MS5837-30BA die Werte ausgelesen werden.
Beim ersten Start soll der Controller die Kalibrierwerte lesen und im 
EEPROM / NVs o.Ä. speichern. Das sind 5 x 14 Byte = 70 Byte.

Im Betrieb soll das System dann die Werte der Sensoren - 2 x 3 Byte pro 
Sensor - auslesen, und mit Hilfe der Kalibrierwerte die physikalischen 
Werte berechnen.
(Int32 add/sub/div & float sub/div) - siehe Datasheet

Diese Werte soll der Controller dann auf einen Range abbilden (bsp. 0-10 
bar auf 10% - 90% Vcc) und über die DACs (DAC7311) ausgeben.

Bei den Sensoren habe ich leider nichts anderes gefunden, was meine 
Anforderungen erfüllt. Es gäbe noch den AMS 5915-16000-D-I-N, welcher 
auch mit verschiedenen I2C Adressen daherkäme - man könnte sich also den 
Multiplexer (TCA9548ARGER) sparen - dieser ist aber Konstruktiv 
schwieriger abzudichten und kostet grob das 3-4 Fache. Andere 
Drucksensoren bis min. 14 bar kosten 40€ und mehr (ich lasse mich gerne 
eines Bessere belehren)

Zusammengefasst:
5 I2C Sensoren lesen = 5x (ID Multiplexer, SDA Multiplexer, SCL 
Multiplexer, ADR Sensor, CMD Sensor, 3 Byte Data Sensor, ADR Sensor, CMD 
Sensor, 3 Byte Data Sensor) = 5x 13 Byte = 65 Byte

5 SPI DACs schreiben = 5x 2 Byte Daten Senden = 10 Byte

Das ganze am Besten mit min. 10Hz - also quasi im Schneckentempo :D

Beim ESP schreckt mich die Größe etwas ab für das Projekt, ansonsten 
wäre das natürlich verlockend wegen der Toolchain...
Wenn Ihr Vorschläge zu den Komponenten habt - nur zu

von Andreas B. (bitverdreher)


Lesenswert?

Da reicht ja ein ATTiny13 dafür. Obwohl ich lieber die Tiny85 dafür 
nehme, weil die bei mir gewöhnlich in der Bastelkiste liegen.

von Andreas M. (amesser)


Lesenswert?

Statt der zig Multiplexer würde ich hier einfach Bit-Bang I2C machen. 
gemeinsame SCL Leitung und für jeden Sensor eine eigene SDA Leitung. Je 
nach belieben dann einfach die Sensoren nacheinander abfragen oder sogar 
alle parallel.

Edit: Zig, ok, ist ja nur einer :-). Ansonsten wäre ich auch für einen 
ATTiny.

: Bearbeitet durch User
von Alex D. (daum)


Lesenswert?

Andreas B. schrieb:
> Da reicht ja ein ATTiny13 dafür. Obwohl ich lieber die Tiny85 dafür
> nehme, weil die bei mir gewöhnlich in der Bastelkiste liegen.

Dieses Projekt braucht I2C + SPI + 5 CS Pins, also gesamt 10 I/O Pins, 
wie willst du das mit einem 8-Pin µC machen?

Daniel S. schrieb:
> Beim ESP schreckt mich die Größe etwas ab für das Projekt, ansonsten
> wäre das natürlich verlockend wegen der Toolchain...
> Wenn Ihr Vorschläge zu den Komponenten habt - nur zu

Wenn es um die Größe des chips geht, ist ein kleiner Microcontroller 
schon von Vorteil. Hier spricht nichts gegen einen AVR, besonders wenn 
du damit schon Erfahrung hast.
Wenn du dich aber gerne einmal in eine 32bit Mikrocontroller Familie 
einarbeiten möchtest, spricht nichts dagegen, das mit diesem Projekt zu 
machen.

Ich verwende meistens STM32 und komme damit gut klar, nur mit CubeMX und 
Cube HAL konnte ich mich nie wirklich anfreunden und mache deshalb alles 
über direkten Registerzugriff. Ich habe aber noch nicht wirklich mit 
anderen 32bit µC Familien gearbeitet, kann also nicht sagen, wie diese 
im Vergleich zu STM32 sind.

von Frank K. (fchk)


Lesenswert?

Daniel S. schrieb:

> Zusammengefasst:
> 5 I2C Sensoren lesen = 5x (ID Multiplexer, SDA Multiplexer, SCL
> Multiplexer, ADR Sensor, CMD Sensor, 3 Byte Data Sensor, ADR Sensor, CMD
> Sensor, 3 Byte Data Sensor) = 5x 13 Byte = 65 Byte

Mein Vorschlag:

https://www.ti.com/product/TM4C1230H6PM

Der hat 6 getrennte I2C-Busse, d.h. ihr könnt Euch die Multiplexer 
sparen und die Sensoren parallel abfragen.
Dazu noch UART, SPI, das Übliche halt

fchk

von Daniel S. (snipod)


Lesenswert?

Andreas B. schrieb:
> Da reicht ja ein ATTiny13 dafür.

Von der Berechnung her schon, von den IOs her nicht...

Andreas M. schrieb:
> Statt der zig Multiplexer würde ich hier einfach Bit-Bang I2C machen.
> gemeinsame SCL Leitung und für jeden Sensor eine eigene SDA Leitung.

DAS ist gar keine schlechte Idee...

von Andreas B. (bitverdreher)


Lesenswert?

Alex D. schrieb:
> Andreas B. schrieb:
>> Da reicht ja ein ATTiny13 dafür. Obwohl ich lieber die Tiny85 dafür
>> nehme, weil die bei mir gewöhnlich in der Bastelkiste liegen.
>
> Dieses Projekt braucht I2C + SPI + 5 CS Pins, also gesamt 10 I/O Pins,
> wie willst du das mit einem 8-Pin µC machen?
Er will den Multiplexer TCA9548ARGER verwenden. Damit benötigt man nur 
einen I2C und den SPI. Wenn man den DA Wandler auch noch mit I2C nimmt, 
geht es mit noch weniger I/O.

: Bearbeitet durch User
von Alex D. (daum)


Lesenswert?

Andreas B. schrieb:
> Alex D. schrieb:
>> Andreas B. schrieb:
>>> Da reicht ja ein ATTiny13 dafür. Obwohl ich lieber die Tiny85 dafür
>>> nehme, weil die bei mir gewöhnlich in der Bastelkiste liegen.
>>
>> Dieses Projekt braucht I2C + SPI + 5 CS Pins, also gesamt 10 I/O Pins,
>> wie willst du das mit einem 8-Pin µC machen?
> Er will den Multiplexer TCA9548ARGER verwenden. Damit benötigt man nur
> einen I2C und den SPI. Wenn man den DA Wandler auch noch mit I2C nimmt,
> geht es mit noch weniger I/O.

Solange es SPI DACs bleiben, geht es sich nicht mit einem 8-Pinner aus, 
weil dazu eben 5 CS + MOSI + SCK (+ evtl MISO, wsl bei DAC nicht 
notwendig) benötigt werden und das sind halt 7 (oder 8) pins nur für die 
Ansteuerung der DACs.

Mit I2C DACs würde es natürlich gehen

von Andreas B. (bitverdreher)


Lesenswert?

Alex D. schrieb:
> Solange es SPI DACs bleiben,
Ah, sorry, das habe ich übersehen. Ich dachte an einem DAC, wo er alles 
ausgeben wollte.
Dann wird es halt größer....

von Schlaumaier (Gast)


Lesenswert?

Daniel S. schrieb:
> Ich habe viel Erfahrung mit dem ESP32, das wäre aber zu viel des
> Guten.

Dann nimm alt ein der Arudino / Atiny-Typen.  Ist die selbe Umgebung und 
ohne Wlan keine schlechte Alternative.

Und wenn du Platz hast, kauf dir ne Nano-Fertig Platine dann hast du das 
Problem mit den Programmer auch schon hinter dir. Für 2.50 Euro das 
fertige Teil aus China mache ich mir nicht mehr den Aufwand den Chip 
selbst (und sein Hühnerfutter) ein zulöten. 2 Steckleisten und rein mit 
der Platine.

ESP32 nehme ich nur wenn ich Wlan o. BT brauche. (Neuere Modelle können 
beides).

Vorher kurz an den USB-Port und drauf mit der Software. Und Upgrades 
sind dann auch nicht wirklich ein Problem. ;)

von Andreas M. (amesser)


Lesenswert?

Für den Aufbau müssten reichen:

- 1x Takt (SCL/SCK)
- 5x SDA
- 5x MOSI (DAC)
- 1x CS/SYNC (DAC)

Letztere beiden kann man auch drehen, wie mans eben mag.

Also summa summarum 12 Pins. Macht mindestens 14 Pins, reset würde ich 
extra nehmen. Also nen ATTINY806.

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.