Important: Veuillez noter que cette page a été traduite avec la traduction automatique de notre article en anglais. Nous nous excusons pour la qualité de la traduction. Vous êtes invités à contribuer avec des corrections.
Merci.

Regardez le tutoriel vidéo

Boutons poussoirs et interrupteurs sont entrées numériques et sont largement utilisés dans les projets électroniques comme la plupart des systèmes doivent répondre aux commandes de l’utilisateur ou des capteurs. La lecture d’un commutateur est très utile car un interrupteur est largement utilisé et peut également représenter une large gamme d’appareils numériques dans le monde réel comme des boutons-poussoirs, des capteurs de limite, commutateurs de niveau, détecteurs de proximité, les claviers (une combinaison de commutateurs), etc. 

Connexion d’ un commutateur à un microcontrôleur est simple, nous avons tous besoin d’ un pull-up ou pull-down  résistance.
                

Figure 1: Un interrupteur avec une résistance Pull-up Figure 2: Un interrupteur avec une résistance Pull-down           
Résistances pull-up

Le pull-up ou d’une résistance pull-down est très important, s’il n’y a pas de résistance , il sera difficile de déterminer l’état de la broche, on appelle flottant.
supposons que la broche du microcontrôleur est configuré comme une entrée. S’il n’y a rien relié à la broche et le programme de micro – contrôleur lit l’état de la broche, il sera élevé (tiré à CCV) ou faible (tiré à la terre)? Il est difficile de dire. Mais avec une résistance reliée à VCC (pull-up) comme sur la figure 2, ou reliée à la masse (pull-down) comme sur la figure 3, va faire en sorte que la broche est soit dans un état haut ou bas.
Résistances pull-up sont les plus fréquentes nous allons donc mettre l’ accent sur eux.
Sur la figure 1, si l’interrupteur est ouvert, l’entrée du PIC sera élevé (+ 5V) et lorsque l’interrupteur est fermé, l’entrée du PIC sera faible. S’il n’y avait pas de résistance, il aurait pu être un court – circuit.
Résistances pull-up internes peuvent également être activés dans le logiciel si des résistances externes ne vont pas être utilisés, reportez – vous à la fiche technique pour en savoir plus.

Maintenant , nous savons les raisons pour lesquelles nous devrions utiliser un pull-up ou d’une résistance pull-down, la question suivante est ce que devrait être la valeur de cette résistance?
Plus la résistance de cette résistance de pull-up, le ralentissement de la tige est de répondre aux variations de tension, ceci est parce que le système qui alimente la broche d’entrée est essentiellement un condensateur couplé à la résistance de pull-up, donc cela forme un filtre RC et les filtres RC prennent un certain temps pour charger et décharger. Donc , si vous avez un signal changeant très rapide (comme l’ USB), une résistance de pull-up de haute valeur peut limiter la vitesse à laquelle la broche peut changer d’ état fiable.
Et d’autre part , si vous sélectionnez une résistance plus faible, lorsque l’interrupteur est fermé, plus courant sera acheminé à la terre qui n’est pas une bonne idée , surtout si le circuit est alimenté par batterie.
En général , une valeur de 10kΩ devrait faire l’amende d’emploi .

Élimination du rebondissement (Debounce/Debouncing) de l’interrupteur

Comme mécaniquement les contacts métalliques du commutateur ne sont pas parfaitement lisse, quand un interrupteur est fermé, il ne parfaitement près immédiatement, en fait, ça rebondit si vite avant qu’il puisse se stabiliser et rester ouvert. La figure 4 ci-dessous illustre le fonctionnement d’un commutateur de rebondissement, lorsque le commutateur est fermé, il ferme immédiatement et le courant qui le traverse augmente immédiatement de 0 au maximum. En réalité, ce type de commutateur n’existe pas, avec un regard gros plan avec un oscilloscope, il a révélé que, dans la pratique, l’interrupteur rebondit étroite et ouverte pendant une courte période de temps avant que stabising comme indiqué sur la figure 4.
En situation normale, cette période rebondissement est si courte qu’il ne sera même pas remarqué, mais un micro-contrôleur peut détecter, et si est impliqué commutation à grande vitesse, le circuit ne sera pas précis si cet effet rebondissant n’est pas pris en considération .

        
Figure 3: Opération d’un interrupteur idéal sans rebondissement . Figure 4: Opération d’un interrupteur réel avec rebondissement

Il y a plusieurs façons cela peut être éliminé dans le logiciel, on peut utiliser un algorithme de comptage où le commutateur est lu périodiquement (par exemple toutes les 1 ms) et il ne peut être considéré comme ayant changé d’état si elle a été dans le nouvel état depuis un certain nombre d’échantillons successifs (par exemple de 10), par laquelle il est réputé avoir réglé.

L’autre méthode et le plus facile est de lire un interrupteur puis après un court délai, laisser dire 10ms, lire à nouveau, si l’état du commutateur est toujours le même, le commutateur est considéré comme réglé dans cet état. 

Code MPLAB XC8

Le  TRISx  registre de commande de la direction de l’orifice. Si la valeur si le  registre est TRISx « 1 » , le PORT / PIN est entrée, tout dispositif d’entrée comme un interrupteur peut être lu alors. 
Lorsque la valeur si le  registre TRISx est « 0 » , alors le PORT / PIN devient sortie, un périphérique de sortie comme une diode peut être commandé ensuite. 
Exemple:            

  1. Régler PORTB (tous les bits) à l’ entrée:  TRISB = 0xFF            
  2. Régler PORTD bit 0 à l’ entrée:       TRISDbits.RD0 = 1            
  3. Régler les bits de 0 à 3 PORTB à l’ entrée et les bits 4 à 7 à la sortie:  TRISB = 0x0F 
  4. Pour supprimer l’effet de rebondissement du commutateur, on peut lire le commutateur à deux reprises avec un court délai entre les deux pour vous assurer que le commutateur a complètement changé son statut:

 Exemple

Figure 5: un commutateur et un affichage à 7 segments connecté au microcontrôleur PIC

Le circuit de la figure 1 montre un compteur décimal comptant de 0 à 9 avec une deuxième retard entre les deux lorsque le commutateur  SW1 est fermé. Lorsque cet interrupteur est ouvert, le compteur arrête et reprendre le comptage lors de sa fermeture à nouveau. Utilisez le technic deboucing de commutateur pour lire l’état du commutateur.        

Figure 4: Lecture d’un code source exemple de commutateur

Vous pouvez télécharger les fichiers de projet complet (code source MPLAB XC8 et Proteus conception schématique) ci – dessous ici.
Tous les fichiers sont compressés, vous aurez besoin de les dézipper ( Télécharger une version gratuite de l’utilitaire Winzip pour décompresser les fichiers ).

Télécharger MPLAB XC8 projet: 7-Segment.X

Télécharger Proteus Schéma: Proteus 7 segments