[Programmation] Programmation d'un pic16f88 pour faire tourner un moteur a courant continu avec une vitesse variable
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Programmation d'un pic16f88 pour faire tourner un moteur a courant continu avec une vitesse variable



  1. #1
    invite765690c0

    Thumbs up Programmation d'un pic16f88 pour faire tourner un moteur a courant continu avec une vitesse variable


    ------

    Bonjour, Je suis en BTS Électroniques et communications en 2ème année.
    J'ai un projet à faire à la fin pour mon BTS.
    J'ai un PIC16F88 à programmer pour faire tourner un moteur à courant continu avec une vitesse variable.
    On ma fournis ce programme à compléter ci-dessous:


    Code:
    /* ------------------------------------------------------------
       Commande de la CARTE MOTEURS Z et LASER
    
       Commande du Laser
    
       - Horloge interne 8 Mhz active
       - Master Reset interne actif
    
       version 2.2 du 29/08/2014
     ---------------------------------------------------------------------- */
    
    // Déclaration des variables
    //---------------------------------------
    char ENTREES;           // Tampon Lecture des Entrées XA, XB, YA et YB
    
    // Déclaration d'équivalence des entrées et des sorties
    //---------------------------------------
    
    #define L_On_OFF    PORTA.F6   // Commande On / Off du Laser
    #define L_Auto_Man  PORTA.F7   // Commande Automatique / Manuelle du Laser
    
    
    // Déclaration d'équivalence des constantes
    //---------------------------------------
    #define ARRET  0b000000    // Code Laser - ARRET Total
    #define COUPE  0b010000    // Code Laser - Actif et Laser Eteint
    #define ACTIF  0b110001    // Code Laser - Actif avec émission lumière
    
    #define HORIZON1 0b001111  // Code plateau horizontal - ARRET freiné VDD
    #define HORIZON2 0b000000  // Code plateau horizontal - ARRET freiné Masse
    
    
    // S/P Initialisation
    //----------------------------------------
     void init()
     {
      OPTION_REG = 0b11111111;  // Pull-Up inactives
      IOCA  = 0b000000;         // Config IRQ inactives
      
      ANSEL = 0;                // Conversion CAN inactive
      CMCON0 = 0b00000111;      // Comparateur analogique inactif,
                                // toutes entrées numériques
      TRISA = 0b001000;         // PORT A = 5 entrées  + MCLR
      TRISB = 0b111111;         // PORT B = 8 entrées
      
      PORTA = 0b000001;         // Arrêt total - pas de Laser - TEST LED VISUE
      delay_ms(2000);           //  Temporisation de 2s
      PORTA = 0;                // Extinction de la LED
      delay_ms(500);            //  Temporisation de 0,5s
     }
    
    
    
    // S/P Lecture des entrées
    //----------------------------------------
     void lecture()
     {
      ENTREES = PORTB;               // lecture des entrées physiques
      ENTREES = ENTREES & 0b001111;  // Masquage des entrées inactives
     }
    
    // S/P Freinage du plateau
    //----------------------------------------
     void RIEN()
     {
      PORTA = ARRET;       // Arrêt total de la diode Laser
      //delay_ms(1);       // Temporisation facultative
     }
    
    
    // S/P Montée du plateau
    //----------------------------------------
     void COUPER()
     {
      PORTA = COUPE;       // Diode active et Laser éteint
      //delay_ms(2000);    // Temporisation facultative de 2s
     }
    
    
    // S/P Descente du plateau
    //----------------------------------------
     void EMISSION()
     {
      PORTA = ACTIF;       // Diode active et Laser actif
      //delay_ms(1);       // Temporisation facultative
     }
    
    
    // S/P Détection Horizon
    //----------------------------------------
     void TEST()
     {
      lecture();                                       // Lecture des entrées
      if (ENTREES == HORIZON1 || ENTREES == HORIZON2)  // Plateau " Correct ? "
               {
                EMISSION();                            // Emission Laser
               }
      else  COUPER();                     // Diode active et Laser éteint
     }
    
    //----------------------------------------
    //----------------------------------------
    // Programme  Principal  - version 2.2 du 29/08/2014
    //-----------------------------------------
    //----------------------------------------
    
    void main()
    {
     OSCCON = 0b01111000;             // Horloge interne 8 MHz
     init();                          // Initialisation
     while(1)                         // Boucle infinie
      {
        if (L_On_OFF == 1)             // Laser " Arrêt ? "
               {
                RIEN();                // Arrêt Total
               }
        else if( L_Auto_Man == 1 ) // Laser " Manuel ? "
                    {
                     EMISSION();       // Emission Laser
                    }
        else TEST();               // Emission si plateau correct
      }
    }                                  // C'est fini !

    Je veut pas que vous me donniez les réponses ! juste m'aider à comprendre comment m'y prendre car je suis un débutant.
    Merci pour votre réponse !

    -----
    Dernière modification par Antoane ; 10/05/2019 à 10h13. Motif: Ajout balises code

  2. #2
    antek

    Re : Programmation d'un pic16f88 pour faire tourner un moteur a courant continu avec une vitesse var

    Quand on est débutant il faut commencer par le début.
    On ne peut pas en quelques lignes expliquer le langage utilisé et le fonctionnement du µC.
    Quelles informations vous apporte le cours ?

  3. #3
    webscience

    Re : Programmation d'un pic16f88 pour faire tourner un moteur a courant continu avec une vitesse var

    Bonjour,

    Je peux t'aider, mais pas dans ce langage, car je pratique l'assembleur, et je trouve cette exercice relativement facile pour un futur diplômé en BTS d'électronique.

    T'aider veut pas dire que je vais faire ton travaille.

    La première chose à savoir, comment est branché ton Pic pour actionner ton moteur DC, de plus, il faut le voltage du moteur DC et la puissance, ce qui
    implique un schéma

    Utilise t'il un quartz ou un oscillateur interne pour la variation de vitesse.

    Il faut partir sur un PWM variable de 0% à 99%

    Pour agir sur la vitesse on pourrais envisager un potentiomètre relier au convertisseur analogique régler sur 255 pas, de même pour le PWM le régler sur 255

    Ce qui implique un choix de fréquence bien défini, pour éviter des calculs.

    A+

  4. #4
    invite765690c0

    Re : Programmation d'un pic16f88 pour faire tourner un moteur a courant continu avec une vitesse var

    Bonjour, Merci d'avoir répondu.
    Oui j'ai bien un oscillateur interne mais pas de quartz. Comment est branché dans quel sens du terme ? Oui j'ai mon schéma structurel de mon moteur et ma commande lazer.

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

    Re : Programmation d'un pic16f88 pour faire tourner un moteur a courant continu avec une vitesse var

    Justement on nous a fait aucun cours dessus en globalité et approfondie. Que 4h dans une année quoi on nous dit de compléter le programme c'est tout ce qui nous demandent. On apprend le C de base nous même mais ça prend du temps.

  7. #6
    Jack
    Modérateur

    Re : Programmation d'un pic16f88 pour faire tourner un moteur a courant continu avec une vitesse var

    En même temps, ça fait 4 à 5 mois que vous bossez dessus je suppose. Ca laisse le temps de se renseigner sur vos lacunes.

    Vous ne précisez pas non plus le rôle du moteur dans ce qui semble être un système de découpe laser. Je suppose qu'on a dû vous donner un cahier des charges un peu plus précis que ce que vous nous présentez.
    Bref, ça manque d'infos.

  8. #7
    webscience

    Re : Programmation d'un pic16f88 pour faire tourner un moteur a courant continu avec une vitesse var

    Normalement arrivé au niveau BTS de 2ème année, veut dire que tu assimiles vite, si ça fait 5 mois que tu es dessus comme le dit Jack tu aurais pu faire l'effort de te renseigner.

    Comme dit plus haut, je pratique pas le langage de programmation C, j'en suis allergique, mais comme je vais de l'assembleur je comprends ce qui est écrit.

    Si ton professeur et passé directement par le langage C, c'est une bêtise, il faut commencer par l'assembleur, mais ne pas y rester, et évolué sur le C
    qui est pratiqué dans la plupart des entreprises.

    En lisant ton énoncé, J'ai vu avec du retard, qu'il utilise l'oscillateur inerme du PIc16F88, réglé sur 8Mhz

    Si on veut un PWM non audible, il faut aller vers une fréquence de 20Khz, avec une horloge de 8Mhz tu vas avoir un réglage de 0 à 100.

    Avant d'aller plus loin :

    As tu téléchargé la datasheet ?

    As tu un Pic16F88 ?

    As tu un PicKit3 pour programmer ton Pic

    Comment travaille tu, avec quelle logiciel ?

    A+
    Dernière modification par webscience ; 10/05/2019 à 22h17.

Discussions similaires

  1. Réponses: 15
    Dernier message: 06/02/2017, 10h06
  2. variateur de vitesse pour moteur à courant continu 36V
    Par invite8480fe97 dans le forum Électronique
    Réponses: 1
    Dernier message: 10/12/2013, 10h50
  3. Pont en H pour faire le hachage d'un moteur a courant continu
    Par invite3083fb04 dans le forum TPE / TIPE et autres travaux
    Réponses: 3
    Dernier message: 08/02/2013, 00h57
  4. asservisement de vitesse avec PID,PIC et moteur a courant continu
    Par invite817b2e6f dans le forum Électronique
    Réponses: 9
    Dernier message: 25/04/2012, 15h40
  5. Variateur de Vitesse pour moteur à courant continu
    Par inviteef8ff3bb dans le forum Électronique
    Réponses: 7
    Dernier message: 21/03/2010, 20h21
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...