Acquisition de capteur sur CAN µc et transfert par liaison série vers raspberry pi
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Acquisition de capteur sur CAN µc et transfert par liaison série vers raspberry pi



  1. #1
    wizzgi

    Acquisition de capteur sur CAN µc et transfert par liaison série vers raspberry pi


    ------

    Bonjour,
    Je traite actuellement un projet en DUT GEII où je dois acquérir des données analogiques de capteurs qui seront convertis en valeur numérique par le CAN du microcontrôleur. Ces données doivent ensuite être envoyé par liaison série RS232 au raspberry pi qui doit les stocker.
    J'avais penser à faire envoyé des demande d’acquisition au microcontrôleur par le raspberry en continue pour tracer une matrice. Et que le programme du microcontrôleur fonctionne en interruption. Je vous met le programme ci-dessous et vous donnez plus de détails si besoin.
    Je travail avec le compilateur MP8 et avec un pic16F886.
    Code:
    #include <xc.h>
    
    void interrupt   Reception  (void);
    void init_IO(void);
    void init_uart(void);
    void choix ();
    int tempe (void);
    int humi (void);
    
    
    void main(void)
    {	
    		init_IO();
    		init_uart();
            RCIE = 1;               // Enable interrupt on RC 
            INTEDG = 0;             // falling edge trigger the interrupt
            INTE = 1;               // enable the external interrupt
            GIE = 1;                // Global interrupt enable
    	while(1)
    	{
    	
    	}
    }
    
    void interrupt   Reception  (void)        // interrupt function 
     
    {
            if(RCIF==1 && RCIE==1) 
        {                                     // if timer flag is set & interrupt enabled
    
    				short int c=0;
    				while (RCIF==0);
    				c=RCREG;
    				if(c=='T'){
    				TXREG=(tempe()&0b11110000)>>8;
    				while(TRMT==0);
    				TXREG=(tempe()&0b00001111);
    				while(TRMT==0);
    				}
    				if(c=='H'){
    				TXREG=humi();
    				while(TRMT==0);
    		}
            }
     
    }
    
    int humi (){
    ADCON0=0b01001011;
    ADCON1=0;
    GO=1;
    while(ADIF==0);
    short int humidite=0;
    humidite=ADRESH;
    return(humidite);
    }
    
    int tempe (){
    ADCON0=0b01000111;
    ADCON1=0b10000000;
    GO=1;
    while(ADIF==0);
    short int temperature=0;
    temperature=ADRESH;
    temperature=temperature<<8;
    temperature=temperature+ADRESL;
    return(temperature);
    }
    
    void choix (){
    short int c=0;
    while (RCIF==0);
    c=RCREG;
    if(c=='T'){
    TXREG=tempe();
    while(TRMT==0);
    }
    if(c=='H'){
    TXREG=humi();
    while(TRMT==0);
    }
    }
    
    
    void init_uart(void)
    {
    	SPBRG = 25;
    	TXSTA=0b00100101;
    	RCSTA=0b10010000;
    	BAUDCTL	= 0x00;
    }
    
    void init_IO(void)
    {
    	TRISB=0xFF;
    	PORTB=0;
    
    	TRISA=0xFF;
    	PORTA=0;
    
    	OPTION_REG=0x85;
    	ANSELH=1;//les entrées sont analogiques
    }

    -----
    Dernière modification par Jack ; 22/03/2017 à 21h55. Motif: Ajout balises code

  2. #2
    antek

    Re : Acquisition de capteur sur CAN µc et transfert par liaison série vers raspberry pi

    Citation Envoyé par wizzgi Voir le message
    Je travail avec le compilateur MP8 et avec un pic16F886.
    C'est quoi ce MP8 ?
    Tu envoies au µC une demande de conversion pour chaque mesure ?
    Le programme fonctionne ?
    Utilise les balises code (#) :
    Code:
    void interrupt Reception (void) // interrupt function
    
    {
    if(RCIF==1 && RCIE==1)
    { // if timer flag is set & interrupt enabled
    
    short int c=0;
    while (RCIF==0);
    c=RCREG;
    if(c=='T'){

  3. #3
    Jack
    Modérateur

    Re : Acquisition de capteur sur CAN µc et transfert par liaison série vers raspberry pi

    J'ai ajouté les balises code pour cette fois. Merci de penser à le faire par la suite.

    Quelle est la question au fait?

    J'avais penser à faire envoyé des demande d’acquisition au microcontrôleur par le raspberry en continue
    En principe, n'importe quel DAC possède un mode de conversion continue à un rythme défini. Du coup, il suffirait alors au PIC d'envoyer à chaque conversion le valeur mesurée.

  4. #4
    wizzgi

    Smile Re : Acquisition de capteur sur CAN µc et transfert par liaison série vers raspberry pi

    Excusez-moi je voulais mettre directement le fichier .c mais je n'y arrivais pas et je n'étais pas au courant pour les balises de code.

    En ce qui concerne le compilateur, c'est XC8, je m'étais trompé.

    Je veux envoyer des mesures de température et d'humidité. J'avais choisi de faire l'acquisition et l'envoi des données des deux capteurs chacun leurs tours, et de demander l'acquisition avec une boucle dans le raspberry (envoie de 'T' et de 'H') puis de faire des tableaux pour faire un graphique(mais c'est pour plus tard). Je voulais savoir si une interruption telle que je l'ai faite (je ne suis pas du tout sûr que cela marche) peut fonctionner.

    Merci d'avance

  5. A voir en vidéo sur Futura

Discussions similaires

  1. [Outils/Fab/Comp] Raspberry-pi arrosage automatique : capteur d'humidité
    Par Dazt dans le forum Électronique
    Réponses: 5
    Dernier message: 31/07/2016, 00h43
  2. Capteur Ultrason raspberry PI
    Par joffrey58 dans le forum Électronique
    Réponses: 7
    Dernier message: 22/10/2015, 14h56
  3. Pont I2C vers 4 Rs232 sur Raspberry Pi
    Par Alex33560 dans le forum Électronique
    Réponses: 4
    Dernier message: 21/05/2013, 11h03
  4. aide pour PIC 16F877 vers PC via port serie (transfert de données)
    Par invite1c4b6700 dans le forum Électronique
    Réponses: 8
    Dernier message: 08/05/2009, 02h47
  5. liaison serie ou fire wire vers usb
    Par rob39 dans le forum Matériel - Hardware
    Réponses: 0
    Dernier message: 31/05/2005, 15h41