• Bonsoir, je me rends juste compte que les notifications des nouveaux messages étaient limitées aux membres actifs dans les 30 derniers jours. Donc, j'ai supprimé cette option. En espérant que vous aurez bien les notifications attendues. Merci pour votre patience. Yves

Le monde des microcontrôleurs

jpparisy

Patibulaire mais presque
Sous ce sujet, vous trouverez des montages simples à base de microcontrôleurs, destinés à être utilisés avec une radiocommande proportionnelle et étudiés principalement pour les modèles réduits de bateaux.

J'ai remarqué que quelques uns, sur ce forum, se lancent dans la construction de navires utilitaires, du genre bateaux de pêche, pousseurs, remorqueurs et autres engins sympathiques rentrant dans la catégorie loisirs, par opposition aux catégories donnant lieu à des compétitions effrénées.

Avec ce genre de bateaux, une radiocommande proportionnelle est utile pour la direction et la propulsion, par contre, ils nécessitent plein de commandes tout ou rien pour faire des animations ou allumer des lumières.

Je vous propose donc des montages à brancher sur une (ou plusieurs) voie(s) proportionnelle(s) et qui commandent plusieurs fonctions tout ou rien.

Des solutions commerciales existent, mais, avec des composants ne coûtant pas grand chose et aisément disponibles, il est possible de faire presque aussi bien, avec un travail minime et un effort d'imagination !

*** Mise à jour du 21/02/2013 ***​

Cela fait maintenant plus d'un an que ce sujet a débuté. J'en profite pour insérer une table des matières permettant de retrouver facilement un projet précis.

