Comment fabriquer un Robot - Leçon 4 : Comprendre les microcontrôleurs

 

Index des leçons :

Différents microcontrôleurs

Qu'est-ce qu'un microcontrôleur ?

Vous vous demandez peut-être ce qu'est un microcontrôleur et à quoi il sert ? Un microcontrôleur est un dispositif informatique capable d'exécuter un programme (c'est à dire, une séquence d'instructions) et est souvent désigné comme le « cerveau » ou le « centre de contrôle » d'un robot, car il est habituellement responsable de tous les calculs, de la prise de décision, et des communications. Afin d'interagir avec le monde extérieur, un microcontrôleur possède une série de broches (connexions pour signaux électriques) qui peuvent passer de HIGH/HAUT (1/ON) à LOW/BAS (0/OFF) au moyen d'instructions de programmation. Ces broches peuvent également être utilisées pour lire des signaux électriques (en provenance des capteurs de forme ou d'autres dispositifs) et dire s'ils sont de type HAUT ou BAS.

Microcontrôleur et carte de développement

La plupart des microcontrôleurs modernes peuvent également mesurer des signaux de tension analogique (c'est à dire des signaux qui peuvent avoir une gamme complète de valeurs au lieu de seulement deux états bien définis), grâce à l'utilisation d'un convertisseur analogique-numérique (CAN). En utilisant le CAN, un microcontrôleur peut attribuer une valeur numérique à une tension analogique qui n'est ni HAUT ni BAS.

Que peut faire un microcontrôleur ?

Bien que les microcontrôleurs puissent paraître plutôt limités à première vue, de nombreuses actions complexes peuvent être obtenues en réglant les broches HAUT et BAS de façon intelligente. Néanmoins, la création d'algorithmes très complexes (tels que le traitement avancé de la vision et des comportements intelligents) ou de très grands programmes, peut s'avérer tout simplement impossible pour un microcontrôleur en raison de ses limitations inhérentes aux ressources et à la vitesse. Par exemple, pour faire clignoter une lumière, on peut programmer une séquence de répétition où les microcontrôleurs passent une broche sur HAUT, attendent un moment, la passent sur BAS, attendent un autre moment et recommencent. Une lumière connectée à la broche en question clignoterait alors indéfiniment. De la même manière, les microcontrôleurs peuvent être utilisés pour contrôler d'autres appareils électriques tels que des actionneurs (lorsqu'ils sont connectés à des contrôleurs de moteur), des périphériques de stockage (tels que des cartes SD), des interfaces WiFi ou Bluetooth, etc. En conséquence de cette polyvalence incroyable, les microcontrôleurs peuvent être trouvés dans des produits de tous les jours. Pratiquement tous les appareils ou dispositifs électroniques d'une maison utilisent au moins un (souvent plusieurs) microcontrôleur. Par exemple, les ensembles télévision, les machines à laver, les télécommandes, les téléphones, les horloges, les fours à micro-ondes, et à présent les robots, ont besoin de ces petits appareils pour fonctionner. Contrairement aux microprocesseurs (par exemple, le processeur des ordinateurs personnels), un microcontrôleur n'exige pas de périphériques tels qu'une mémoire RAM externe ou des périphériques de stockage externes pour fonctionner. Cela signifie que, bien que les microcontrôleurs puissent être moins puissants que leurs homologues pour PC, le développement de circuits et de produits à base de microcontrôleurs est beaucoup plus simple et moins coûteux, car très peu de composants matériels supplémentaires sont nécessaires. Il est important de noter qu'un microcontrôleur ne peut produire qu'une très petite quantité d'énergie électrique au travers de ses broches ; cela signifie qu'un microcontrôleur générique ne sera probablement pas en mesure d'alimenter directement des moteurs électriques, des solénoïdes, des éclairages puissants, ou toute autre grande charge. Essayer de le faire peut même causer des dommages physiques au contrôleur.

Quelles sont les caractéristiques les plus spécialisées dans un microcontrôleur ?

