Table des matières:

Utilisez 1 entrée analogique pour 6 boutons pour Arduino : 6 étapes
Utilisez 1 entrée analogique pour 6 boutons pour Arduino : 6 étapes

Vidéo: Utilisez 1 entrée analogique pour 6 boutons pour Arduino : 6 étapes

Vidéo: Utilisez 1 entrée analogique pour 6 boutons pour Arduino : 6 étapes
Vidéo: [Arduino] Débuter avec Arduino. Partie 7 : les entrées analogiques 2024, Novembre
Anonim
Utilisez 1 entrée analogique pour 6 boutons pour Arduino
Utilisez 1 entrée analogique pour 6 boutons pour Arduino

Je me suis souvent demandé comment obtenir plus d'entrées numériques pour mon Arduino. Il m'est récemment venu à l'esprit que je devrais pouvoir utiliser l'une des entrées analogiques pour introduire plusieurs entrées numériques. J'ai fait une recherche rapide et j'ai trouvé où les gens pouvaient le faire, mais cela ne permettait d'appuyer qu'un seul bouton à la fois. Je veux pouvoir avoir n'importe quelle combinaison de boutons à appuyer SIMULTANÉMENT. Alors, avec l'aide de TINKERCAD CIRCUITS, j'ai décidé de faire en sorte que cela se produise.

Pourquoi voudrais-je appuyer simultanément sur les boutons ? Comme illustré dans la conception des circuits TinkerCad, il pourrait être utilisé pour les entrées de commutateur DIP pour la sélection de différents modes dans le programme.

Le circuit que j'ai imaginé utilise la source 5V disponible à partir de l'Arduino et utilise 7 résistances et 6 boutons ou commutateurs.

Étape 1: Le circuit

Le circuit
Le circuit

Les Arduino ont des entrées analogiques qui acceptent une entrée de 0V à 5V. Cette entrée a une résolution de 10 bits, ce qui signifie que le signal est divisé en 2^10 segments, soit 1024 comptes. Sur cette base, le maximum que nous pourrions jamais entrer dans une entrée analogique tout en permettant des pressions simultanées serait de 10 boutons pour 1 entrée analogique. Mais, ce n'est pas un monde parfait. Il y a une résistance dans les conducteurs, du bruit provenant de sources extérieures et une puissance imparfaite. Donc, pour me donner beaucoup de flexibilité, j'ai prévu de le concevoir pour 6 boutons. Cela était en partie influencé par le fait que TinkerCAD Circuits avait un objet DIP Switch à 6 commutateurs, ce qui rendait les tests faciles.

La première étape de ma conception était de m'assurer que chaque bouton, lorsqu'il est pressé individuellement, fournirait une tension unique. Cela excluait que toutes les résistances aient la même valeur. L'étape suivante était que les valeurs de résistance, lorsqu'elles étaient ajoutées en parallèle, ne pouvaient pas avoir la même résistance que n'importe quelle valeur de résistance unique. Lorsque les résistances sont connectées en parallèle, la résistance résultante peut être calculée par Rx=1/[(1/R1)+(1/R2)]. Donc, si R1=2000 et R2=1000, Rx=667. J'ai supposé qu'en doublant la taille de chaque résistance, je ne verrais pas la même résistance pour aucune des combinaisons.

Donc, mon circuit à ce stade devait avoir 6 commutateurs, chacun avec sa propre résistance. Mais, il y a une résistance supplémentaire nécessaire pour compléter ce circuit.

