Hallo alle zusammen, im Rahmen meiner Bachelorarbeit benötige ich einen Mikrocontroller. Da es nicht zulässig ist einen "fertigen" uC zu nehmen muss ich diesen selber aufbauen. Ich würde gerne einen uC aus der Familie der ARM Cortex nehmen, da diese ziemlich leistungsstark und vorallem schnell sind. Ich muss vorallem analoge Eingänge schnell auswerten können. (schneller als 10us) Und ich brauche relativ viele Pins (die genaue Anzahl weiß ich noch nicht aber bestimmt um die 50) Ich habe gesehen es gibt den Arduino Due mit dem M3 und den Teensy 3.5 mit M4. Meine "Idee" war es, einen von beiden weitestgehend nachzuempfinden und in meine PCB zu integrieren. Ich habe schon einige Threads gesehen von Leuten, die etwas Ähnliches vorhatten wie ich und der beste Rat war immer "lass es, nimm einfach eine fertige Lösung". Das ist mir aber nicht gestattet. Ich soll den uC selber bauen. Deswegen möchte ich die Quelle möglicher Fehler begrenzen und mich an bereits vorhandenen Designs wie dem Due oder Teensy orientieren. Allerdings verstehe ich einige Sachen nicht. Und zwar bin ich mir unsicher was die Programmierung angeht. Die fertigen uC werden ja soweit ich weiß immer mit Bootloader ausgeliefert, sodass sich die Programmierung leichter gestaltet. Mithilfe eines USB zu RS232 lässt sich der uC dann programmieren (zumindest bei den Arduinos mit ATMEGA, beim Teensy 3.5 gibt es keinen USB to Serial Wandler, weil der Chip wie ich annehme diesen integriert hat?) Wenn ich diese Prozessoren jedoch einzeln und fabrikneu bestelle, sind Bootloader schon drauf oder muss ich diese erst manuell auf den Chip schreiben? Mit welcher Hardware/Software ginge das? Ich habe gelesen bei den SMT32- Prozessoren ist schon ein Bootloader drauf? Dann könnte ich ja auch einen SMT32F303 wie diesen nehmen: https://www.st.com/resource/en/datasheet/stm32f303vd.pdf Beim Teensy 3.5 sieht man im Schematic (ganz unten auf der Seite) https://www.pjrc.com/store/teensy35.html#tech dass noch ein MKL02Z32VFG4 (MCU Cortex M0+32K flash) (1.) zusätzlich zum MK64FX512 (Cortex M4 und "Gehirn" des Teensys) (2.) verbaut ist. Weiß jemand wieso? 1.: https://www.mouser.de/ProductDetail/NXP-Semiconductors/MKL02Z32VFG4?qs=RECgZY%252BK1xLpPFD7GzHxWg%3D%3D 2.: https://www.mouser.de/ProductDetail/NXP-Semiconductors/MK64FX512VMD12/?qs=%2Fha2pyFadujpCJtEvKCpoqZE2e2wUWQscoWwmZV5MZaoray6%252BgPsTA%3D%3D Und generell, kennt sich jemand mit dem Bau solcher uC aus und kann mir vielleicht einen Tipp geben, wie ich das am besten angehe/mit welchem uC ich es am wenigsten schwer habe? Ich danke für eure Zeit, Lucas
1. Du baust keinen uC sondern ein development board. Ein Arduino ist kein uC. 2. Brauchst du für die meisten Controller einen Programmer. Ich habe einen Atmel ICE. Den Rest solltest du mit ein bisschen Suche selbst heraus finden können ;)
Du verwechselst glaube ich Microcontroller (Stm32 oder Atmel AVR) mit einen Dev Kit (teensy oder Arduino)
Der μC ist der ARM Cortex oder Atmega oder oder. Du willst ein embedded System bauen. Was ist denn das Thema der Arbeit? Lucas G. schrieb: > Ich muss vorallem analoge Eingänge schnell auswerten können. Ist Datendurchsatz oder schnelle Reaktionszeit die Prämisse? mfg mf
:
Bearbeitet durch User
Lucas G. schrieb: > Da es nicht zulässig ist einen "fertigen" uC zu nehmen muss ich diesen > selber aufbauen. Diese Aussage ist völlig daneben, wenn man sich Deinen nachfolgenden Text durchliest. Du meinst damit, dass Du keine fertiges Board nehmen darfst? Oder? Und dann kommst Du auch noch mit Arduino um die Ecke? Oh, oh. Hast Du dir schon ein schriftliches Anforderungsprofil erstellt? Erst dann kannst Du eine uC auswählen.
Weil ich nett bin: https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial Eine nicht böse gemeinte Frage: Für was für einen Studiengang schreibst du diese Arbeit? Du scheinst mir ja nciht wirklich ein E-Techniker zu sein.
Du wirst einen externen Programmer brauchen, der über JTAG/SWD, ICSP (Microchip) oder was auch immer geht. Darüber lädst Du Deinen Code, setzt Breakpoints, schaust Dir Variablen und Speicher an und startest oder stoppst die Ausführung. Arduino macht das anders. Mussten sie auch, weil die AVRs das anfangs auch nicht anders konnten. Das ist aber doof: Fire&Forget. Code in den Prozessor laden, schauen ob geht (ohne die Möglichkeit, den Prozessor über die Schulter zu schauen), andern, nächster Versuch. Eingebaute Bootloader sind eher für das Updaten im Feld. fchk
Moin Lucas, Lucas G. schrieb: > Ich muss vorallem > analoge Eingänge schnell auswerten können. (schneller als 10us) Und ich > brauche relativ viele Pins (die genaue Anzahl weiß ich noch nicht aber > bestimmt um die 50) Wie viele analoge Eingänge? Die 50 Pins digital/analog - Input/Output? Lucas G. schrieb: > Allerdings verstehe ich einige Sachen nicht. Und zwar bin ich mir > unsicher was die Programmierung angeht. Die fertigen uC werden ja soweit > ich weiß immer mit Bootloader ausgeliefert, sodass sich die > Programmierung leichter gestaltet. Mithilfe eines USB zu RS232 lässt > sich der uC dann programmieren (zumindest bei den Arduinos mit ATMEGA, > beim Teensy 3.5 gibt es keinen USB to Serial Wandler, weil der Chip wie > ich annehme diesen integriert hat?) STM hat (meistens) einen "Bootloader" eingebrannt mit dem man an den Chip/Flash kommt. AVR/PIC kann man mit Bootloadern befeuern und die machen, dass dann über USB-UART-Bridge. Ist aber auch nicht die einzige Möglichkeit. Man kann zB nem AVR8 mit richtig gewähltem Quarz einen Bootloader verpassen, damit er sich über USB am Rechner meldet und sich brennen lässt (DFU?). ABER fast alle Anliegen gehen schon viel zu weit. OldMan schrieb: > Hast Du dir schon ein schriftliches Anforderungsprofil erstellt? > Erst dann kannst Du eine uC auswählen. So nämlich. Ist nicht bös gemeint aber damit kann hier keiner was anfangen - Also: Konkrete Beschreibung der Aufgabe. Zur Not male einfach ein Blockschaltbild mit möglichst vielen Details. Dann kann man eventuell das erste mal erahnen welche Fallstricke da noch warten. gruß (:
Lucas G. schrieb: > im Rahmen meiner Bachelorarbeit benötige ich einen Mikrocontroller. Da > es nicht zulässig ist einen "fertigen" uC zu nehmen muss ich diesen > selber aufbauen. Hoffentlich büffelst du vorher erst noch die korrekte Terminologie. Nicht dass noch der aller Letze Rest von Wissenschaftlichkeit abhanden kommt. Ist ja bei einer Bachelorette sowieso nicht üppig damit. Aber wenn man nicht mal weiß von was man eigentlich redet. Oh je!
Ich habe einen NXP 11U68. Den kann man auch ganz einfach über USB programmieren. Einen Pin setzen, und dann meldet sich der Prozessor als USB Mass Storage Device, und die Firmware wird einfach drauf kopiert. Bei STM 32H Prozessoren gibt es auch ein USB Programmier-Modus. Der Prozesser geht per Pin in einen DFU Modus, und kann mit einem Programm dfu_util (Open Source) programmiert werden. Bei beiden Prozessoren habe ich keine andere Hardware wie Jtag etc benötigt.
Ich würd mal Ben Eater fragen ;-) Mit Mikro hat das dann allerdings nichts mehr zu tun.
> Dev Kit (teensy oder Arduino)
Ein "Dev Kit" ohne ordentlichen Debugger?
Ich glaub du verwechselt da selber was.
Serielle Bootlader werden ohne voellig ueberbewertet.
Einziger sinnvoller Einsatz sind Controller ohne internes
Flash die solcher Darreichung beduerfen.
Weasel P. schrieb: > Für was für einen Studiengang schreibst du diese Arbeit? > Du scheinst mir ja nciht wirklich ein E-Techniker zu sein. Haha, stimmt. Bin eher Maschinenbauer. Luft- und Raumfahrttechnik um genau zu sein. Ich hatte in meinem Studium nur ein klitzekleines Modul über die Basics der E-Technik. Warum habe ich mir dann so ein Thema ausgesucht? Weil ich mich doch heimlich zur E-Technik hingezogen fühle. Ich beschäftige mich schon seit Jahren immer mal wieder hobbymäßig damit. Aber bisher hab ich immer Arduinos genommen. Und die "Aufgaben" waren relativ simpel. (Stepper/ DC Motor ansteuern, LED ansteuern etc.) Robin schrieb: > Du verwechselst glaube ich Microcontroller (Stm32 oder Atmel AVR) mit > einen Dev Kit (teensy oder Arduino) Achim M. schrieb: > Der μC ist der ARM Cortex oder Atmega oder oder. > > Du willst ein embedded System bauen. Ok, verstanden. Danke für die Korrektur. OldMan schrieb: > Lucas G. schrieb: >> Da es nicht zulässig ist einen "fertigen" uC zu nehmen muss ich diesen >> selber aufbauen. > > Diese Aussage ist völlig daneben, wenn man sich Deinen nachfolgenden > Text durchliest. > Du meinst damit, dass Du keine fertiges Board nehmen darfst? Oder? > > Und dann kommst Du auch noch mit Arduino um die Ecke? Oh, oh. Es geht an sich nur darum, einen uC selber einzubetten. Es spricht nichts dagegen, alle Komponenten und die Beschaltung eines Dev Kit wie Arduino oder Teensy zu kopieren. Nur "Dev Kit kaufen" -> "Dev Kit drauflöten oder stecken" darf ich nicht. Ein fertiges Kit wie der Teensy 3.5 ist vielleicht nicht perfekt auf mein Projekt zugeschnitten und hat dann viele Funktionen die ich womöglich nicht brauche aber es gibt mir etwas, mit dem ich anfangen kann. Und von dem ich weiß, dass es funktioniert. Der uC ist nämlich nur ein kleiner Teil meiner Arbeit und diese ist relativ knapp bemessen was Zeit angeht. Micha W. schrieb: > OldMan schrieb: >> Hast Du dir schon ein schriftliches Anforderungsprofil erstellt? >> Erst dann kannst Du eine uC auswählen. > > So nämlich. > Ist nicht bös gemeint aber damit kann hier keiner was anfangen - Also: > Konkrete Beschreibung der Aufgabe. Zur Not male einfach ein > Blockschaltbild mit möglichst vielen Details. Dann kann man eventuell > das erste mal erahnen welche Fallstricke da noch warten. Hab ich noch nicht, aber das werde ich jetzt tun. Ich habe hier nichts als "böse" wahrgenommen. Sondern ich danke euch für jede Antwort und berechtigte Kritik an meinem Vorgehen. Gebt mir ein bisschen Zeit, ich melde mich dann nochmal mit einem Blockschaltbild.
Cyblord -. schrieb: > Hoffentlich büffelst du vorher erst noch die korrekte Terminologie. > Nicht dass noch der aller Letze Rest von Wissenschaftlichkeit abhanden > kommt. Ist ja bei einer Bachelorette sowieso nicht üppig damit. > Aber wenn man nicht mal weiß von was man eigentlich redet. Oh je! Spätestens seit dem TV-Format hat der Begriff eh seine wissenschaftlichkeit verloren. Ansonsten kann ich nur sagen: stimmt! Hab tatsächlich relativ wenig Ahnung wie man sieht. Aber ich bin hier um das zu ändern.
Lucas G. schrieb: > Ansonsten kann ich nur sagen: stimmt! Hab tatsächlich relativ wenig > Ahnung wie man sieht. Aber ich bin hier um das zu ändern. Eine Bachelorarbeit soll ja eigentlich deinen Lernerfolg dokumentieren. Es macht wenig Sinn hier ein Thema zu wählen von dem man wenig Ahnung hat. Hättest du das Ändern wollen, hättest du während des Studium genug Zeit dazu gehabt. Natürlich kann und soll eine Bachelorarbeit neue Aspekte enthalten die man sich erst erarbeiten muss. Aber dann in einem vertrauten Gebiet.
Maschinenbauer, ok dann lassen wir das einmal gelten. Such dir erstmal einen ATMega fürs Steckbrett. Hier kannst du nämlich einen Arduino als Programmer verwenden. Lad dir Atmel Studio runter und probier hier erstmal ein bisschen herum um ein Gefühl dafür zu bekommen. Dann solltest du erst du größeren Controllern gehen. Darf man Fragen was das am Ende werden soll? Villeicht brauchst du im Endeffekt garnicht so viele Pins.
Cyblord -. schrieb: > Lucas G. schrieb: > >> Ansonsten kann ich nur sagen: stimmt! Hab tatsächlich relativ wenig >> Ahnung wie man sieht. Aber ich bin hier um das zu ändern. > > Eine Bachelorarbeit soll ja eigentlich deinen Lernerfolg dokumentieren. > Es macht wenig Sinn hier ein Thema zu wählen von dem man wenig Ahnung > hat. Hättest du das Ändern wollen, hättest du während des Studium genug > Zeit dazu gehabt. > Natürlich kann und soll eine Bachelorarbeit neue Aspekte enthalten die > man sich erst erarbeiten muss. Aber dann in einem vertrauten Gebiet. Mit den Grundlagen, die man im Bachelorstudium lernt hat man eigentlich nicht wirklich "Ahnung" von irgendwas. Zumindest von nichts Praktischem. Ich habe kein Thema gesehen bei dem keine intensive Recherche notwenig gewesen wäre. Davon abgesehen hast du bestimmt Recht und das nehme ich mir gerne zu Herzen für meine Masterarbeit, aber das Thema steht jetzt fest. Ab jetzt helfen mir nur noch Tips zum Thema. Weasel P. schrieb: > Darf man Fragen was das am Ende werden soll? Meine Aufgabe ist es, eine Steuerung für galvanische Zellen zu bauen. Die besteht aus Stromversorgung der einzelnen Zellen, Temperatursensoren, Drucksensoren, Heizer und Ventile. Weasel P. schrieb: > Villeicht brauchst du im Endeffekt garnicht so viele Pins. Die Schalter für Heizer und Ventile sowie die ADCs der Sensoren könnte man wahrscheinlich Pin-sparend über I²C anschließen, aber die Stromversorgung benötigt ein paar Pins. Da sind z.B. DC/DC Wandler involviert die Alarm Ausgänge haben, Schalter um die Zellen ein- und auszuschalten, Strom- und Spannungsmessung an jeder Zelle. Wie gesagt, ich melde mich nochmal mit einem Blockschaltbild.
Lucas G. schrieb: > im Rahmen meiner Bachelorarbeit... Lucas G. schrieb: > Meine Aufgabe ist es,... Alles nur quergelesen aber: so, wie Du die Aufgabe bis jetzt beschreibst, ist das die Entwicklung und der Aufbau einer Hardware sowie deren Programmierung. Mir kommt das für eine Bachelorarbeit ganz schön viel vor. Wieviel Zeit hat man für sowas heutzutage? Zu meiner Zeit (Diplom-Studiengang) hatte man für Studien- und Diplomarbeit offiziell drei Monate Zeit. Allerdings war es damals (zumindest an der TUB) allgemein üblich, erstmal anzufangen, so gut wie fertig zu werden und dann erst offiziell anzumelden, um alles in den drei Monaten zusammenzuschreiben (was schon Stress genug war). Bei dieser Vorgehensweise war es dann natürlich möglich, dickere Bretter zu bohren.
:
Bearbeitet durch User
Überlege Dir, ob es auch ein bisschen kleiner geht. Also mit einem kleinen (weniger Pins) uC ein oder 2 Zellen. Wenn Du uC und verteilte Sensoren und SPS/Event und und und auf einmal machst, bleibt für die eigentliche Verfahrenstechnik keine Zeit. Wenn Du dagegen eine schlagkräftige Zelle baust, kann jemand nach dir das auf beliebige Größen skalieren.
Ja ne, iss klar... Wo ganze Firmen von leben soll jemand in seiner Bachelorarbeit machen :>
Du schriebst: "Die fertigen uC werden ja soweit ich weiß immer mit Bootloader ausgeliefert, sodass sich die Programmierung leichter gestaltet. Mithilfe eines USB zu RS232 lässt sich der uC dann programmieren (zumindest bei den Arduinos mit ATMEGA, beim Teensy 3.5 gibt es keinen USB to Serial Wandler, weil der Chip wie ich annehme diesen integriert hat?) Wenn ich diese Prozessoren jedoch einzeln und fabrikneu bestelle, sind Bootloader schon drauf oder muss ich diese erst manuell auf den Chip schreiben? Mit welcher Hardware/Software ginge das?" Bootloader findet man sehr häufig bei den etwas kleineren Bauformen, CSP zum Beispiel. Das kommt daher, dass man kaum sogenannte "Programmiersockel" für diese Gehäuseformen bekommt. Es gibt aber auch Hersteller, die die Politik verfolgen, komplett alle Controller mit integriertem Bootloader auszuliefern. So ist dann natürlich ein Aufspielen der Software recht einfach. Zudem kann man die meisten Controller auch vorprogrammiert bestellen, ab Werk, oder von einem Drittanbieter. Dann kommen die Teile gegurtet, aber fertig programmiert. Generell werden die Controller mit der Software vom Hersteller, der Programmier-Umgebung, programmiert. Um nur einfach das Flash mittels Bootloader zu beschreiben, gibt es dann auch eine kleine Konsolen-Anwendung (vom Hersteller), oder es reicht aus, mit einem Konsolen-Befehl ganz einfach ein File über die serielle oder USB-Schnittstelle zu übertragen. Das wäre für Updates im Feld die simpelste Variante.
Der müde Joe schrieb: > Mithilfe eines USB zu RS232 lässt sich der uC dann > programmieren (zumindest bei den Arduinos mit ATMEGA, beim Teensy 3.5 > gibt es keinen USB to Serial Wandler, weil der Chip wie ich annehme > diesen integriert hat?) Für Arduino Boards brauchst du keinen USB zu RS232 Wandler. Die meisten haben bereits eine USB-Schnittstelle drauf und selbst bei einem Arduino pro Mini kämest du damit nicht weiter, weil der nichts mit RS232 anfangen kann.
Lucas G. schrieb: > Wenn ich diese Prozessoren jedoch einzeln und fabrikneu bestelle, > sind Bootloader schon drauf oder muss ich diese erst manuell auf > den Chip schreiben? Bezieht sich die Frage jetzt pauschal auf alle Mikrocontroller, oder auf einen bestimmten? Manche haben Bootloader schon ab Werk drauf. Manche nicht. > Mit welcher Hardware/Software ginge das? Hängt vom Mikrocontroller ab und steht in dessen Dokumentation. Den wenigen Infos nach könnte der von dir gewählte STM32F303 in die richtige Richtung gehen. Den gibt es in unterschiedlichen Größen. Deine Fragen zu Bootloader, Programmierschnittstelle und Software sind dort beantwortet: http://stefanfrings.de/stm32/stm32f3.html Du solltest die Entwicklung auf jeden Fall mit einem fertigen Board beginnen, auf das du dich verlassen kannst. Erst später, wenn das Programm fertig ist, macht es Sinn, eine eigene Platine zu entwickeln. ST bietet für diesen Zweck äußerst preisgünstige "Nucleo" Boards an. Von deren Design darfst du auch gerne abgucken, die sind dafür gemacht worden. Während der Entwicklungsphase willst du sicher auch einen Debugger nutzen, deswegen versteife dich da mal nicht zu sehr auf den Bootloader. Der wird erst in der Serienfertigung interessant. PS: Als Student kurz vor dem Bachelor solltest du nicht mehr die Begriffe "Mikrocontroller", "Prozessor" und "Platine mit Mikrocontroller" durcheinander werfen.
Der müde Joe schrieb: > Wenn ich diese Prozessoren jedoch einzeln und fabrikneu bestelle, sind > Bootloader schon drauf oder muss ich diese erst manuell auf den Chip > schreiben? Woher soll der Hersteller des µC wissen, welchen Bootloader du drauf haben möchtest. Wenn du nicht gerade größere Stückzahlen orderst, wirst du selber einen draufspielen müssen. Dafür gibt es z.B. fertige Programmiergeräte, die mit geeigneten Daten von oder aus deiner Entwicklungsumgebung gesteuert werden. Mit welcher Hardware/Software ginge das?" Für AVR Controller ginge das z.B. mit einem Arduino
Lucas G. schrieb: > Es geht an sich nur darum, einen uC selber einzubetten. > Nur "Dev Kit kaufen" (und) drauflöten oder stecken" darf ich nicht. Ok, das ist eine klare Ansage. Finde ich bei deinem Studiengang zwar nicht angemessen, aber sei's drum. > Ein fertiges Kit wie der Teensy 3.5 ... > gibt mir etwas, mit dem ich anfangen kann. Das sehe ich anders, denn es widerspricht eindeutig der obigen Anforderung! Aber ich würde dir raten, diesen Punkt nochmal zu diskutieren, denn so ein fertiges Entwicklungs-Board wird dir die Arbeit erheblich vereinfachen und verkürzen.
Stefan ⛄ F. schrieb: > PS: Als Student kurz vor dem Master solltest du nicht mehr die Begriffe > "Mikrocontroller", "Prozessor" und "Platine mit Mikrocontroller" > durcheinander werfen. Als Maschinenbauer wird das ganze sowieso in einem Abwasch als "Steuerung" betitelt.
Lucas G. schrieb: > > Meine Aufgabe ist es, eine Steuerung für galvanische Zellen zu bauen. > Die besteht aus Stromversorgung der einzelnen Zellen, > Temperatursensoren, Drucksensoren, Heizer und Ventile. > > Weasel P. schrieb: >> Villeicht brauchst du im Endeffekt garnicht so viele Pins. > > Die Schalter für Heizer und Ventile sowie die ADCs der Sensoren könnte > man wahrscheinlich Pin-sparend über I²C anschließen, aber die > Stromversorgung benötigt ein paar Pins. > Da sind z.B. DC/DC Wandler involviert die Alarm Ausgänge haben, Schalter > um die Zellen ein- und auszuschalten, Strom- und Spannungsmessung an > jeder Zelle. > > Wie gesagt, ich melde mich nochmal mit einem Blockschaltbild. Bei sowas helfen einem die seriellen Schnittstellen. I2C, SPI Es macht z.B. Sinn Inputs (egal ob ADC oder Digital) an einem anderen i2c Bus zu hängen wie ausgehende Bausteine (DACs, Digitale outouts, PWMs , etc) Einarbeiten in z.b. die i2c Struktur und dort dann soviele externe Chips anbinden wie für die Aufgabe notwendig ist. Mit 400KHz lassen sich schon eine Menge Daten lesen/schreiben. Mitunter helfen auch i2c-Weichen die noch mehr Spielraum für Chips bieten. Ein simpler Bluepill (40pin DIL) ist ein nackter Prozessor dessen Pins Bastelfreunlich auf 2 Steckleisten verfügbar sind. (STM32F103) Kraftvoller als die AVRs im DIL Gehäuse. Da Du nicht vom Fach bist wird es damit schon sportlich genug.
Lucas G. schrieb: > im Rahmen meiner Bachelorarbeit benötige ich einen Mikrocontroller. Da > es nicht zulässig ist einen "fertigen" uC zu nehmen muss ich diesen > selber aufbauen. Erstens: eigentlich sollte eine wissenschaftliche Arbeit etwas sein, das nicht zusammengeramscht wurde, sondern eine eigene wissenschaftliche Leistung darstellt. OK, das scheint heutzutage nicht mehr en vogue zu sein. Zweitens wirst du selbstverständlich einen fertigen µC nehmen: das ist ein Plastikstück mit diversen Anschlüssen und etwas Silizium drinnen. Ansonsten: Mache dir zu allererst einen Plan. Und zwar einen qualifizierten Plan. Dazu gehört auch, dir diverse Datenblätter und Referenzmanuals zu den in Frage kommenden µC anzuschauen. Manche lesen sich einfacher und verständlicher, andere nicht - und das ist individuell verschieden. Manche µC haben einen Bootlader drin, andere nicht. So ein Bootlader ist dann fest drin, in einen ROM gebrutzelt und von dir nicht löschbar. Und er steht normalerweise auch außerhalb des dir zugänglichen Speicherbereiches. Vorschläge meinerseits: LPCxxx von NXP oder STM32 von ST. Die Chips von Freescale (MKL02Z32VFG4....etc) haben normalerweise keinen Bootlader, es sei denn, daß sich da entsprechende Neuerungen eingestellt haben. Auch die µC von Nuvoton haben keinen Bootlader, dafür aber einen LDROM, also einen separaten Bereich, wo man sowas selber machen könnte - ja: konjunktiv. So, wen du wirklich viele I/O brauchst, dann schau nach Chips mit 150..208 Pins. Sowas läßt sich noch gut löten und paßt auch noch auf eine kleine LP drauf, wenn man sich Mühe gibt. Dein Board mußt du natürlich selber machen, also ist da das Arbeiten mit einem EDA System angesagt. W.S.
Du hast da eine ziemlich umfangreiche Aufgabe und die Sache, um die du dir Gedanken machst, ist, wie du das Programm auf den µC bekommst?!? MMn ist das die trivialste Sache bei dem Projekt - das ist ein Problem das andere schon für dich gelöst haben, wirst schon irgendwann erfahren, was du machen musst[1]. So wie ich die Aufgabe sehe, kannst du 90% davon erledigen, ohne dich auf einen konkreten µC festzulegen. Wenn du soweit bist, hast du einen guten Überblick, was der können muss und dann kannst du einen aussuchen. Aus dieser Perpektive heraus finde ich die Anforderung, den "µC" selbst bauen zu müssen, ziemlich hanebüchen, insb wenn es eh erlaubt ist, bestehende Designs einfach abzukupfern. Da steckt keine Leistung drin - nur ein wenig Mehrarbeit und Gängelei. Im Rest steckt die gesamte Arbeit ... PS: Bei den Teensies wär ich vorsichtig - den zusätzliche µC, den du gefunden hast, ist der Kopierschutz.
Wenn er den MCU mit internem Oszillator betreibt sollte es doch überhaupt kein Problem sein ein Board zu erstellen: 1. Pro VCC-Pin ein Bypass-MLCC-Kondensator ~0.1uF 2. Ein Bulk MLCC-Kondensator an VCC mit ~4.7uF irgendwo in der Nähe des MCU 3. Bei ADC-Nutzung: VDDA Beschaltung (oft 0.1uF + 1uF) aus dem Datenblatt abkucken: Je nachdem ob du mit VCC, interner Referenz oder externer Referenz misst wird das minimal abweichen womit VDDA verbunden wird. 4. RST und BOOT Pins nach Datenblatt beschalten, beim STM32G431 muss man diese z.B. nicht mal beschalten, da sind die optional und können per Programmer und Firmware gesetzt/aktiviert/gesteuert werden. Beim den STM32F103 ist das nicht so. 5. Niemals die SWD Pins vergessen: SWDIO und SWCLK, diese am besten zusammen mit GND und VCC zu einem 4x1 Header wie bei der Bluepill rausführen, das ist dein "Bootloader+Debugger" Anschluss. Der im ROM gespeicherte Bootloader ist für die Produktion/Updates wo fertig debuggte Firmware aufgespielt wird. KiCAD sollte einige STM32 (und ATmega) Symbole bereits in der Standard-lib haben. In dem angehängten Bild siehst du wie ich den STM32G431 für eine rein digitale Schaltung mit interner VDDA-Referenz beschaltet habe. Die Probleme fangen erst so richtig an wenn du das Teil programmieren musst, wie viel Erfahrung ist denn da vorhanden? STM32CubeIDE + STM32CubeProgrammer + für 2€ einen ST-Link v2 würde ich für einen STM32-Anfänger empfehlen, wenn es denn STM32 sein soll. Teensy kannst du vergessen wegen dem proprietären Bootloader-Chip, wie schon gesagt wurde. Falls du mit AVR/Arduino schon was gemacht hast und dein Projekt damit gut umsetzbar ist, gelten die obigen Tipps genauso, bloß dass du die ISP-Pins statt SWD rausführen musst, auch da würde ich den Arduino-Bootloader nicht unbedingt benutzen, ISP geht halt immer.
:
Bearbeitet durch User
Lucas G. schrieb: > Und ich brauche relativ viele Pins ... bestimmt um die 50 Wofür so viele? Lucas G. schrieb: > aber die Stromversorgung benötigt ein paar Pins. Ach so. Aber die Stromversorgung kommt nicht vom Mikrocontroller sondern vom Netzteil. Und da kann man an nur zwei Pins (Plus und GND) viele Verbraucher anschließen.
NichtWichtig schrieb: > Ein simpler Bluepill (40pin DIL) ist ein nackter Prozessor dessen Pins > Bastelfreunlich auf 2 Steckleisten verfügbar sind. (STM32F103) > Kraftvoller als die AVRs im DIL Gehäuse. Ja, aber ausgerechnet von denen muss ich derzeit leider abraten, da offenbar fast nur noch schlechte Fälschungen verkauft werden. Für Anfänger bringt das unnötige Probleme.
W.S. schrieb: > 150..208 Pins. Sowas läßt sich noch gut löten Sagt der Profi. Ich bin an 100 Pins kläglich gescheitert.
Wenn du (TO) Anfaenger bist, nimm blos keinen 32-bitter, also irgendwelche STM32 oder LPC. Und lass dir nicht aufschwatzen, elementare IO auch noch extern anschliessen zu muessen. Damit wirst du mit Sicherheit in der Zeit nicht fertig. Fuer so langweiliges Zeug was du da treiben willst reicht ein viel uebersichtlicherer 8-bitter alle mal. Ein Silabs C8051F020 hat 8 12 bit ADC-Eingaenge 8 8 bit ADC-Eingaenge 2 12 bit DAC-Ausgaenge noch 8 Ports mit je 8 GPIO (das macht 64 GPIOs 5 V-tolerant). Den anderen Kleinkram wie I2C, UARTs, SPI und Timer hat er natuerlich auch noch. Den kann man per JTAG auch vernuenftig debuggen. Und lass dir nicht von irgendwem einreden der waere zu alt. Irgendwelche Adruinos fuehren bei Studienarbeiten immer zu Abwertungen in der Note. Und das mit Recht! Ein bewaehrter 8051 macht da viel mehr her.
>Ich muss vorallem >analoge Eingänge schnell auswerten können. (schneller als 10us) µ kaputt? Das ist wahrscheinlich das KO-Kriterium für die meisten Atmel... Da brauchst du ordentlich Rechenpower! Und DMA! Und möglichst mehr als einen ADC im µC! Wie groß ist denn die Ausgangsimpedanz deine ADC-Quellen? Die haben nämlich sehr großen Einflus auf deine sample + hold Zeit. bei >10k bist du da bei einigen ADCs bereits über 10µs. Stefan ⛄ F. schrieb: > könnte der von dir gewählte STM32F303 in die richtige > Richtung gehen. Der klingt erst mal ganz gut. Das NUCLEO köntest du eventuell auch mit der Arduino-IDE programmieren.
Stefan ⛄ F. schrieb: > NichtWichtig schrieb: >> Ein simpler Bluepill (40pin DIL) ist ein nackter Prozessor dessen Pins >> Bastelfreunlich auf 2 Steckleisten verfügbar sind. (STM32F103) >> Kraftvoller als die AVRs im DIL Gehäuse. > > Ja, aber ausgerechnet von denen muss ich derzeit leider abraten, da > offenbar fast nur noch schlechte Fälschungen verkauft werden. Für > Anfänger bringt das unnötige Probleme. Dann empfehle ich GD32F103, die gibts bisher nur als Original... Solnnderblödsinn? Pille
M.A. S. schrieb: > Alles nur quergelesen aber: so, wie Du die Aufgabe bis jetzt > beschreibst, ist das die Entwicklung und der Aufbau einer Hardware sowie > deren Programmierung. Korrekt. M.A. S. schrieb: > Mir kommt das für eine Bachelorarbeit ganz schön viel vor. Wieviel Zeit > hat man für sowas heutzutage? Ich habe 4 Monate Zeit. Das Vorgehen was du meintest, also anzufangen vor der Anmeldung kenne ich auch. Haben Kommilitonen von mir gemacht, aber offiziell ist das nicht erlaubt. Ich halte mich an die 4 Monate. Ich muss jedoch dazu sagen dass die Programmierung zwar Teil der Gesamtaufgabe ist, aber nicht der Bachelorarbeit. Ich mache im Anschluss noch ein Praktikum um die Programmierung fertig zu stellen. BA hat also den Fokus auf die Entwicklung dieser Steuereinheit. dummschwaetzer schrieb: > Wie groß ist denn die Ausgangsimpedanz deine ADC-Quellen? Hmm, die weiß ich von den meisten Quellen nicht. Die Zellen haben eine Impedanz von unter einem Ohm. Die Ausgangsimpedanz der Drucksensoren und der Amplifier weiß ich nicht. Florian S. schrieb: > Die Probleme fangen erst so richtig an wenn du das Teil programmieren > musst, wie viel Erfahrung ist denn da vorhanden? Hab schon viel mit der Arduino IDE und ein bisschen mit Eclipse programmiert. Bin aber nie wirklich tief in die Materie eingetaucht. Ich habe mal einen Watchdog-Timer der eine ISR aufruft auf einen Arduino implementiert. Dafür musste ich Bits in bestimmten Registern setzen. Da lacht ihr jetzt bestimmt drüber aber vielleicht ist das ja schon was. Mit KiCad komme ich klar. Wäre nicht die erste Platine, die ich mache. Nur die erste mit einem eingebetteten uC. Was alle anderen Antworten angeht: tut mir leid, dass ich nicht auf jede einzelne eingehen kann, es sind zu viele. Trotzdem Danke für jede Antwort. Ich habe jetzt wie versprochen das Blockschaltbild angehangen und versuche, das Ganze noch ein bisschen besser zu erklären: - Zu den Heizungen/Ventilen gibt es keine besonderen Anforderungen. Diese sollen ein/ausschaltbar sein mit Frequenzen unter 1 Hz. Dafür habe ich mit dem LTC1623 einen Dual High Side Switch, welcher I²C-fähig (100kHz) ist, gefunden. Der schaltet zwar nicht so schnell und hat maximal 8 Adressen, was die Anzahl an Schalter auf 16 pro Bus begrenzt, aber er sollte für die Aufgabe ausreichend sein. Ich bin aber offen für Vorschläge besserer Chips. - Thermocouples: bekommen Filter und Verstärker und werden mithilfe des MCP3428, ein 4-Kanal 16 Bit I²C-fähiger ADC ausgelesen. Die Drucksensoren liefern 0..10V und werden mit dem gleichen ADC ausgelesen. Dieser unterstützt Busgeschwindigkeiten von bis zu 3,4MHz, aber Temp. und Druck müssen nicht all zu schnell ausgelesen werden (max 100Hz), weshalb eine Busgeschwindigkeit von 400kHz ausreichend sein sollte. Auch der ADC hat maximal 8 Adressen, was die Anzahl der Eingänge auf 32 pro Bus begrenzt. - Die Zellen sind das Herzstück der Anlage. Und in Dimension und Anzahl vorgegeben. Es gibt 8 Zellen, die unabhängig voneinader mit Strom versorgt werden sollen. Deswegen hat jede Zelle ihren eigenen DC/DC-Wandler mit I²C. Die Spannung soll nämlich einstellbar sein. (siehe meinen anderen Thread (geringe Spannung mit PMOS schalten) bei Interesse) Diese DC/DC-Wandler (BMR463) ermöglichen es, 21 unterschiedliche Adressen einzustellen und arbeiten mit Geschwindigkeiten von 100 und 400kHz. Die Wandler verwende ich auf dem gleichen Bus wie die ADCs bei den Zellen. Dann sind allerdings Outputs und Inputs auf dem gleichen Bus (macht das wirklich Probleme oder trennt man das nur weils "schöner" ist?) Zur Überwachung der Zellen muss ich Strom und Spannung ermitteln. Die Spannung über dem Shunt (für Strommessung) messe ich mithilfe des ADCs (MCP3428), ebenso wie die Alarm-Ausgänge der DC/DC Wandler. Die Spannung an der Zelle (nehme ich vom Bauteil "Terminal" im Blockschaltbild) messe ich nicht mit dem ADC. Der Grund folgt weiter unten. Die Driver bei den Zellen möchte ich direkt vom uC ansteuern. Das macht dann also 8 nötige Digital Outputs. Grund ist, dass ich die NMOS schnell abschalten muss. Der LTC1632 ist ne lahme Gurke. Ich habe keinen "schnellen" Treiber gefunden (t_off < 5us) der mit I²C arbeitet. Vielleicht habe ich auch nach den falschen Teilen gesucht. Bin auch hier offen für Vorschläge. Habe jetzt den 1ED44173N01B (weil schnell und nicht invertierend) Warum muss ich die Mosfet schnell schalten können? Ich messe die Impedanz der Zelle mittels Current Interrupt (für Health-monitoring, ca ein mal pro Sekunde). Also Spannung vorher messen, Strom kurz abschalten, Spannung nochmal messen, Strom wieder an. Aus der Differenz der Spannung vor und nach dem Abschalten (und des Stroms) errechne ich die Impedanz. Die "Restspannung" fällt natürlich weiter und je später ich messe, umso ungenauer wird die berechnete Impedanz. Deswegen soll dieser Prozess zeitlich kurz gehalten werden. (Geht auch darum dass der Duty Cycle der Zelle möglichst hoch ist.) Im Labor haben wir eine Zeitdauer von 25 us gewählt. D.h. 25 us Strom aus. In dieser Zeit muss die Spannung gemessen werden. Am besten mehrmals, um einen Mittelwert zu bekommen. Hier ist Timing also das A und O. Vielleicht kann man diese Zeitspanne noch verdoppeln oder verdreifachen, das werden weitere Tests zeigen, aber es läuft darauf hinaus, dass ich in der Lage sein muss im Interval von ca. 10-20 us analoge Werte mit mindestens 12 Bit Auflösung lesen zu können. (Die gesamte Spannungsdifferenz liegt im Bereich von 200 mV) Der ADC (MCP3428) hat maximum 240 SPS, was ich als Samples Per Second verstehe (Interval von 4167 us), was ihn disqualifiziert. Deswegen wollte ich das mit den integrierten ADCs des uC lösen. Diese Aufgabe ist wahrscheinlich der ausschlaggebende Faktor für die Wahl des uC und war überhaupt der Grund, warum ich erwäge 32 Bitter zu verwenden. Die ADCs der ATMegas brauchen ca 100 us für einen analogRead und haben mit 10 Bit eine zu kleine Auflösung. Ich fasse also nochmal meine Anforderungen zusammen: - 8 Analoge Inputs mit 12 Bit Auflösung. Messinterval ca. 10 us - 16 Digitale Outputs für die NMOS Driver (im Blockschaltbild sind nur 8 erwähnt, aber mit 16 habe ich noch Spielraum für Status-LED und einzelne Schalter, die ggf. noch dazu kommen.) - 3x I²C Bus (1x 100kHz, 2x 400kHz) mindestens. Die Steuerung sollte möglichst erweiterbar sein und hat am besten insgesamt 5 Busse (2x 100kHz und 3x 400kHz) um ggf. mehr Sensoren und Schalter anzuschließen. Wünschenswert wäre, wenn 3 Busse hardwareseitig da sind. Die 2 extra Busse können ja softwareseitig sein. (Ich denke da an die Funktionalität die die SoftwareSerial Lib bei Arduino bietet). Vermutlich werden die nicht gebraucht, aber wenn doch dann ist es gut dass sie da sind. - Eine Serielle Schnittstelle. Ich denke, das ist klar. Ich will den uC mit meinem Computer programmieren können. Ob Bootloader oder nicht ist mir, nachdem was ich hier gelesen habe, egal. Hauptsache ich kann mein Programm hochladen. Das Ding hier ist ein ganz schöner Roman geworden.. aber ich hoffe jetzt ist die ganze Sache ein bisschen klarer. Vielleicht kann mir jemand bei der Auswahl eines geeigneten uC helfen. Das mit den Nucleo Boards von SMT klingt ja schonmal gut. Bin aber auch offen für 8 Bitter, wenn es welche gibt die meinen Anforderungen gerecht werden können. Vielen Dank für Eure Aufmerksamkeit und Gute Nacht Lucas PS.: Hier noch Datenblätter der genannten Komponenten: Amplifier (INA240 - für Shunt) https://www.ti.com/lit/ds/symlink/ina240.pdf?ts=1612248020201&ref_url=https%253A%252F%252Fwww.google.com%252F ADC (MCP3428) https://ww1.microchip.com/downloads/en/DeviceDoc/22226a.pdf I²C- NMOS Driver (LTC1623) https://www.analog.com/media/en/technical-documentation/data-sheets/1623f.pdf NMOS Driver (1ED44173N01B) https://www.infineon.com/dgdl/Infineon-1ED44173N01B-DataSheet-v01_00-EN.pdf?fileId=5546d46272aa54c00172bc99c2d45678 DC/DC Wandler (BMR463) https://flexpowermodules.com/resources/fpm-techspec-bmr463
:
Bearbeitet durch User
Na hoffentllich schaffst Du das in den kurzen 4 Monaten. Die Aufgabe ist ziemlich umfangreich und unvorhergesehene Fallstricke wirst du kaum abschätzen können. Das Ganze will auch noch dokumentiert sein neben dem ganzen Aufbau und Experimentieren mit Varianten. Du wirst danach sicher als Koryphäe des fachübergreifenden Ingenieurwesens gefeiert werden. mfg
Ich denke, dass 4 Monate dafür nicht reichen. Ein Platine muss designed werden. Dafür brachuen auch Profis eine Woche. Ist ja nicht nur der Controller, sondern auch das ganze IO-Krams und das Hühnerfutter, was passen muss. Dann wird bestellt, und wenns gut läuft, dann ist nach 14 Tage ein bestückter Prototyp da. Kann aber auch länger dauern, da viele Bestücker ausgebucht sind und die Lieferzeit von Komponenten gerade explodiert. Es wird versucht, die Platine in Betrieb zu nehmen. Dabei fällt nach 14 Tagen am Oszilloskop auf, was alles falsch ist, und die Platine Revision 2 wird bestellt. Also wieder warten. Dann ist, wenns gut läuft, nach 2 Monaten eine fertige, funktionsbereichte Platine vorhanden. Und dann geht es los mit der Programmierung. Programmierungebung aufsetzen. Sich in die Tools einarbeiten. Sich in den Chip einarbeiten. (ich habe gerade ein STM Referenz-Manual mit über 3000 Seiten vor mir) Und dann letztendlich die Funktionalität entwickeln. Alles das wird mehr als 4 Monate benötigen.
...also, ich dachte immer, ein Maschinenbauer baut Maschinen...aber was weiß ich schon... Wenn es meine Aufgabe wäre, würde ich einen guten 8-Bitter mit einem guten externen AD-Wandler, zum Beispiel von Analog Devices, verbinden. Mit Analog-Multiplexern kann man die Anzahl der Eingänge beliebig erweitern. Ebenso kann man die Anzahl der I2C-Busse mit Port-Expandern erweitern. - Silicon Labs Laser Bee, 72 MHz, 8-Bit 8051, 900 ksps 14-Bit AD-Wandler - Texas Instruments PCA9548A, 8 Channels I2C Expander - Analog Devices AD7329, 8-Channels, 1 Msps, 12 Bit, single ended/differential inputs
Der müde Joe schrieb: > ...also, ich dachte immer, ein Maschinenbauer baut Maschinen...aber was > weiß ich schon... Dachte ich auch. Und als solcher würde ich eine fertige Steuerung und/oder einen IPC nehmen und evt. benötigte Zusatzmodule und alle Logik damit machen. Hier wirklich selbst µC Boards zu fricklen ist der pure Wahnsinn. Und es entspricht ja auch nicht der Lebenswirklichkeit in diesem Bereich.
Maschinenbauer quälen sich eigentlich nicht mit nackten µC, sondern nehmen gleich eine SPS :)
Lucas G. schrieb: > Das Vorgehen was du meintest, also anzufangen > vor der Anmeldung kenne ich auch. Haben Kommilitonen von mir gemacht, > aber offiziell ist das nicht erlaubt. Das war es früher auch nicht. ;)
Lucas G. schrieb: > Ich muss jedoch dazu sagen dass die Programmierung zwar Teil der > Gesamtaufgabe ist, aber nicht der Bachelorarbeit. Dann klingt das vom Aufwand her vernüftig.
Pille schrieb: > Dann empfehle ich GD32F103, die gibts bisher nur als Original... > Solnnderblödsinn? Es ging nicht um den Mikrocontroller sondern um das Board. Blue-Pill Boards sind mit irgendwas bestückt. Du kannst vor dem kauf nicht wissen, ob es ein STM32F103 oder ein GDM32F103 oder sonst etwas ist. Versuche mal ein Blue-Pill Board zu kaufen, auf dem garantiert dein GD32F103 sitzt. Viel Glück!
Lucas G. schrieb: > Ich habe 4 Monate Zeit Mein herzliches Beileid. Stelle dich darauf ein, noch ein Jahr dran zu hängen. > 3x I²C Bus (1x 100kHz, 2x 400kHz) mindestens... > am besten insgesamt 5 Busse (2x 100kHz und 3x 400kHz) Das dürfte die Auswahl des Mikrocontrollers stark einschränken. Ich kenne keinen Mikrocontroller mit so vielen I²C Bussen. Das wird dann wohl auf Multiplexer oder Soft-I²C hinaus laufen. Deine geforderte Geschwindigkeit bereitet mir allerdings sorgen, weil die dann immer nur abwechselnd bedient werden können.
Moin, Lucas G. schrieb: > Ich habe 4 Monate Zeit. Wuerd ich mich keinesfalls drauf einlassen. Ich geh' mal davon aus, dass dein Betreuer oder wer auch sonst der Ansicht ist, dass du kein vorgefertigtes uC-Board nehmen sollst, auch eher nicht in der Materie drinnensteckt. Auch mit vorgefertigtem Board: wenn du da nicht schon ordentlich Erfahrung mit genau diesem Board privat gemacht hast: Grosses Risiko. Ich hab's hier schon 1000x geschrieben: Eine Abschlussarbeit ist nix, wo man mal was ganz neues, tolles, was einen interessiert, ausprobieren soll. Das kann man vorher/hinterher privat machen. Aber fuer die Abschlussarbeit nimmt man sinnvollerweise irgendwas, was man schon kann. Dann klappts auch mit der Note und dem Abgabetermin. Gruss WK
Lucas G. schrieb: > im Rahmen meiner Bachelorarbeit benötige ich einen Mikrocontroller. Mich grauelt es, wenn jemand eine Bachelorarbeit schreiben möchte und hat die grundlegensten Fachbegriffe nicht drauf (µC, Mikrocontroller, CPU, Dev-Board usw.)
Cyblord -. schrieb: > Der müde Joe schrieb: >> ...also, ich dachte immer, ein Maschinenbauer baut Maschinen...aber was >> weiß ich schon... > Dachte ich auch. Da habt ihr euch halt getischen. Das Maschinenbaustudium ist vielleicht das einzige polytechnische Studium, das überhaupt angeboten wird. Als TE würde ich parallel vorgehen, erst ein Eval-Kit holen, wenns ST sein soll am Besten ein Nucleo und das System grob per Steckverdrahtung aufbauen und damit würde ich mich direkt an die Programmierung machen. Wenn die einzelnen Komponenten funktionieren, dann das eigene Board machen. Für die Dev-Boards sind ja die Schaltpläne verfügbar, ist also nur ein Nachbau unter Weglassen der nicht benötigten Teile und Erweiterung um hoffentlich nur ein paar Kleinigkeiten. Allerdings wird das, wenn man noch nie gelayoutet hat, schon ein Brocken und 4 Monate sind schnell rum.
Einzig erschreckend finde ich, dass du eine Arbeit über ein Thema schreiben sollst, von dem du weniger Ahnung als ein Anfänger hast. Was soll dabei denn bitte rauskommen und wie ist man überhaupt zu dem Thema gekommen bzw. was wurde die letzten Jahre gemacht, dass jetzt solche Bildungslücken vorhanden sind? Und wann soll die Arbeit fertig sein? In 3 Jahren, wenn genug Vorwissen angeeignet wurde?
:
Bearbeitet durch User
Stefan ⛄ F. schrieb: > Lucas G. schrieb: >> Ich habe 4 Monate Zeit > > Mein herzliches Beileid. Stelle dich darauf ein, noch ein Jahr dran zu > hängen. > >> 3x I²C Bus (1x 100kHz, 2x 400kHz) mindestens... >> am besten insgesamt 5 Busse (2x 100kHz und 3x 400kHz) > > Das dürfte die Auswahl des Mikrocontrollers stark einschränken. Ich > kenne keinen Mikrocontroller mit so vielen I²C Bussen. Das wird dann > wohl auf Multiplexer oder Soft-I²C hinaus laufen. Deine geforderte > Geschwindigkeit bereitet mir allerdings sorgen, weil die dann immer nur > abwechselnd bedient werden können. Das ist kein Problem. Schau Dir mal Tiva TM4C123 an, da gibt es Varianten mit bis zu 10 UARTS, 8 I2C, 4 SPI, einen Haufen ADC-Pins, PWMs,... Pincount reicht von 64 über 100 bis zu 144 Pins im TQFP mit 0.5mm Pitch (also Standard). TI bietet eine sehr gute Treiberbibliothek dafür an, sowie das TI-RTOS. Das ist jetzt nicht die typische Bastlerplattform, weil unbekannt, aber deswegen nicht schlechter. https://www.ti.com/product/TM4C123GH6PGE (144 Pins) https://www.ti.com/product/TM4C123GH6PZ (100 Pins) https://www.ti.com/product/TM4C123GH6PM (64 Pins) https://www.ti.com/lit/ds/symlink/tm4c123gh6pge.pdf https://www.ti.com/lit/ug/spmu298e/spmu298e.pdf https://www.ti.com/tool/EK-TM4C123GXL (zum Ausprobieren vorher, Debugger eingebaut) Software: https://www.ti.com/tool/CCSTUDIO-TM4X (CCS IDE) https://www.ti.com/tool/SW-TM4C (Treiberbibliothek TivaWare) https://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/tirtos/index.html (TI-RTOS Download Page) Stand Alone Debug Probe: https://www.ti.com/tool/TMDSEMU110-U Dazu hat TI auch ein Forum, wo die tatsächlich auch auf Fragen antworten. Mit den Links hast Du erstmal alles, was Du so brauchst an Infos, Datenblättern, IDE+Compiler+Debugger, Debuggerhardware und Treiberbibliotheken. Komplettlösung also. Bei Fragen hast Du genug brauchbare Doku, und ansonsten fragst Du im TI-Forum nach. fchk
Erschreckender finde ich, dass jemand aus diesem Bildungsbereich sich keine Kenntnisse anlesen und seine benötigten Komponenten für eine Aufgabe aus dem Marktangebot selbst aussuchen kann! Macht er das in seinem Fachbereich "Maschinenbau" genauso? Zieht Ihn womöglich frühs noch Mutti an? Ab einem gewissen Alter sollte man sich selbst benötigte Informationen zusammensuchen können und kein Forum dazu brauchen. Andernfalls ist man einfach nur zu faul zum Suchen oder von vornherein zu doof für die gestellte Aufgabe/Beruf.
Frank K. schrieb: > Das ist kein Problem. Schau Dir mal Tiva TM4C123 an, da gibt es > Varianten mit bis zu 10 UARTS, 8 I2C > Mit den Links hast Du erstmal alles, was Du so brauchst an Infos Wow!
Stefan ⛄ F. schrieb: > Ich bin an 100 Pins kläglich gescheitert. Du bist ja auch kein angehender Bachelor mehr. Wir werden schließlich alle älter und brauchen irgendwann eine Feinmechanikerbrille oder ein Stereomikroskop. dummschwaetzer schrieb: > Da brauchst du ordentlich Rechenpower! Und DMA! Und möglichst mehr als > einen ADC im µC! ordentlich Rechenleistung: ja - sofern es in Echtzeit geschehen muß. Sonst eher nicht. Hängt aber von der Aufgabe ab. DMA: wozu? Da ist eher ein ADC angesagt, der seine Eingänge selbständig abscannt und die Ergebnisse in eigenem Array ablegt. Sowas gibt's bei den LPC von NXP. Immer dran denken: DMA kann wirklich NICHTS ANDERES, als Daten von A nach B zu transportieren. DMA kann nichts auswerten, dazu ist Software nötig. Mehr als 1 ADC: Ist eher selten, wenn nötig, dann eher mit externen ADC's und FPGA zum Auswerten - ist hier aber völlig überzogen. Sowas ist jenseits einer Bachelor-Arbeit. W.S.
Lucas G. schrieb: > Das Ding hier ist ein ganz schöner Roman geworden.. aber ich hoffe jetzt > ist die ganze Sache ein bisschen klarer. OK, du willst vornehmlich mit I2C arbeiten, also ist das Ganze doch eher eine langsame Sache - und nix mit "Ich muss vorallem analoge Eingänge schnell auswerten können. (schneller als 10us)". Schließlich braucht ein einzelnes Bit am I2C wenigstens 2.5µs bzw. bei Standard I2C 10µs. Und so, wie das auf dem Papier aussieht, wirst du wohl auch keinen wirklich hochpoligen µC benötigen, da geht dann womöglich auch ein 64 oder 100 Pinner. Nochwas: Laß dir nicht einreden, daß man zum Programmieren immerzu nichts anderes als ein SWD-Interface brauchen würde. Das ist nämlich Fan-Gelaber. Sieh lieber zu, daß du ein Steckinteface vorsiehst, wo du folgende Signale drauf hast: GND, VCC, SWDIO, SWCLK, RESET, BOOT (je nach Typ BOOT0+BOOT1), RxD, TxD des ersten UART (der auch vom Bootlader default benutzt wird). Damit hast du beide Möglichkeiten dir offengehalten und obendrein auch noch eine einfache Kommunikation zum PC vorgesehen. Sowas weiß man zu schätzen, wenn man eine Weile mit µC arbeitet. Nochwas: Mach dir deine Versorgungsspannungen auf der LP selber. Also rohe 12V AC oder so ähnlich rein, Regler mit auf LP. W.S.
Lucas G. schrieb: > Ich fasse also nochmal meine Anforderungen zusammen ... 1. Schritt: Anforderungen in eine Parametrische Suche für ARM Corex-M uCs eintragen (z.B. https://www.nxp.com/webapp/parametricSelector.sp?#/&c=c731_c1770_c173&page=1 oder https://www.ti.com/microcontrollers-mcus-processors/microcontrollers/arm-based-microcontrollers/products.html) Nicht von der Anzahl der ADCs verwirren lassen. Die uCs haben 1 oder 2 ADCs mit jeweils mehreren Kanälen (steht im Datenblatt). 2. Schritt: uC Vorauswahl treffen und Datenblätter überfliegen, ob die Anforderungen auch wirklich erfüllt werden (können) - die max. Samplerate und die Anzahl der nutzbaren Kanäle der ADCs steht normalerweise nicht in der par. Suche oder manche Funktionen sind nicht gleichzeitig nutzbar, da sie die gleichen Pins verwenden würden. 3. Schritt: Schaltplan eines Evaluation-Boards des gefundenen uC besorgen und verstehen. 4. Schritt: Wesentliche Bestandteile des Schaltplans in einen eigenen Schaltplan übertragen (Debug-Port nicht vergessen). 5. Schritt: Für die Applikation benötigte Beschaltung einzeichnen. 6. Schritt: SW-Entwicklungsumgebung einrichten und sofern vorhanden Pinverwendung auf dem Schaltplan in den entsprechenden Editor eintragen - vernünftige IDEs sagen einem dann, ob as geht oder nicht. 7. Schritt: Schaltplan reviewen lassen 8. Schritt: PCB "malen", reviewen und herstellen lassen - ggf. incl. Bestückung. 9. Schritt: Segger J-Link EDU mini kaufen 10. Schritt: Software Stück-für-Stück (eine Peripherie nach der anderen) erstellen und mit dem Debugger flashen/debuggen. 11. Schritt: zurück zu Schritt 5, weil das Board im ersten Anlauf garantiert nicht so funktioniert, wie es soll.
W.S. schrieb: > also ist das Ganze doch eher > eine langsame Sache - und nix mit "Ich muss vorallem analoge Eingänge > schnell auswerten können. (schneller als 10us)" Also bei der Anzahl an AD-Wandlern und I2C, glaub ich auch nicht daran, dass du ansatzweise an deine 10µs kommst. Ich würde es dann wohl eher mit einem µC probieren der mehrere SPI hat, SPI AD-Wandler nutzen und die Daten dann per DMA abrufen.
Lucas G. schrieb: > - 8 Analoge Inputs mit 12 Bit Auflösung. Messinterval ca. 10 us Die TI TIVA TM4C123 haben bis zu 24 analoge Eingänge. - es gibt zwei getrennte ADCs, die parallel laufen können - jeder ADC hat 4 Sequencer, wobei Sequenzer 0 bis zu 8 Eingänge nacheinader automatisch abfragen und im FIFO ablegen kann - 12 Bit Auflösung - 1MSamples maximale Samplerate, wobei dann aber die untersten Bits leiden, wenn Du das komplett ausreizt - Hardware Durchschnittsbildung von aufeinanderfolgenden Werten - DMA-Support fchk
oerks schrieb: > Wenn du (TO) Anfaenger bist, nimm blos keinen 32-bitter, > also irgendwelche STM32 oder LPC. > > Fuer so langweiliges Zeug was du da treiben willst reicht > ein viel uebersichtlicherer 8-bitter alle mal. Kannst du grob erklären, warum ein 8-Bitter besser für Anfänger geeignet ist? - Ich weiß, dass das viel Arbeit für die kurze Zeit ist und ich weiß auch, dass ich eine ganze Menge Recherche vor mir, und auch nachzuholen habe. Vielleicht war es auch eine dumme Idee, sich als Maschinenbauer dieser Aufgabe anzunehmen. Hätte ich doch lieber meine Interesse in den Hintergrund gestellt und mir ein langweiliges, einfaches Thema aus dem Maschinenbau gesucht! Da wäre ich richtig dran gewachsen. Ich verstehe nicht, warum Leute wie Mario X. und Thomas solche Beiträge schreiben. Ihr verschwendet Eure Zeit, ihr verschwendet meine Zeit und die Zeit von jedem, der sich durch diesen Thread liest. Und habt damit Null geholfen. Herzlichen Glückwunsch, ihr dürft stolz auf euch sein! An Alle, die konstruktive Antworten gegeben haben, wie Frank K, mmm, W.S. (und weitere): Danke! Es gab schon viele gute Vorschläge hier, wie die STM32 Nucleo Boards, TIVA TM4C123, C8051 als 8-Bitter und LPCxxx. Und auch viele gute Tips, die ich versuche zu beherzigen. Ich werde mir die Boards in Ruhe ansehen und ausloten, welcher davon am besten geeignet ist.
Lucas G. schrieb: > Kannst du grob erklären, warum ein 8-Bitter besser für Anfänger geeignet > ist? Einfach mal die Seitenzahlen der jeweiligen Datenblaetter vergleichen. Lucas G. schrieb: > Vielleicht war es auch eine dumme Idee, sich als Maschinenbauer dieser > Aufgabe anzunehmen. Hätte ich doch lieber meine Interesse in den > Hintergrund gestellt und mir ein langweiliges, einfaches Thema aus dem > Maschinenbau gesucht! Da wäre ich richtig dran gewachsen. Ja, ist eine dumme Idee. Denn wenn du mit deiner Arbeit nicht fertig wirst, oder die Kacke hinten und vorne auch nach einem Jahr nicht funktioniert, wirds schwierig, dir auf die Arbeit eine schicke Note zu verpassen. Und bei der anschliessenden Bewerbung wird die Personaler nicht interessieren, wieviel du dran gewachsen bist. Die Note der Abschlussarbeit schon. Und wenn man der gleich ansieht, dass die Arbeit versemmelt wurde... Wenn du neben dem Studium dich schon "immer" fuer irgendwelche µController interessiert haettest und nebenher irgendwelche Klopper auf z.b. Arduino oder sonst irgendeinem Board gemacht haettest, dann vielleicht. Aber so halt' ich das fuer ziemlich aussichtslos. 4 Monate sind schnell rum bei sowas. Und dann ist noch keine Zeile Text geschrieben. Gruss WK
Lucas G. schrieb: > Kannst du grob erklären, warum ein 8-Bitter besser für Anfänger geeignet > ist? > > - > > Ich weiß, dass das viel Arbeit für die kurze Zeit ist und ich weiß auch, > dass ich eine ganze Menge Recherche vor mir, und auch nachzuholen habe. > Vielleicht war es auch eine dumme Idee, sich als Maschinenbauer dieser > Aufgabe anzunehmen. Sorry, wenn ich mich wiederhole: Beschränke die Aufgabe! Du machst einen Bachelor, allein. Keine Masterarbeit zu Dritt. Mit 10µs ist das schon genug für jemanden, der seit 5 Jahren nichts anderes tut, Schaltplaneditor und Prozessor kennt und den Prozess nur umsetzen braucht. Wie sieht es denn mit dem Prozess aus? Sollst Du da auch noch untersuchungen machen? Oder hast Du genau Vorschriften, bei welchem ADC-Wert und sonstigen Parametern Du was wo ausgeben musst? Falls ja, warum kannst Du das nicht schon in etwa wiedergeben? Falls nein, dann besorge sie Dir in dieser Woche noch. Sonst stellst Du bei der Inbetriebnahme Deines Boards fest, dass Dir 3 Größenordnungen im Timing fehlen.
Lucas G. schrieb: > Kannst du grob erklären, warum ein 8-Bitter besser für Anfänger geeignet > ist? Ihre Doku ist in der Regel wesentlich kürzer und (bei denen die ich kenne) wesentlich besser strukturiert. Wenn du bei einem AVR den ADC verwenden willst, liest du das ADC Kapitel - fertig. Bei STM32 musst die die Inhalte von mindestens 5 Kapiteln kombiniert erfassen und zwischen den Zeilen lesen. STM beschreibt nämlich nur, was geht. Was nicht geht, musst du dir dazu denken, insbesondere wenn es um Wechselwirkungen zwischen unterschiedlichen Funktionseinheiten geht. Bei ESP Chips ist es noch schlimmer, da wurden die Datenblätter mehr oder weniger von den Usern geschrieben und korrigiert. Espressif übertreibt gerne mit Leistungsdaten und Funktionsumfang, indem sie die die Begriffe "typisch", "bis zu" und "in Software möglich" benutzen. Alleine schon die Tatsache, dass du dich mit diesen Dingern noch nicht so wiet befasst hast, um die Unterschiede zu kennen, sagt mir, dass es dafür jetzt auch zu spät ist. Dir wird die zeit davon laufen.
Stefan ⛄ F. schrieb: > Ihre Doku ist in der Regel wesentlich kürzer und (bei denen die ich > kenne) wesentlich besser strukturiert. Wenn du bei einem AVR den ADC > verwenden willst, liest du das ADC Kapitel - fertig. Grundsätzlich völlig korrekt, aber auch bei den 8-Bittern steckt der Teufel manchmal im Detail. Nämlich in dem, was z.B. im ADC-Kapitel nicht erwähnt, aber trotzdem unter bestimmten Umständen wichtig ist. Auch bei den lieben Kleinen ist man also gut beraten, das gesamte DB zu lesen, egal was man damit macht. Was aber bleibt: der vergleichsweise geringe Umfang des DB macht diese einzig richtige Vorgehen bei den 8-Bittern wenigstens noch einigermaßen realistisch möglich...
Mal angenommen, du entscheidest dich für einen STM32F446, dann hast du mindesten so viele Seiten zu lesen: * Datasheet 196 Seiten * Reference Manual 1347 Seiten * Errata 29 Seiten * User anual STM32 Nucleo-144 Boards 75 Seiten Wahrscheinich wirst du ihn mit der Cube-HAL oder LL programmieren (wegen dem Zeitdruck), dann kommen weitere Seiten dazu * Description of STM32F7 HAL and low-layer drivers 2236 Seiten Dazu kommen sicher noch einige Hundert Seiten diverser Application Notes. Damit kannst du das erste Bauteil deines Aufbaus kennen lernen. Aber das ist ja erst der Anfang. Schätze doch mal, wie lange du wohl brauchst um rund 4000 Seiten von einem dir bisher völlig unbekanntem Produkt zu lesen und zu verstehen. Selbst wenn du die Hälfte überspringen kannst (bloß welche?) ist das immer noch harter Stoff für viele Wochen!
Stefan ⛄ F. schrieb: > Lucas G. schrieb: >> Kannst du grob erklären, warum ein 8-Bitter besser für Anfänger geeignet >> ist? > > Ihre Doku ist in der Regel wesentlich kürzer und (bei denen die ich > kenne) wesentlich besser strukturiert. Wenn du bei einem AVR den ADC > verwenden willst, liest du das ADC Kapitel - fertig. > > Bei STM32 musst die die Inhalte von mindestens 5 Kapiteln kombiniert > erfassen und zwischen den Zeilen lesen. STM beschreibt nämlich nur, was > geht. Was nicht geht, musst du dir dazu denken, insbesondere wenn es um > Wechselwirkungen zwischen unterschiedlichen Funktionseinheiten geht. Das ist bei TI ziemlich gut. Wobei ich dazu sagen muss: Ich habe mir die Funktionsbeschreibung durchgelesen, aber die gesamte Registerbeschreibung links liegen gelassen und für alles die TivaWare Treiberbibliothek verwendet. Auch im Beruf ist es so, dass das ganze Zeugs irgendwann mal fertig werden muss. Ich bin aktuell in einem Bereich tätig, wo nur sehr geringe Stückzahlen produziert werden und Entwicklungskosten und Time-to-Market wichtiger sind. Zeit isst Geld, optimieren tut man nur, wo man unbedingt muss. Ob 8-Bitter wirklich für Anfänger besser sind? Ich denke, das kann man nicht so allgemein sagen. Nehmen wir mal PIC. Die 8-Bitter (PIC10/12/16/18), die 16-Bitter (PIC24/dsPIC) und die 32-Bitter (PIC32) haben völlig verschiedene Prozessorarchitekturen, wie sie unterschiedlicher nicht sein können. Die ganze Peripherie ist aber über alle Familien hinweg sehr ähnlich. Kennt man eine Familie, kennt man alle. Hier muss ich sagen: Das anfängerfreundlichste sind die 16-Bitter, dicht gefolgt von den 32-Bittern, speziell wenn Du in C programmierst. 8-Bit AVRs, 8-Bit-PICs und 8051-Derivate haben nämlich die Eigenschaft, verschiedene Adressräume für RAM und ROM/Flash zu haben. Ein Pointer ins Flash ist inkompatibel zu einem Pointer ins RAM, weil der Compiler jeweils komplett unterschiedlichen Code erzeugen muss. Deswegen findet man dort auch doppelte Funktionen wie strcpy() für RAM->RAM und strcpy_P() für Flash->RAM. Bei den 16-Bittern versteckt der XC16 Compiler das sehr gut (da wird ein Teil des Flashes in den RAM-Adressraum eingeblendet (PSV)), und bei 32-Bit hast Du das gar nicht - da gibts nur einen einzigen Adressraum, wo alles drin ist. Andere 8-Bit Architekturen wie Z80, 6809, 6502 hatten auch nur einen einzigen Adressraum und waren in der Hinsicht einfacher zu handhaben, haben aber heute nur noch historische Bedeutung. Wenn man C verwendet (was man machen wird, wenn man in endlicher Zeit fertig werden will), dann wird man feststellen, dass der Sprachstandard für eine Maschine mit mindestens 16 Bit Wortbreite geschrieben wurde. 8-Bit Compiler haben es schwerer, guten Code zu erzeugen und sich trotzdem an den Standard zu halten. ARM und MIPS sind schon gute Zielarchitekturen für C-Compiler. Meine Lieblingsarchitektur war übrigens 68k. Aber das ist Geschichte, das kommt nicht mehr wieder. fchk PS: Warum PIC24 anfängerfreundlicher als PIC32 ist? Das hängt damit zusammen, dass der PIC24 Prozessorkern eine Eigenentwicklung ist, während bei PIC32 MIPS-Cores zugekauft wurden. Bei PIC24 sind die Peripherieregister Teil des Kerns, d.h. der Prozessorkern kann dort atomare Bit-Operationen ausführen. Bei PIC32 sind die Peripherieregister nicht mehr Teil des Kerns, sondern laufen asynchron. Wenn der Prozessor ein Bit setzen will, muss er das Register lesen, Bit setzen und Register wieder schreiben. Das sind drei getrennte Operationen, und nach jeder Operation kann Dir ein Interrupt oder eine Exception oder ein DMA-Zyklus dazwischen kommen, und das versaut Dir dann den ganzen Tag. Wenn man hier atomare Operationen ermöglichen will, muss man diese Fähigkeit in die Peripherie einbauen. Dann gibt es da spezielle Register, wo man einzelne Bits atomar setzen, löschen oder invertieren kann. Das erfordert dann auch wieder entsprechenden Programmcode, und das muss man wissen. Die eben genannte Problematik hat man bei allen Prozessorkernen, die man extern dazukauft, also nicht nur bei MIPS, sondern auch bei ARM, PPC und RISCV.
:
Bearbeitet durch User
> Kannst du grob erklären, warum ein 8-Bitter besser für Anfänger geeignet > ist? Weil ein vollstaendiges Datenblatt gerade mal 272 Seiten hat. Das haettest du auch selber herausfinden koennen! Ausserdem redest du dauernd von vielen IOs, um dann wieder moeglichst viele I2C dran zu haengen. Was denn nun? Geistiges Relikt von der uino-Bastelei? Erweitern mit I2C ist im Maschinenbauumfeld ohnehin nicht besonders empfehlenswert, wenn die raeumliche Ausdehnung zunimmt. I2C ist auch nicht mal besonders schnell. Der C8051F020 hat schon 64 GPIOs. Neben den AD-Ein- und DA-Ausgaengen.
A. S. schrieb: > Wie sieht es denn mit dem Prozess aus? Sollst Du da auch noch > untersuchungen machen? Oder hast Du genau Vorschriften, bei welchem > ADC-Wert und sonstigen Parametern Du was wo ausgeben musst? Falls ja, > warum kannst Du das nicht schon in etwa wiedergeben? Falls nein, dann > besorge sie Dir in dieser Woche noch. Sonst stellst Du bei der > Inbetriebnahme Deines Boards fest, dass Dir 3 Größenordnungen im Timing > fehlen. Es geht eher darum, eine Historie der Werte zu haben. Wenn Werte auf einmal abweichend von den alten Werten sind dann deutet dass darauf hin dass die Membran der Zelle Schäden genommen hat. Mit der Information kann man dann weiter verfahren. Also Zelle abschalten oder mit geringerer Leistung fahren. Ich habe da aber noch keine konkreten Daten ab wann ein Zustand so oder so ist. Der Rest ist zur Überwachung/Steuerung des Systems. Temperatur und Druck überwachen und dementsprechend Heizungen und Ventile schalten. oerks schrieb: > Erweitern mit I2C ist im Maschinenbauumfeld ohnehin nicht > besonders empfehlenswert, wenn die raeumliche Ausdehnung > zunimmt. Weil I²C nicht mit langen Leitungen zurecht kommt? Das ist kein Problem, meine Schaltung ist auf kleinen Raum begrenzt. Das, was mit I²C verbunden ist, muss nicht schnell arbeiten können. Das einzige, was schnell passieren muss ist das Auswerten der Spannung an der Zelle. Da kommt I²C also nicht in Frage. Deswegen ein Mikrocontroller der einen ADC mit mind. 12 Bit und >100kSPS hat.
:
Bearbeitet durch User
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.