Beau projet. Voici quelques conseils, mais il serait difficile de généraliser cela pour chaque projet.
Commencez avec les exigences de calcul
C'est ce qui vous indiquera le type de noyau dont vous avez besoin et les performances générales du MCU. Je vous suggère de commencer par cela, car il ne peut évidemment pas être étendu à l'aide de composants externes, contrairement aux périphériques.
Tout d'abord, il semble que vous utilisiez des opérations mathématiques lourdes avec de grands nombres entiers dans la boucle. Donc, comme vous l'avez suggéré, 32 bits serait utile ici, donc ARM est donc un candidat idéal. Quant à la fréquence de fonctionnement: actuellement, vous utilisez un Arduino MEGA2560 (fonctionnant à 16 MHz, je suppose) et vous pouvez faire 10 boucles / s. Si vous voulez atteindre 100 boucles / s, vous devriez être bien avec un Cortex-M3 / M4 dans la gamme de 100 MHz ou plus (estimation approximative). Notez que le Cortex-M4F possède une unité à virgule flottante.
Nous avons déjà réduit la sélection.
Besoins en mémoire
Celui-ci est simple: choisissez le MCU qui a le plus de RAM / Flash de sa gamme pour le prototype. Une fois que vous avez validé le prototype, passez au MCU de la même gamme qui a juste assez de RAM / Flash, maintenant que vous connaissez vos besoins exacts.
Notez que je ne pense pas que votre application ait besoin de quantités de mémoire incroyables.
Maintenant, les périphériques
Vous avez absolument besoin d'un ADC. Tous les MCU de la gamme que nous examinons en ont, donc ce n'est pas un critère utile. Les entrées / sorties numériques ne le sont pas non plus, sauf si vous en avez besoin d'un très grand nombre (ce qui ne semble pas être le cas).
Vous semblez avoir besoin d'un DAC. Cependant, c'est quelque chose que vous ne trouverez pas facilement et qui restreindra trop les candidats. Donc, nous ne respectons pas cette exigence et nous resterons avec un PWM et un passe-bas (ce qui est certainement acceptable, en fait).
Vous ne mentionnez aucune interface de communication, sauf l'écran LCD (plus loin). Quoi qu'il en soit, tous les MCU ont I2C / SPI / UART / ... si vous en avez besoin.
L'écran LCD
Celui-ci est plus délicat, car il existe de nombreuses solutions différentes qui imposent des exigences complètement différentes au MCU. Mais ne choisissez pas l'écran LCD en fonction du MCU. Choisissez l'écran LCD que vous souhaitez pour votre produit, puis sélectionnez le MCU qui le pilotera efficacement.
- Si vous voulez un écran LCD à caractères: alors le plus simple et le moins contraignant pour le MCU est de parler avec lui via une interface série (souvent SPI). De cette façon, il n'utilisera pas trop de PIN, vous pouvez utiliser des MCU plus petits / moins chers et la vitesse n'est pas un problème.
- Si vous voulez un écran LCD TFT graphique: s'il est petit, la liaison série peut toujours être appropriée. Cependant, pour 320x200 ou plus et si vous voulez avoir une belle interface graphique, vous commencerez à vouloir communiquer avec une interface parallèle. Dans ce cas, soit vous utilisez un GPIO (mais cela mettra plus de charge sur le MCU car vous devrez mordre les lignes de contrôle) ou vous choisissez un MCU qui a une interface LCD dédiée (qui est souvent la même chose qu'un interface de mémoire externe). Ce dernier met une forte contrainte du choix MCU, mais vous n'avez pas d'autres contraintes fortes, alors ...
Maintenant, vous choisissez
Accédez au site Web de ST Micro / NXP / Atmel et utilisez leurs outils de sélection MCU. Vous passerez également beaucoup de temps à lire des fiches techniques. Prenez ce temps. Ce n'est pas perdu. Tout ce que vous apprendrez ici, même si vous ne l'utilisez pas spécifiquement pour ce projet, peut être utile.
À ce stade, vous devez également consulter le nombre de codes PIN dont vous aurez réellement besoin et vérifier le schéma de multiplexage des candidats MCU choisis pour vérifier que vous pouvez utiliser toutes les fonctions PIN dont vous avez besoin. Parce que, évidemment, vous voudrez prendre les MCU avec le plus petit nombre de broches qui répondent à vos exigences (pour des raisons de coût / immobilier PCB).
Vérifiez les prix / disponibilités sur Mouser / Digikey. Mais vous ne devriez pas avoir besoin de quelque chose de particulièrement cher ici. Peut-être 5 € environ.
Dernière chose concernant le contrôle LCD
Il semble que la mise à jour de l'écran LCD fasse partie de votre boucle principale. Ça ne devrait pas. Surtout si vous bouclez 100 fois par seconde, c'est inutile. Faire en sorte que la boucle de contrôle calcule tout et ajuste la commande du moteur à chaque itération, mais il suffit de mettre à jour les valeurs pour les afficher quelque part en mémoire. Ensuite, demandez à une autre boucle de priorité inférieure d'afficher ces informations à l'utilisateur lorsqu'il n'y a rien de plus important à faire.
Oui, idéalement, cela nécessite un changement de tâche et d'autres choses. Un vrai OS, en fait (recherche FreeRTOS, Coocox OS, Nuttx, ... ceux-ci sont très petits, sont largement utilisés sur Cortex-M, et fournissent les mécanismes multitâches requis).