La dernière résistance a 3 fonctions. Premièrement, il agit comme une résistance Pull-Down. Sans la résistance, lorsqu'aucun bouton n'est enfoncé, le circuit est incomplet. Cela permettrait à la tension à l'entrée analogique de l'Arduino de flotter à n'importe quel potentiel de tension. Une résistance Pull-Down abaisse essentiellement la tension à 0 V. Le deuxième objectif est de limiter le courant de ce circuit. La loi d'Ohm stipule que V = IR, ou Tension = Courant multiplié par la Résistance. Avec une source de tension donnée, plus la résistance est grande signifie que le courant serait plus petit. Ainsi, si un signal de 5 V était appliqué à une résistance de 500 ohms, le courant le plus important que nous pourrions voir serait de 0,01 A ou 10 mA. Le troisième objectif est de fournir la tension du signal. Le courant total traversant la dernière résistance serait: i=5V / Rtotal, où Rtotal = Rlast + {1/[(1/R1)+(1/R2)+(1/R3)+(1/R4)+ (1/R5)+(1/R6)]}. Cependant, n'incluez que 1/Rx pour chaque résistance dont le bouton correspondant est enfoncé. À partir du courant total, la tension fournie à l'entrée analogique serait i*Rlast ou i*500.

Étape 2: Preuve - Excel

Preuve - Excel
Preuve - Excel

Le moyen le plus rapide et le plus simple de prouver que j'obtiendrais des résistances uniques et donc des tensions uniques avec ce circuit était d'utiliser les capacités d'Excel.

J'ai configuré toutes les combinaisons possibles d'entrées de commutateur et organisé ces modèles binaires en suivant séquentiellement. Une valeur de "1" indique que le commutateur est activé, un blanc indique qu'il est désactivé. En haut de la feuille de calcul, j'ai mis les valeurs de résistance pour chaque commutateur et pour la résistance pull-down. J'ai ensuite calculé la résistance équivalente pour chacune des combinaisons, sauf lorsque toutes les résistances sont éteintes car ces résistances n'auront pas d'effet sans qu'une source d'alimentation ne l'alimente. Pour faciliter mes calculs afin que je puisse copier et coller dans chaque combinaison, j'ai inclus toutes les combinaisons dans le calcul en multipliant chaque valeur de commutation (0 ou 1) par sa valeur de résistance inversée. Cela éliminait sa résistance du calcul si l'interrupteur était éteint. L'équation résultante est visible dans l'image du tableur, mais Req = Rx+1/(Sw1/R1 + Sw2/R2 + Sw3/R3 + Sw4/R4 + Sw5/R5 + Sw6/R6). En utilisant Itotal = 5V / Req, nous déterminons le courant total traversant le circuit. C'est le même courant qui traverse la résistance Pull-down et nous fournit la tension à notre entrée analogique. Ceci est calculé comme Vin = Itotal x Rx. En examinant à la fois les données Req et les données Vin, nous pouvons voir que nous avons effectivement des valeurs uniques.

À ce stade, il semble que notre circuit fonctionnera. Maintenant, pour comprendre comment programmer l'Arduino.

Étape 3: Programmation Arduino

Programmation Arduino
Programmation Arduino
Programmation Arduino
Programmation Arduino
Programmation Arduino
Programmation Arduino

Lorsque j'ai commencé à réfléchir à la façon de programmer l'Arduino, j'avais initialement prévu de configurer des plages de tension individuelles pour déterminer si un interrupteur était allumé ou éteint. Mais, alors que je restais au lit une nuit, il m'est venu à l'esprit que je devrais être capable de trouver une équation pour le faire. Comment? EXCELLER. Excel a la capacité de calculer des équations pour ajuster au mieux les données dans un graphique. Pour ce faire, je veux une équation de la valeur entière des commutateurs (binaire) par rapport à l'entrée de tension correspondant à cette valeur. Dans mon classeur Excel, j'ai mis la valeur entière sur le côté gauche de la feuille de calcul. Maintenant, pour déterminer mon équation.

Voici un tutoriel rapide sur la façon de déterminer l'équation d'une ligne dans Excel.

1) Sélectionnez une cellule qui ne contient aucune donnée. Si vous avez sélectionné une cellule contenant des données, Excel essaiera de deviner la tendance que vous souhaitez suivre. Cela rend beaucoup plus difficile la définition d'une tendance, car Excel prédit rarement correctement.

