Sortir une fréquence sous microcontroleur PIC
Répondre à la discussion
Affichage des résultats 1 à 15 sur 15

Sortir une fréquence sous microcontroleur PIC



  1. #1
    Alex38080

    Lightbulb Sortir une fréquence sous microcontroleur PIC


    ------

    Bonjour,

    J'essaye de programmer mon microcontroleur PIC pour qu'il me sorte un signal carré.
    En utilisant le rapport cyclique j'aimerais sortir différente Tension en fonction des valeurs de mes capteurs.
    ( Je fais une petite voiture qui doit suivre une ligne blanche)


    #define c1 PORTA.f3 // Capteur 1
    #define c2 PORTA.f4 // Capteur 2


    #define A1 PORTA.f1 // Sortie pour allimenter moteur 1
    #define A2 PORTA.f2 // Sortie pou allimenter 2

    void main()
    {

    if ( c1 == 0 && c2 == 1 ) // Si c1 = 0 et c2 = 1 alors je met une plus faible tension en sortie de portA.F2 et portA.F1 en sachant que si les capteurs sont tous les 2 à 0 (donc hors de la bande blanche) les moteurs tournent avec 5v
    {
    A1 = 3 ; A2 = 2; // porta.f1 sort 3 v et porta.f2 2 v
    }

    else if( c1 == 1 && c2 == 0 ) // Si c1 = 1 et c2 = 0 alors A1 = 2 et A2 = 3
    {
    A1 = 2 ; A2 = 3; // porta.f1 sort 2 v et porta.f2 sort 3 v
    }

    else if ( c1 == 0 && c2 == 0) // Si c1 = 0 et c2 = 0 alors A1 et A2 = 5v
    {
    A1 = 5; A2 = 5; // porta.f1 sort 5 v et porta.f2 5 v
    }

    else if ( c1 == 1 && c2 == 1) // Si c1 = 1 et c2 = 1 alors A1 et A2 = 1
    {
    A1 = 1; A2 = 1 ; // porta.f1 sort 1 v et porta.f2 1 v
    }
    }

    -----

  2. #2
    RISC

    Re : Sortir une fréquence sous microcontroleur PIC

    Salut,

    Tu n'as pas eu de réponse car personne ne sait quel PIC tu utilises parmi les 550 références

    De plus ton style de programmation est très étrange on dirait que cela ressemble à de l'automatisme ou autre chose de ce genre (portes logiques en mode combinatoire)...mais pas à un programme .

    Pour sortir un signal "carré" dans un PIC il faut utiliser un TIMER ou une unité CCP en mode Compare que tu programmes à une fréquence précise.

    Je te recommande de lire le cours de Bigonoff pour mieux comprendre ces périphériques si tu n'es pas familier avec.

    Je pense qu'en C tu devrais plutot utiliser une structure switch...case ...case...pour faire ce que tu veux.

    a+

  3. #3
    invite7a49d0d5

    Smile Re : Sortir une fréquence sous microcontroleur PIC

    bonsoir Alex38080

    et bienvenue sur les forums FUTURA ;O]

    sur certains pic, il y a même un module PWM...
    simplifiant ce genre d'opération...

    sinon pour génerer un signal carré modulé en
    largeur d'impulsion avec un pic, c'est trés simple....

    exemples en "pseudo-code":

    while (true)
    Porta.1=1
    Delay_ms(2)
    Porta.1=0
    Delay_ms(2)
    wend
    génére un signal 250hz, ratio 50/50

    while (true)
    Porta.1=1
    Delay_ms(1)
    Porta.1=0
    Delay_ms(3)
    wend
    génére un signal 250hz, ratio 25/75

    vede
    ;O]

  4. #4
    Alex38080

    Re : Sortir une fréquence sous microcontroleur PIC

    J'utilise un PIC16f873A .

    Merci vede mais je n'arrive pas à sortir mon signal avec la commande que tu m'as donné .

    J'ai mis un osciloscope en sortie du PORTA.1 et je n'ai aucun signal .

    Si tu connais la commande pour faire ça avec le PWM ... ???

    Merci

  5. A voir en vidéo sur Futura
  6. #5
    invitea5908686

    Re : Sortir une fréquence sous microcontroleur PIC

    hello,
    n'oublie pas d'initialiser les ports (PORTA et TRISA) avant tout !

  7. #6
    alainav1

    Re : Sortir une fréquence sous microcontroleur PIC

    bonjour,
    avec la mise a 0 et 1 avec des tempo intermédiaires le pic ne peux rien faire d'autre

    avec cette commande en basic de picsimulator on utilise les timer donc tu peux donc programmer une autre action en parallele

    PWMon 1, 1 (permet de choisitr la frequence )
    PWMduty 1, valeur (permet de choisir le ratio )
    (tu trouveras des exemples sur leur site )

    je ne connais pas le C mais il doit y avoir des équivalents ..
    cordialement
    Alain
    Décider de faire, c'est bien . Décider quand, c'est mieux !

  8. #7
    invitea5908686

    Re : Sortir une fréquence sous microcontroleur PIC

    à priori, le pic n'a besoin de faire rien d'autre...
    juste vérifier, entre deux génération de PWM, l'état de ces capteurs

  9. #8
    invite7a49d0d5

    Smile Re : Sortir une fréquence sous microcontroleur PIC

    bonsoir,

    quel compilateur C utilisez-vous?

    il intégre peut-etre une "librairie" facilitant
    l'utilisation du module pwm du pic....

    sinon c'est assez simple, cf datasheet...
    et un exemple en pseudo code (pour un 16f88)

    PR2 = 127 ' configuration PWM (timer2)
    T2CON = %00000100 ' configuration PWM (timer2)
    CCP1CON = %001100 ' start PWM
    ...
    CCP1CON.4 = x ' PWM...module en largeur l'impulsion...
    CCP1CON.5 = y ' PWM...module en largeur l'impulsion...
    CCPR1L = z ' PWM...module en largeur l'impulsion...


    vede
    ;O]

  10. #9
    invite7a49d0d5

    Re : Sortir une fréquence sous microcontroleur PIC

    ps

    les 3 premieres lignes initialisent le module pwm,
    avec notamment la configuration du timer2 qui
    va définir la frequence pwm...

    les 3 suivantes font une modulation en largeur d'impulsion,
    en renseignant les 10 bits adéquats...

  11. #10
    Alex38080

    Re : Sortir une fréquence sous microcontroleur PIC

    Merci pour toutes vos réponses .

    J'arrive à sortir mon signal mais je n'arrive pas à modifier mon Ratio en fonction de la valeur de mes capteurs ...

    Je vais essayer de me connecter avec mon pc dans peu de temps pour insérer mon code mais si quelqu'un à une idée ???

    Je veux que mon rapport cyclique varie en fonction des capteurs :
    En gros

    Si capteur = 1 et capteur 2 = 1
    alors Ratio de 1/2

    Si capteur = 1 et capteur 2 = 0
    alors Ratio de 1/3

    etc ...

  12. #11
    invitea5908686

    Re : Sortir une fréquence sous microcontroleur PIC

    Salut,
    tu peux nous faire un petit tableau Moteur 1, moteur 2 en fonction de tes 2 capteurs ?

  13. #12
    Alex38080

    Re : Sortir une fréquence sous microcontroleur PIC

    Alors voila mon programme qui est censé réagir en fonction de l'état de mon capteur qui se trouve sur la PORTA.f3.

    void compareVar (int pC3)
    {
    if (pC3 == 1)
    {
    TRISB.f1 = 0;
    PORTB.f1 = 1;
    Delay_us (10000) ;
    PORTB.f1 = 0;
    Delay_us (10000);
    PORTB.f4 = 1;

    }
    else
    {
    TRISB.f1 = 0;
    PORTB.f1 = 1;
    Delay_us (10000) ;
    PORTB.f1 = 0;
    Delay_us (10000);
    PORTB.f4 = 0;
    }
    }
    void compareVar2 (int pC4)
    {
    if (pC4 == 1)
    {
    TRISB.f2 = 0;
    PORTB.f2 = 1;
    Delay_us (10000) ;
    PORTB.f2 = 0;
    Delay_us (10000);
    PORTB.f5 = 1;
    }
    else
    {
    TRISB.f2 = 0;
    PORTB.f2 = 1;
    Delay_us (10000) ;
    PORTB.f2 = 0;
    Delay_us (10000);
    PORTB.f5 = 0;
    }

    }


    void main()
    {
    TRISA.f3 = 1;
    TRISB.f4 = 0;
    TRISB.f5 = 0;

    {
    char pC3;
    char pC4;


    pC3 = ("%d" , PORTA.f3);
    pC4 = ("%d" , PORTA.f3);


    while (1)
    {

    compareVar (pC3);

    compareVar2 (pC4);
    }
    }
    }

  14. #13
    Alex38080

    Re : Sortir une fréquence sous microcontroleur PIC

    Je vous éxplique maintenant se que devrait faire mes moteurs en fonctions de mes capteurs.

    -Au début les capteurs sont hors de la bande blanche :
    Les capteurs 1 et 2 situés de part et d'autre de ma voiture renvoient une valeure/ un état logique 0.
    Les 2 Moteurs tournent à leurs vitesse/puissance maximal.

    -Si le capteur de gauche = capteur 1 capte la bande donc renvoi un état logique 1 et capteur droit = 0 donc hors de la bande
    Le Moteurs de gauche ralenti fortement et le moteur droit ralenti légerement juqu'a que le capteur gauche ressorte de la bande.

    -Inversement si capteur droit = 1 et capteur gauche = 0

    -Les 2 capteurs sont sur la bande
    Normalement cas impossible.

    -Et dernierement ( mais je ne l'ai pas mis en place dans mon programme) un 3ème capteur qui lui est au milieu donc tout le temps sur la bande.
    Si le capteur 3 se trouve hors de la bande donc c3 = 0 les 2 moteurs s'arrêtent.
    Et oui sinon la voiture continuerait sa course à pleine vitesse vu que les capteurs ne retrouveront plus de bande blanche......

  15. #14
    Alex38080

    Re : Sortir une fréquence sous microcontroleur PIC

    Désolé j'ai oublié de vous expliquer un peu mon programme ( pour moi c'est logique c'est pour ça).

    Toujours sur mon µcontroleur PIC16f873A :

    - Mon capteur est sur la broche 3 du PORT A ( Pour l'instant je n'utilise qu'un seul capteur pour les tests)

    - Les variables pC3 et pC4 sont "censés" prendre la valeure 1 ou 0 en fonction du capteur.

    - Les broches 1 et 2 du PORT B sortent mon signal carré et son don relier à mes moteurs (PORT B bit 1 pour le moteur gauche et PORT B bit 2 pour le moteur de droite).

    - Les broches 4 et 5 du PORT B sont reliées dans ma simulation à 2 LED's comme ceci je peux voir si je rentre dans mon if ou dans mon else.

    Voilà je crois que je vous est à peu près tout dit ...

  16. #15
    Alex38080

    Smile Re : Sortir une fréquence sous microcontroleur PIC

    !!!!!!!!!!!!! EVENEMENT !!!!!!!!!!!!!

    Tous FONCTIONNE à merveille

    Merci à tous ceux qui m'ont aidé à sortir une frequence avec mon PIC !!!

    Mais j'ai tout de même encore un piti problème , et oui ça aurait été trop facile sans ça ...

    J'aimerais mettre une fonction trigger à la sortie de mes capteurs pour qu'il n'y est pas de changement d'état permanent alors que mes capteurs devraient renvoyer le même état ...

    Petite explication si j'ai mal éxpliqué ( et je pense que c'est le cas) :

    - Je suis toujours sur la bande avec mon capteur de gauche mais mon µcontroleur décide que la valeure renvoyé par le capteur est trop faible pour considérer qu'il est à l'état 1 ...

    Merci d'avance ....

Discussions similaires

  1. Microcontroleur Fréquence de fonctionnement
    Par invite1109a825 dans le forum Électronique
    Réponses: 33
    Dernier message: 11/12/2008, 23h32
  2. Question de fréquence de microcontrôleur
    Par invite1109a825 dans le forum Électronique
    Réponses: 0
    Dernier message: 10/12/2008, 17h06
  3. Fréquence max d'un microcontrôleur
    Par invite649429e5 dans le forum Électronique
    Réponses: 20
    Dernier message: 15/06/2008, 17h45
  4. Comment sortir une cuve fuel d'un sous-sol ??
    Par invite740ffd61 dans le forum Environnement, développement durable et écologie
    Réponses: 1
    Dernier message: 03/06/2008, 11h46
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...