commander un moteur à distance
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

commander un moteur à distance



  1. #1
    invitefa15af9f

    commander un moteur à distance


    ------

    Bonjour à tous
    je désire commander un moteur à l'aide d'une télécommande en variant juste potentiomètre, ce dernier est lié à un pic 16F887 .
    la même chose pour la réception, il y a aussi un pic 16F887.
    le problème c'est que toujours le rapport cyclique est fixe!! indépendant du potentiomètre !!
    pourriez vous m'aider??
    merci d'avance
    Code:
    //TX
    // Manchester module connections
    //sbit MANRXPIN at RC0_bit;
    //sbit MANRXPIN_Direction at TRISC0_bit;
    sbit MANTXPIN at RC0_bit;
    sbit MANTXPIN_Direction at TRISC0_bit;
    // End Manchester module connections
    
    
    void main() {
                        int val; int i;
    ansel=0x04;
    anselh=0;
    TRISA=0XFF;
      ANSEL  = 0;                      // Configure AN pins as digital I/O
      ANSELH = 0;
      C1ON_bit = 0;                    // Disable comparators
      C2ON_bit = 0;
      TRISC.F2 = 0;
      TRISC.F3 = 0;
      PORTC.F2 = 0;
      PORTC.F3 = 0;
      Man_Send_Init();                 // Initialize transmitter
    
      while (1) {    
    val=ADC_Read(2);
    val=(int)((val*5)/1023);
    if(val==0)           i= 0;
    if(val==1)           i= 1;
    if(val==2)           i=2;
    if(val==3)           i=3;
    if(val==4)          i=4;
    /*if (60<val && val<80)   UART1_Write(4+48);
    if (80<val && val <100) UART1_Write(5+48);*/
    switch(i)
    {
    case 0:Man_Send(0x30);break;
    case 1:Man_Send(0x31);break;
    case 2:Man_Send(0x32);break;
    case 3:Man_Send(0x33);break;
    case 4:Man_Send(0x34);break;
    }
      }
    }
    Code:
    //RX
    // Manchester module connections Start
    sbit MANRXPIN at RC0_bit;
    sbit MANRXPIN_Direction at TRISC0_bit;
    sbit MANTXPIN at RC1_bit;
    sbit MANTXPIN_Direction at TRISC1_bit;
    unsigned char error = 0, ErrorCount = 0, temp = 0;
    void main() {
     int val;
      TRISC.F2 = 0;           // Set as output used for Start bit found indicator
      TRISC.F3 = 0;           // Set as output used for Update UART indicator
      PORTC.F5 = 0;
      TRISC.F5 = 0;
    
      UART1_Init(19200);
    
      Man_Receive_Init();     // Initialize Receiver
    
    
    do{                       // Rx Routine forever loop
     
    
    GET_BYTE:
             temp = Man_Receive(&error);    // Attempt byte receive
    
             if (error) goto GET_BYTE;    // if comm's error goto error handler
             goto START_BYTE;               // if good byte Received goto start handler
    
    
    
    START_BYTE:
    
      switch (temp) {
      case 0x30:{ val=100; break; }
      case 0x31:{ val=200; break; }
     case 0x32: { val=400; break; }
      case 0x33: { val=600; break; }
       case 0x34: { val=255; break; }
    
       }
               pwm1_set_duty(val);
               delay_ms(100);
    
    
    RE_SYNC:
    
    //         UART1_Write_Text("Synchronizing\n\r");   // Display Activity on 2nd Row
             delay_ms(50);
             temp = Man_Synchro();            // Try to synchronize again
             //Man_Receive_Init();            // Alternative, try to Initialize Receiver again
             ErrorCount = 0;                  // Reset error counter
             if (temp == 0xFF) goto RE_SYNC;  // Sync failed try again
             goto GET_BYTE;                   // Sync complete start over again
    
    
    
       }while(1);
    }

    -----
    Images attachées Images attachées  

  2. #2
    invitefaaca50b

    Re : commander un moteur à distance

    Deja, arrives tu a lire ton potar correctement (lecture du CAN)???

  3. #3
    invitefa15af9f

    Re : commander un moteur à distance

    Merci pour votre réponse
    oui
    j'ai utilisé l'instruction: ADC_Read(2); // Read analog value from channel 2

  4. #4
    invitefaaca50b

    Re : commander un moteur à distance

    je te demande pas si tu as utilisé une instruction, mais deja si tu as bien une lecture de ton potar (a verifier en envoyant la valeur de l'ADC sur un port de sortie pour debuguer le truc). Si tu ne teste pas la chaine etage par etage, tu n'avanceras pas. Tu utilise la partie ADC, tu envoie la valeur lue vers le port B, si ca bouge, c'est bon, si ca bouge pas c'est ton adc qui deconne.
    Ton potar est bien relié a l'entree analogique 2? as tu bien configuré ton port analogique?de ce que je voie, tu as pas configuré tes ports AN... ou du moins, ya une grosse erreur ...

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

    Re : commander un moteur à distance

    merci ,
    si j'utilise l'instruction suivante ça va me donner une indication??
    PORTC.F2 =val;
    puis je relie ce port avec un oscilloscope

  7. #6
    invitefaaca50b

    Re : commander un moteur à distance

    tu mets 8 leds sur le port C pour voir comment reagit ton port.
    Mais d'avance ca ne marcher a pas, et je te laisse comprendre ton erreur dans le programme, elle creve les yeux.
    A vouloir utiliser des programmes tout fait sans les maitriser, pas etonnant...
    Tu t'as baché sur ta config ADC, et le probleme vient de la.

  8. #7
    invitefa15af9f

    Re : commander un moteur à distance

    Re
    oui il marche trè s bien, je l'ai testé sur le port D, il donne de 0 jusqu'à 5 en binaire ( état des diode: 00000000,00000001,00000010,000 00011,00000100,00000101)

  9. #8
    invitefaaca50b

    Re : commander un moteur à distance

    Faut que tu m'explique comment tu peux avoir un ADC qui fonctionne avec Ansel = 0 (toutes les AN en mode digital)... Car là, tu fais fort...
    Ou alors, tu utilises un autre programme de test...

Discussions similaires

  1. Commander un moteur
    Par invitee5dce0ca dans le forum Technologies
    Réponses: 9
    Dernier message: 19/10/2010, 19h17
  2. commander un circuit simple a distance
    Par invitef22c7fa3 dans le forum Électronique
    Réponses: 4
    Dernier message: 07/05/2009, 19h22
  3. commander 2 moteur a distance
    Par invite34296421 dans le forum Électronique
    Réponses: 7
    Dernier message: 27/01/2009, 08h34
  4. Commander à distance un relais
    Par invite5eb1106b dans le forum Électronique
    Réponses: 4
    Dernier message: 26/12/2007, 17h45
  5. Commander un moteur
    Par invite49b2c8a9 dans le forum Électronique
    Réponses: 2
    Dernier message: 17/12/2007, 12h04
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...