2) Sélectionnez l'onglet "Insertion" et sélectionnez un graphique "Scatter".

3) Faites un clic droit dans la zone du graphique et cliquez sur "Sélectionner les données…". Cela fera apparaître la fenêtre "Sélectionner la source de données". Sélectionnez le bouton Ajouter pour continuer à sélectionner les données.

4) Donnez-lui un nom de série (facultatif). Sélectionnez la plage pour l'axe X en cliquant sur la flèche vers le haut, puis en sélectionnant les données de tension. Sélectionnez la plage pour l'axe Y en cliquant sur la flèche vers le haut, puis en sélectionnant les données entières (0-63).

5) Cliquez avec le bouton droit sur les points de données et sélectionnez "Ajouter une ligne de tendance…" Dans la fenêtre "Formater la ligne de tendance", sélectionnez le bouton Polynomial. En regardant la tendance, nous voyons que l'ordre de 2 ne correspond pas tout à fait. J'ai sélectionné un ordre de 3 et j'ai estimé que c'était beaucoup plus précis. Cochez la case "Afficher l'équation sur le graphique". L'équation finale est maintenant affichée sur le graphique.

6) Terminé.

D'ACCORD. Retour au programme Arduino. Maintenant que nous avons l'équation, la programmation de l'Arduino est facile. L'entier qui représente les positions du commutateur est calculé en 1 ligne de code. En utilisant la fonction "bitread", nous pouvons saisir la valeur de chaque bit individuel et ainsi connaître l'état de chaque bouton. (VOIR PHOTOS)

Étape 4: Circuits TinkerCAD

Circuits TinkerCAD
Circuits TinkerCAD

Si vous n'avez pas vérifié TinkerCAD Circuits, faites-le maintenant. ATTENDRE!!!! Terminez la lecture de mon Instructable, puis vérifiez-le. TinkerCAD Circuits facilite le test des circuits Arduino. Il comprend plusieurs objets électriques et Arduinos, vous permettant même de programmer l'Arduino pour le tester.

Pour tester mon circuit, j'ai configuré 6 commutateurs à l'aide d'un pack de commutateurs DIP et les ai liés aux résistances. Pour prouver que la valeur de tension dans ma feuille de calcul Excel était correcte, j'ai affiché un voltmètre à l'entrée de l'Arduino. Tout cela a fonctionné comme prévu.

Pour prouver que la programmation Arduino a fonctionné, j'ai sorti les états des commutateurs sur les LED, en utilisant les sorties numériques de l'Arduino.

J'ai ensuite changé tous les commutateurs pour toutes les combinaisons possibles et je suis fier de dire "ÇA MARCHE" !!!

Étape 5: « Adieu, et merci pour tout le poisson. » (réf.1)

Je n'ai pas encore essayé cela avec de l'équipement réel, car je suis actuellement en voyage pour le travail. Mais, après l'avoir prouvé avec TinkerCAD Circuits, je pense que cela fonctionnera. Le défi est que les valeurs des résistances que j'ai spécifiées ne sont pas toutes des valeurs standard pour les résistances. Pour contourner ce problème, je prévois d'utiliser des potentiomètres et des combinaisons de résistances pour obtenir les valeurs dont j'ai besoin.

Merci d'avoir lu mon instructable. J'espère que cela vous aidera dans vos projets.

Veuillez laisser des commentaires si vous avez tenté de surmonter ce même obstacle et comment vous l'avez résolu. J'aimerais apprendre plus de façons de le faire.

Étape 6: Références

Vous ne pensiez pas que je fournirais un devis sans fournir une référence à sa source, n'est-ce pas ?

réf. 1: Adams, Douglas. A bientôt, et merci pour tout le poisson. (Le 4ème livre de la "trilogie" du Guide de l'auto-stoppeur de la Galaxie)

Conseillé: