Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
tonko Član


Pridružen-a: Sob 25 Jun 2005 13:45 Prispevkov: 541 Aktiv.: 2.28 Kraj: Črnomelj
|
Objavljeno: Pet Okt 11, 2013 7:22 am Naslov sporočila: |
|
|
Glede na to da imaš na vhod priključen potenciometer, ki nima hitrih sprememb analogne vrednosti je najenostavneje če povprečiš meritve npr. 10 , 50 ali 100 AD pretvorb.
Probaj, mora biti precej boljše.
Z zunanjim ADC-jem bodo verjetno podobni rezultati, ker je v MCP3002 uporabljen SAR ADC 200ksps, podoben kot v PIC-u.
Če želiš stabilne meritve mora biti ADC počasen, npr. Dual slope ali Delta sigma. |
|
Nazaj na vrh |
|
 |
mucek Član


 
Pridružen-a: Tor 01 Avg 2006 10:47 Prispevkov: 5538 Aktiv.: 24.02 Kraj: Domzale
|
Objavljeno: Pet Okt 11, 2013 8:49 am Naslov sporočila: |
|
|
NUJNO!
Poleg C1 (pri U1) dodaj obvezno še en večji keramični/tantal/elko (po možnosti kak low esr) kondenzator. Ko se ti LEDice prižigajo, nimajo s kje jemati "zaloge" in ti delajo svinjarijo ...
LP, g
p.s. Če kaj proti LJ hodiš, prileti mimo Trzina, pa prinesi s sabo in bomo že nalotali kondenzatorje, da bo delalo  _________________ ...lahko pa se tudi motim ... |
|
Nazaj na vrh |
|
 |
petkomatej Član

Pridružen-a: Sob 07 Sep 2013 23:05 Prispevkov: 30 Aktiv.: 0.21 Kraj: Litija
|
Objavljeno: Pet Okt 11, 2013 9:32 am Naslov sporočila: |
|
|
hvala tonko, ravno s povprecjem se trenutno igram. sporočim rezultate
mucek je napisal/a: |
Poleg C1 (pri U1) dodaj obvezno še en večji keramični/tantal/elko (po možnosti kak low esr) |
mi lahko daš konkreten kondenzator. torej ga dam vzporedno k C1? |
|
Nazaj na vrh |
|
 |
mucek Član


 
Pridružen-a: Tor 01 Avg 2006 10:47 Prispevkov: 5538 Aktiv.: 24.02 Kraj: Domzale
|
Objavljeno: Pet Okt 11, 2013 9:53 am Naslov sporočila: |
|
|
Daj kakih 220 uF ali 470. _________________ ...lahko pa se tudi motim ... |
|
Nazaj na vrh |
|
 |
petkomatej Član

Pridružen-a: Sob 07 Sep 2013 23:05 Prispevkov: 30 Aktiv.: 0.21 Kraj: Litija
|
|
Nazaj na vrh |
|
 |
petkomatej Član

Pridružen-a: Sob 07 Sep 2013 23:05 Prispevkov: 30 Aktiv.: 0.21 Kraj: Litija
|
Objavljeno: Pet Okt 11, 2013 11:42 am Naslov sporočila: |
|
|
Mi lahko kdo pomaga kako napisat funkcijo ki mi najprej 10x prebere ADC vrednosti in nato izračuna povprečje.
uporabljam compiler od mikroelektronike (mikroc)
v main funkciji berem vrednosti
Koda: |
adc_vrednost = ~(Adc_Read(1) >> 2) + 256; |
v prekinitveni rutini ki se izvede vsake 2ms pa bi rad izračunal povprečje in vrnil to vrednost. |
|
Nazaj na vrh |
|
 |
. Neznanec

Pridružen-a: Pet 01 Okt 2004 1:17 Prispevkov: 1 Aktiv.: 0.00
|
Objavljeno: Pet Okt 11, 2013 12:08 pm Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika. |
|
Nazaj na vrh |
|
 |
petkomatej Član

Pridružen-a: Sob 07 Sep 2013 23:05 Prispevkov: 30 Aktiv.: 0.21 Kraj: Litija
|
Objavljeno: Pet Okt 11, 2013 12:20 pm Naslov sporočila: |
|
|
hvala, bom vse poizkusil v ponedeljek ko dobim komponente. še vedno ne vem če je mucek mislil 22uF ali 220uF? ta čas bom pa poizkusil zadevo rešit v firmware. |
|
Nazaj na vrh |
|
 |
