Soft d'un détecteur de métaux
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Soft d'un détecteur de métaux



  1. #1
    invite0aa85d65

    Soft d'un détecteur de métaux


    ------

    Bonjour tout le monde,

    Voilà je vous expose mon souci: J'ai trouvé sur la toile un programme d'un µC qui permet de détecter la variation d'une bobine en fonction des champs induits lorsqu'on approche un métal près de l'inductance et allume une LED. Ce n'est ni plus ni moins qu'un détecteur de métaux low cost...

    Seulement voilà, le PIC utilisé est un 12F683 et moi j'aimerai adapter le programme à un PIC16F877.

    Après avoir mis les bons fichiers en-têtes (*.h), adapté le noms de mes variables (qui se trouvent dans les banques), subsistent quelques erreurs...

    Voici le programme:

    Code:
    /*
     *******************************************************************************
     * picoDetector : an ultra simple and cheap metal detector
     *******************************************************************************
     *
     * Author : Othman MESLOUH, January 2011
     *
     * source code for mikroC PRO compiler V1.65
     * feel free to use this code at your own risks
     *
     * target : PIC12, oscillator in HS mode, watchdog enabled
     *
     * PIC PIN Assignemnt :
     *
     * GP0 : detect LED indicator
     * GP1 : calibrate LED indicator
     * GP2 : NC
     * GP3 : NC
     * GP4, GP5 : inductor
     *
     *******************************************************************************
     */
    
    #define MAXTRY 15       // number of watchdog restart to calibrate loop counter
    
    #include <pic.h>
    #include <stdio.h>
    #include "OUTILS.H"
    
    
    unsigned char   ctr ;           // number of loops between two watchdog resets
    unsigned char   previous ;      // previous value of ctr
    unsigned char   calibr ;        // calibration value when oscillator runs free
    unsigned char   restarts ;      // number of watchdog restarts
    unsigned char   en ;            // enable flag, allows detection
    
    /*
     * main loop
     */
    void    main()
            {
            unsigned char   i ;
            
    
            /*
             * configure PORTA (ex GPIO) as digital port
             */
    
            //CMCON0 = 7 ;
            //ANSEL = 0 ;
            //TRISIO = 0 ;
            //GPIO = 0 ;
    
    		TXREG = 7 ;
    		ADCON1 = 0 ;
    		TRISA = 0 ;
    		PORTA = 0 ;
    
            /*
             * power up ?
             */
            if(STATUS.NOT_TO)
                    {
                    /*
                     * yes, init variables
                     */
                    restarts = 0 ;
                    calibr = 1 ;
                    }
    
            /*
             * watchdog reset counter
             */
            if(restarts < 255) restarts++ ;
    
            /*
             * if counter differs too much from calibration value
             */
            if((previous ^ ctr) > calibr)
                    {
                    /*
                     * turn detect LED on
                     */
                    PORTA.F0 = en ;
    				//GPIO.F0 = en ;
                    
                    /*
                     * if not on power up
                     */
                    if(STATUS.NOT_TO == 0)
                            {
                            /*
                             * while in calibration mode
                             */
                            if(restarts < MAXTRY)
                                    {
                                    /*
                                     * shift calibration value
                                     * and wait a little bit
                                     */
                                    calibr <<= 1 ;
                                    Delay_ms(5) ;
                                    }
                            }
                    else
                            {
                            /*
                             * turn detect LED off
                             */
                            PORTA.F0 = 0 ;
    						//GPIO.F0 = 0 ;
                            }
                    }
    
            /*
             * save last counter
             */
            previous = ctr ;
    
            /*
             * is calibration over ?
             */
            if(restarts > MAXTRY)
                    {
                    /*
                     * yes, turn calibrate LED off
                     * and set enable flag
                     */
    				PORTA.F1 = 0 ;
                    //GPIO.F1 = 0 ;
                    en = 1 ;
                    }
            else
                    {
                    /*
                     * no, turn calibrate LED on
                     * and clear enable flag
                     */
    				PORTA.F1 = 1 ;
                    //GPIO.F1 = 1 ;
                    en = 0 ;
                    }
    
            /*
             * set watchdog prescaler
             */
            OPTION_REG = 0b11111001 ;
            
            /*
             * start counter, to be interrupted by watchdog
             */
            ctr = 0 ;
            for(;;)
                   {
                   ctr++ ;
                   }
            }
    Et voici les erreurs que j'obtiens après le Build:

    Code:
    Clean: Deleting intermediary and output files.
    Clean: Deleted file "I:\Projet - Détecteur de métaux\Suite\Others\076-PICODETECTOR-project\picodetect\picoDetector.cce".
    Clean: Done.
    Executing: "d:\automatique\Picc\BIN\PICC.EXE" -C -E"picoDetector.cce" "picoDetector.c" -O"picoDetector.obj" -I"D:\Automatique\Picc\include" -Q -MPLAB -16F877 -Zg9 -O
    Error[000] I:\Projet - Détecteur de métaux\Suite\Others\076-PICODETECTOR-project\picodetect\picoDetector.c 62 : struct/union required
    Error[000] I:\Projet - Détecteur de métaux\Suite\Others\076-PICODETECTOR-project\picodetect\picoDetector.c 62 : logical type required
    Error[000] I:\Projet - Détecteur de métaux\Suite\Others\076-PICODETECTOR-project\picodetect\picoDetector.c 84 : struct/union required
    Error[000] I:\Projet - Détecteur de métaux\Suite\Others\076-PICODETECTOR-project\picodetect\picoDetector.c 84 : illegal conversion
    Error[000] I:\Projet - Détecteur de métaux\Suite\Others\076-PICODETECTOR-project\picodetect\picoDetector.c 90 : struct/union required
    Error[000] I:\Projet - Détecteur de métaux\Suite\Others\076-PICODETECTOR-project\picodetect\picoDetector.c 90 : illegal use of void expression
    Warning[000] I:\Projet - Détecteur de métaux\Suite\Others\076-PICODETECTOR-project\picodetect\picoDetector.c 102 : function declared implicit int
    Error[000] I:\Projet - Détecteur de métaux\Suite\Others\076-PICODETECTOR-project\picodetect\picoDetector.c 110 : struct/union required
    Error[000] I:\Projet - Détecteur de métaux\Suite\Others\076-PICODETECTOR-project\picodetect\picoDetector.c 110 : illegal conversion
    Error[000] I:\Projet - Détecteur de métaux\Suite\Others\076-PICODETECTOR-project\picodetect\picoDetector.c 129 : struct/union required
    Error[000] I:\Projet - Détecteur de métaux\Suite\Others\076-PICODETECTOR-project\picodetect\picoDetector.c 129 : illegal conversion
    Error[000] I:\Projet - Détecteur de métaux\Suite\Others\076-PICODETECTOR-project\picodetect\picoDetector.c 139 : struct/union required
    Error[000] I:\Projet - Détecteur de métaux\Suite\Others\076-PICODETECTOR-project\picodetect\picoDetector.c 139 : illegal conversion
    Error[000] I:\Projet - Détecteur de métaux\Suite\Others\076-PICODETECTOR-project\picodetect\picoDetector.c 147 : undefined identifier: OPTION_REG
    Warning[000] I:\Projet - Détecteur de métaux\Suite\Others\076-PICODETECTOR-project\picodetect\picoDetector.c 157 : unused variable definition: i (from line 42)
    Halting build on first failure as requested.
    BUILD FAILED: Thu Jan 06 15:53:41 2011
    Pourriez-vous m'aider?

    Merci d'avance.

    -----

  2. #2
    JPL
    Responsable des forums

    Re : Soft d'un détecteur de métaux

    J'ai déplacé dans le forum Électronique puisque cela dépend clairement de l'architecture du micro-contrôleur. Je rappelle toutefois que la législation sur l'emploi de détecteurs de métaux en archéologie est très sévère.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  3. #3
    invite03481543

    Re : Soft d'un détecteur de métaux

    Egalement il serait plus fair-play de citer la source originale de l'idée de ce programme en l'occurence....

    http://www.micro-examples.com/public...odetector.html

    Par exemple: d'après une idée originale de ....

    Merci pour lui.

  4. #4
    f6bes

    Re : Soft d'un détecteur de métaux

    Citation Envoyé par HULK28 Voir le message
    Egalement il serait plus fair-play de citer la source originale de l'idée de ce programme en l'occurence....

    http://www.micro-examples.com/public...odetector.html

    Par exemple: d'après une idée originale de ....

    Merci pour lui.
    Bjr à toi et j'en profite pour te souhaiter la bonne année pour 2011 et...2012 !
    "...plus souvent sur un échiquier..." et tu gagnes ??
    Cordialement

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

    Re : Soft d'un détecteur de métaux

    Citation Envoyé par psychopathetique0 Voir le message
    Bonjour tout le monde,

    Voilà je vous expose mon souci: J'ai trouvé sur la toile un programme d'un µC qui permet de détecter la variation d'une bobine en fonction des champs induits lorsqu'on approche un métal près de l'inductance et allume une LED. Ce n'est ni plus ni moins qu'un détecteur de métaux low cost...


    Pourriez-vous m'aider?

    .
    Bsr à toi,
    Vu le souci que nous vaut la lecture de tes descriptions commence d'ABORD par faire "fonctionner" qq chose de simple.
    Ton microcontroleur tu t'en occuperas lorsque le HARD fonctionnera !

    Rien ne sert de courir , il faut etc..etc..
    Bonne soirée

  7. #6
    invite03481543

    Re : Soft d'un détecteur de métaux

    Et puis c'est insuffisant pour vous répondre car vous faites appel visiblement à des variables de type structure ou union qui ne sont pas déclarées dans ce que vous nous montrez ici.

    C'est ce que vous répond en tout cas votre compilateur...

  8. #7
    invite03481543

    Re : Soft d'un détecteur de métaux

    Citation Envoyé par f6bes Voir le message
    Bjr à toi et j'en profite pour te souhaiter la bonne année pour 2011 et...2012 !
    "...plus souvent sur un échiquier..." et tu gagnes ??
    Cordialement
    Bonne année à toi aussi.

    Oui ça m'arrive, mais je compte récupérer mon ELO (classement) de 2000 environ d'autrefois et je dois travailler pas mal après un arrêt prolongé de quelques années....
    Les échecs c'est mon autre passion.

Discussions similaires

  1. Besoins d'aide pour une modification d'un detecteur de metaux ACE 250.
    Par invite4aa8396f dans le forum Électronique
    Réponses: 9
    Dernier message: 24/09/2010, 11h41
  2. detecteur de metaux
    Par invite2251441c dans le forum Électronique
    Réponses: 1
    Dernier message: 01/03/2010, 19h07
  3. Détecteur de métaux
    Par invite087146b6 dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 03/03/2009, 16h58
  4. interface d'un détecteur des métaux
    Par invite6cdc1de9 dans le forum Électronique
    Réponses: 1
    Dernier message: 22/05/2007, 13h32
  5. detecteur de metaux
    Par inviteb9b37cdd dans le forum Physique
    Réponses: 3
    Dernier message: 14/12/2004, 20h19
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...