Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Accordeur de guitare automatique basé sur Arduino

Composants et fournitures

Arduino UNO
× 1

Applications et services en ligne

Simulink

À propos de ce projet

L'une des choses les plus importantes lorsque l'on joue de la guitare est de s'assurer que l'instrument est accordé. Même le meilleur guitariste ne sonnera pas bien avec une guitare désaccordée. Accorder les guitares à la main à l'aide d'un accordeur standard a toujours été courant, mais un accordeur automatique rend les choses beaucoup plus faciles et plus amusantes ! Ce projet basé sur Arduino accordera votre guitare pour vous.

Voici une vidéo montrant le projet en action :https://www.mathworks.com/videos/automatic-guitar-tuner-using-simulink-and-arduino-1501787185047.html

Aperçu

La figure ci-dessus montre un aperçu de l'accordeur de guitare automatique.

  • Le bouton poussoir permet de sélectionner la corde à accorder
  • Un affichage à six LED est utilisé pour indiquer quelle chaîne a été sélectionnée
  • La pince connectée au moteur est utilisée pour tourner la cheville d'accord jusqu'à ce que la corde soit accordée.

Les entrées et sorties sont contrôlées par les quatre circuits mentionnés ci-dessus :un circuit d'entrée numérique pour le bouton-poussoir, un circuit d'entrée audio analogique pour la guitare, un circuit de sortie numérique pour l'affichage à LED et un circuit d'entraînement du moteur pour la cheville d'accord. pince. Ces quatre circuits interagissent avec un Arduino Due, qui exécute un algorithme développé à l'aide de Simulink.

Circuit d'entrée audio

La guitare est connectée à l'accordeur via un câble de guitare standard. L'extrémité d'un câble de guitare a deux connexions, appelées la pointe et la manche. Une extrémité du câble sera connectée à une prise d'entrée, qui a des fils pour la pointe et le manchon. J'ai soudé des fils sur ces fils pour connecter la pointe et le manchon au circuit d'entrée audio.

Je recommanderais d'utiliser un ampli op TL972 pour ce circuit. Il s'agit d'un amplificateur rail à rail à très faible bruit qui peut fonctionner à des tensions d'alimentation très faibles.

Pince de réglage motorisée

Je ne pouvais pas utiliser n'importe quel moteur à courant continu pour ce projet. J'avais besoin d'un motoréducteur avec une faible vitesse et un couple élevé. Le moteur que j'ai utilisé a une vitesse de 6 tr/min et un couple maximum de 613 oz-in. Il a une plage de tension de 3 à 12 V, j'ai donc utilisé une batterie de 9 V comme source d'alimentation.

Sur l'arbre du moteur, j'ai assemblé un mécanisme de préhension simple à l'aide d'un moyeu de serrage, de quatre vis et de ruban adhésif.

Logiciel

J'ai utilisé Simulink et son package de support pour Arduino pour développer l'algorithme du tuner. Simulink est un environnement de schéma-bloc utilisé pour développer des algorithmes et modéliser des systèmes dynamiques. Le package de support me permet de lire et d'écrire sur les broches de l'Arduino à l'aide de blocs Simulink. En utilisant les capacités de mode externe du logiciel, je peux simuler un algorithme sur l'Arduino avec génération automatique de code et régler les paramètres pendant l'exécution de la simulation, sans avoir à recompiler de code. Je peux ensuite déployer l'algorithme sur le matériel pour une exécution autonome. Le modèle que j'ai créé est montré ci-dessous.

Le mode externe permet l'utilisation de blocs de portée pour surveiller des parties de l'algorithme pendant qu'il s'exécute sur le matériel. Ceci est particulièrement utile pour contrôler l'entrée numérique du bouton et l'entrée analogique de la guitare. À partir de la portée du bouton, nous pouvons voir que l'entrée passe de 0 à 1 lorsque le bouton est enfoncé.

Je veux que ce changement de 0 à 1 déclenche un changement dans la chaîne sélectionnée. C'est ce qu'on appelle un déclencheur ascendant. J'ai créé un graphique Stateflow appelé « Sélectionner une chaîne » qui comporte six états, un pour chaque chaîne, et passe d'un état à l'autre en fonction de cette entrée de déclenchement montante. Voici un aperçu plus détaillé du graphique Stateflow.

Lors de l'entrée dans chaque état, la broche LED de la chaîne correspondante est réglée sur haut. À la sortie de chaque état, la broche est réglée sur bas. J'ai choisi la corde de mi grave, la plus basse des six cordes, par défaut. Lorsque j'allume le tuner pour la première fois, il démarre dans cet état par défaut.

