Signal carré 30kHz Arduino
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Signal carré 30kHz Arduino



  1. #1
    sani300

    Signal carré 30kHz Arduino


    ------

    Bonjour,

    Je voulais realiser un signal carré d'amplitude 5V et de frequence 30kHz avec ma carte arduino mais je n'ai jamais reussi a le faire.
    J'avais calculé que la periode devait etre de 33.3us et de demi periode 16,6s

    J'ai donc fait un programme comme ça :

    int valeur = 0;

    void setup()
    {
    pinMode(9, OUTPUT);
    }

    void loop()
    {
    do
    {
    valeur = 255;
    digitalWrite(9,HIGH);
    delay(16000);
    valeur = 0;
    digitalWrite(9,LOW);
    delay(16000);
    }while(160);
    }



    Mais je n'arrive pas a trouver la bonne valeur du delay pour avoir la bonne frequence quelqu'un a une idée?

    Sani300

    -----

  2. #2
    schizophrene

    Re : Signal carré 30kHz Arduino

    Salut,

    Le mieux (et je sais que tu y est inscrit) est de poster directement sur le forum Arduino!

    Mais pour te dire, la grosse erreur que je vois:

    delay() utilise des millisecondes, donc; delay(16000) = 16 secondes!
    Il te faudrait utiliser delayMicroseconds().

    Ensuite, tu ne prends pas en compte le temps que les changements de valeur de 'valeur' prennent, ni le temps que prennent les digitalWrite(), donc tu n'auras pas 30kHz pile de cette façon (sauf en tâtonnant, mais c'est pas pro du tout (tu re-tâtonnerait bêtement si tu voulais du 25kHz demain...).

    Tu peux peut-être utilisé la fonction tone(), mais je ne sais pas si l'on peut monter jusqu'à 30kHz.
    Dernière modification par schizophrene ; 06/10/2011 à 17h28.

  3. #3
    charlesgg

    Re : Signal carré 30kHz Arduino

    Bonjour,
    la fonction delay() d'Arduino n'est pas précise, tu n'auras jamais un 30khz stable avec.
    Regarde plutôt du côté du timer 1 en mode CTC : registres TCCR1A, TCCR1B, ICR. Avec ca tu peux caler une fréquence super stable.

    Exemple pour 50Hz pour une puce a 8Mhz (utile pour les servomoteur) :
    TCCR1A = _BV(COM1B1) | _BV(WGM11);
    TCCR1B = _BV(WGM12) | _BV(WGM13) | _BV(CS11);
    ICR1 = 40000;
    OCR1B = 20000;

Discussions similaires

  1. Transformer un signal triangulaire en signal carré
    Par invite0374bd4b dans le forum Électronique
    Réponses: 5
    Dernier message: 20/01/2011, 18h06
  2. Générer un signal triangle à partir d'un signal carré : problème
    Par invite4450428a dans le forum Électronique
    Réponses: 8
    Dernier message: 03/01/2010, 23h59
  3. transformer un signal carré en signal continue
    Par invite2377531f dans le forum Électronique
    Réponses: 11
    Dernier message: 19/05/2008, 09h30
  4. Transformer un signal continu en signal carré
    Par invite4941ea49 dans le forum Électronique
    Réponses: 12
    Dernier message: 14/05/2007, 17h52
  5. Signal continue vers signal sinusoidale carré
    Par invite0cebd2e1 dans le forum Électronique
    Réponses: 9
    Dernier message: 11/05/2006, 17h01
Découvrez nos comparatifs produits sur l'informatique et les technologies.