Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

pic16f877, commande moteur



  1. #1
    tibo7

    pic16f877, commande moteur


    ------

    Bonjour,

    Je vous explique mon problème:
    Je veux faire tourner un moteur sur une sortie MLI du 16F877, pour cela j'ai un potar de 5kohms relié à une entrée analogique. Mon potar au +5v et à la masse.
    Tous fonctionne bien MAIS je voudrais que quant mon potar est au milieu mon moteur ne tourne pas (signal MLI à 0) car en ce moment il est à 50%(tout à fait normal !) et que plus je monte mon potar plus le signal MLI augmente (marche avant du moteur).

    Voici pour l'instant le code que j'obtiens:

    Code:
    #include <16F877.h>
    #fuses HS,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOCPD,NOWRT
    #use delay(clock=6000000)
    
    #byte porta   = 0x05
    #byte portb   = 0x06
    #byte portc   = 0x07
    #byte portd   = 0x08
    #byte porte   = 0x09
    #byte PR2     = 0x92
    #byte CCPR1L  = 0x15
    #byte CCPR2L  = 0x1B
    #byte CCP1CON = 0x17
    #byte T2CON   = 0x12
    #byte TRISA = 0x85
    #byte TRISC = 0x87
    #byte TRISB = 0x86
    #byte TRISD = 0x88
    #byte TRISE = 0x89
    
    unsigned int8 mesure=0x00;
    
    // declaration des fonctions //
    void init(void);
    unsigned char conversion(unsigned char voie);
    
    /*******************************************************************/
    void init(void)
    {
    TRISA=0xF1;     //broches RA1 RA2 RA3 en sortie
    TRISB=0x00;     //broches toutes en sortie
    TRISC=0b11111011;//broche RC2 en sortie
    PORTA=0b011100;    // initialisation des ports d'entrées et sorties //
    PORTB=0x00;
    PORTC=0x00;
    PR2= 0xFF;  //frequence de la MLI : 250Hz
    T2CON=0x07; //validation timer 2 pour MLI
    CCP1CON=0x3F;//validation mode MLI
    }
    
    void main(void)
    { init();
       delay_ms(500);
      setup_adc_ports(0x8E);  //configuration des entrées analogiques
      setup_adc(ADC_CLOCK_DIV_8);//choix de l'horloge du CAN
    
    while(1)  //le programme se répète perpétuellement
      {  set_adc_channel(0); //choix entrée AN0 pour le CAN
         delay_us(10);       //délai 10microsecondes obligatoire
         mesure=read_adc();  //lecture résultat conversion
         CCPR1L=mesure;      //envoi de la valeur donnée par le CAN
                             //directement sur la sortie MLI
      }
    }

    Merci pour vos réponses

    -----

  2. 📣 Nouveau projet éditorial de Futura
    🔥🧠 Le Mag Futura est lancé, découvrez notre 1er magazine papier

    Une belle revue de plus de 200 pages et 4 dossiers scientifiques pour tout comprendre à la science qui fera le futur. Nous avons besoin de vous 🙏 pour nous aider à le lancer...

    👉 Je découvre le projet

    Quatre questions à explorer en 2022 :
    → Quels mystères nous cache encore la Lune 🌙 ?
    → Pourra-t-on bientôt tout guérir grâce aux gènes 👩‍⚕️?
    → Comment nourrir le monde sans le détruire 🌍 ?
    → L’intelligence artificielle peut-elle devenir vraiment intelligente 🤖 ?
  3. #2
    mister_e

    Re : pic16f877, commande moteur

    If Mesure>ValeurMiCourse then Mesure=0
    CCPR1L=Mesure
    Steve

Discussions similaires

  1. commande du moteur a cc
    Par hassan.matica dans le forum Électronique
    Réponses: 1
    Dernier message: 24/10/2007, 20h52
  2. commande de moteur
    Par ad_ri_hien dans le forum Électronique
    Réponses: 2
    Dernier message: 12/07/2007, 11h19
  3. Commande de moteur cc
    Par jeanpe dans le forum Électronique
    Réponses: 1
    Dernier message: 03/03/2007, 07h11
  4. commande de moteur
    Par goolgotte dans le forum Électronique
    Réponses: 9
    Dernier message: 11/02/2007, 12h23
  5. Commande moteur ?
    Par crash_over dans le forum Électronique
    Réponses: 7
    Dernier message: 01/04/2006, 16h24
Découvrez nos comparatifs produits sur l'informatique et les technologies.