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.
:
Bearbeitet durch Moderator
PSOC 5 - alles was du brauchst und SEHR einfach zu programmieren. http://www.cypress.com/documentation/development-kitsboards/cy8ckit-059-psoc-5lp-prototyping-kit-onboard-programmer-and
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-studio InFo 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.
:
Bearbeitet durch User
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.
Dieses Board ist ganz schön: Beitrag "Re: STM32F407 Black und Arduino" Es gibt ein Display dazu und 3 Tasten hat es auch. Oder dieses Board: Beitrag "Re: STM32F746 Discovery ARDUINO"
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...
:
Bearbeitet durch Moderator
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.
:
Bearbeitet durch User
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.