www.elektronik.si
Programiranje v bascom avr
Pojdi na stran Prejšnja  1, 2, 3, ... 36, 37, 38  Naslednja  :||:
www.elektronik.si -> Bascom sekcija

Avtor: int47Kraj: Ljubljana PrispevekObjavljeno: Sre Apr 23, 2008 9:30 pm    Naslov sporočila:  
----------------------------------------------------------------------------
1) Odpreš kompleten PDF od uC-ja.
2) Poiščeš "AREF"
3) Po par klikih sem v PDF-ju za atmega 16 našel tole:

Koda:
AREF:
AREF is the analog reference pin for the A/D Converter.

Operation:
The ADC converts an analog input voltage to a 10-bit digital value through successive approximation. The minimum value represents GND and the maximum value represents the voltage on the AREF pin minus 1 LSB. Optionally, AVCC or an internal 2.56V reference voltage may be connected to the AREF pin by writing to the REFSn bits in the ADMUX Register. The internal voltage reference may thus be decoupled by an external capacitor at the AREF pin to improve noise immunity.

Avtor: program_erKraj: Maribor (Pohorje) PrispevekObjavljeno: Sre Apr 23, 2008 9:41 pm    Naslov sporočila:  
----------------------------------------------------------------------------
To sem si že dvakrat prebral v datasheetu. Ampak kaj mi lahko kdo v slovenščini poenostavneje razloži kaj je to? Je to mogoče izhodna napetost za ADC? Anleščina mi ne gre najbolje...Sad

Avtor: MadMax PrispevekObjavljeno: Sre Apr 23, 2008 11:56 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Referenčna napetost, s katero potem žival primerja vhodni analogni signal.
Ker je tako natančno in stabilno napetost včasih težko zagotoviti (ali pa se prek tega delajo recimo temperaturne kompenzacije), je proizvajalec pustil možnost, da si sam "narediš" to napetost.

Avtor: vilkoKraj: Dragomer PrispevekObjavljeno: Čet Apr 24, 2008 2:45 pm    Naslov sporočila:  Debounce je več kot if tipka
----------------------------------------------------------------------------
Debounce je več kot if tipka = 0

Debounce ukaz testira, ali se je tipka ravnokar pritisnila, se pravi skočila iz 1 na 0.
To potrebuješ recimo, če hočeš spremeniti stanje števca za vsak pritisk tipke. Ko tipko pritisneš, bo šel števec za eno naprej, in če hočeš, da gre spet za eno naprej moraš tipko najprej spustiti in potem ponovno pritisniti. Če boš držal tipko pritisnjeno, se števec ne bo povečeval.
Če pa bi bil debounce to, kar je bilo napisano, samo if tipka in potem wait, bi v slučaju, da je tipka pritisnjena dalj časa, števec tekel navzgor, kaj ne?

No seveda pa je v debounce tudi zakasnitev, da se preskoči odskakovanje kontakta. Vsako stikalo je mehanski kontakt na vzmeti, in ko ga pritisnemo, kotva kar nekajkrat odskoči, predno se umiri v novem položaju. Za mikroprocesor, ki je hiter kot zlomek, bi to bilo, kot da smo nekakrat prav na hitro pritisnili in spustili tipko in spet pritisnili, in bi števec za en pritisk s prstom na tipko štel dva ali tri pritiske, v odvisnosti od mehanike stikala. Zato je v debounce vgrajena tudi zakasnitev, ki tako odskakovanje 'preskoči'.

kapiš?

Avtor: vilkoKraj: Dragomer PrispevekObjavljeno: Čet Apr 24, 2008 2:57 pm    Naslov sporočila:  In še odgovor za AREF
----------------------------------------------------------------------------
AREF je referenčna napetost, ki jo mikroprocesor deli z delilniki toliko časa, da je deljena napetost enaka vhodni merjeni. Merjena napetost bo torej vedno nižja od referenčne. Mora biti, sicer je meritev napačna.
In rezultat ki ga dobiš, ni v voltih, temveč v 256-inkah referenčne napetosti če je ad pretvornik 8 bitni.
če torej daš kot referenčno napetosti recimo 5V in si na vhod priklopil napetost 2.5V boš za rezultat dobil v 8 bitnem konverterju &H80 = 128
To vrednost moraš pomnožiti z referenčno napetostjo in deliti z 256 in dobiš rezultat v voltih. In ne pozabi da delaš računske operacije s celimi števili, kjer se ne da predstaviti števila 2.5. Če torej hočeš rezultat na desetinko volta natančno, boš izmerjeno vrednost pomnožil še z 10 predno boš delil z 256, da dobiš rezultat 25, kar ti mora pomeniti 2.5V

