Connecter plusieurs boutons poussoir à un microcontrôleur

Tout développeur d’un projet à base de microcontrôleur est confronté un jour ou l’autre à l’obligation d’économiser les entrées-sorties à sa disposition.

Une méthode pour connecter plusieurs boutons poussoirs à un microcontrôleur utilise les entrées analogiques. Chaque bouton poussoir configure différemment un réseau de résistances pour créer un diviseur de tension. La tension ainsi produite, unique pour chaque bouton, est lue par le convertisseur A/D. Cette méthode est très bien décrite d’une part par Jean-Luc dans son blog, d’autre part par C. Tavernier dans son livre « Arduino, maîtrisez sa programmation et ses cartes d’interface (shields) ».

M’inspirant d’une note d’application de Freescale qui détaille les calculs à effectuer, j’ai créé le fichier Excel ClavierAnalogique pour calculer les résistances du montage suivant (schéma tiré de la note Freescale) :

La 1ère ligne du fichier contient les valeurs suivantes:

  • R1: valeur de la résistance pull-up entre Vcc et l’entrée AD du microcontrôleur.
  • Vcc: tension d’alimentation.
  • Max AD: valeur maximale retournée par le convertisseur ADC, ici 1023 = 2^10 – 1, pour Atmega, à adapter.
  • Incrément: subdivision de la tension. Pour 5 poussoirs =1/5, pour 6 poussoirs = 1/6.

Les colonnes contiennent les valeurs suivantes:

  • i: numéro des autres résistances. R2: 1er poussoir, R3: 2ème poussoir, etc.
  • V0/Vcc: rapport de tension à produire à l’entrée AD du microcontrôleur.
  • Req: résistance équivalente à la somme des résistances entre l’entrée AD et le poussoir.
  • Ri brut: valeur brute de la résistance no. i.
  • Req norm: résistance équivalente à la somme des résistances entre l’entrée AD et le poussoir, obtenue avec des valeurs normalisées E12.
  • Ri norm min: résistance normalisée <= valeur brute de Ri.
  • Ri nomr max; résistance normalisée >= valeur brute de Ri.
  • Ri norm: résistance normalisée la plus proche de Ri brute.
  • V0/Vcc norm: rapport de tension avec les valeurs normalisées.
  • écart: entre le rapport de tension idéal et celui obtenu avec les valeurs normalisées.
  • Courant: courant circulant dans les résistnaces.
  • V0: tension à l’entrée AD.
  • Valeur AD: valeur correspondante produite par le convertisseur AD.
  • Seuils: valeurs intermédiaires à stocker dans la table pour déterminer les poussoirs pressés.

En lignes 10 et 12, on trouve encore 2 valeurs de seuils pour respectivement le dernier seuil à 5 poussoirs, le dernier seuil à 6 poussoirs.

Si vous choisissez un Incrément = 1/5, la ligne 8 (i = 6) est en erreur, c’est tout à fait normal.

Encore un dernier mot sur la détermination des valeurs normalisées de résistances. Elles sont dans le tableau à partir de la ligne 15. C’est parce que la fonction de recherche retourne la valeur <= que les 2 colonnes sont décalées. On utilise la colonne B pour la valeur min et la colonne C pour la valeur max, puis on prend la valeur la plus proche (en valeur absolue) pour Ri norm.

Ce tableau contient les valeurs E12, mais c’est adaptable si vous avez des séries de résistances E24 ou autre.

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s