Guten Tag,
für meine Abschlussarbeit bin ich auf der Suche nach einem geeignetem
Mikrocontroller. Ich darf nicht viel preisgeben, ich schreibe die Arbeit
in einem Unternehmen.
Anforderungen sind:
- Anfordern einer Conversion eines A/D-Wandlers sowie Entgegennahme der
Daten (16 Bit, <200KSPS sowie voraussichtlich 2-3 8 bit und Abtastrate
ca. 2-3 mal pro Sekunde) Aufgrund der Anwendung ist es nicht sinnvoll
ggf. einen internen ADC zu verwenden. Die Störeinflüsse sind
voraussichtlich zu groß.
- Abfrage von digitalen Temperatursensorwerten (ca. 5 Stück)
- Display mit Anzeige von 2 Messwerten sowie eines berechnetem Wertes
- Messung starten / stoppen Button und Ein-Aus-Schalter
- Schrittmotor treiben (eventuell diskret, da kaum Leistung erforderlich
alternativ IC. Hier lässt sich ggf. auch was in Logik-ICs packen)
(- Kommunikation in Form von USB oder Ethernet, eher nebensächlich)
Aufgrund des A/D-Wandlers mit 16 bit Auflösung tendiere ich dazu bei
32bit-Architekturen zu suchen. Die Komplexität ist jedoch bei diesen,
soweit ich das bisher erschlossen habe deutlich größer. Der
Hauptaugenmerk meiner Arbeit liegt im analogen Bereich, quasi vor dem
A/D-Wandler, es sollte also nicht komplexer sein als notwendig, zumal
meine Erfahrung in diesem Bereich gering ist. Im Wesentlichen muss ich
die Werte des 16bit ADC einsammeln, mitteln, Temperatursensor
zwischendurch auswerten und auch mitteln über die Messdauer, die
erhaltenen Mittelwerte zwischenspeichern, Motor drehen lassen, erneuter
Messablauf wie zuvor, zwischenspeichern, Datenausgabe auf Display(ggf.
über Schnittstelle) und wieder zum Anfang, also letztlich eine sehr
stupide Tätigkeit.
Kann mir hier jemand eine Familie empfehlen? Falls es in Richtung ARM
geht wie STM32FXXX bitte ich um konkrete Vorschläge mit kurzer
Begründung, denn ich habe mit diesen noch nicht gearbeitet. Ich habe
bisher nur mit AVR gearbeitet und das auch eher selten und bin
entsprechend unerfahren.
Freundliche Grüße
BM schrieb:> für meine Abschlussarbeit bin ich auf der Suche nach einem geeignetem> Mikrocontroller. Ich darf nicht viel preisgeben, ich schreibe die Arbeit> in einem Unternehmen.
Dann nimmt man entweder einen µC den man selbst kennt oder wo reichlich
Erfahrung, Tools und wichtiger: Hilfe beim Unternehmen vorhanden ist.
Frage doch da mal nach...
Nun dafür nimmt man einen aus der Reihe womit man Erfahrung hat.
Jede Reihe hat seine Vor und Nachteile.
Anhand der Anforderung wird die Baureihe gewählt die für die Anforderung
ausreichend ist.
Ob es nun ein PIC (ATMEL wurde von Microchip ja Aufgekauft) oder ARM ist
hängt von deinen Skill ab sowie wie du dich damit Einarbeiten möchtest.
Dazu ist sicherlich auch die Verfügbarkeit in x Jahren auch eine
Bewertung...
Aber dafür wäre ggfs auch ein Raspberry möglich ;)
Wenn du Leistung brauchst, dann nimm das STM32F7 oder Beaglebone Black
(Hier sind die beiden Echtzeitkerne neben dem parallelen Linuxbetrieb
interessant PRUSS). http://elinux.org/Ti_AM33XX_PRUSSv2
Beide Boards besitzen auch Ethernet-Phys, was ziemlich praktisch ist.
Damit arbeite ich zumindest im Moment...
LG
16 Bit ist schon sehr genau. Integrierte AD-Wandler habe meist nur 10-12
Bit.
Das wird was externes werden. Bei 200 KSamples sind das 400 KBytes an
Daten, die pro Sekunde verarbeitet werden müssen. Da sollte die CPU
schon Leistung haben. Weniger als 32 Bit geht da nicht.
Ein externer Wandler wird dann wohl über SPI angeschlossen. Das sind
dann 3.2 Mhz Lesefrequenz. Dafür müssen Prozessor und
Rtos/Betriebssystem vorbereitet sein. Also dann lieber etwas schneller,
lieber 500 als 50 Mhz CPU Frequenz.
BM schrieb:> 16 Bit, <200KSPS
Wieviel kleiner?
> Ich habe bisher nur mit AVR gearbeitet und das auch eher selten und bin> entsprechend unerfahren.
Und dann machst du die Abschlussarbeit gerade mit uC? Gewagt...
PittyJ schrieb:> lieber 500 als 50 Mhz CPU Frequenz.
Ja, das dürfte dann reichen. Auch wenn man arg umständlich programmiert.
Auf den zweiten Blick braucht die Aufgabe aber bei weitem keinen solchen
Boliden. Zum Glück.
Stand am Beginn Abschlussarbeit genau vor dem selben Problem. Deine
Anforderungen werden soweit ich das sehe sowieso von vielen
Mikrocontrollern abgedeckt und da wird es sich dann nicht viel geben, ob
du jetzt einen ARM Cortex nimmst oder eine "alte" Architektur a la
MSP430.
Daher nochmal Rücksprache mit deinem Betreuer halten, was denn im
Unternehmen so eingesetzt wird, welche Tools vorhanden sind usw.usf.
Ein ARM wie der STM32 erfordert am Anfang eine Einarbeitungszeit. Diese
Zeit hast du NICHT für deine Abschlussarbeit zur Verfügung. Das musst du
bedenken. Wenn du schon Erfahrung mit AVR hast ist das doch toll, warum
nimmst du nicht einen AVR?
Falls du wirklich mit den STM32 oder einem anderen ARM-Cortex arbeiten
willst, besorg dir erstmal ein Development Board und schau, ob dir das
zusagt. Das ist in vielen Fällen sinnvoller, als einfach nur anhand des
Datenblattest zu entscheiden...
Ad Schrittmotortreiber: Wenn du einen AVR verwendest, nimm einene
einfachen Halbbürcken Treiber (z.B. L293). Die Ansteuerung per Timer
über PWM verbraucht keine CPU Zeit und ist sehr einfach.
Ad Display: Welche Art von Display ist es denn? LCD auf Basis von
HD44780 oder ein einfaches Text-Display, welches per SPI angesprochen
wird?
Kai A. schrieb:> Ob es nun ein PIC (ATMEL wurde von Microchip ja Aufgekauft)AVR existiert weiterhin paralell zu PIC und wird auch getrennt
vermarktet.
Kai A. schrieb:> Aber dafür wäre ggfs auch ein Raspberry möglich
Theoretisch möglich, aber eher weniger für Echtzeitoperationen geeignet.
Wieso braucht er da sowas großes? Sehr viele kleinere Controller haben
heutzutage DMA. Wenn er SPI mit 4MHz taktet, braucht er für 2 Byte 4µS.
Bei 200kSpS hat er alle 5µS einen neuen Wert. Diese kann der DMA dann in
einen Ringbuffer schreiben.
Dann hat dieser Ringbuffer eine Größe von z.B. 32 Werten und kann diese
zu einem beliebigen Zeitpunkt mitteln. Der Rest ist trivial.
Am besten dann zwei Buffer, wenn der eine voll ist, wird der andere
gefüllt und der jetzige ausgewertet. Da geht nix verloren. Da reicht
auch ein 16bit PIC aus. Oder ein ATxMega (8Bit). Auf diese Weise
generiere ich auf einem XMega ein 160kSpS Audiosignal per DDS und
Lookuptable.
Ich kann mich dem Tenor der vorherigen Antworten nur anschließen:
1. Frag nach, welche Chips im Unternehmen verwendet werden - das mögen
die Leute - und bei welchen man Dir Unterstützung geben kann.
Letzteres könnte auch für Dich sinnvoll sein.
2. Erst an zweiter Stelle such Dir Deinen Chip selber aus.
Hast Du nämlich Pech, so stehst Du plötzlich nackt im Walde.
Also rundum: Keine Ahnung, keine Software, keine
Programmierhardware und proportional große Unterstützung.
In diesem Falle solltest Du auch auf die Frage: „Warum gerade
dieser?“, eine detaillierte Antwort parat haben. Insbesondere, wenn
nicht unerhebliche Folgekosten anfallen.
Ach so! In vielen Unternehmen schießt man auch gerne mit Kanonen auf
Spatzen, nur um nicht noch einen weiteren Chip – oder gar eine
komplett neue Linie - am Lager haben zu müssen.
Okay, es gab jetzt einiges an Anregungen, ich habe einiges mitnehmen
können bisher schon. Bezüglich Lagerkosten etc. bin ich hier raus, es
geht nicht um ein Produkt, sondern es soll ein Prüfstand / Messstand
aufgebaut werden, so dass ein Teil des Datenblattes eines bestimmten
Produktes gemessen werden kann, daher brauche ich keine Unmengen zu
bevorraten. In den Produkten sehe ich auf den Platinen häufig STM32XXX
aufgelötet. Die sind von der Einarbeitungszeit, die ich schätze einfach
sehr hoch. Vielleicht verschätze ich mich dort, ich spreche Morgen
nochmal mit denjenigen, die damit auf Softwareebene arbeiten..
Die tatsächliche Abtastrate kann ich noch nicht genau benennen, ich weiß
nur, dass das Maximum 200KSPS wären, vermutlich reichen mit 10KSPS für
diesen Anwendungszweck aus.
BM schrieb:> Aufgrund des A/D-Wandlers mit 16 bit Auflösung tendiere ich dazu bei> 32bit-Architekturen zu suchen.
Hallo,
darf ich zunächst die Frage stellen, ob die 16-bit-Auflösung wirklich
erforderlich ist? Mir scheint die übertrieben, entspricht sie doch einer
relativen Auflösung von weniger als 0,003%!
Soweit ich Deine Aufgabenstellung verstanden habe, führt sie nicht dazu,
eine 32-bit-Architektur des uC zu fordern.
Für die Wahl der Mikrocontrollerfamilie ist sicher das wichtigste
Kriterium die vorhandene eigene Erfahrung; ansonsten empfiehlt Dir Jeder
das, womit er selbst Erfahrungen hat.
BM schrieb:> sowie voraussichtlich 2-3 8 bit und Abtastrate> ca. 2-3 mal pro Sekunde)
Sind das weitere externe AD-Wandler? Oder können das interne sein?
Ich bin alter PIC-Anhänger und könnte mir vorstellen, die Aufgabe mit
einem PIC16F87X zu lösen.
Besten Gruß
BM schrieb:> In den Produkten sehe ich auf den Platinen häufig STM32XXX> aufgelötet. Die sind von der Einarbeitungszeit, die ich schätze einfach> sehr hoch.
Das kommt darauf an, ob du programmieren kannst. Für die STM32 gibt es
mit STM32CubeMX eine absolut anfängertaugliche GUI für die komplette
Konfiguration der Clocks und Peripherien. Das Programm generiert dir
dann direkt ein Codeprojekt mit Startup code und Hersteller-Libs. Und ab
da ist es nicht komplexer als einen Arduino zu programmieren, es gibt
für alles schon vorgefertigte Funktionen und man muss im Prinzip nur
noch skripten. Die Libs haben zwar einiges an Overhead und wenn man dann
alles optimieren und nativ implementieren will, wird's schon etwas
aufwändiger, aber das dürfte für dich ja nicht relevant sein.
Es ist letztlich so: Ich habe einen sensiblen Analogteil, ich brauche
eigentlich keine 16 bit A/D-Wandlung, wähle diese jedoch, so dass ich
softwareseitig noch kürzen kann. 8 bit sind jedoch definitiv nicht hoch
genug aufgelöst...
Die anderen A/D-Wandler sind idealerweise auch extern, da sich das
System über einen verteilten Bereich befindet und dort eine Einkopplung
von Störungen aufgrund von HF sehr wahrscheinlich ist. Ich vermute, dass
ich ein digitales Signal weniger wahrscheinlich verfälsche, als ein
analoges..
Okay, alternative Möglichkeit sind mehrere µCs, ist jedoch mehr Aufwand.
Mein Hauptfokus liegt jedenfalls wirklich außerhalb der µCs, ich
programmiere grottig, aber es funktioniert.. Die Arbeit ist im
wesentlichen eher im 3-stelligem GHz-Bereich angesiedelt. Dort kenne ich
mich aus..
Hi,
ich würde auch zum PSoc5 raten. Evalboard Link wurde ja geposted. Gerade
was Mixed-Signal Sachen betrifft sind die sehr gut. Die meißten analogen
Sachen, was Messtechnik betrifft, kannst Du damit locker machen.
Allerdings schafft der interne Delta-Sigma ADC bei 200ksps vermutlich
keine 16Bit mehr sondern nur noch 12-14Bit. Zum Programmieren finde ich
die auch sehr einfach, im Vergleich bsp. zu XMC oder STM32.
Gruß Trollo
BM schrieb:> Die tatsächliche Abtastrate kann ich noch nicht genau benennen, ich weiß> nur, dass das Maximum 200KSPS wären, vermutlich reichen mit 10KSPS für> diesen Anwendungszweck aus.
Ich würde Dir 800KSPS bei 20 Bit ADC empfehlen. Man kann besser was
wegschmeißen als zu wenig zu haben. Ach ja, werden die Werte nur
gesampelt oder muss damit noch irgendwas passieren?
BM schrieb:> Die anderen A/D-Wandler sind idealerweise auch extern ...> dass ich ein digitales Signal weniger wahrscheinlich verfälsche
Und was ist dann mit dem digitalen Bus z.B. SPI zwischen uC und
A/D-Wandler? Und wie trennst Du bei der Versorgung DGND und AGND?
Es gibt genau für solche Anwendungen besonders geeignete uC wie z.B.
EFM8LB mit 14-bit ADC 900KSPS und entsprechende Application Notes für
das Layout.
Die EFM8LB sind 8-bit 8051 und entsprechend einfach zu programmieren.
Eval-Board mit Debugger für 25 EUR (gerade für Anfänger wichtig).
Arduino-ähnlicher Bootloader. Package ist QFP-32
http://de.rs-online.com/web/p/entwicklungskits-prozessor-mikrocontroller/9158802/http://www.silabs.com/products/development-tools/software/simplicity-studioInFo schrieb:>> Aber dafür wäre ggfs auch ein Raspberry möglich> Theoretisch möglich, aber eher weniger für Echtzeitoperationen geeignet
Durchaus geeignet da als Compute Module mit Echtzeit-Betriebssystem
RiscOS pico im eMMC Flash verfügbar:
https://www.riscosopen.org/content/downloads/raspberry-pi
BM schrieb:> ich weiß nur, dass das Maximum 200KSPS wären, vermutlich reichen mit> 10KSPS für diesen Anwendungszweck aus.
Das solltest du aber schon klären, da geht es immerhin um das Doppelte
einer Zehnerpotenz. Und das macht sich dann auch sofort im der nötigen
Rechnerperformamce bemerkbar: für 10kHz reicht ein AVR locker...
BM schrieb:> ich> programmiere grottig
Wenn dem so ist und du die ADCs eh extern anbinden willst, dann war der
(wohl nicht ernst gemeinte) Vorschlag oben vielleicht doch gar nicht so
schlecht:
Kai A. schrieb:> Aber dafür wäre ggfs auch ein Raspberry möglich ;)
Da gibt's Linux (mit all seinen Vorteilen), viele Libs (SPI/I2C in
Echtzeit mit DMA), Community und 'ne leistungsfähige Plattform.
Einarbeiten mußt du dich aber auch.
BM schrieb:> Die Arbeit ist im> wesentlichen eher im 3-stelligem GHz-Bereich angesiedelt. Dort kenne ich> mich aus..
Hört sich nach Automotive (autonomes Fahren) an.
Warum nimmst Du dann nicht wie alle anderen dort auch einen AURIX
(TC29xx) oder entsprechenden JDP-Prozessor.
Der hochauflösende Wandler ist als differentieller Sigma Delta mit DMA
realisiert. Der Rest mit einem 12-Bit SAR Wandler.
Gruß Anja
Anja schrieb:> Warum nimmst Du dann nicht wie alle anderen dort auch einen AURIX
Die Infineon Marketing Abteilung arbeitet inzwischen auch nachts?
Für seine Abschlussarbeit wird dann das hier hilfreich sein:
"To get access to AURIX documentation: 1. Please register under
myinfineon.com (only company address allowed, no private mail e.g.
google, yahoo, …)"
Oder das hier:
https://forum.arduino.cc/index.php?topic=397480.msg3028882#msg3028882
Er soll sich das stm32f429 discovery besorgen... Das kostet fast nichts,
hat sdram für die daten und der controller hat genügend spi interfaces,
um 3 spi per dma in den speicher zu schaufeln :)
Jungs, es ist sein Job den Kram selber herauszusuchen. Kann er das
nicht, ist er wohl offensichtlich nicht für den Job geeignet. Ihr
arbeitet gerade umsonst wofür andere als Ghostwriter bezahlt werden...
Zudem wird die Firma eh gewisse Rahmenverträge mit entsprechenden
Herstellern haben und ggf. ein bis zwei Controllerfamilien einsetzen.
Sprich hier ins blaue STM32 zu empfehlen ist Murks. So gibt es auch noch
Renesas und zig andere Hersteller. Entsprechend sind dann auch die
Keil/etc. Lizenzen vorhanden.
Ansonsten wäre noch Silicon Labs zu erwähnen, genauso Nordic
Semiconductors. Aber gerade im Automotivebereich gibt es noch erheblich
mehr...
BM schrieb:> Kann mir hier jemand eine Familie empfehlen? Falls es in Richtung ARM> geht wie STM32FXXX bitte ich um konkrete Vorschläge mit kurzer> Begründung, denn ich habe mit diesen noch nicht gearbeitet. Ich habe> bisher nur mit AVR gearbeitet und das auch eher selten und bin> entsprechend unerfahren.
Erste Wahl ist das, was die Firma verwendet, in die du willst.
Zweite Wahl ist das, was du schon kennst.
Dein Problem kann ein 8-Bit-PIC oder ein ATMEGA auch lösen.
Was den STM32 angeht:
Folgenden kann ich empfehlen:
STM32F072
Der ist für STM32 relativ simpel, aber trotzdem recht leistungsfähig,
hat viel Peripherie und ist gleichzeitig billig. Auch Flash und RAM sind
ok.
Er kann USB ohne Quarz, und er ist kein alter Schinken.
Lass dir keinen F4 oder F7 aufquatschen, die sind für dich eher
hinderlich, weil zu kompliziert. Du willst ja mit der Lösung kämpfen,
nicht mit dem Controller.
Und denke vor allem daran, frühzeitig zu beginnen.
Die Entwicklungszeit teilt sich in der Regel so auf:
Hardware: 10..20%
Software: 80..90%
Das kann bei Anfängern aber schnell noch ungünstiger werden.
Wenn die Hardware erst 14 Tage vor dem Abgabetermin fertig wird, ist das
Projekt definitv durchgefallen.
Peter D. schrieb:> Die Entwicklungszeit teilt sich in der Regel so auf:> Hardware: 10..20%> Software: 80..90%
Und dann kommt da noch die Dokumentation. Da haben schon manche manche
Nachtschicht eingelegt.
Peter D. schrieb:> Wenn die Hardware erst 14 Tage vor dem Abgabetermin fertig wird, ist das> Projekt definitv durchgefallen.
Die Hardware muss in einem 4-monatigem Projekt nach 3 Wochen feststehen
(und zwar so, dass sie dann funktioniert), damit noch genug Zeit für SW
und Doku ist...
BM schrieb:> Die tatsächliche Abtastrate kann ich noch nicht genau benennen, ich weiß> nur, dass das Maximum 200KSPS wären, vermutlich reichen mit 10KSPS für> diesen Anwendungszweck aus.
Das ist schon ein gewaltiger Unterschied, das mußt Du schnellstens
klären.
Ich nehme als 16Bit-ADC gerne den MAX1300, dessen 8 Eingänge sind +/-16V
fest. Und als Trenner gegen Erdschleifen den ADUM1401.
>Ich darf nicht viel preisgeben, ich schreibe die Arbeit in einem Unternehmen.
Wäre mir auch peinlich.
>Die Arbeit ist im wesentlichen eher im 3-stelligem GHz-Bereich angesiedelt.>Dort kenne ich mich aus..
Ah ja.
>In den Produkten sehe ich auf den Platinen häufig STM32XXX aufgelötet.>Die sind von der Einarbeitungszeit, die ich schätze einfach sehr hoch.
Darum werden die STM32 auch nur von den Hobbybastlern verwendet, Profis
schaffen das vom Umfang nicht.
>Falls es in Richtung ARM geht wie STM32FXXX bitte ich um konkrete Vorschläge mit
kurzer Begründung
siehe Bild, hat internen 16 bit ADC
Hat aber auch "nur" 50 KSPS. Da es drei SDADCs gibt, kann man diese
eventuell per Timer in einem interleaved Mode laufen lassen, aber auch
dann erfüllt man die Bedingungen nicht. Es sind auch differenzielle
Eingänge möglich, so könnte man mit einer einfachen OPV Schaltung das
Signal richtig skalieren und differenziell über eine längere Strecke
übertragen. Ob sich hierbei die Samplerate reduziert muss nachgeprüft
werden.
Auch die internen Gains von 0.5x bis 32x sind interessant.
Aber alles Raten hat keinen Sinn, solange nicht die benötigten
Spezifikationen bekannt sind.
Dieter schrieb:> Jungs, es ist sein Job den Kram selber herauszusuchen. Kann er das> nicht, ist er wohl offensichtlich nicht für den Job geeignet.
Die Wahrheit klingt immer so gemein - aber ich denke genauso.
Kann mich meinen Vorrednern nur anschließen. Du hast nicht die Zeit um
dich in andere Controller einzuarbeiten. Und schon gar nicht um dich in
mehrere einzuarbeiten, um danach den Besten rauszupicken.
Nur wenn du dich sehr gut auskennst oder viel Hilfe erhälst wäre das in
der Zeit machbar. Ich habe damals einen vorkonfigurierten Controller
erhalten und musste mich nur noch um Hard und Software der eigentlichen
Aufgabe kümmern. Selbst das war stressig.
Konzentrier dich aufs wesentliche. Da es eine Messstation ist, sind die
Kosten pro Stück und die Optik unwichtig. Nimm fertig gelötete
Komponenten. Fang vorn mit der Datenerfassung an und schau wie weit du
kommst. Wenn die Ausgabe auf dem Display oder über USB nicht
funktioniert, dann ist das kein Durchfallgrund. Du musst es nur
begründen können. Schlimmer ist es, wenn du dich in der
Controllerauswahl verzettelst und gar keine Erkenntnisse zur Lösung des
Problems präsentieren kannst. Das wäre Thema verfehlt.