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 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