Avtor: program_erKraj: Maribor (Pohorje) PrispevekObjavljeno: Čet Apr 24, 2008 9:06 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Torej kako naj nastavim tukaj nastavitve (kopirano iz Bascom helpa), če bi imel:
1. Fotoupor vezano med Vcc in pinom PX.n
2. Fotoupor vezan med AREF pinom in pinom PX.n

Koda:

'Config Adc = Single , Prescaler = Auto, Reference = Internal

'The reference param may be :

'OFF      : AREF, internal reference turned off

'AVCC     : AVCC, with external capacitor at AREF pin

'INTERNAL : Internal 2.56 voltage reference with external capacitor ar AREF pin



Aja, pa na feri so mi pravli, da je v enem primeru rezultat ADC-ja izražen v mili voltih. Je to res?

Avtor: vilkoKraj: Dragomer PrispevekObjavljeno: Čet Apr 24, 2008 11:12 pm    Naslov sporočila:  Moje
----------------------------------------------------------------------------
Moje izkušnje so do adc pretvornika PCF8591
Kot po navadi, sem, lahko napačno, predvideval, da je povsod enako.
Na AVR-ih še nisem meril napetosti z AD pretvornikom, in ti bo verjetno odgvoril kdo drug.

Avtor: dkoneKraj: Krško PrispevekObjavljeno: Pet Apr 25, 2008 8:10 am    Naslov sporočila:  
----------------------------------------------------------------------------
Več o A/D-ju si preberi tukaj, imaš tudi primer kode.

Avtor: mucekKraj: Domzale PrispevekObjavljeno: Pet Apr 25, 2008 9:07 am    Naslov sporočila:  
----------------------------------------------------------------------------
program_er je napisal/a:
Aja, pa na feri so mi pravli, da je v enem primeru rezultat ADC-ja izražen v mili voltih. Je to res?


Ja, če imaš npr. 10 bitni ADC in referenčno napetost 1,023V Wink
In tako dalje (z malo matematike) ...

LP, Grega

Avtor: vilkoKraj: Dragomer PrispevekObjavljeno: Pet Apr 25, 2008 9:10 am    Naslov sporočila:  Odlična spletna stran, Dkone!
----------------------------------------------------------------------------
Odlična spletna stran, Dkone!

Avtor: program_erKraj: Maribor (Pohorje) PrispevekObjavljeno: Pet Apr 25, 2008 5:48 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Torej, uporabljam ATmega16.

Vnjegovem datasheetu med drugim piše:
Koda:

– 8-channel, 10-bit ADC
      8 Single-ended Channels
      7 Differential Channels in TQFP Package Only
      2 Differential Channels with Programmable Gain at 1x, 10x, or 200x

Mene pa zanima samo to:
Koda:

– 8-channel, 10-bit ADC
      8 Single-ended Channels


Čeprav mi matematika zelo gre, tistega od @vilkota ne razumem.
To je iz Bascom helpa:
Koda:

ADC
 Running mode. May be SINGLE or FREE.
 
PRESCALER
 A numeric constant for the clock divider. Use AUTO to let the compiler generate the best value depending on the XTAL
 
REFERENCE
 The options depend on the used micro. Some chips like the M163 have additional reference options. In the definition files you will find : ADC_REFMODEL = x

This specifies which reference options are available. The possible values are listed in the table below.
-----------------------------------------------------------------------------------------------
'The newer has options for the reference voltage

'For those chips you can use the additional param :

'Config Adc = Single , Prescaler = Auto, Reference = Internal

'The reference param may be :

'OFF      : AREF, internal reference turned off

'AVCC     : AVCC, with external capacitor at AREF pin

'INTERNAL : Internal 2.56 voltage reference with external capacitor ar AREF pin

Mi lahko kdo izračuna ali razloži ali pove še enkrat, kako naj v Bascomu to naredim, izračunam. Lahko bi kdo prilepil kak "kos" programske kode...

Čip napajam z 5.05 volta, ampak se mi zdi, da ta podatek ni pomemben. Saj referenčno izhodno napetost lahko nastavljam z ADC_REFMODEL = milivolti ? Ali ne?

