IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Mesure de temps et interruption externe sur Arduino


Sujet :

Arduino

  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Mesure de temps et interruption externe sur Arduino
    Bonjour tout le monde je suis un élève de terminal S science de l’ingénieur et je doit réaliser un projet:
    Mon projet et un accordeur automatique de guitare.
    Mon montage et composée de :
    -Un micro avec un filtre
    -Un système de détection de passage a zéro (optocoupleur si je dit pas de bêtise)
    -Un moteur et les pièce nécessaire a son adaptation a la guitare
    -Une carte Arduino

    Je sollicite votre aide car je doit faire un programme qui fasse tourné le moteur en fonction de la fréquence obtenue en entré par l'optocoupleur
    Je suis débutant en arduino mais possède déjà un petit pac avec quelque élément et une carte arduino
    Je veut apprendre à calculer la fréquence avec Arduino et avoir vos proposition de programme qui permettrai le bon fonctionnement de mon projet
    Mon prof ma conseillé de d'apprendre a gérer une interruption externe et faire une mesure de temps (soustraction de deux registres liés aux timer).

    Toute information serais la bienvenue

    Je vous remercie d'avance

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    bonsoir,

    Citation Envoyé par paulo3
    -Un système de détection de passage a zéro (optocoupleur si je dit pas de bêtise)
    La référence du composant t'aidera à trouver ce que c'est exactement. Tu peux nous la donner ?

    Citation Envoyé par paulo3
    e veut apprendre à calculer la fréquence avec Arduino et avoir vos proposition de programme qui permettrai le bon fonctionnement de mon projet
    montre nous ce que tu as fait

    Citation Envoyé par paulo3
    Mon prof ma conseillé de d'apprendre a gérer une interruption externe
    Cette fonction répond, en partie à ton problème.

  3. #3
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Auteur Voir le message
    La référence du composant t'aidera à trouver ce que c'est exactement. Tu peux nous la donner ?
    L'optocoupleur n'est pas acheté tous fait ma camarade doit l'assemblé

    Citation Envoyé par Auteur Voir le message
    montre nous ce que tu as fait
    Je sais que ce n'est pas fantastique mais je suis débutant :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    int frequence = 82;  //la frequence de la corde de mi (accordé) est de 82hz
     
     
    void setup() {
     
      pinMode(4,OUTPUT); //je declare que j'ai un moteur sur la pin 4
      pinMode(2, INPUT); //je declare que j'ai un micro sur la pin 2 en entrée 
    }
     
     
    void loop() {
     
      int corde = digitalRead(pushButton); // je ne sais pas comment gerer mon signal je le stocke dans la variable corde 
      //ici je ne sais pas quoi mettre 
     
       if (corde<82):
      while (corde<82):
         digitalWrite(pinMoteur,HIGH); //le moteur se lance 
     
     
     
    }

  4. #4
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Citation Envoyé par paulo3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pinMode(4,OUTPUT); //je declare que j'ai un moteur sur la pin 4
    pinMode(2, INPUT); //je declare que j'ai un micro sur la pin 2 en entrée
    plusieurs points sur ces deux lignes :
    -1- en aucun cas tu ne peux piloter un moteur directement avec un arduino. Ton moteur ne marchera pas et pire, tu peux faire cramer ton Arduino.
    Un exemple de shield motor : https://www.arduino.cc/en/Main/ArduinoMotorShieldR3
    -2- ton micro est directement branché son ton Arduino ?

    Citation Envoyé par paulo3
    L'optocoupleur n'est pas acheté tous fait ma camarade doit l'assemblé
    certes, mais le composant principal a une référence c'est écrit dessus.

  5. #5
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Citation Envoyé par paulo3 Voir le message
    Mon prof ma conseillé de d'apprendre a gérer une interruption externe et faire une mesure de temps (soustraction de deux registres liés aux timer).
    Salut,
    En plus des remarques de Auteur je t'invite à regarder ce qu'est une entrée de capture "input capture" sur ton micro (voir à la rubrique Timer). Ce genre d'entrée peut déclencher une interruption lorsqu'elle voit un front montant ou descendant.

    En gros l'idée est que des que tu détectes un front, tu déclenches une interruption. Dans ce programme d'interruption tu lances un timer afin qu'il compte le temps qui passe. Des que tu détectes un nouveau front tu lis le timer qui cela dit en passant ne s'est pas arrêté car une fois lancé il compte indéfiniment (en faite tu vas soustraire la valeur lu dans le timer avec la valeur de ce dernier mais lorsque tu l'avais lancé le coup d'avant) et tu connais le temps entre deux fronts identiques.

    Autrement dit, le temps entre deux fronts images de deux passages par zéro, s'appelle une période. Et 1/période = Fréquence.

    Toutefois ! Je suis très surpris que ton prof t'emmène dans cette direction et surtout avec Arduino.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 267
    Points : 4 829
    Points
    4 829
    Par défaut
    Bonsoir à tous

    En plus des commentaires pertinents des deux collègues sur la méthode de mesure, j'ajouterai:

    Un opto n'est pas nécessaire si l'alimentation est commune entre le système du microphone et de l'Arduino.

    Avez-vous déjà mesuré le signal issu du microphone (voir déjà amplifié) avec un oscillo? Car le son c'est pas juste une onde fondamentale, mais une superposition de beaucoup d'harmonique. Il est fort possible qu'il y aie plus que 2 passage par 0 par période. N'étant pas un fan de musique et de son traitement, je ne connais pas la forme d'onde d'une guitare.

    L'idéal c'est clairement une mesure par FFT, mais pas sûr que cela soit possible avec le petit 8bits. Une recherche des points max (tension max et min) devrait déjà mieux aller, mais pour cela il faut amplifier le signal du microphone pour qu'il soit adapté à l'entrée analogique de l'Arduino

    Bonne nuit

    Delias

Discussions similaires

  1. Mesurer le temps CPU sur une machine multicoeurs
    Par Aleph69 dans le forum Langage
    Réponses: 9
    Dernier message: 02/08/2010, 21h46
  2. Mesure de temps passé sur un site
    Par anchain dans le forum Langage
    Réponses: 5
    Dernier message: 02/01/2008, 15h04
  3. Réponses: 0
    Dernier message: 05/12/2007, 19h21
  4. Mesurer le temps des instructions
    Par luckylucke dans le forum Assembleur
    Réponses: 9
    Dernier message: 03/09/2003, 21h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo