[PIC] Räkna ut ACQT & ADCS på 18F4221

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Pajn
Inlägg: 1160
Blev medlem: 6 juni 2008, 19:14:29
Ort: Nyköping
Kontakt:

[PIC] Räkna ut ACQT & ADCS på 18F4221

Inlägg av Pajn »

Jag ska använda en analog tempsensor till en PIC18F4221.

Jag lyckas tyvärr inte förstå hur jag ska räkna ut ACQT & ADCS.
Jag har läst databladet men förstår inte ett jota.

Är det någon som kan förklara det lite pedagogiskt?
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46956
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: [PIC] Räkna ut ACQT & ADCS på 18F4221

Inlägg av TomasL »

EQUATION 20-3: CALCULATING THE MINIMUM REQUIRED ACQUISITION TIME
Sidan 238 i familjebladet.
Selecting the A/D Conversion
Clock
och
TABLE 20-1: TAD vs. DEVICE OPERATING FREQUENCIES
på sidan 239
Tycker att det är klart som "korvspad"
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: [PIC] Räkna ut ACQT & ADCS på 18F4221

Inlägg av sodjan »

> ...men förstår inte ett jota.

Jag gissar att du minst förstår kanske 90% av texten.
Frågan är vad resten är, ge gärna exempel.
Pajn
Inlägg: 1160
Blev medlem: 6 juni 2008, 19:14:29
Ort: Nyköping
Kontakt:

Re: [PIC] Räkna ut ACQT & ADCS på 18F4221

Inlägg av Pajn »

@ThomasL Vi verkar inte sitta med samma datablad.
Jag använder det som farnell tillhandahåller då det var vad jag hittade (4321 family)
http://uk.farnell.com/microchip/pic18f4 ... dp/1332255

Har du ett bättre får du gärna länka :)

@sodjan
Jag skulle gärna önska att det var så, men...

På sidan 234 har vi EQUATION 19-1: ACQUISITION TIME

Kod: Markera allt

TACQ = Amplifier Settling Time + Holding Capacitor Charging Time + Temperature Coefficient
     = TAMP + TC + TCOFF
Vad är Amplifier Settling Time och vad får jag det ifrån?
Holding Capacitor Charging Time är det uppladningstiden på kondensatorn i FIGURE 19-3: ANALOG INPUT MODEL?
Måste jag ha en kondensator?
Temperature Coefficient?

Som ni ser är jag helt lost. Jag har tidigare bara använt färdiga funktioner, men nu vill jag lära mig
detta ordentligt.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: [PIC] Räkna ut ACQT & ADCS på 18F4221

Inlägg av sodjan »

> Jag använder det som farnell tillhandahåller

Om det råder minsta tvekan, gå till Microchip och hämta det senaste!

Men nu var det i alla fall lite mer konkret... :-)
Den där formeln är nog mest för att ge lite bakgrund till varför "acqusition"
är rellevant över huvudtaget.

> Vad är Amplifier Settling Time och vad får jag det ifrån?

Du behöver nog inte det, det är bara för att visa att det finns.

> Måste jag ha en kondensator?

Den sitter internt i ADC modulen.

> Temperature Coefficient?

Sannolikt också bara för att visa att den finns.
Inget du behöver bry dig om.

Någon annanstans bör det stå vilken rekomenderat acqusision time som du bör ha.
Sedan finns det något register där du konfigurerar så få den tiden.
Pajn
Inlägg: 1160
Blev medlem: 6 juni 2008, 19:14:29
Ort: Nyköping
Kontakt:

Re: [PIC] Räkna ut ACQT & ADCS på 18F4221

Inlägg av Pajn »

Jag tankade databladet från µchips hemsida (hittade inte via Google
men den gick att ta sig fram den långa vägen).

Jag struntade även i uträkningarna då de inte verkar vara "så viktiga"
och gick på tabellen istället. TABLE 20-1 som ThomasL nämnder.

Jag hade tänkt att köra på den interna oscillatorn (iaf. initialt. Jag vill
även ha en klocka men jag antar att det är bättre att satsa på en
extern RTC?) så det är 8MHz som gäller. Om jag tittar på raden
"Maximum Device Frequency" 11.43 MHz så står det 8 TOSC och att
ADCS<2:0> ska ställas på 001. Men hur ska ACQT<2:0> ställas då?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: [PIC] Räkna ut ACQT & ADCS på 18F4221

Inlägg av sodjan »

> Jag tankade databladet från µchips hemsida (hittade inte via Google
> men den gick att ta sig fram den långa vägen).

Den kortaste vägen är via http://www.microchip.com och att
ange aktuell modell i sökrutan för "datasheet". Finns absolut
ingen som helst anledning att strula med Google när det gäller
saker som tillverkarna har full support på och där all dokumentation
finns tillgänglig.

Hur som helst... :-)

Med 8 MHz så verkar en Tad = 8Tosc vara OK enligt tabell 20-1.
ADCS<2:0> = "001", d.v.s Tad = 1 us.

En Tacq på 3-4 us bör vara OK, Tacq = 4Tad, alltså t.ex ACQT<2:0> = "010".

Sen så beror det på hur bråttom du har. Har du inte det så kan du lika
gärna öka Tacq lite till, det gör ingen skada och underlättar om du har
en spänningskälla som ligger lite högt i impedans.
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: [PIC] Räkna ut ACQT & ADCS på 18F4221

Inlägg av bearing »

Sodjan har skrivit ett svar, och jag har samtidigt knappat på ett eget, så jag lägger in det också.

Det är så att en ADC behöver en klockfrekvens inom ett visst intervall (se Table 27-25) för att prestera enligt spec (se Table 27-24).