Le matériel spécial intégré dans les microcontrôleurs signifie que ces appareils peuvent faire plus que les habituelles E/S numériques, calculs de base, mathématiques de base, et prises de décision. Beaucoup de microcontrôleurs acceptent facilement les protocoles de communication les plus populaires tels que UART (ou série ou RS232), SPI et  I2C. Cette fonctionnalité est extrêmement utile pour communiquer avec d'autres appareils tels que des ordinateurs, des capteurs avancés, ou d'autres microcontrôleurs. Bien qu'il soit possible de mettre en œuvre manuellement ces protocoles, il est toujours agréable d'avoir un matériel dédié intégré qui prend soin des détails. Cela permet au microcontrôleur de se concentrer sur d'autres tâches et garantit un programme propre. Les convertisseurs analogique-numérique (CAN) sont utilisés pour convertir des signaux de tension analogique en un nombre numérique proportionnel à l'amplitude de la tension, ce nombre peut alors être utilisé dans le programme du microcontrôleur. Pour émettre une quantité intermédiaire de puissance différente de HAUT et BAS, certains microcontrôleurs sont en mesure d'utiliser la modulation de largeur d'impulsion (MLI). Par exemple, cette méthode permet une gradation souple d'une DEL. Enfin, certains microcontrôleurs intègrent un régulateur de tension dans leurs cartes de développement. C'est particulièrement pratique car cela permet au microcontrôleur d'être alimenté par une large gamme de tensions qui ne vous obligent pas à fournir la tension de fonctionnement exacte requise. Cela lui permet également d'alimenter facilement des capteurs et d'autres accessoires, sans nécessiter de source d'alimentation extérieure régulée.

Analogique ou numérique ?

Vous pouvez trouver ci-dessous deux exemples qui illustrent quand utiliser une broche numérique ou analogique :

  1. Schéma exemple d'Arduino numérique et analogiqueNumérique : Un signal numérique est utilisé pour évaluer l'état binaire d'un commutateur. Comme illustré ci-dessous (sur le côté gauche de la carte d'essais sans soudure), un commutateur momentané ou un bouton poussoir ferme un circuit lorsqu'il est pressé, et permet au courant de circuler (une résistance de tirage est également représentée). Une broche numérique connectée (via un fil vert sur la photo) à ce circuit renverrait soit BAS ou 0 (ce qui signifie que la tension à la broche est dans la fourchette BAS, 0 V dans ce cas), soit HAUT (ce qui signifie que le bouton est pressé et que la tension est dans la plage HAUT, 5 V dans ce cas).
  2. Analogique : Une résistance variable, ou un potentiomètre, (comme indiqué sur le côté droit de la carte ci-dessous) est utilisée pour fournir un signal électrique analogique proportionnel à une rotation (par exemple, le bouton du volume sur une chaîne stéréo). Comme illustré ci-dessous, quand un potentiomètre est relié à une alimentation de 5 V et que l'arbre est tourné, la sortie varie entre 0 et 5 V, proportionnellement à l'angle de rotation. Le CAN sur un microcontrôleur interprète la tension et la convertit en une valeur numérique. Par exemple, un CAN à 10 bits convertit du 0 V à la valeur « 0 », du 2,5 V à « 512 » et du 5 V à « 1 023 ». Par conséquent, si vous estimez que l'appareil que vous prévoyez de connecter fournira une valeur proportionnelle à quelque chose d'autre (par exemple la température, la force, la position), il aura probablement besoin d'une broche analogique.

Exemple d'Arduino numérique et analogique

Qu'en est-il de la programmation ?