Torej, koliko in kako moram nastaviti referenčno napetost, da bom na 10-bitnem ADC-ju dobil v rezultat milivolte? Če ne gre spreminjat referenčne napetosti, pa lahko kdo prilepi malo kode z nekaj primeri deljenja števcev in množenja, če je to v programu potrebno. Iz strani, ko jo je dal @dkone sem si potegnil primer kode, samo kaj mi pomaga, če to naložim v uC, če je ne razumem...

Hvala za odgovore!!!

Avtor: vilkoKraj: Dragomer PrispevekObjavljeno: Pet Apr 25, 2008 6:44 pm    Naslov sporočila:  Poizkusi tako, kot piše v help-u
----------------------------------------------------------------------------
Poizkusi tako, kot piše v help-u:

Koda:
'configure single mode and auto prescaler setting
'The single mode must be used with the GETADC() function
'The prescaler divides the internal clock by 2,4,8,16,32,64 or 128
'Because the ADC needs a clock from 50-200 KHz
'The AUTO feature, will select the highest clockrate possible

Config Adc = Single , Prescaler = Auto

'Now give power to the chip
Start Adc
'With STOP ADC, you can remove the power from the chip
'Stop Adc

Dim W As Word , Channel As Byte
Channel = 0

'now read A/D value from channel 0
Do
  W = Getadc(channel)
  Print "Channel " ; Channel ; " value " ; W
Loop



Glede na že povedano, predvidevam, da boš dobil v spremenljivki W napetost izraženo v napetostnih enotah VREF/1024
torej, če bo napetost 5V in referenčna napetost tudi 5V potem boš dobil rezultat 1024. Če hočeš to napisati v voltih z desetinkami moraš to računsko popraviti, da boš dobil 50 kar naj bi predstavilo 5.0V
Račun, ki ga moraš dodati pred Loop ukazom bo potemtakem:

Koda:
Dim W2 as word
w2 = w * 50
w2 = w2 / 1024
print W2


Ampak kot rečeno, ne pripovedujem to iz lastnih izkušenj, temveč ker mislim, da bi nekako tako moralo delovati
Tisti Prescaler se mi zdi manj pomemben

In če hočeš napisati rezultat kot 5.0V potem moraš še ločiti desetinke od celih voltov v dve ločeni spremenljivki

Koda:
dim volti as word
dim desetinke as word

volti = W2 / 10
desetinke = W2 mod 10
print "Napetost je ";volti;".";desetinke;"V  "


Najbolje je, da probaš.

Avtor: program_erKraj: Maribor (Pohorje) PrispevekObjavljeno: Pet Apr 25, 2008 7:06 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Finta je v tem, da trenutno ne morem probavat, ker nimam delujočega programatorja. SadSad

Avtor: vilkoKraj: Dragomer PrispevekObjavljeno: Pet Apr 25, 2008 8:14 pm    Naslov sporočila:  A, ti nas tako, hipotetično ..
----------------------------------------------------------------------------
A, ti nas tako, hipotetično ..

Avtor: program_erKraj: Maribor (Pohorje) PrispevekObjavljeno: Sob Apr 26, 2008 10:06 am    Naslov sporočila:  Re: A, ti nas tako, hipotetično ..
----------------------------------------------------------------------------
vilko je napisal/a:
A, ti nas tako, hipotetično ..


NE, jaz se samo učim zaj. Saj mam programator, pa se mi je pokvaro. Zaj pa čakam na AvrUSB prog od @VolkD.

Sem malo premišlejval pa mislim da razumem zaj to tvojo enačbo.
Če mam 8-bitni ADC moram delit potem z 256, kaj pa če imam 10-bitni?

Sem malo preračunaval pa sem ugotovil, kako dobim iz tvojega računa direktno mV. Če je referenčna napetost 5V, na vhod pa pripeljem 2,5V bo moj račun takšen:
&H80 = 128 (če mi to vrže v programu)
128 x 5 = 640
640 x 1000 (ne 10) = 640000
640000 : 256 = 2500 (in dobim rezultat v mV)

Pa jaz v primeru od @Dkone (spletne strani, ki jo je dal) ne vidim ukaza &H80... Ali to cifro shrani program v spremenljivko W (v tem primeru) in je pol v praktiki ta cifra (v našem primeru 128-) shranjena v spremenljivki W?

Stran 2 od 38

Powered by phpBB © 2001,2002 phpBB Group