Schönes Projekt. Hier sind ein paar Hinweise, aber es wäre schwierig, dies für jedes Projekt zu verallgemeinern.
Beginnen Sie mit den Rechenanforderungen
Hier erfahren Sie, welche Art von Kern Sie benötigen und welche allgemeinen Leistungen die MCU erbringt. Ich schlage vor, Sie beginnen damit, da es im Gegensatz zu Peripheriegeräten offensichtlich nicht mit externen Komponenten erweitert werden kann.
Erstens scheinen Sie schwere mathematische Operationen mit großen ganzen Zahlen innerhalb der Schleife zu verwenden. Wie Sie bereits angedeutet haben, wären 32-Bit-Dateien hier nützlich. Daher ist ARM ein idealer Kandidat. Was die Betriebsfrequenz betrifft: Derzeit verwenden Sie einen Arduino MEGA2560 (der mit 16 MHz läuft, nehme ich an) und können 10 Schleifen / s ausführen. Wenn Sie 100 Schleifen / s erreichen möchten, sollten Sie mit einem Cortex-M3 / M4 im Bereich von 100 MHz oder mehr zufrieden sein (grobe Schätzung). Beachten Sie, dass der Cortex-M4F eine Gleitkommaeinheit hat.
Wir haben die Auswahl bereits eingegrenzt.
Speicherbedarf
Dies ist ganz einfach: Wählen Sie die MCU, die für den Prototypen den meisten RAM / Flash-Speicher in ihrem Sortiment hat. Sobald Sie den Prototyp validiert haben, wechseln Sie zu der MCU aus demselben Bereich, der gerade über genügend RAM / Flash verfügt, und kennen Ihre genauen Anforderungen.
Beachten Sie, dass Ihre Anwendung meiner Meinung nach nicht viel Arbeitsspeicher benötigt.
Nun zu den Peripheriegeräten
Sie brauchen unbedingt einen ADC. Alle MCUs der Reihe, die wir betrachten, haben einige, also ist es kein nützliches Kriterium. Es gibt auch keine digitalen Ein- / Ausgänge, es sei denn, Sie benötigen eine sehr große Anzahl davon (was anscheinend nicht Ihr Fall ist).
Sie scheinen einen DAC zu brauchen. Dies ist jedoch etwas, das Sie nicht so einfach finden und das die Kandidaten zu sehr einschränken wird. Daher halten wir diese Anforderung nicht ein und bleiben bei PWM und Tiefpass (was tatsächlich durchaus akzeptabel ist).
Sie erwähnen keine Kommunikationsschnittstelle außer dem LCD (später). Auf jeden Fall haben alle MCUs I2C / SPI / UART / ..., wenn Sie welche brauchen.
Das LCD
Dieser ist kniffliger, weil es viele verschiedene Lösungen gibt, die ganz unterschiedliche Anforderungen an die MCU stellen. Wählen Sie das LCD jedoch nicht abhängig von der MCU. Wählen Sie die für Ihr Produkt gewünschte LCD-Anzeige und anschließend die MCU, die diese effizient steuert.
- Wenn Sie ein Zeichen-LCD möchten, ist es für die MCU am einfachsten und am wenigsten einschränkend, über eine serielle Schnittstelle (häufig SPI) mit ihr zu kommunizieren. Auf diese Weise werden nicht zu viele PINs verwendet, es können kleinere / billigere MCUs verwendet werden, und die Geschwindigkeit ist kein Problem.
- Wenn Sie ein grafisches TFT-LCD wünschen: Wenn es ein kleines ist, kann die serielle Verbindung immer noch angemessen sein. Ab einer Größe von 320 x 200 und wenn Sie eine ansprechende grafische Benutzeroberfläche benötigen, möchten Sie zunächst mit der parallelen Benutzeroberfläche kommunizieren. In diesem Fall verwenden Sie entweder einen GPIO (der die MCU jedoch stärker belastet, weil Sie die Steuerleitungen etwas durcheinander bringen müssen) oder Sie wählen eine MCU mit einer dedizierten LCD-Schnittstelle (die häufig mit einer identisch ist) externe Speicherschnittstelle). Letzteres stellt eine starke Einschränkung für die Wahl der MCU dar, aber Sie haben keine anderen starken Einschränkungen, also ...
Jetzt wählst du
Gehen Sie zur ST Micro / NXP / Atmel-Website und verwenden Sie deren MCU-Auswahlwerkzeuge. Sie werden auch viel Zeit damit verbringen, Datenblätter zu lesen. Nimm dir diese Zeit. Es ist nicht verschwendet. Alles, was Sie hier lernen, auch wenn Sie es nicht speziell für dieses Projekt verwenden, kann nützlich sein.
Zu diesem Zeitpunkt müssen Sie auch die Anzahl der tatsächlich benötigten PINs überprüfen und das Multiplexing-Schema der ausgewählten MCU-Kandidaten überprüfen, um sicherzustellen, dass Sie alle benötigten PINs-Funktionen verwenden können. Da Sie natürlich die MCUs mit der niedrigsten Anzahl von Pins verwenden möchten, die Ihre Anforderungen erfüllen (aus Kosten- / PCB-Immobiliengründen).
Überprüfen Sie die Preise / Verfügbarkeit auf Mouser / Digikey. Hier sollte man aber nichts besonders Teueres brauchen. Vielleicht 5 € oder so.
Letzte Sache in Bezug auf die LCD-Steuerung
Es scheint, dass das Update des LCD Teil Ihrer Hauptschleife ist. Das sollte es nicht. Vor allem, wenn Sie 100-mal pro Sekunde eine Schleife spielen, ist dies nutzlos. Lassen Sie den Regelkreis alles berechnen und den Motorbefehl bei jeder Iteration anpassen, aktualisieren Sie jedoch nur die Werte, um sie irgendwo im Speicher anzuzeigen. Lassen Sie dann eine andere Schleife mit niedrigerer Priorität diese Informationen dem Benutzer anzeigen, wenn nichts Wichtigeres zu tun ist.
Ja, im Idealfall sind einige Aufgabenwechsel und andere Dinge erforderlich. Eigentlich ein echtes Betriebssystem (siehe FreeRTOS, Coocox OS, Nuttx, ... diese sind sehr klein, werden hauptsächlich in Cortex-M verwendet und bieten die erforderlichen Multitasking-Mechanismen).