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 :

Signal analogique carré 0-24V


Sujet :

Arduino

  1. #21
    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
    De mon côté j'ai eu utilisé des optocoupleurs de type SFH-617A et SFH-618. Tu peux faire des essais, ils ne coûtent pas trop chers.

    Pour ce qui est du pont diviseur, une fois branché sur l'arduino, il faudra réajuster la résistance car l'entrée du µC a une certaine impédance. Lorsque je faisais ce montage, je réglais mon potentiomètre de telle sorte qu'il soit en butée et le curseur (donc la sortie) à la masse. Puis je tournais lentement le curseur pour faire monter la tension de sortie jusqu'à généralement 4,7~4,9V soit en visualisant avec un oscillo ou avec un voltmètre.


    Ensuite, pour la lecture des entrées numériques tu peux utiliser la fonction attachInterrupt qui te permettra d'optimiser les lectures des signaux et de définir de quelle manière le signal reçu sera traité. Lis bien la doc, les interruptions ne sont disponibles que sur certaines entrées.

  2. #22
    Membre du Club
    Homme Profil pro
    Avide d'apprentissage
    Inscrit en
    Avril 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Avide d'apprentissage
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 80
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Un simple pont diviseur de tension en entrée de ton opto coupleur ne serait pas suffisant ?
    A --+
        |
        R1
        |
        +-- C
        |
        R2
        |
    B --+-- B'
    En prenant par exemple 8k pour R1 et 2k pour R2, si tu as 24V entre A et B, tu auras un peu moins de 5 V entre B' et C.
    J'ai voulu diviser la tension avec ces valeurs de résistance mais en sortie de R2 j'ai 1.2V lorsque je branche l'opto en sortie de R2.

    Par contre le diviseur marche bien à vide, l'opto crée une chute de tension, je vais devoir jouer sur les valeurs de R1 et R2 pour avoir environ 5V en entrée de l'opto et un courant de 1A max.

    Ce n'est pas évident de tatoner comme ça sachant que je ne connais pas vraiment la valeur de la résistance de l'opto.

  3. #23
    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 akuma8 Voir le message
    J'ai voulu diviser la tension avec ces valeurs de résistance mais en sortie de R2 j'ai 1.2V lorsque je branche l'opto en sortie de R2.

    Par contre le diviseur marche bien à vide, l'opto crée une chute de tension, je vais devoir jouer sur les valeurs de R1 et R2 pour avoir environ 5V en entrée de l'opto et un courant de 1A max.
    tu ne pourras pas avoir plus de 1,2V si tu branches ton opto sur R2 ! L'opto est constitué d'une LED en entrée, elle fixe la tension (et c'est normal) à ~1,2V. Tu auras toujours 1,2V aux bornes de R2 quelles que soient les valeurs du couple R1 et R2. Par contre, le courant qui la traverse va effectivement dépendre de R1 et R2. Mais à la limite R2 ne sert à rien ici, le courant qui la traversera sera quasi nul.

    Utilise donc seulement R1 et supprime R2. R1 limitera le courant de l'opto. 1A dans une diode c'est trop important, ton opto va chauffer et griller
    R = (24 - 1,2) / I
    si tu fixe I à 5mA, R vaut 4560 ohms.

    Arrondis R à 4,7kohms ça fait un courant de 4,8mA.

  4. #24
    Membre du Club
    Homme Profil pro
    Avide d'apprentissage
    Inscrit en
    Avril 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Avide d'apprentissage
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 80
    Points : 41
    Points
    41
    Par défaut
    Effectivement, j'ai à peu près des valeurs correctes.

    En fait je pensais qu'il fallait alimenter l'opto en 6V pour qu'il fonctionne correctement mais avec 6V j'avais un courant de plus de 1A.

    J'ai inclus en PJ une image de la simulation :

    - Vert : tension d'entrée 24V
    - Rouge : ma tension de sortie 5V
    - Bleu foncé : Tension entré opto ~1.2V
    - Bleu ciel : courant entrée opto

    Il ne me reste plus qu'à acheter les composants et faire le câblage. En espérant ne pas avoir trop de décalage par rapport à la simulation.

    Merci
    Images attachées Images attachées  

  5. #25
    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
    Pour moi, c'est un avis personnel, le transistor Q1 est en trop. Je préfère gérer l'inversion du signal dans le code du micro-contrôleur.
    if (input==LOW) au lieu de if (input==HIGH).

  6. #26
    Membre du Club
    Homme Profil pro
    Avide d'apprentissage
    Inscrit en
    Avril 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Avide d'apprentissage
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 80
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par Auteur Voir le message
    Pour moi, c'est un avis personnel, le transistor Q1 est en trop. Je préfère gérer l'inversion du signal dans le code du micro-contrôleur.
    if (input==LOW) au lieu de if (input==HIGH).
    Lorsque j'enlève Q1, la logique inverse n'est pas immédiate, je m'explique :

    Il y a un régime transitoire qui ne dure pas très longtemps certes mais j'ai peur que cela ait une incidence sur l'acquisition des données du capteur.

    En gardant Q1 la sortie est vraiment propre (je ne sais pas d'ailleurs pourquoi).

    J'essaierai les 2 cas, j'ai déjà commandé le matériel, je verrai bien ce que ça me donne, je vais également commandé un oscilloscope afin de bien vérifier mes

    signaux dans les 2 cas.

    Je vous remercie en tout cas.

  7. #27
    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
    Le régime transitoire est du quel côté de l'optocoupleur ? En entrée (côté LED avec 24V) ou en sortie (côté 5V) ?

    Je pense que ce régime a lieu en entrée côté 24V et est répercuté en sortie. C'est sans doute un phénomène de rebond. En ajoutant un condo tu peux le supprimer.
    Par contre, attention tu ajoutes un temps de monté du signal. T=RC si mes souvenirs sont bons.

    Donc il faut bien choisir la combinaison R.C. Dans l'exemple j'ai pris 1µF pour le condo, mais tu peux sans doute prendre plus petit (essaye 100nF, 10nF).

  8. #28
    Membre du Club
    Homme Profil pro
    Avide d'apprentissage
    Inscrit en
    Avril 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Avide d'apprentissage
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 80
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par Auteur Voir le message
    Le régime transitoire est du quel côté de l'optocoupleur ? En entrée (côté LED avec 24V) ou en sortie (côté 5V) ?

    Je pense que ce régime a lieu en entrée côté 24V et est répercuté en sortie. C'est sans doute un phénomène de rebond. En ajoutant un condo tu peux le supprimer.
    Par contre, attention tu ajoutes un temps de monté du signal. T=RC si mes souvenirs sont bons.

    Donc il faut bien choisir la combinaison R.C. Dans l'exemple j'ai pris 1µF pour le condo, mais tu peux sans doute prendre plus petit (essaye 100nF, 10nF).
    Bonjour,

    J'ai essayé avec ce condo mais pas d'effet sur la sortie.

    Le résultat est le même.

    Je vais essayer de programmer avec les 2 cas : - avec le transistor et sans le transistor.

    Pour l'instant je n'ai pas encore câblé mon capteur dans la mesure où il a 3 fils, il faut que je trouve lequel me donne vraiment l'info dont j'ai besoin, i-e 24V.

    Je reviens une fois que j'aurai résolu ce problème de câblage.

    Merci

  9. #29
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    Le transitoire en simulation n'est pas forcément représentatif de la réalité.

    Quand tu avait fait le test sans Q1, tu avais conservé R3 et l'alim quand même ?
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  10. #30
    Membre du Club
    Homme Profil pro
    Avide d'apprentissage
    Inscrit en
    Avril 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Avide d'apprentissage
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 80
    Points : 41
    Points
    41
    Par défaut
    Je me doute qu'il y aura un léger écart entre la simu et la réalité malheureusement.

    Oui j'avais conservé R3 pour les tests sans Q1. Je mettrai une capture de la simu sans Q1 demain pour que vous ayez un aperçu.

  11. #31
    Membre du Club
    Homme Profil pro
    Avide d'apprentissage
    Inscrit en
    Avril 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Avide d'apprentissage
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 80
    Points : 41
    Points
    41
    Par défaut
    Voici la forme du signal sans Q1.

    Il faut bien zoomer pour voir le régime transitoire d'où la 2e capture.

    Vu qu'en simu j'ai cette forme, j'ai peur qu'elle dure beaucoup plus longtemps en pratique.

    Merci
    Images attachées Images attachées   

  12. #32
    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
    Ce régime transitoire dure au pire 220µs ! Et ton signal est très propre. Je m'attendais à pire : plusieurs millisecondes de latence et un signal minable avant d'atteindre les 5V.
    Tu ne pourras pas faire mieux. L'Arduino ne le verra même pas.

    Attends d'avoir les composants et fais un test pratique.

  13. #33
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    Ce transitoire, tu ne peux pas l'éviter, le front n'est jamais bien droit.
    Et encore, là, tu es en simulation, donc dans la théorie, dans le réel tu pourra l'avoir encore plus marqué. Normalement, tu dois avoir le même phénomène sur le front descendant.
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  14. #34
    Membre du Club
    Homme Profil pro
    Avide d'apprentissage
    Inscrit en
    Avril 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Avide d'apprentissage
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 80
    Points : 41
    Points
    41
    Par défaut
    Bonjour,
    Je reviens donc suite à une petite pause le temps de recevoir le matériel.
    J'ai fait mon petit montage avec le SFH610 et voilà ce que ça donne (PJ).
    Finalement mon capteur renvoie du 30V environ mais le principe ne change pas (juste que j'ai grillé une résistance au passage ^^).

    Maintenant j'ai une question concernant ma programmation pour prendre en compte ce signal.
    Je voulais savoir si je dois utiliser une interruption pour traiter le signal du capteur ou non ?
    Pour info la fréquence max du signal est de 1.04Hz, dans la mesure où celle du uC est de 16MHz je me dis qu'une interruption n'est pas nécessaire.
    Dans mon projet, j'aurai 6 capteurs de ce type à gérer sachant que les pins d'interruption ne sont que 5 dans la carte que j'utilise (Arduino Mega 2560). Je suis donc très limité.
    Je vous remercie pour vos éclaircissements .

    Cdt
    Images attachées Images attachées  

  15. #35
    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 akuma8 Voir le message
    Finalement mon capteur renvoie du 30V environ mais le principe ne change pas (juste que j'ai grillé une résistance au passage ^^).
    C'est le métier qui rentre Tant que ce n'est qu'une résistance
    Je vois en passant que le signal de la voie 2 est très joli malgré le bruit qui se produit sur l'état bas de la voie 1.

    Citation Envoyé par akuma8 Voir le message
    Maintenant j'ai une question concernant ma programmation pour prendre en compte ce signal.
    Je voulais savoir si je dois utiliser une interruption pour traiter le signal du capteur ou non ?
    Pour info la fréquence max du signal est de 1.04Hz, dans la mesure où celle du uC est de 16MHz je me dis qu'une interruption n'est pas nécessaire.
    Dans mon projet, j'aurai 6 capteurs de ce type à gérer sachant que les pins d'interruption ne sont que 5 dans la carte que j'utilise (Arduino Mega 2560). Je suis donc très limité.

    Comme tu n'as pas assez d'interruptions et que ton signal est "lent", tu peux sans doute faire autrement. Voici un exemple de code (il y aura des ajustements à réaliser) :
    Code C : 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    const int MAX_INPUT = 6;
    const int inputs[6] = {1,2,3,4,5,6}; // pins utilisés pour les 6 voies
    boolean flags[6];
     
    int i;
     
    void setup()
    {
        // initialisation
        for (i=0; i<MAX_INPUT; i++)
        {
            pinMode(inputs[i], INPUT);
            flags[i] = false;
        }
        i = 0;
    }
     
    void loop()
    {
      // lecture de l'état de la voie i
      // état bas (LOW) voie i correspond à +30V sur l'entrée
      // état haut (HIGH) voie i correspond à +0V sur l'entrée
     
      if (digitalRead(inputs[i]) == LOW && !flags[i]) 
      {
        // traitement      
        //......
     
        // fin traitement, le flag passe à 1
        // (pour éviter qu'au prochain tour on refasse la même analyse)
        flags[i] = true;
      }
     
      // la voie i est repassé à l'état haut, le flag
      // est réinitialisé
      if (digitalRead(inputs[i]) == HIGH && flags[i]) 
      {
        flags[i] = false;
      }
     
     
      // incrément de i pour analyse voie suivante
      // (attention il faut MAX_INPUT tours pour analyser à nouveau la voie n !)
      i++;
      if (i >= MAX_INPUT)
        i = 0;  // toutes les voies ont été traitées, on recommence à 0
     
    }

    Mais dis toi que tu peux avoir un peu de retard dans le traitement de l'information (le temps d'analyse des 6 voies). Il faut donc prendre en compte ce critère. Le traitement de l'information doit être le plus court possible.

  16. #36
    Membre du Club
    Homme Profil pro
    Avide d'apprentissage
    Inscrit en
    Avril 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Avide d'apprentissage
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 80
    Points : 41
    Points
    41
    Par défaut
    Bonsoir,

    Citation Envoyé par Auteur Voir le message
    C'est le métier qui rentre
    C'est surement ça, mais ça fait bizarre de sentir une odeur de cramer sans savoir d'où ça vient et qu'à un moment on se rend compte qu'une résistance noircit toute seule dans son coin, que l'effet joule commence à l'emporter ^^ !

    Citation Envoyé par Auteur Voir le message
    Je vois en passant que le signal de la voie 2 est très joli malgré le bruit qui se produit sur l'état bas de la voie 1.
    Je m'attendais à avoir quelque chose de totalement bruité mais finalement il est très propre.

    Citation Envoyé par Auteur Voir le message
    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
     
    //[...]
    void loop()
    {
      // lecture de l'état de la voie i
      // état bas (LOW) voie i correspond à +30V sur l'entrée
      // état haut (HIGH) voie i correspond à +0V sur l'entrée
     
      if (digitalRead(inputs[i]) == LOW && !flags[i]) 
      {
        // traitement      
        //......
     
        // fin traitement, le flag passe à 1
        // (pour éviter qu'au prochain tour on refasse la même analyse)
        flags[i] = true;
      }
    //[...]
     }
    Mais dis toi que tu peux avoir un peu de retard dans le traitement de l'information (le temps d'analyse des 6 voies). Il faut donc prendre en compte ce critère. Le traitement de l'information doit être le plus court possible.
    C'est justement cette partie traitement qui m'embête un peu.
    J'aimerai juste incrémenter une variable qui compte le nombre de front descendant, quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      if (digitalRead(inputs[i]) == LOW && !flags[i]) 
      {
        capteur+=1;
        flags[i] = true;
      }
    Mais le soucis avec ce bout de code c'est que tant que la condition est vraie capteur ne cesse de s'incrémenter alors que je voudrai qu'il ne s'incrémente qu'une fois et non durant toute la durée de l'état bas.
    Mon capteur génère 12 impulsions en un tour et ce sont ces 12 impulsions que j'aimerai récupérer.
    Je tourne un peu en rond pour l'instant ...

    Merci en tout cas

  17. #37
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    Citation Envoyé par akuma8 Voir le message
    C'est surement ça, mais ça fait bizarre de sentir une odeur de cramer sans savoir d'où ça vient et qu'à un moment on se rend compte qu'une résistance noircit toute seule dans son coin, que l'effet joule commence à l'emporter ^^ !
    Oh ça c'est rien encore.

    Un électronicien n'est pas un vrai électronicien tant qu'il n'a pas fait péter un condo chimique (attention les yeux)

    si ça t'arrive, ne t'affole as si tu continu à trouver des bout de papier, des semaines, voire des mois après

    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  18. #38
    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 akuma8 Voir le message
    Mais le soucis avec ce bout de code c'est que tant que la condition est vraie capteur ne cesse de s'incrémenter alors que je voudrai qu'il ne s'incrémente qu'une fois et non durant toute la durée de l'état bas.
    tu n'as pas bien examiné le code que j'ai posté La variable flags répond à ton problème.
    Ta variable capteur sera incrémentée lorsque les 6 voies passeront à l'état bas. Si tu veux l'incrémenter pour une voie en particulier, par exemple la voie 1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (digitalRead(inputs[i]) == LOW && !flags[i]) 
    {
        if (i==1)
            capteur+=1;
     
        flags[i] = true;
    }
    Une remarque en passant : les index des tableaux débutent à 0.


    Citation Envoyé par sevyc64
    Un électronicien n'est pas un vrai électronicien tant qu'il n'a pas fait péter un condo chimique (attention les yeux)
    et les oreilles. Je te conseille plutôt de voir une vidéo de ce genre d'expérience, c'est moins dangereux

  19. #39
    Membre du Club
    Homme Profil pro
    Avide d'apprentissage
    Inscrit en
    Avril 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Avide d'apprentissage
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 80
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par Auteur Voir le message
    tu n'as pas bien examiné le code que j'ai posté La variable flags répond à ton problème.
    Ta variable capteur sera incrémentée lorsque les 6 voies passeront à l'état bas. Si tu veux l'incrémenter pour une voie en particulier, par exemple la voie 1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (digitalRead(inputs[i]) == LOW && !flags[i]) 
    {
        if (i==1)
            capteur+=1;
     
        flags[i] = true;
    }
    Effectivement ça a l'air de fonctionner, en espérant ne pas avoir trop de décalage pour 6 capteurs. Sinon j'ai cru comprendre qu'on pouvait reconfigurer d'autres pins digitales de la carte arduino afin d'en faire des pins d'interruption.
    Je m'y plongerai sur le sujet si je vois que j'ai trop de décalage. Sachant que les interruptions ne résoudront pas forcément ce décalage dans la mesure où à une interruption est associé une priorité donc quel capteur sera prioritaire à un autre... ça je ne sais pas encore surtout que le but est de synchroniser mes moteurs.

    Merci tout de même pour cet accompagnement très utile pour mon premier projet sous Arduino .

    Je ne mets pas résolu encore puisque je reviendrai sans doute .

    encore merci

  20. #40
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Citation Envoyé par sevyc64 Voir le message
    Un électronicien n'est pas un vrai électronicien tant qu'il n'a pas fait péter un condo chimique (attention les yeux)
    Tu peux aussi vérifier avec le doigt la température en charge du transistor de régulation d'une alimentation de puissance.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

Discussions similaires

  1. generer un signal 40khz carre
    Par iceheart31 dans le forum Débuter
    Réponses: 10
    Dernier message: 25/09/2012, 09h19
  2. Réponses: 0
    Dernier message: 12/09/2011, 10h08
  3. Génération d'un signal analogique NI6211
    Par NI6211User dans le forum LabVIEW
    Réponses: 0
    Dernier message: 07/07/2011, 12h23
  4. [NI6008] Sortie signal analogique
    Par papa0101 dans le forum LabVIEW
    Réponses: 0
    Dernier message: 09/12/2008, 11h00

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