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

boussole électronique



  1. #1
    nanard

    boussole électronique


    ------

    bonjour

    Je souhaite réaliser un boussole électronique avec le module CMPSO3. J'utilise pour le développement la plaque EASYPICS 3 (http://www.lextronic.fr/mikro/PP2.htm) et pour écrire et compiler mon programme mikroC (version de démo téléchargeable http://www.mikroe.com/en/compilers/mikroc/pic/)
    le microcontroleur est le pic18f252, j'utilise le module en I2C, j'ai créé le programme je le compil, ok, je le charge dans le pic, ok, mais je n'ai rien en retour.
    voilà le programme:

    unsigned char cap_hex;

    void main (void)
    {
    //TRISC = 0;
    TRISC.F2 = 0;
    TRISC.F1 = 0;
    PORTC.F2 = 1;
    PORTC.F1 = 0;
    Lcd_Init(&PORTB); //initialisation du port B pour l'afficheur LCD
    Lcd_Out(1,1,"Cap:"); //ecrire cap sur le LCD ligne 1 colone 1
    I2C_Init(10000); //initialisation du protocole I2C
    while (1)
    {
    I2C_Start(); //début de l'I2C
    I2C_Wr(0xc0); //envoi de l'adresse de la boussole
    I2C_Wr(1); //on dit que l'on veut lire le registre 1
    I2C_Start();
    I2C_Wr(0xc1); //envoi de la commande de lecture
    cap_hex=I2C_Rd(0); //lecture avec un ACK
    I2C_Stop(); //arret du protocole I2C
    if (cap_hex > 127)
    {
    Lcd_Out(1,5,"1000");
    }
    else
    {
    Lcd_OUT(1,5,"56");
    }
    }
    }

    Est ce quelqu'un voit une erreur, un problème?
    merci @+

    -----

  2. Publicité
  3. 📣 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 🤖 ?
  4. #2
    nanard

    Re : boussole électronique

    personne ne peut m'aider? mon programme vous semble t il bon?
    merci @+

  5. #3
    nanard

    Re : boussole électronique

    bonjour

    J'ai toujours mon problème et j'ai remarqué que lorsque j'alimante mon module cmpso3 il émet un son comme une sorte de vibration est ce normal?
    merci @+

  6. #4
    freepicbasic

    Re : boussole électronique

    Apparement peu de gens connaissent ce circuit...

    Si l'on regarde leur doc;
    http://www.robot-electronics.co.uk/files/cmps03_lcd03.c
    Il y a des temps d'attente assez long au debut deja , ce que ne fait pas ton prog.
    Ensuite entre chaque mesure.

    Après il faut déterminer ce qui fonctionne ou pas ,
    le LCD fonctionne t il ?
    La lecture avec ack est elle bloquante?
    A+, pat

  7. A voir en vidéo sur Futura
  8. #5
    nanard

    Re : boussole électronique

    désolé de répondre que maintenant ms avec les fêtes!

    Oui la partie LCD fonctionne très bien, là où je me pose des questions c'est sur la partie I²C je ne sais pas si elle fonctionne. Je ne sais pas si l'ack est bloquante car j'utilise les librairies internes et dans la notice il nous donnes que la manière de les utiliser et pas comment cela fonctionne.
    J'ai toujours ce bruit est ce normal?
    j'ai mis des pauses comme on le voit sur le prog du lien de freepicbasic mais sa ne fonctionne pas.

    unsigned char cap_hex;

    void main (void)
    {
    TRISC.F2 = 0;
    TRISC.F1 = 0;
    PORTC.F2 = 1;
    PORTC.F1 = 0;
    Lcd_Init(&PORTB); //initialisation du port B pour l'afficheur LCD
    Lcd_Out(1,1,"Cap:"); //ecrire cap sur le LCD ligne 1 colone 1
    I2C_Init(100000); //initialisation du protocole I2C
    while (1)
    {
    I2C_Start(); //début de l'I2C
    Delay_ms(1000); //pause de 100 ms
    I2C_Wr(0xc0); //envoi de l'adresse de la boussole
    Delay_ms(1000); //pause de 100 ms
    I2C_Wr(1); //on dit que l'on veut lire le registre 1
    Delay_ms(1000); //pause de 100 ms
    I2C_Start();
    Delay_ms(1000); //pause de 100 ms
    I2C_Wr(0xc1); //envoi de la commande de lecture
    Delay_ms(1000); //pause de 100 ms
    cap_hex=I2C_Rd(0); //lecture avec un ACK
    Delay_ms(1000); //pause de 100 ms
    I2C_Stop(); //arret du protocole I2C
    if (cap_hex > 127)
    {
    Lcd_Out(1,5,"1000");
    }
    else
    {
    Lcd_OUT(1,5,"56");
    }
    }
    }
    @+

  9. #6
    freepicbasic

    Re : boussole électronique

    tu devrais profiter du LCD comme il fonctionne pour mettre des lignes de debug afin de déterminer ou ça bloque
    Lcd_Out(1,5,"I2CSTART");
    '
    '

    Lcd_Out(1,5,"I2CWR");

    etc...


    Si tes procedures son buggués tu peut utiliser le fichier I2CM.asm de mon compilateur , il est dans le zip
    A+, pat

  10. Publicité
  11. #7
    nanard

    Re : boussole électronique

    j'ai mis des ligne de débug et j'ai vu que sa bloque à l'envoi de l'adresse. Pour l bruit j'ai demandé à une personne qui connais le module et il m'a dit que se n'ai pas normal je vais donc en commander un autre.
    Je vous tiens au courant.
    @+

Discussions similaires

  1. boussole affolée
    Par catuf dans le forum Physique
    Réponses: 1
    Dernier message: 05/06/2007, 20h32
  2. boussole electronique
    Par thierryriri dans le forum Électronique
    Réponses: 3
    Dernier message: 13/04/2007, 08h22
  3. Réponses: 31
    Dernier message: 13/07/2006, 09h00
  4. Boussole!!!!
    Par NGC 1232 dans le forum Physique
    Réponses: 5
    Dernier message: 25/11/2005, 11h14
  5. Boussole electronique
    Par manscan2002 dans le forum Électronique
    Réponses: 2
    Dernier message: 16/05/2003, 17h07
Découvrez nos comparatifs produits sur l'informatique et les technologies.