ProgrammationAvoir peur de la programmation des microcontrôleurs n'est plus d'actualité. Contrairement au « bon vieux temps » où faire clignoter une lumière nécessitait des connaissance avancées sur les microcontrôleurs et plusieurs dizaines de lignes de code (pour ne pas mentionner les câbles de type parallèle ou série connectés à d'immenses cartes de développement), programmer un microcontrôleur est très simple grâce à des environnements modernes de développement intégrés (IDE) qui utilisent des langages de pointe, des bibliothèques complètes couvrant facilement toutes les actions les plus courantes (et pas si courantes) et plusieurs codes prêts à être utilisés pour permettre aux débutants de se lancer. De nos jours, les microcontrôleurs peuvent être programmés dans divers langages de haut niveau, dont le C, C++, C#, Processing (une variation de C++), Java, Python, .Net, et Basic. Bien sûr, il est toujours possible de les programmer en Assembleur, mais ce privilège est réservé aux utilisateurs plus avancés ayant des exigences très particulières (et un soupçon de masochisme). En ce sens, toute personne doit être en mesure de trouver un langage de programmation qui convienne mieux à ses goûts et à son expérience de programmation préalable. Les IDE deviennent encore plus simples car les fabricants créent des environnements de programmation graphiques. Des séquences qui nécessitaient auparavant plusieurs lignes de code sont réduites à une image qui peut être connectée à d'autres « images » pour former du code. Par exemple, une image peut représenter le contrôle d'un moteur ,et l'utilisateur n'a plus qu'à la placer là où il/elle la souhaite et à spécifier la direction et le régime. Du côté matériel, les cartes de développement de microcontrôleurs apportent de la commodité et sont plus faciles à utiliser au fil du temps. Ces cartes répartissent habituellement toutes les broches utiles du microcontrôleur et les rendent faciles d'accès pour un prototypage rapide de circuit. Elles fournissent également des interfaces d'alimentation et de programmation USB pratiques qui se branchent directement dans n'importe quel ordinateur moderne. Pour ceux qui sont peu familiers avec ce terme, une carte de développement est une carte de circuit qui fournit une puce microcontrôleur avec toute l'électronique de prise en charge (telle que des régulateurs de tension, des oscillateurs, des résistances de limitation de courant et des prises USB) nécessaire au fonctionnement. Si vous ne prévoyez pas de concevoir votre propre circuit de prise en charge, l'achat d'une carte de développement est préférable au fait d'acquérir une puce microcontrôleur seule. Remarque : La programmation du robot est étudiée plus en profondeur dans la leçon 10.

Pourquoi ne pas utiliser un ordinateur classique ?

Il est évident qu'un microcontrôleur est très similaire à un processeur de PC ou à un microprocesseur, et qu'une carte de développement s'apparente à une carte mère d'ordinateur. Si tel est le cas, pourquoi ne pas simplement utiliser un ordinateur complet pour contrôler un robot ?

Ordinateur de bureau contre microcontrôleur

En fait, dans les robots les plus évolués, en particulier ceux qui impliquent des algorithmes de calcul et de vision complexes, le microcontrôleur est souvent remplacé (ou complété) par un ordinateur standard. Un ordinateur de bureau comprend une carte mère, un processeur, un dispositif de stockage principal (comme un disque dur), le traitement vidéo (intégré ou externe), une mémoire RAM et, bien sûr, des périphériques tels que moniteur, clavier, souris, etc. Ce type de système est généralement plus coûteux, physiquement plus grand, plus avides d'énergie. Les principales différences sont mises en évidence dans le tableau ci-dessous.

  Microcontrôleur Ordinateur personnel
Exemple Atmega328 Intel Pentium Core 2 Duo
Mémoire RAM 1 Ko 4 000 000 Ko (4 Go)
Enregistrement 15 Ko 15 000 000 Ko (15 Go)
Alimentation 0,1 W 600 W
Tension 12 12
Entrée/sortie Broches USB, RS232
Sans fil Bluetooth*, RF* Bluetooth
Vidéo Aucun 1 000 000 Ko (1 Go)
Prix de 4 à 300 $ de 400 à 2 000 $
Internet WiFi* ou Ethernet* WiFi ou Ethernet
*Disponible en option sur de nombreux microcontrôleurs.  

Choisir le bon microcontrôleur

À moins que vous ne soyez dans la robotique BEAM, ou n'envisagiez de contrôler votre robot personnalisé à l'aide d'un système filaire ou R/C (qui, se basant sur notre définition de la Leçon 1, ne pourrait être considéré comme un robot), vous aurez besoin d'un microcontrôleur pour tout projet robotique. Pour un débutant, choisir le bon microcontrôleur peut sembler une tâche ardue, surtout compte tenu de la gamme de produits, des spécifications et des applications potentielles. Il existe de nombreux microcontrôleurs différents disponibles sur le marché : Arduino, BasicATOM, BasicX,  Pololu, Parallax et bien d'autres. Lorsque vous recherchez le bon microcontrôleur, posez-vous les questions suivantes :

  1. Quel microcontrôleur est le plus répandu pour mon application ? Bien sûr, fabriquer des robots ou des projets électroniques en général n'est pas un concours de popularité, mais le fait qu'un microcontrôleur dispose d'une grande communauté de soutien ou a été utilisé avec succès dans une situation similaire (voir la même) pourrait simplifier considérablement votre phase de conception. De cette façon, vous pouvez bénéficier de l'expérience d'autres utilisateurs et amateurs. Il est fréquent pour les constructeurs de robots de partager des résultats, du code, des photos, vidéos, et des informations détaillées sur leurs succès et même leurs échecs. Tout ce matériel disponible et la possibilité de recevoir des conseils d'utilisateurs plus expérimentés peuvent s'avérer très précieux.
  2. Existe-t-il des caractéristiques spéciales propres au robot ? Aussi répandu que puisse être un microcontrôleur, il doit être en mesure d'effectuer toutes les actions spéciales requises pour que votre robot fonctionne correctement. Certaines caractéristiques sont communes à tous les microcontrôleurs (par exemple, disposer d'entrées et sorties numériques, pouvoir effectuer des opérations mathématiques simples, comparer des valeurs et prendre des décisions), tandis que d'autres ont besoin de matériel spécifique (par exemple, CAN, MLI, et prise en charge de protocoles de communication). Les exigences en mémoire et en vitesse, ainsi que le nombre de broches, doivent être prises en considération.
  3. Les accessoires dont j'ai besoin sont-ils disponibles pour un microcontrôleur particulier ? Si votre robot a des exigences particulières ou si un accessoire ou un composant particulier est indispensable à votre conception, le choix d'un microcontrôleur compatible est évidemment très important. Bien que la plupart des capteurs et accessoires puissent être interfacés directement avec de nombreux microcontrôleurs, certains accessoires sont conçus pour s'interfacer avec un microcontrôleur spécifique et même fournir des fonctionnalité dès l'ouverture de la boîte ou un code d'échantillon.