J'ai modifié tous les fichiers attachés pour avoir à la fois le code source et le code généré, prêt à être écrit dans le MCU.

  1. Projets à base de PIC 12F509
    • Montage n° 1 :
      C'est le montage le plus simple, à brancher sur une voie proportionnelle :
      manche au centre, tout est éteint,
      manche en haut, un port est allumé,
      manche en bas, un autre port est allumé.
    • Montage n° 2 :
      Dans le montage précédent, le manche de la radio allume un port quand il est dans une position et l'éteint quand il revient au neutre.
      Dans ce montage, le port sera une bascule : une première action dans un sens va l'allumer, une deuxième action dans le même sens va l'éteindre.
    • Montage n° 3 :
      Dans ce montage, nous allons commander quatre ports sur le même manche proportionnel :
      manche au centre, tout est éteint,
      manche tout en haut, allumer le port GP0,
      manche à mi-course en haut, allumer le port GP1,
      manche à mi-course en bas, allumer le port GP2,
      manche tout en bas, allumer le port GP4.
      Le port choisi reste allumé tant que le manche ne revient pas au centre.
    • Montage n° 4 :
      Dans le montage précédent, le manche de la radio allume un port quand il est dans une position et l'éteint quand il revient au neutre.
      Dans ce montage, deux ports seront utilisés comme bascules : une première action dans une position va allumer le port, une deuxième action dans la même position va l'éteindre. Nous avons déjà vu cela dans le montage n° 2, le but de ce montage est de montrer une généralisation du principe.
    • Montage n° 5 :
      Dans ce montage, nous allons lire le port GP5 pour déterminer le fonctionnement du circuit : quand GP5 est branché sur 0 V, la sortie GP1 est fugitive, quand le port GP5 est branché sur 5 V, la sortie GP1 est une bascule.
    • Montage n° 6 :
      Nous allons utiliser un interrupteur de l'émetteur pour générer des impulsions de longueur différentes (longues et courtes) et les ports seront positionnés en fonction du nombre de changement de longueur d'impulsions. Une impulsion se produit lorsque l'interrupteur change de position, sa position initiale n'a pas d'importance.
    • Montage n° 7 :
      Ce montage dérive du montage n° 1, mais au lieu d'être commandé par un manche proportionnel, il est commandé par un interrupteur à deux positions.
      Quand l'interrupteur est dans une position, un port est positionné à 1 et un autre port est positionné à 0. Quand l'interrupteur est basculé, le port qui était à 1 passe à 0, celui qui était à 0 passe à 1.
    • Montage n° 8 :
      Ce montage dérive du montage n° 7, mais nous allons utiliser trois interrupteurs, chacun commandant une sortie en tout ou rien sur le même MCU.
    • Montage n° 9 :
      Dans ce montage je vais décrire une centrale d'éclairage, avec deux ports clignotants, un port pour un feu à éclats et un port fixe.
      Une action à fond sur le manche met en service l'un des clignotants, cette action est fugitive ou à bascule, en fonction d'un port d'entrée.
      Une action à mi-course met en service le feu à éclats, une action à mi-course de l'autre côté met en service le feu fixe. Ces deux fonctions sont des bascules : une action dans une position va activer la fonction, une deuxième action dans la même position va la désactiver.
    • Montage n° 10 :
      Ce montage et sa variante permettent de commander de un à huit ports en utilisant un bouton poussoir fugitif ou un manche avec retour au centre.
      Pour allumer un port donné, nous allons actionner et relâcher autant de fois que nécessaire le bouton ou le manche, le dernier appui devant être plus long que les autres.

  2. Projets à base de PIC 12F675
    • Montage n° 1 :
      C'est le montage le plus simple, à brancher sur une voie proportionnelle :
      manche au centre, tout est éteint,
      manche en haut, un port est allumé,
      manche en bas, un autre port est allumé.
    • Montage n° 2 :
      Ce montage n'a pas grand chose à voir avec le modélisme nautique, puisqu'il s'agit d'un testeur de servos. Il peut fonctionner en mode automatique ou en mode manuel.
    • Montage n° 3 :
      C'est aussi un testeur de servos, dérivé du précédent, mais il est maintenant possible de lui apprendre les positions neutre et extrêmes en le branchant sur une sortie servo d'un récepteur.
    • Montage n° 4 :
      Ce montage permet de commander directement quatre servos proportionnels en tout ou rien sur le même manche. Il permet, par exemple, de remplacer des électro-aimants par des servos normaux, ou de commander des moteurs à balais en utilisant des micro-swiches actionnés par les palonniers des servos.
    • Montage n° 5 :
      Ce montage et ses variantes permettent d'actionner de un à huit servos proportionnels en utilisant un bouton poussoir fugitif ou un manche avec retour au centre.
    • Montage n° 6 :
      Ce montage et ses variantes permettent de rediriger un signal proportionnel vers un port parmi quatre ou huit.
    • Montage n° 7 :
      Ce montage permet de commander un moteur pas-à-pas en rotation continue.
 
Ce message évoluera en fonction des composants utilisés dans les montages.

Le PIC12F509

C'est un microcontrôleur (en abrégé "MCU" : Micro Controler Unit) fabriqué par Microchip, la fiche descriptive du produit est ici.

Il ressemble physiquement à ceci :

image_12f509.jpg


Cette photo est un agrandissement, lorsque le MCU est monté sur un support (ce que je recommande), il mesure environ 1 cm dans toutes les dimensions.

Sous ce format réduit :
  • Il dispose d'une broche pouvant être utilisée en entrée et de cinq broches pouvant être utilisées en entrée ou en sortie, indépendamment les unes des autres.
  • Il a un compteur (timer) de huit bits avec un pas de 1 à 256 usec (microsecondes) permettant de mesurer le temps.
  • Il dispose d'un oscillateur interne de 4 Mhz et ne nécessite pas de quartz pour fonctionner.
  • Il est alimenté entre 2 V et 5.5 V (à ne pas dépasser) et consomme, à vide, environ 1 mA (milliAmpère) sous 5V.
  • Les broches en sortie peuvent fournir jusqu'à 25 mA chacune (de quoi alimenter une LED) et il ne faut pas dépasser 75 mA pour l'ensemble des sorties.
  • Il est reprogrammable, ce qui signifie qu'on peut changer le programme en mémoire autant de fois que nécessaire (jusqu'à 100 000 fois).
L'avantage d'utiliser un MCU est qu'il ne nécessite aucun composant additionnel pour fonctionner, comme nous allons le voir avec les schémas proposés.

On le trouve couramment en France à environ 1 EUR pièce.

Le PIC 12F675

C'est un autre MCU fabriqué par Microchip, la fiche descriptive est ici.

Il se présente également sous la forme d'un boîtier à huit broches. Il reprend l'organisation interne et les caractéristiques du 12F509, mais il permet en plus :
  • D'utiliser un deuxième timer d'une précision de seize bits.
  • De gérer des interruptions.
  • De lire des entrées analogiques qu'il peut comparer à une tension de référence ou convertir en valeurs numériques.
  • De lire et écrire dans 128 octets de mémoire non volatile (EEPROM), permettant de sauver et retrouver des valeurs, même après l'arrêt de l'alimentation.
Cela permet de réaliser des montages plus élaborés, mais pas forcément plus complexes en composants externes, puisque la complexité de la réalisation est prise en compte par le programme du MCU.

Le PIC 12F683

C'est le même circuit que le PIC 12F675, mais ses capacités de mémoire sont doublées : 2048 mots de programme, 128 octets de mémoire dynamique (données) et 256 octets de mémoire EEPROM. Un troisième timer, d'une capacité de huit bits est disponible.

La fiche descriptive est ici.

Ce circuit sera utilisé lorsqu'on aura un programme trop volumineux pour le 12F675.

Si, par hasard, le 12F675 était indisponible, ce circuit peut le remplacer sans problème.

On le trouve couramment en France à 1.73 EUR pièce (1.23 EUR pièce, acheté par paquet de 10).

On le trouve couramment en France à 1.64 EUR pièce (1.26 EUR pièce, acheté par paquet de 5).

Les PIC 16F1825/1829

Il s'agit ici, non pas d'un, mais de deux circuits : le 16F1825 se présente sous la forme d'un boîtier de 14 broches et le 16F1829 sous la forme d'un boîtier de 20 broches. Ils sont de la même famille que le PIC 12F675, mais ils disposent d'un plus grand nombre de ports : 2 pour le 16F1825 et 3 pour le 16F1829. Mis à part cette différence, ils sont strictement identiques fonctionnellement.

Ils ressemblent physiquement à ceci :

DIP-14.jpg
DIP-20.jpg


Voici un résumé de leurs possibilités :
  • 12 ou 18 entrées/sorties, dont 1 en lecture seulement.
  • Jusqu'à 32 Mhz d'horloge avec un quartz, jusqu'à 16 Mhz sans quartz avec l'oscillateur interne d'une précison de 1%.
  • 8192 mots de mémoire programme.
  • 1024 octets de mémoire dynamique (données).
  • 256 octets de mémoire EEPROM.
  • 8 ou 12 entrées analogiques pouvant être comparées ou converties en valeurs numériques (ADC).
  • 1 module de conversion de numérique vers analogique (DAC).
  • 5 timers, dont 1 de 16 bits.
  • 1 ou 2 port(s) série pour communiquer avec d'autres MCU ou ordinateurs en protocole RS232, SPI ou I²C.
  • 2 modules permettant de lire, comparer ou sortir des impulsions modulées en largeur (PWM).
  • 8 ou 12 touches sensitives en lecture.
La fiche descriptive est ici.

On trouve couramment le PIC 16F1825 en France à 1.58 EUR pièce.

Le PIC 16F1829 n'est pas facile à trouver à un prix amateur. Il est disponible chez les distributeurs professionnels, mais avec des frais de port prohibitifs quand on commande en petite quantité. Pour obtenir le port gratuit, il faut faire une commande de 65.00 EUR HT minimum, en dessous les frais sont de 18.00 EUR, ça fait cher pour un composant qui coûte moins de 2.00 EUR !

Le BS170

C'est un transistor de technologie MOSFET, sa fiche technique est ici.