Il y a sept sorties sur le graphique Stateflow :une pour la LED pour chacune des six chaînes, et une appelée « periodRange », dont je parlerai plus tard. Les six sorties LED vont directement aux blocs de sortie numérique Arduino pour allumer ou éteindre la LED appropriée.

Regardons maintenant la partie de traitement audio du modèle. Le signal de la guitare entre par le bloc d'entrée analogique. J'ai défini le temps d'échantillonnage du bloc à 0,0002 seconde pour un taux d'échantillonnage de 5 kHz. Lorsque j'ai joué de la guitare et ouvert le bloc audio scope, j'ai pu voir une forme d'onde comme celle ci-dessous.

Le bloc de portée m'a aidé à régler le potentiomètre du circuit audio pour modifier le gain de l'entrée. Le gain doit être réglé aussi haut que possible sans que le pic de la forme d'onde n'atteigne la valeur maximale de 1023. Cela permettra la lecture la plus précise du signal.

Lorsque la guitare n'est pas jouée, le signal d'entrée doit être une ligne plate quelque part entre 500 et 700. Dans mon cas, il était d'environ 550. Il est important de connaître cette valeur car l'accordeur ne doit traiter l'audio que lorsqu'il y a une note en train d'être joué. J'ai choisi une valeur de 575, juste au-dessus de cette ligne plate, comme seuil. L'audio ne sera traité que lorsque le signal est au-dessus de cette valeur seuil. Étant donné que Simulink me permet de régler les paramètres pendant qu'une simulation est en cours, j'ai pu facilement définir ma valeur de seuil.

Lorsqu'une seule note est jouée sur une guitare, la forme d'onde générée est périodique. La période de la forme d'onde correspond à une certaine hauteur musicale. L'algorithme de réglage estime la hauteur de la corde en déterminant la période de la forme d'onde. J'ai écrit une fonction MATLAB qui effectue cette estimation de hauteur et l'ai incluse dans mon modèle Simulink à l'aide du bloc fonction MATLAB. Pour déterminer si la chaîne est juste, la fonction MATLAB a besoin d'une entrée indiquant quelle plage de périodes est considérée comme juste pour chaque chaîne. Il s'agit de la sortie « periodRange » du graphique Stateflow. La fonction détermine si la hauteur de la corde est trop élevée, trop basse ou juste en fonction de la plage de périodes, et génère des sorties pour le moteur en conséquence.

Les sorties de la fonction MATLAB sont les trois broches qui contrôlent le moteur. Ces sorties vont directement aux blocs de sortie numérique Arduino.

Une fois que je me suis assuré que tout était parfait avec mon algorithme, j'ai pu le déployer sur le matériel afin qu'il puisse fonctionner de manière autonome, sans être connecté au PC et indépendant de Simulink.

Maintenant, je peux accorder ma guitare automatiquement !

Tous les fichiers nécessaires à ce projet sont disponibles ici :

https://www.mathworks.com/matlabcentral/fileexchange/63697-automatic-guitar-tuner-using-simulink-and-arduino

Schémas

Le circuit du bouton-poussoir est un simple interrupteur avec une résistance pull-down. Le circuit d'affichage à LED comprend 6 LED et une résistance de limitation de courant. J'ai utilisé la broche d'entrée analogique 'A0' sur l'Arduino pour lire le signal audio provenant de la guitare. L'Arduino Due lit des tensions comprises entre 0 V et 3,3 V. Le signal provenant de la guitare, cependant, est de très faible amplitude et oscille autour de 0 V, ce qui signifie qu'il contient des tensions négatives que l'Arduino ne peut pas lire. Pour résoudre ce problème, le circuit d'entrée doit amplifier le signal et ajouter un décalage CC. Le circuit doit également fournir un filtre passe-bas pour éliminer les composants haute fréquence du signal. Aucun signal échantillonné ne doit contenir des fréquences supérieures à la moitié de la fréquence d'échantillonnage. Étant donné que le tuner échantillonne l'audio à une fréquence de 5 kHz, mon circuit élimine les fréquences supérieures à 2,5 kHz. J'ai assemblé le circuit comme indiqué ci-dessous. J'ai contrôlé la pince de réglage motorisée à l'aide de trois broches de sortie numérique de l'Arduino connectées à une puce L293D H-bridge . Cette puce nous permet de faire tourner le moteur dans les deux sens ou d'arrêter le moteur en fonction des états de ces trois broches. L'une des broches est appelée broche d'activation et le moteur ne tournera que lorsque la broche d'activation est réglée sur haut. Les deux autres broches déterminent la direction du moteur. J'ai connecté le circuit comme indiqué ci-dessous.

Processus de fabrication

  1. Guitare électrique
  2. Sport
  3. Titane
  4. Biocéramique
  5. castagnettes
  6. Colle
  7. Filetage
  8. Acétylène
  9. Étain