Que nous réserve l'avenir ?

Comme le prix des ordinateurs baisse, et que les progrès technologiques les rendent plus petits et plus économes en énergie, les ordinateur sur carte unique apparaissent comme une option attractive pour les robots. Ces ordinateurs sur carte unique sont essentiellement des ordinateurs que vous avez utilisé il y a environ 5 ans, et qui intègrent de nombreux appareils sur une seule carte (de sorte que vous ne pouvez pas modifier quoi que ce soit). Ils peuvent lancer un système d'exploitation complet (Windows et Linux sont les plus courants) et peuvent se connecter à des périphériques externes tels que les périphériques USB, les écrans LCD, etc.. Contrairement à leurs ancêtres, ces ordinateur sur carte unique ont tendance à être beaucoup plus économes en énergie.

Exemple pratique

Afin de choisir un microcontrôleur, nous avons compilé une liste de fonctionnalités/critères que nous recherchons :

  1. Le coût du microcontrôleur doit être faible tout en incluant une carte de développement (sous les 50 $)
  2. Il doit être facile à utiliser et bien pris en charge. Il est également important de disposer de beaucoup de documentation facilement disponible.
  3. Il doit pouvoir être programmé en langage C ou à base de C.
  4. Il doit être populaire et disposer d'une communauté active d'utilisateurs.
  5. Étant donné que le robot sera utilisé comme une plate-forme à usage général, le microcontrôleur doit être très riche en fonctionnalités pour permettre une large expérimentation. En ce sens, il doit offrir plusieurs broches analogiques et numériques, ainsi qu'un régulateur de tension intégré.

Puisque notre robot utilisera deux moteurs, le microcontrôleur aura besoin de deux broches numériques pour le contrôle de la direction, et de deux broches MLI pour le contrôle de la vitesse (ceci sera expliqué plus en détail dans la leçon 5). Le robot devra également transmettre et recevoir des données, de sorte qu'il doit accepter le protocole de communication UART (ou série, ou RS232), dans notre cas. Nous aimerions également avoir la possibilité d'ajouter d'autres capteurs et dispositifs à l'avenir, des broches analogiques et numériques supplémentaires seront donc appropriées. Le prochain tableau RobotShop de comparaison des microcontrôleurs nous permet de comparer les principales caractéristiques d'un microcontrôleur avec un autre. Les microcontrôleurs Pololu et Arduino semblent mieux correspondre aux critères ci-dessus. Afin de sélectionner un microcontrôleur spécifique de chez ces deux fabricants, chacun a été étudié afin de déterminer la quantité disponible de matériel, code, la communauté des utilisateurs, les résultats Google et bien plus encore. Arduino Uno L'Arduino Uno a finalement été choisi sur la base du rapport prix/caractéristiques et en raison de la notion de « blindages » (cartes accessoires séparées que vous branchez et empilez sur le microcontrôleur, et qui ajoutent des fonctionnalités spécifiques). Arduino est également particulièrement populaire, il existe de nombreux exemples de projets, et sa communauté est très active. RobotShop - La robotique à votre servicePour de plus amples informations concernant l'apprentissage de la construction d'un robot, veuillez consulter le Centre de formation de RobotShop. Consultez le Forum de la communauté RobotShop pour demander de l'aide dans la construction de robots, présenter vos projets ou simplement discuter avec d'autres collègues roboticiens.

LikedLike this to see more

Spread the word

Flag this post

Thanks for helping to keep our community civil!


Notify staff privately
It's Spam
This post is an advertisement, or vandalism. It is not useful or relevant to the current topic.

You flagged this as spam. Undo flag.Flag Post