Ceci est une ancienne révision du document !


Comment choisir son microcontrôleur

Si vous avez déjà travaillé avec une marque de microcontrôleur, vous serez certainement plus à l'aise avec la marque que vous connaissez déjà. Idem si dans votre entourage vous pouvez avoir du soutien, profitez-en. Sinon, trouver une carte de développement qui dispose des entrées-sorties dont vous avez besoin.

Dans la réflexion ci-après, le postulat est qu'il n'y a qu'un seul microcontrôleur. Il est possible d'utiliser plusieurs microcontrôleurs qui communiquent entre eux.

De quelles entrées-sorties avez vous besoin ?

Ça dépend grandement de votre robot. Quels actionneurs connectez-vous ? Combien de capteurs vous faut-il ? Sont-ils analogiques ou numériques ? Avez vous des modules qui exigent des protocoles de communications particuliers ?

Vous n'aurez probablement pas fini totalement la conception de votre robot au moment de choisir votre microcontrôleur. Pire, vous souhaiterez peut-être réutiliser l'électronique d'une année sur l'autre…

Alors, vous n'avez pas vraiment d'autres choix que de faire un pari raisonnable. Prévoyez quelques capteurs / actionneurs supplémentaire, garder un protocole de communication en réserve, il pourra vous servir pour rajouter une seconde carte.

Ce qui suit n'est qu'une estimation grossière, assez minimaliste. Adaptez-la à vos besoins ou vous le regretterez ! 2 moteurs de propulsion à courant continu :

  • Consigne de vitesse (2x) : PWM
  • Consigne de sens (1 ou 2 par moteurs : 4) : IO généraliste

2 servomoteurs :

  • Consigne de position (2x) : IO généraliste (attention, il faut un peu de code derrière)

2 capteurs de distance :

  • Distance lue (2x) : Entrée analogique

1 port de communication :

  • UART (liaison série) : c'est une fonction sur 2 broches, notées RX et TX.

Gardez 2 entrée analogique en réserve, 2 ou 4 IO généraliste et vous avez tout ce qu'il faut pour réaliser un robot qui ne marche pas !

Pourquoi ? Parce qu'avec ceci, votre robot n'avancera pas droit et ne saura pas où il est sur le terrain. Ayez bien défini votre base roulante avant de choisir votre microcontrôleur. Nous avons un article sur les bases roulantes ici.

Côté performance

Les microcontrôleurs d'entrée de gamme peuvent être limités en terme de puissance de calcul.

Ceci se ressentira d'autant plus :

  • si vous effectuez de la trigonométrie avec les bibliothèques standard.
  • si vous utilisez des nombres en virgule flottante

Du côté de la mémoire, il faut distinguer la ROM qui contient votre programme et certaines valeurs fixes définies dans votre code, de la RAM qui contient vos variables.

Par exemple, si vous avez une grande liste de messages d'erreur, ceux-ci peuvent être stockés dans la ROM. Seuls quelques caractères à la fois, seront stockés en RAM, lors de l'émission du message d'erreur.

Côté RAM, Ce n'est pas une stratégie à états finis qui va vous créer des soucis. Par contre, méfiez vous si vous comptez utiliser de grands tableaux, notamment :

  • si vous souhaitez implémenter des solutions de recherche de chemin/contournement d'obstacles (pathfinding)
  • si vous enregistrez ou traitez une image
  • si vous utilisez des moyennes glissantes (sur de nombreuses valeurs)

Les programmateurs et bootloader

La programmation des microcontrôleurs se fait à l'aide de programmateurs. C'est un outil commun à une gamme de microcontrôleurs. Cet outil peut aussi servir de débogueur.

Cet outil est indispensable, au moins pour injecter un premier programme. Ce premier programme peut-être un bootloader qui permet au microcontrôleurs de se reprogrammer sans programmateur, avec des données reçues par une liaison série ou USB.

Quelques cartes

L'intérêt des cartes est qu'elle sont livrés prêtes à l'emploi, ne nécessitant pas de programmateur.

Arduino Uno

  • 14 entrées sorties numériques
  • 6 entrées analogiques
  • 6 sorties PWM
  • basé sur un ATmega328P (8bits - RISC -Microchip) à 16 MHz
  • ROM : 32 ko
  • RAM : 2 ko
  • Prix approximatif : 25 €

Arduino Mega

  • 54 entrées sorties numériques
  • dont 14 pouvant générer des signaux PWM
  • 16 entrées analogiques
  • 4 liaisons séries (UART)
  • basé sur un ATmega1280 (8bits - RISC -Microchip) à 16 MHz
  • ROM : 128 ko
  • RAM : 8 ko
  • Prix approximatif : 25 €

STM32F3DISCOVERY

  • 47 entrées sorties diverses (voir fiche technique de la carte)
  • Gyroscope, accéléromètre, magnetomètre
  • basé sur un STM32F303VCT6 (Cortex-M4 - 32 bits - RISC - ST Microelectonics) à 75 MHz
  • ROM : 256 ko
  • RAM : 48 ko
  • Prix approximatif : 20 €