Eftersom att processorns buss-klocka ofta är snabb, används en prescaler för att skala ned buss-klockan till lämplig ADC-klocka. ADCS väljer denna prescaler. Enligt Table 27-25 ska perioden på ADC-klockan vara inom intervallet 0,7us - 25 us. Med prescaler 8 får klockfrekvensen vara max 11,43MHz eftersom att 8 / 0,7us = 11.43MHz. Med 8MHz klocka och prescaler 8 blir ADC-klockan 1MHz, d.v.s Tad = 1us. Detta är godkänt, men ligger nära gränsvärdet 0,7us. Om du inte behöver denna hastighet kan det vara en fördel att välja en långsammare ADC-klocka, eftersom att detta förmodligen förbättrar noggrannheten. Prescaler 16 eller mer kan därför kan vara lämpligt.

ACQT väljer hur många ADC-klockcykler som ADC-kondensatorn får på sig att laddas, se Figure 20-5. Om du t.ex. har 8MHz bus-klocka, och prescaler 16, blir Tad = 2us. Om ACQT sätts till 0b010, betyder det att kondensatorn kommer laddas i 4*2us = 8us. Ju längre tiden är, ju större är sannolikheten att ADC-kondensatorn hinner laddas till samma spänning som signalkällan har. Så, igen, välj ett högt värde ifall du inte behöver göra en väldigt snabb omvandling (eller behöver ta ett kort "stickprov").
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: [PIC] Räkna ut ACQT & ADCS på 18F4221

Inlägg av sodjan »

Håller helt med. Om man inte har överdrivet bråttom är det
bättre med lite större marginaler, precis som i trafiken... :-)
Pajn
Inlägg: 1160
Blev medlem: 6 juni 2008, 19:14:29
Ort: Nyköping
Kontakt:

Re: [PIC] Räkna ut ACQT & ADCS på 18F4221

Inlägg av Pajn »

Tack till både Sodjan och Bearing!
Nu förstår jag mycket bättre :)

Så löjligt enkelt men ändå så oöverstigligt svårt.

Dock funderar jag på "desto längre desto bättre" (visserligen inte exakt så ni skrev men, ja.)
I databladet står det "For correct A/D conversions, the A/D conversion clock
(TAD) must be as short as possible, but greater than the
minimum TAD"

Men jag antar att lite extra marginaler ändå inte är så farligt. För annars så behöver det inte
gå så snabbt då den ska mäta temperatur i ett rum. Varken sensorn eller rummet kan skifta
temperatur så snabbt.

Tror jag kör TAD = 1µS och TACQ = 8.

Stort tack för hjälpen!
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: [PIC] Räkna ut ACQT & ADCS på 18F4221

Inlägg av sodjan »

> Dock funderar jag på "desto längre desto bättre" (visserligen inte exakt så ni skrev men, ja.)

För själva konversationen är det bra om det går så snabbt som möjligt,
så att inte den interna kondingen hinner självurladda för mycket.
Det är det som den del som du citerar ur databladet handlar om.
"For correct A/D conversions..."

För "acqusision" är det tvärt om, ju längre ju säkrare blir man på
att den interna kondingar har hunnit anta (laddas till) korrekt värde.
Vi kan ju säga att det var det som avsågs med "desto längre desto bättre". :-)
Pajn
Inlägg: 1160
Blev medlem: 6 juni 2008, 19:14:29
Ort: Nyköping
Kontakt:

Re: [PIC] Räkna ut ACQT & ADCS på 18F4221

Inlägg av Pajn »

Jaha :) Man lär sig mer och mer
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: [PIC] Räkna ut ACQT & ADCS på 18F4221

Inlägg av bearing »

Hm, det var ju intressant. Generellt är väl långsammare = säkrare/bättre. Som jämförelse står följande om ADC i databladen för Atmels tiny-modeller:

"By default, the successive approximation circuitry requires an input clock frequency between
50 kHz and 200 kHz to get maximum resolution. If a lower resolution than 10 bits is needed, the
input clock frequency to the ADC can be higher than 200 kHz to get a higher sample rate. It is
not recommended to use a higher input clock frequency than 1 MHz."
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: [PIC] Räkna ut ACQT & ADCS på 18F4221

Inlägg av sodjan »

> Generellt är väl långsammare = säkrare/bättre.

Nej det är det inte. Inte *generellt*, vad du nu menar med det.

Jag ser inte hur AVR'ens råd motsäger någonting.

PIC:
"For correct A/D conversions, the A/D conversion clock (TAD) must be as short as
possible, but greater than the minimum TAD (see parameter 130 for more information)."

Det är ungefär samma sak.
"< 200 kHz" motsvarar "greater than the minimum TAD"
De har bara lite olika sätt att uttrycka i princip samma sak.
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: [PIC] Räkna ut ACQT & ADCS på 18F4221

Inlägg av bearing »

I "Electrical characteristics" för ATtiny45l anges: "Clock Frequency Min 50 Max 1000 kHz", vilket motsvarar Tad 1-20us, vilket är ett intervall med ungefär samma bredd som Tad i 18F4221 (0,7 - 25 us). Atmel skriver att noggrannheten är bättre i den långsammare delen av intervallet, och Microchip skriver att den är bättre i den snabbaste delen av intervallet. I den långsamma änden av intervallet gissar jag att självurladdning av kondensatorer i begränsar. I den snabba änden gissar jag att komparatorn begränsar. Någonstans mellan ändarna borde det finnas ett optimalt läge. Jag tycker det verkar märkligt att det optimala läget ligger i den absolut snabbaste delen av intervallet. Men tja, det kanske stämmer. Antar att Microchips ADC har en mycket snabbare komparator än Atmels ADC, i så fall.
Skriv svar