Il s'utilise lorsqu'il y a besoin de puissance sur les sorties du MCU. Il agit comme un interrupteur pour commander n'importe quelle charge consommant jusqu'à 500 mA en continu et 1200 mA en impulsion. Si cette intensité n'est pas suffisante, un MOSFET de puissance peut être utilisé, par exemple l'IRF540, qui supporte jusqu'à 28A en continu et 110 A en impulsion ou encore l'IRF3808, qui supporte jusqu'à 140A en continu et 550 A en impulsion.

L'avantage du MOSFET sur un transitor classique est qu'il est commandé par une tension et non par un courant. Pratiquement, cela signifie qu'il peut être branché directement sur une sortie du MCU sans aucun composant supplémentaire.

image_bs170.jpg
schema_bs170.jpg


La broche "G" est l'entrée de commande, lorsque la tension sur cette broche est supérieure à 3 V, le transistor conduit. La broche "S" est à brancher à la masse (0 V) et la broche "D" est à brancher sur le pôle négatif du dispositif à commander, l'autre pôle du dispositif étant branché à la source positive, cette source peut éventuellement être différente de l'alimentation du MCU.
Lorsque des alimentations séparées sont utilisées, leurs masses (0 V) doivent être communes.

La tension maximum entre les broches "S" et "D" est 60 V. Celle entre les broches "G" et S est 20 V. A priori, cela ne devrait pas nous poser de problème.

On trouve généralement le BS170 pour un prix de 0.55 EUR vendu à l'unité, beaucoup moins cher quand on l'achète par quantité.
 
Pour pouvoir fonctionner, un MCU doit avoir un programme chargé en mémoire. Il existe différents langages pour écrire les programmes : l'assembleur, le BASIC, le langage C et divers langages propriétaires.

Personnellement, pour les réalisations que je décris, j'utilise l'environnement de développement de Microchip sous Windows (à télécharger ici : MPLAB IDE) et le langage C (compilateur "HI-TECH C Lite") fourni gratuitement sur le site Microchip.

Avec cet environnement, il est possible d'écrire et modifier le programme, de le compiler et d'écrire le code généré dans la mémoire du MCU.

mplab_ide.jpg


Programmateur

Pour transférer le code généré par la compilation (rangé dans un fichier suffixé par ".hex") depuis l'ordinateur vers la mémoire du MCU, il faut utiliser un programmateur. C'est un boîtier qui se branche sur une prise USB (ou sur un port série ou parallèle) côté ordinateur et sur le MCU de l'autre. Une fois le programme rangé en mémoire, il n'est pas nécessaire de le recharger avant 40 ans minimum (c'est peut être plus, mais on n'a pas le recul nécessaire).

Je ne préconise aucun modèle en particulier, il en existe à tous les prix, depuis les gratuits, à réaliser soi même, jusqu'aux très chers !
 
À utiliser avec un interrupteur, comme par exemple l'interrupteur noté "CH 5" sur une radio DX5e.

Au départ, toutes les voies sont à 0 V. Lorsqu'on bascule rapidement l'interrupteur un certain nombre de fois, la sortie correspondant au nombre de basculements (et seulement celle là) passe à 5 V. Pour la faire revenir à 0 V, on bascule l'interrupteur du même nombre de fois.

Exemple :

Au départ, l'interrupteur est sur la position ON (la position de départ n'a pas d'importance, c'est le nombre de changements qui importe), si on le passe à OFF (1 changement), la sortie 1 passe à 5 V.
Si on le remet sur ON après un certain temps, la sortie 1 passe à 0 V.
Pour activer ou désactiver la sortie 2, on bascule rapidement l'interrupteur deux fois (OFF-ON).
Pour la sortie 3, OFF-ON-OFF, et ainsi de suite pour les autres sorties.

Le schéma électronique est extrêmement simple, puisque tout est fait par le programme :

5-channels.jpg


L'entrée "Signal" est à brancher sur la voie commandée par un interrupteur.

Télécharger les fichiers source et hex.
 
Haut