Dernière mise à jour le 06/01/2021

Présentation


Ce montage électronique ne fais que de lire des tension analogiques. Ces tension peuvent seront lus via ce logiciel sans prétention développé par mes soins disponible à cette adresse de mon site Interface UsbHid – voltmetre numerique.

Schéma


Programmation materiel – MikroC


Niveau réglages de l’horloge, ce rendre dans la barre des taches de MikroC faire “Project” ensuite “Edit Project” et régler l’horloge interne avant d’exécuter le code qui va suivre pour le bon fonctionnement de l’ecrture de la carte SD. Ne pas oublier de désactiver la broche MCLR 😉 (voir capture ci-dessous). et pour finir je vous laisse vous rendre sur ce lien Configuration port USB – VID/PID pour le VID PID (pour ma part je ne change pas j’utilise toujours PID = 1234 et VID = 0001)

// Lecture analogique – MikroC – Electronique71.com

unsigned char readbuff[64] absolute 0x500; // Les tampons doivent être dans la RAM USB
unsigned char writebuff[64] absolute 0x540;

void interrupt()
{

  USB_Interrupt_Proc(); // La maintenance USB est effectuée à l'intérieur de l'interruption
  }

void init() {

  CMCON = 0x07; // On désactive les comparateurs

  ADON_bit = 1; // On active le convertisseur A/N

  ADCON0 = 0xFF; //  renvoie une mesure d'entrée flottante

  ADCON1 = 0x0A;  // On config broches RA0 à RA5 en analog le reste en sortie

  ADFM_bit = 0;

  // VCFGx -> à 0 = tension de référence à désactiver
  VCFG0_bit = 0; // Place la référence de tension sur VSS = 0V
  VCFG1_bit = 0; // Place la référence de tension sur VDD = +xV

  // régler sur 12TAD mais doit être > 12TAD -> Lié avec ADC_Init()
  ACQT0_bit = 1;
  ACQT1_bit = 0;
  ACQT2_bit = 1;

  // Fosc/2
  ADCS0_bit = 0;
  ADCS1_bit = 0;
  ADCS2_bit = 0;

  TRISA = 0xFF;  // Toutes les broches du PORTA sont configurées comme entrées
  PORTA= 0x00;
  LATA = 0x00;

  ADC_Init(); // Initialisation de la lecture analogique 12TAD MINI

  HID_Enable(&readbuff,&writebuff); // Initalisation USB

  Delay_ms(200);  // attendre un peu la fin de l'intialisation
}

// Programme principal
void main()
{
  unsigned char adc_value0, adc_value1, adc_value2;
  unsigned char adc_value3, adc_value4;

  init(); // Initialisation du PIC 18F4550

  while (1)
  {
     adc_value0 =  ADC_Get_Sample(0) >> 2; // decalage de 2 vers la droite (255)
     writebuff[0] =  adc_value0 ; // Ecriture writebuff[0]

     adc_value1 =  ADC_Get_Sample(1) >> 2; // decalage de 2 vers la droite (255)
     writebuff[1] =  adc_value1 ; // Ecriture writebuff[1]

     adc_value2 =  ADC_Get_Sample(2) >> 2; // decalage de 2 vers la droite (255)
     writebuff[2] =  adc_value2 ; // Ecriture writebuff[2]

     adc_value3 =  ADC_Get_Sample(3) >> 2; // decalage de 2 vers la droite (255)
     writebuff[3] =  adc_value3 ; // Ecriture writebuff[3]

     adc_value4 = ADC_Get_Sample(4) >> 2; // decalage de 2 vers la droite (255)
     writebuff[4] =  adc_value4 ; // Ecriture writebuff[4]

     // Envoies des données sur BUS USB
     HID_Write(&writebuff,64);

  }

}


Fonctionnement général

Que dire? ce programme permet de lire les tensions comprises entre 0V et 5V sur les potentiomètres RV1 à RV5. Ces tensions vont venir attaquer les entrées du PIC18F4550 qui se chargera des les convertir en tension numériques (0 à 255) afin de les envoyer sur le bus USB. J’en profite au passage de vous envoyer vers ce lien afin de télécharger le logiciel Interface UsbHid – voltmetre numerique
et de pouvoir tester l’affichage des tensions.
Je n’est pas essayé ce montage avec un quartz de 20Mhz, mais j’ai trouvé une différence entre le PORTA et le PORTB niveau tension. En effet sur le PORTA la visualisation des tensions sont très sensibles.

Test sur platine EasyPicV7


Oui et logiciel en action.

Historiques


06/01/2021
-1er mise à disposition