Aplicatii Practice ale MicrocontrolerelorFacultatea de Electronica, Telecomunicatii si Tehnologia...
Transcript of Aplicatii Practice ale MicrocontrolerelorFacultatea de Electronica, Telecomunicatii si Tehnologia...
2Facultatea de Electronica, Telecomunicatii si Tehnologia Informatiei - Iasi 2
• Configurarea ADC PIC16Fx / PIC18Fx.• Masurarea tensiunii de alimentare al unui dispozitiv electronic.• Cititrea unui senzor analogic.• Cititrea unui resistor variabil.
AI DO
Semnal Vocal
DriverSENZOR ADC
Facultatea de Electronica, Telecomunicatii si Tehnologia Informatiei - Iasi 4
R1
R2
R3
C1 D1VBAT
VOVo’
VBAT = 6.01V
𝑉𝑂 = 𝑉𝐵𝐴𝑇 ∗𝑅2
𝑅1 + 𝑅2
5𝑉 = 𝑉𝐵𝐴𝑇 ∗𝑅2
𝑅1 + 𝑅2
Facultatea de Electronica, Telecomunicatii si Tehnologia Informatiei - Iasi 5
R1R2R3 C1
D1
Diagrama Convertor Analog Digital
R1
R2
R3
C1 D1
VOVo’
VBAT
TRISx
ANSELx
ADCON0
ADCON1
ADCON2
ADC
Facultatea de Electronica, Telecomunicatii si Tehnologia Informatiei - Iasi 6
ADRESH
Citire 8 Biti
Citire 10 BitiADRESL
ADRESLADRESH
Registrii Asociati Convertorului Analog Digital
Facultatea de Electronica, Telecomunicatii si Tehnologia Informatiei - Iasi 8
TRISx
ANSLEx
Selectie pin intrare in MCU.
Selectie canal analogic cu ajutorul bitilor CHS.Diagrama Bloc Convertor Analog Digital
Facultatea de Electronica, Telecomunicatii si Tehnologia Informatiei - Iasi 9
ADCON0
ADONGO DONECHS
Facultatea de Electronica, Telecomunicatii si Tehnologia Informatiei - Iasi 10
ADCON2
ADFM
ADRESH Citire 8 Biti [ADFM=1]
Citire 10 Biti [ADFM=1]
Citire 8 Biti [ADFM=0]
Citire 10 Biti [ADFM=0]
ADRESL
ADRESLADRESH
ADRESLADRESH
ADRESH ADRESL
Facultatea de Electronica, Telecomunicatii si Tehnologia Informatiei - Iasi 12
ADRESx
ADRESH [ADFM = 0] ADRESL [ADFM = 0]
ADRESH [ADFM = 1] ADRESL [ADFM = 1]
ADRES
Facultatea de Electronica, Telecomunicatii si Tehnologia Informatiei - Iasi 13
unsigned int read_adc2(){
TRISAbits.RA2 = 1; // activare pin intrareANSELAbits.ANS2 = 1; // activare intrare analogicaADCON0bits.CHS = 0b0010; // selectie canal ADC: canal 2 (AN2)ADCON0bits.ADON = 0b1; //activare convertor analogADCON1bits.VCFG1 = 0b00; // selectare tensiune de referintaADCON2bits.ADFM = 0b1; // selectarte mod de citire (right justify)ADCON2bits.ACQT = 0b110; // selectare timp de achizitie ADCON2bits.ADCS = 0b110; // selectie frecventa clock (Fosc/64)__delay_ms(0.1); GO_nDONE = 1; // start conversiewhile(GO_nDONE); // conversie completa cand GODONE = 0;return ((ADRESH<<8)+ADRESL); // citire valoare ADC dupa conversie (returneza 10 biti)
}//end read
void main (void){
unsigned int read_adc2(); unsigned int adc2; //declar variabila locala de tip intwhile(1)
{adc2 = read_adc2(); // fac cu variabila adc2
}//end while}//end init
Facultatea de Electronica, Telecomunicatii si Tehnologia Informatiei - Iasi 14