Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

thermomètre afficheur 7 segments
JMarc
Passioné
Passioné
Messages : 399
Enregistré en : août 2016
Localisation : Dans le Sud...

#151 Message par JMarc » ven. 9 juin 2017 13:58 lien vers la Data-Sheet : Cliquez ici

Bonjour




paulfjujo a écrit :bonjour,


Rappel:

LePIckit2 peut AUSSI servir de terminal UART !
si les lignes RB6 RB7 sont dispo...



Mais alors peut être que pickit3 aussi ?

thermomètre afficheur 7 segments
paulfjujo
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 724
Âge : 67
Enregistré en : juillet 2015
Localisation : 01120
Contact :

#152 Message par paulfjujo » ven. 9 juin 2017 15:54 lien vers la Data-Sheet : Cliquez ici

bonjour à tous,



si tu as utilisé ceci

Code : Tout sélectionner

//char Soft_UART_Init(char *port, char rx_pin, char tx_pin, unsigned long baud_rate, char inverted);
    Soft_UART_Init(&PORTA,3,4,9600,0);
 


tu peux voir que RA3 est la pin RX de l'UART software
RA4 la pin TX , effectivement
MAIS RA4 est la plupart du temps , Open collecteur .. il faut mettre une pull-up de 4,7K au +VCC

par contre ton choix de LED sur RA3 est mauvais .. car Soft UART RA3=RX
il y a conflit ..

à verifier aussi , si il faut mettre le parametre Inverted=0 ou Inverted=1 avec ton cordon TTL/USB

rappel: je n'ai pas de 16F88 sous la main ..pour tester

thermomètre afficheur 7 segments
venom
Avatar de l’utilisateur
Passioné
Passioné
Messages : 209
Âge : 32
Enregistré en : avril 2016
Localisation : . <------ ici
Contact :

#153 Message par venom » mer. 14 juin 2017 22:29 lien vers la Data-Sheet : Cliquez ici

Bonjour a tous,

Me revoilou :sifflotte:
Bon j'ai réussi a faire une connexion avec mon cordon et le pic. (USART Terminal réagit) 8-)

Par contre j'ai du un peu couper le code (version demo de mikroc) :oops:

Voici donc le code que j'ai envoyé dans le pic :

Code : Tout sélectionner

// Liaison terminal univoque   PIC -> PC
// via adaptateur MAX232
// RA3  RX  <--- not used
// RA4  TX   -------------------->  RX PC
// 0V ---------------------------> 0V

long L;        // Initialise un long L
int temp_res;  // Initialise temp_res

int val1;      // Initialise val1
int val2;      // Initialise val2

int boucle_a;  // Initialise boucle_a
unsigned char TEXTE[64];
unsigned char * txt;

unsigned char  font[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};  // Charge les chiffres de 0 aa 9 en HEXA dans le font


void  SOFT_UART_Write_Text(char *txt)
{
  while(*(txt)>0)
  {
    Soft_UART_Write(*(txt));
    txt++;
  }
}

void  SOFT_UART_Write_CText(const char *txt)
{
 unsigned char c;
  while(*txt)
  { c=*(txt);
    Soft_UART_Write(c);
    txt++;
  }
}