mucek Član


 
Pridružen-a: Tor 01 Avg 2006 10:47 Prispevkov: 5538 Aktiv.: 24.02 Kraj: Domzale
|
Objavljeno: Pet Okt 11, 2013 1:03 pm Naslov sporočila: |
|
|
220uF elko
22 uF keramika
100 nF keramika
Izogibaj se "inženirskih" problemov (slabo blokiranje motenj, neustrezna izvedba napajanja ...) reševati programsko (čeprav se pogosto da), ker na dolgi rok to ne pripelje do ustreznih rezultatov!
LP, g _________________ ...lahko pa se tudi motim ... |
|
Nazaj na vrh |
|
 |
petkomatej Član

Pridružen-a: Sob 07 Sep 2013 23:05 Prispevkov: 30 Aktiv.: 0.21 Kraj: Litija
|
Objavljeno: Pet Okt 11, 2013 1:29 pm Naslov sporočila: |
|
|
Hvala!
sporočim rezultate v ponedeljek. se vedno pa se mucim s softwareom in povprečjem vseh prebranih vrednosti |
|
Nazaj na vrh |
|
 |
tonko Član


Pridružen-a: Sob 25 Jun 2005 13:45 Prispevkov: 541 Aktiv.: 2.28 Kraj: Črnomelj
|
Objavljeno: Pet Okt 11, 2013 1:42 pm Naslov sporočila: |
|
|
Ne poznam Mikroc-ja, v 'C'-ju bi moralo delovati tole:
Koda: |
{
unsigned char i;
unsigned int tmp = 0;
for(i = 0; i < 10; i++) //NAREDI 10 MERITEV NA ADC VHODU
{
tmp += Adc_Read(1); //SESTEVAJ VREDNOSTI POSAMEZNIH AD PRETVORB
}
adc_vrednost = tmp / 10; //SESTEVEK DESETIH MERITEV DELI Z 10
}
|
|
|
Nazaj na vrh |
|
 |
petkomatej Član

Pridružen-a: Sob 07 Sep 2013 23:05 Prispevkov: 30 Aktiv.: 0.21 Kraj: Litija
|
Objavljeno: Pet Okt 11, 2013 1:46 pm Naslov sporočila: |
|
|
Točno tako imam, pa nekaj ne štima. Mogoče ga matra pretvorba iz double v int, tam kjer delim vrednost z 10? |
|
Nazaj na vrh |
|
 |
tonko Član


Pridružen-a: Sob 25 Jun 2005 13:45 Prispevkov: 541 Aktiv.: 2.28 Kraj: Črnomelj
|
Objavljeno: Pet Okt 11, 2013 2:08 pm Naslov sporočila: |
|
|
Kakšen double ?
double = double precision floating-point type - tega nimaš kaj rabit v tvojem primeru
Tukaj rabiš samo unsigned int in nič drugega.
unsigned int adc_vrednost; |
|
Nazaj na vrh |
|
 |
petkomatej Član

Pridružen-a: Sob 07 Sep 2013 23:05 Prispevkov: 30 Aktiv.: 0.21 Kraj: Litija
|
Objavljeno: Pet Okt 11, 2013 2:08 pm Naslov sporočila: |
|
|
eh smotan sem... ob vsakem izračunanem povprečju sem pozabil resetirati vrednost na 0, zato se mi je skos povečevala oziroma seštevala  |
|
Nazaj na vrh |
|
 |
petkomatej Član

Pridružen-a: Sob 07 Sep 2013 23:05 Prispevkov: 30 Aktiv.: 0.21 Kraj: Litija
|
Objavljeno: Pet Okt 11, 2013 2:32 pm Naslov sporočila: |
|
|
hmmm tale rešitev v firmware je pomagala. uporabim kar povprečje prvih 50 pretvorb. vsekakor pa bom poiskal rešitev drugje kot ste predlagali. se slišimo v ponedeljek
hvala vsem pa lep vikend  |
|
Nazaj na vrh |
|
 |
|