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 ---
- 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 ---
Contrôle de la température avec sonde PT100, PT1000, Thermocouple, MAX31865 .....
Contrôle de la température avec sonde PT100, PT1000, Thermocouple, MAX31865 .....
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour Tempx et à tous,
j'ai retrouvé dans mes notes MikroC
un test particulier sur la partie analogique 18F26K22
pour avoir une mesure zoomée pour tension de batterie 12V ( projet arrosage jardin , Solar Panel + Batterie)
en utilisant -Vref et +Vref
et la biblio ADC MikroC, à l'epoque, était deficiente .. je n'ai pas retesté avec la version MikroC 7.50
ça s'approche plus de l'ASM , vu que j'utilise seulement les registres du MCU
j'ai retrouvé dans mes notes MikroC
un test particulier sur la partie analogique 18F26K22
pour avoir une mesure zoomée pour tension de batterie 12V ( projet arrosage jardin , Solar Panel + Batterie)
en utilisant -Vref et +Vref
et la biblio ADC MikroC, à l'epoque, était deficiente .. je n'ai pas retesté avec la version MikroC 7.50
ça s'approche plus de l'ASM , vu que j'utilise seulement les registres du MCU
Code : Tout sélectionner
ANALOG 18F26K22
Test choix de channel ADC
for (i=0;i<4;i++)
{
ADCON0= (i<<2);
ADCON0=ADCON0 | 0x01;
UART1_Write_CText("Channel=");
WordToStr(i,CRam1);
UART1_Write_Text(CRam1);
UART1_Write_CText(" ADCON0=");
ByteToStr(ADCON0,CRam1);
UART1_Write_Text(CRam1);
CRLF();
}
/* results
Channel= 0 ADCON0= 1
Channel= 1 ADCON0= 5
Channel= 2 ADCON0= 9
Channel= 3 ADCON0= 13
*/
*******************************************************
Usage de Vref- sur RA2 input = Vcc/2
void My_Init_ADC(void);
unsigned int My_Lecture_ADC(unsigned char ch);
void My_Init_ADC()
{
//config lecture ADC 10 bits 18F26K22 DS41412F-page 304
ADCON0=0; // clean register
ADCON0.ADON=1; // ADC enabled
//bit 6-2 CHS<4:0>: Analog Channel Select bits
// select RA0 = analog input
ADCON0.CHS4=0;
ADCON0.CHS3=0;
ADCON0.CHS2=0;
ADCON0.CHS1=0;
ADCON0.CHS0=0; // 0= RA0 selectionné 1 =RA1 selectionné
ADCON1.TRIGSEL=0 ; // trigger from CCP5
ADCON1.PVCFG1=0; // +Vref = +5V AVdd
ADCON1.PVCFG0=0;
// bit 1-0 NVCFG<1:0>: Negative Voltage Reference Configuration bits
ADCON1.NVCFG0=0;
ADCON1.NVCFG1=0; // -Vref = Gnd AVss
// ADCON1.NVCFG0=1; //-Vref = RA2 input
//bit 7 ADFM: A/D Conversion Result Format Select bit
ADCON2.ADFM=1; // right justified
// ADC Clock period (TAD) = 2µS at 16Mhz
//bit 2-0 ADCS<2:0>: A/D Conversion Clock Select bits see 17.3 page 306
// ADCS<2:0> 010=Fosc/32 101=FOSC/16
ADCON2.ADCS1=0;
ADCON2.ADCS2=1;
ADCON2.ADCS0=0;
// bit 5-3 ACQT<2:0>: A/D Acquisition time select bits.
// Acquisition time is the duration that the A/D charge
// holding capacitor remains connected to A/D channel from the instant the GO/DONE bit is set
// until conversions begins.
// TACQT Cycles ACQT<2:0>
// TACQ= 8 xTAD = 16µS at 16Mhz
ADCON2.ACQT2=1;
ADCON2.ACQT1=0;
ADCON2.ACQT0=0; // 8 TAD
}
unsigned int My_Lecture_ADC(unsigned char ch)
{
unsigned int k;
char Dr;
ADCON0= (ch<<2);
ADCON0=ADCON0 | 0x01;
Delay_ms(50);
if (GIE_bit==1) Dr=1;
GIE_bit=0;
ADCON0.GO=1;
_asm nop
_asm nop
while( ADCON0.GO==1);
_asm nop;
k=ADRESH<<8;
k=k + ADRESL;
if(Dr==1) GIE_bit=1;
return (k);
}
......
//preselection conditions de mesure EA0 (Amps)
// pour avoir un maximum de temps de stabilisation
// conditions : ADC Vref+ interne = +5V ADC Vref- interne = VSS=0V
ADCON1.NVCFG1=0;
ADCON1.NVCFG0=0;
ADCON1.PVCFG1=0; //00 = A/D VREF+ connected to internal signal, AVDD
ADCON1.PVCFG0=0;
ADCON0.CHS1=0;
ADCON0.CHS0=0; // selec chanel 0
UART1_Write('.');
EA0=My_Lecture_ADC(0);
SEA0=SEA0+EA0; // accumulation pour calcul moyenne
// Mesure U battery with zoom effect
// la tension de battery 15V maximum passe par un diviseur de 1/3 => 5V maxi pour 15V
// et donc 2,5 V pour mini=7,5V
// nota : pas de mesure Ubat possible entre 0V et 7,5V ! normal pour une batterie de 12V
// qui doit etre declarée HS si Ubat<10,5V
// conditions : ADC Vref+ = +5V ADC Vref- = RA2 input=+2,5V
// Battery Maxi=15V diviseur par 3 sur EA1 => 5V pour 15V Ubat
// Maxi 5V , mesure EA1 de 2,5V à 5,00 V pour 0 à 1024 pts
// soit EA1=5V pour Ubat=15V et 1024 pts
// soit EA1=2,5V pour Ubat = 7,5V et 000 pts
// prepare aiguillage mesure EA1 , et Vre- sur RA2
/*
ADCON0.CHS1=0;
ADCON0.CHS0=1; // preselect EA1
ADCON1.PVCFG1=0; //00 = A/D VREF+ connected to internal signal, AVDD
ADCON1.PVCFG0=0;
ADCON1.NVCFG1=0; //01 = A/D VREF- connected to external pin, VREF-
ADCON1.NVCFG0=1; // internal Vref- = EA2 = +2,5V => for Range 2,5 to 5V
Delay_ms(20); // 1234567890123456
CRam1[0]=0;
EA1= My_Lecture_ADC(1);
// *Nota: ADC_Get_Sample(1); ne fonctionne pas OK avec refernce externe ...RA2=EA2=VREF- de +2,5V
Contrôle de la température avec sonde PT100, PT1000, Thermocouple, MAX31865 .....
Bonsoir paulfjujo, et tout le forum,
C'est encore mieux comme ça, je me souvient de ce projet (arrosage jardin , Solar Panel + Batterie) qui son un bien pour notre belle planète.
Je vais très souvent sur ton site, pour y voir les méthodes, et astuce, que tu utilises dans tes montages électroniques
J'ai vu sur ton site que tu avais fait un programme en rapidQ sur : Variante 1 sonde DS18B20, avec Appli PC en basic RapidQ ICI
J'en profite pour te dire que tu peux déclarer ton icône autrement, tu fais actuellement ceci
Alors qu'il suffit de faire ceci
ça te permets de déplacer ton dossier sans devoirs remettre un chemin pour ton icône.
pour tous
A+
C'est encore mieux comme ça, je me souvient de ce projet (arrosage jardin , Solar Panel + Batterie) qui son un bien pour notre belle planète.
Je vais très souvent sur ton site, pour y voir les méthodes, et astuce, que tu utilises dans tes montages électroniques
J'ai vu sur ton site que tu avais fait un programme en rapidQ sur : Variante 1 sonde DS18B20, avec Appli PC en basic RapidQ ICI
J'en profite pour te dire que tu peux déclarer ton icône autrement, tu fais actuellement ceci
Code : Tout sélectionner
Create Temper_BT as QForm
Icon = "D:\RapidQ\icon\mylogo.ico"
Alors qu'il suffit de faire ceci
Code : Tout sélectionner
Sub Temper_BTShow(Sender as QForm)
Chemin = left$(command$(0), rinstr(command$(0), "\"))
Temper_BT.Icon = Chemin + "icon\mylogo.ico"
ça te permets de déplacer ton dossier sans devoirs remettre un chemin pour ton icône.
pour tous
A+
Retourner vers « Coin Fourre-tout »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 45 invités