void main() {

    OSCCON = 0b01000000;         //Fréquence pour oscillateur interne. oscillateur 1 MHz
    TRISA = 0b00001100;   // port RA2 et RA3 en entree    Entrée = 1, sortie = 0
    TRISB = 0b00000000;   // tous les port B en sortie. Entrée = 1, sortie = 0
    CMCON=0;              // inhibe les comparateurs
    ANSEL = 0b00000100;   // Configure AN2 en analog

    PORTA.RA0 = 0;        //Disable digit 1
    PORTA.RA1 = 0;        //Disable digit 2


    txt=&TEXTE[0];         // initalise le pointeur txtx sur le debut du tableau TEXTE

//char Soft_UART_Init(char *port, char rx_pin, char tx_pin, unsigned long baud_rate, char inverted);
    Soft_UART_Init(&PORTA,3,4,9600,0);
    Delay_ms(100);
    SOFT_UART_Write_CText("Init Liaison OK\r\n");

    ADC_Init();           // Initialise module ADC
    SOFT_UART_Write_CText("Init ADC OK\r\n");

    while(1){
       // récuperation du Vout du MCP9700A + forume transformation °C
       //  0°C = (10mV)*(0°C)+500 =  500mV
       // 20°C = (10mV)*(20°C)+500 = 700mv
       // 50°C = (10mV)*(50°C)+500 = 1000mv
       L = ADC_Read(2)*500;
   // affichage sur terminal PC
      SOFT_UART_Write_CText("Mesure ADC L= ");
      LongToStr(L,txt);
      SOFT_UART_Write_Text(txt);
      Soft_UART_Write(13);Soft_UART_Write(10);  // CR LF   saut d eligne
    }


J'ai juste enlevé la partie qui affiche sur les 7 segs.

En revanche je ne sais pas trop bien paramétrer USART Terminal. :sad:

voici ce que j'obtiens comme résultat :

En ascii

Code : Tout sélectionner

þþþþþþþþþþþþþþþþþþ


En hex

Code : Tout sélectionner

0x00 0x00 0xFE 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xFE 0x00 0x00


En dec

Code : Tout sélectionner

000 000 254 000 000 000 000 000 000 000 000 254 000 000 000 000 000 254


En bin

Code : Tout sélectionner

0b00000000 0b00000000 0b00000000 0b11111110 0b00000000 0b00000000 0b00000000 0b00000000 0b00000000 0b00000000 0b00000000 0b11111110 0b00000000 0b00000000


j'avoue qu'aucune de ces langues me parle :langue:

D'apres le code je devrais recevoir

Code : Tout sélectionner

Init Liaison OK

Code : Tout sélectionner

Init ADC OK

Code : Tout sélectionner

Mesure ADC L


C'est bien sa ?

Voilà en gros ce que je peux vous dire pour le moment. :oops:
Tout le reste du soft est configuré comme ci dessous
Screenshot


paulfjujo a écrit :à verifier aussi , si il faut mettre le parametre Inverted=0 ou Inverted=1 avec ton cordon TTL/USB

:? J'avoue ne pas savoir ou se trouve ce paramètre.

Aller courage Merci !






@++

thermomètre afficheur 7 segments
paulfjujo
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 724
Âge : 67
Enregistré en : juillet 2015
Localisation : 01120
Contact :

#154 Message par paulfjujo » jeu. 15 juin 2017 12:43 lien vers la Data-Sheet : Cliquez ici

bonjour Venom et autres forumeurs

Pas d'anomalies dans ton code excepté le fait qu'il faudra quand meme rajouter un delai dans la boucle
et un petit filtrage ADC, ça mange pas de pain.
Je l'ai testé sur mon 16F1847 ..OK

Je verrai plutot un probleme dans ta config bit .. FOSC mal configuré
post ta config
copier /coller dans un fichier txt ou dans ton source C
ou sauvegarde fichier de config dans toto.cfgsch (format config scheme)

Code : Tout sélectionner


unsigned int j
;

 j=1;
 L=0;
    while(1){
       // récuperation du Vout du MCP9700A + forume transformation °C
       //  0°C = (10mV)*(0°C)+500 =  500mV
       // 20°C = (10mV)*(20°C)+500 = 700mv
       // 50°C = (10mV)*(50°C)+500 = 1000mv
       // 1000 mV => 1000-500=500 1/10em de degres
       L = L+ ADC_Read(1);
       if ((j%10==0) && (j>9))              // 2me test pour eviter une erreur sur la 1ere  valeur moyennée
       {
   // affichage sur terminal PC
      L=L-5000;      // -5000 car 10 fois -500 !
      SOFT_UART_Write_CText("Mesure ADC L= ");
      LongToStr(L,txt);
      SOFT_UART_Write_Text(txt);
      SOFT_UART_Write_CText(" 1/10em de degres \r\n");    //   \r\n =  CR LF   saut de ligne
      L=0;
      }
      j++;
      Delay_ms(100);
    }
 


tu devrais obtenir quelque chose comme cela
Init ADC OK
Init Liaison OK
Init ADC OK
Mesure ADC L= 5230 1/10em de degres
Mesure ADC L= 5230 1/10em de degres
Mesure ADC L= 5230 1/10em de degres
Mesure ADC L= 5230 1/10em de degres
Mesure ADC L= 5230 1/10em de degres

avec EA1=Vcc


Attention j'ai utilisé ADC1 sur lequel j'ai un potar pour regler 0 à Vcc
( et non ADC2 .)

thermomètre afficheur 7 segments
venom
Avatar de l’utilisateur
Passioné
Passioné
Messages : 209
Âge : 32
Enregistré en : avril 2016
Localisation : . <------ ici
Contact :

#155 Message par venom » jeu. 6 juil. 2017 22:47 lien vers la Data-Sheet : Cliquez ici

Bonjour a tous,

Je souhaite m’excusè pour cette longue absence :oops: (Meme si j'essaie de passer le plus souvent possible. Comme beaucoup d'entre nous, je pratique l’électronique comme hobbies (du moins j’essaie :-D )

Mais ces derniers temps j'ai du m’éloigner un peu (D'autres choses qui m'ont pris beaucoup de temps.) Mais je n'abandonne pas ce projet qui me hante depuis un moment. :mur: :langue:

J’espère donc bientôt remettre les mains dans le cambouis, ou plutôt dans les composants électroniques. :wink:

Néanmoins, J'ai quelques questions par rapport au message de paulfjujo.

paulfjujo a écrit : rajouter un delai dans la boucle et un petit filtrage ADC

Que veut tu dire par filtrage ADC ?

paulfjujo a écrit : Je verrai plutot un probleme dans ta config bit .. FOSC mal configuré post ta config

Désolé de ma faible connaissance en la matière, :oops: Comment puis-je te transférè ma config ? Je trouve ça ou dans mikroc ?

paulfjujo a écrit :copier /coller dans un fichier txt ou dans ton source C ou sauvegarde fichier de config dans toto.cfgsch (format config scheme)

:shock: J'ai absolument rien compris a cette phrase. oops




Pour ce qui est du code, tu souhaite que je l’injecte dans mon pic pour voir si j’obtiens bien le même résultat que toi ? c'est bien ça ?



Merci de votre aide et patience. Heureusement que des forum comme ça existe. Et dommage qu'il y ai des "chiant" comme moi :wink: :langue:






@++

thermomètre afficheur 7 segments
paulfjujo
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 724
Âge : 67
Enregistré en : juillet 2015
Localisation : 01120
Contact :

#156 Message par paulfjujo » ven. 7 juil. 2017 15:58 lien vers la Data-Sheet : Cliquez ici

bonjour Venom et à tous,

Dans projet
Edit Project
a droite : 2 boutons : Load scheme ou Save scheme
Charge ou sauve la config des bits dans un fichier avec extension * .cfgsch
16F88_Venom.cfgsch.txt

nota: enlever l'extension .txt

qui une fois chargé doit donner:
CONFIG1 : $2007 : 0x3F18
CONFIG2 : $2008 : 0x3FFC


16F88_Projet_config_Venom.jpg




j'ai testé ce code avec un 16F1847 , mais devrait etre transposable ssans probleme pour un 16F88.
Verifie juste la config des bits et FOSC.


Code : Tout sélectionner




...
....
   long  Temp_res;
   long L;
   int j,;
 ...
    
  void main
()
   {

    OSCCON = 0b01000000;     //Fréquence pour oscillateur interne. oscillateur 1 MHz
    TRISA = 0b00001100;   // port RA2 et RA3 en entree    Entrée = 1, sortie = 0
    TRISB = 0b00000000;   // tous les port B en sortie. Entrée = 1, sortie = 0
    CMCON=0;              // inhibe les comparateurs
    ANSEL = 0b00000100;   // Configure AN2 en analog
//    PORTA.RA0 = 0;        //Disable digit 1
 //   PORTA.RA1 = 0;        //Disable digit 2
    txt=&TEXTE[0];         // initalise le pointeur txtx sur le debut du tableau TEXTE

    //char Soft_UART_Init(char *port, char rx_pin, char tx_pin, unsigned long baud_rate, char inverted);
    Soft_UART_Init(&PORTA,3,4,9600,0);
    Delay_ms(100);
    Soft_UART_Write_CText("16F88 1MHz MCP9700A\r\n");
    Soft_UART_Write_CText("Init Liaison OK\r\n");

    ADC_Init();           // Initialise module ADC
    Soft_UART_Write_CText("Init ADC OK\r\n");
    j=1;
    L=0;
     while(1)
    {
       // récuperation du Vout du MCP9700A + formattage en °C
       // -50°C = (10mV)*(-50)+500 = 0mV
       //  0°C = (10mV)*(0°C)+500 =  500mV
       // 20°C = (10mV)*(20°C)+500 = 700mv
       // 50°C = (10mV)*(50°C)+500 = 1000mv
       // 1000 mV => 1000-500=500 1/10em de degres
       L = L+ ADC_Read(1);
       if ((j%10==0) && (j>9))              // 2me test pour eviter une erreur sur la 1ere  valeur moyennée
       {
      // affichage sur terminal PC
     // gamme en points  0 à 10240        => delta =10240
     // gamme temperature -50°C à +450°C  => delta =500
     // gamme en mV  500*10= 5000mV    avec +Vref ADC =Vcc=5,0V
      Temp_res= L * 5000/10240  - 500;
      Soft_UART_Write_CText("Mesure brute ADC L= ");
      LongToStr(L,txt);
      Soft_UART_Write_Text(txt);
      Soft_UART_Write_CText(" =>   degres = ");
       LongToStr(Temp_res,txt);
      // petits echanges entre cases memoire pour inserer une virgule pour les 1/10em de degres 
      k=strlen(txt);
      *(txt+k)=*(txt+k-1);
      *(txt+k-1)=',';  // on place la virgule ici
      *(txt+k+1)=0;
      // cas particulier , si mesure brute inferieure à 10 , il faut afficher un zero devant la virgule
      // ça fait plus propre !
      if (Temp_res<10) *(txt+k-2)='0';
      Soft_UART_Write_Text(txt);
      Soft_UART_Write(13);
      Soft_UART_Write(10);   // CR LF  saut de ligne
      L=0;
      }
      j++;
      Delay_ms(100);
    


resulta display


Mesure brute ADC L= 0 => degres = -50,0
Mesure brute ADC L= 0 => degres = -50,0
Mesure brute ADC L= 0 => degres = -50,0
Mesure brute ADC L= 0 => degres = -50,0
Mesure brute ADC L= 62 => degres = -40,0
Mesure brute ADC L= 482 => degres = -20,5
Mesure brute ADC L= 887 => degres = -0,7
Mesure brute ADC L= 988 => degres = -0,8
Mesure brute ADC L= 1023 => degres = 0,1
Mesure brute ADC L= 1039 => degres = 0,7
Mesure brute ADC L= 1056 => degres = 1,5
Mesure brute ADC L= 1157 => degres = 6,4
Mesure brute ADC L= 1574 => degres = 26,8
Mesure brute ADC L= 2479 => degres = 71,0
Mesure brute ADC L= 3406 => degres = 116,3
Mesure brute ADC L= 4641 => degres = 176,6
Mesure brute ADC L= 6002 => degres = 243,0
Mesure brute ADC L= 7237 => degres = 303,3
Mesure brute ADC L= 8509 => degres = 365,4
Mesure brute ADC L= 9309 => degres = 404,5
Mesure brute ADC L= 9529 => degres = 415,2
Mesure brute ADC L= 9681 => degres = 422,7
Mesure brute ADC L= 9693 => degres = 423,2
Mesure brute ADC L= 9700 => degres = 423,6
Mesure brute ADC L= 9703 => degres = 423,7
Mesure brute ADC L= 9886 => degres = 432,7
Mesure brute ADC L= 10140 => degres = 445,1
Mesure brute ADC L= 9782 => degres = 427,6
Mesure brute ADC L= 10223 => degres = 449,1
Mesure brute ADC L= 10230 => degres = 449,5
Mesure brute ADC L= 10230 => degres = 449,5
Mesure brute ADC L= 10230 => degres = 449,5
Mesure brute ADC L= 10230 => degres = 449,5

Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

thermomètre afficheur 7 segments
Temps-x
Avatar de l’utilisateur
Passioné
Passioné
Messages : 433
Enregistré en : juillet 2016
Localisation : Terre

#157 Message par Temps-x » dim. 16 juil. 2017 02:08 lien vers la Data-Sheet : Cliquez ici

Bonjour tous le monde,

Bon venom, Jérémy ta fait un superbe tutoriel sur ton capteur : viewtopic.php?p=6468#p6468

A+
Modifié en dernier par Temps-x le dim. 16 juil. 2017 13:13, modifié 1 fois.
L’imagination est plus importante que le savoir.

thermomètre afficheur 7 segments
Jérémy
Administrateur du site
Administrateur du site
Messages : 1734
Âge : 38
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#158 Message par Jérémy » dim. 16 juil. 2017 09:35 lien vers la Data-Sheet : Cliquez ici

Bonjour à tous,

Merci temps-x !
Je suis actuellement en train de bosser sur le DC18B20+ . Déjà dés le départ il est vachement plus précis ! mais aussi plus compliqué. A trés vite pour des questions ! lol
C'est en faisant des erreurs, que l'on apprend le mieux !!!

thermomètre afficheur 7 segments
paulfjujo
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 724
Âge : 67
Enregistré en : juillet 2015
Localisation : 01120
Contact :

#159 Message par paulfjujo » dim. 16 juil. 2017 14:47 lien vers la Data-Sheet : Cliquez ici

bonjour,

:+1: Tres bien ce tuto sur le MCP9701A !

pour Venom:
pour Version MikroC registered (avec le *.HEX )
_16F88_Venom_Registered_MikroC.zip



Attention : avec Fosc 1MHz error sur 9600 bauds trop grande! => Fosc=8Mhz

version qui devrait etre OK avec MikroC NON enregistré
_16F88_Venom_ADC_Print_less_2k.zip

je l'ai testé OK avec un 16FL1847 .. pas de 16F88 sous la main
reduction de taille en eliliminant la lib Soft_UART
Print direct dans le registre TXREG à la place



Au Webmaster:

Probleme pour attachement de fichier en MP
1 seul possible.
malgré l'entete
Pour joindre un ou plusieurs fichiers joints :
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

thermomètre afficheur 7 segments
venom
Avatar de l’utilisateur
Passioné
Passioné
Messages : 209
Âge : 32
Enregistré en : avril 2016
Localisation : . <------ ici
Contact :

#160 Message par venom » dim. 16 juil. 2017 21:14 lien vers la Data-Sheet : Cliquez ici

Bonsoir a tous,

Merci pour votre soutient a tous.

@temps-x et Jérémy
Merci pour le conseil et le tuto qui j’espère va grandement me faire avancer dans ce projet. :wink:

@paul
Merci pour les fichiers et pour la précision du Fosc. J'en prend note.

Je vous tiens au courant de l'avancement. Encore merci a tous. :bravo:






@++


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités