 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
mucek4 Član


Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 12.46 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Čet Jun 07, 2007 10:21 am Naslov sporočila: AD pretvorba pri 12F675 |
|
|
Imam sledečo težavo.
AD pretvorba na omenjenem PIC-u deluje, vendar mi, četudi je povezana z maso vrača vse od 0 pa do 30 (decimalno). Ko sem svoj protoboard opremil z veliko količino kondenzatorjev, pretvorba še vedno niha, vendar malo manj (namesto 5 bitov niha 2).
Kaj je še za narediti, da bi prišel do točnosti v datasheetu 0.5 LSB? Pretvorbo zaenkrat ne delam v sleep načinu, vendar je to tudi možnost. |
|
Nazaj na vrh |
|
 |
jur Član


Pridružen-a: Pet 02 Dec 2005 14:45 Prispevkov: 5142 Aktiv.: 21.71 Kraj: [color=zelena]Ljubljana[/color]
|
Objavljeno: Čet Jun 07, 2007 11:49 am Naslov sporočila: |
|
|
Samo velika količina kondenzatorjev ni dovolj. Biti morajo prave kapacitete in pravega tipa. Poleg tega je potreben tudi pravilen layout tiskanega vezja z pravilno izpeljanimi masami. Analognimi in digitalnimi masami. Obstojajo navodila (application notes in podobno na microchipovem webu), kakšen je pravi design delujočega vezja.
Jur |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Čet Jun 07, 2007 12:19 pm Naslov sporočila: |
|
|
Nekaj je narobe. Če je koda assemblerska jo pripni, da vidim kaj delaš narobe. _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
mucek4 Član


Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 12.46 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Čet Jun 07, 2007 12:27 pm Naslov sporočila: |
|
|
Inicializacija:
Koda: |
BANK1
movlw b'00010001' ; set conversion time Fosc/8 and enable AN0
movwf ANSEL
movlw b'00001001' ; GP0 & GP3 input
movwf TRISIO ;
BANK0
movlw b'00000111' ; disable comparator module
movwf CMCON ; to enable digital I/O
movlw b'10000001' ; enable AD, right justified, Vdd reference, channel AN0 and power on AD
movwf ADCON0
|
in zajem
Koda: |
;make AD conversion
bsf ADCON0, GO ; Set go bit to start AD conversion
AD_WAIT
btfsc ADCON0, GO ; If AD operation is not compete
goto AD_WAIT ; we wait
movf ADRESH, w ; move AD result into variables
movwf NumH ;
BANK1
movf ADRESL, w ;
BANK0
movwf NumL ; |
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Čet Jun 07, 2007 12:51 pm Naslov sporočila: |
|
|
Koliko časa poteče od vklopa AD modula, oz kako pogosto se ponavlja meritev? _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
mucek4 Član


Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 12.46 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Čet Jun 07, 2007 1:21 pm Naslov sporočila: |
|
|
Pred AD konverzijo čaka na overflow timerja 0, ki traja cca 16ms. To pomeni oktog 61x na sekundo. |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Čet Jun 07, 2007 3:34 pm Naslov sporočila: |
|
|
Časa je več kot dovolj. Preveri, če je s tisto rutino vse vredo. Po mojih izkušnjah se je napisano dogajalo, če si izvedel meritev prehitro potem, ko si vklopil AD. _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Highlag Član


Pridružen-a: Pet 23 Jan 2004 20:42 Prispevkov: 4034 Aktiv.: 17.03 Kraj: Črnuče
|
Objavljeno: Čet Jun 07, 2007 9:21 pm Naslov sporočila: |
|
|
Meni je tole delovalo:
Koda: |
; Izhodi:
; GP0=Vhod=Detekcija bremena. Analogni vhod z A/D pretvorbo
PROCESSOR 12f675
#include "P12F675.INC"
ERRORLEVEL -224, -302, -308, -205
__CONFIG _CP_ON & _CPD_OFF & _BODEN_ON & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT
#DEFINE U_min b'00100111' ; minimalna vrednost napetosti detekcije (0,8V)
; je b'0010011100' =156 od tega gre v ADRESH 8 zg. bitov
; b'00100111' = 0x27
Cblock 0X20 ; Začetek RAM-a
Izmerjeno ; Vrednost A/D
endc
ORG 0x00 ; reset vektor
GOTO Main ; skok na Main
Main
BCF STATUS, RP0 ; izberemo banko 0
CLRF GPIO ; GPIO=0
MOVLW b'00000111' ; 00000111 ->W
MOVWF CMCON ; Comparatorji so izklopljeni
BSF STATUS, RP0 ; izberemo banko 1
MOVLW b'00010001' ; ADSC = 001 -> Fosc/8, ANS0 =1 -> GP0= analogni vhod
MOVWF ANSEL ; GP0= analogni vhod, hitrost konverzije= Fosc/8 =2uS
MOVLW b'00101001' ; 00101001 -> W
MOVWF TRISIO ; RP0, 3, 5=vhod, RP1,2,4=izhod,
BCF STATUS, RP0 ; izberemo banko 0
CLRF ADCON0 ; ADFM=Left justified, VCFG=Vdd, Izbran AN0, Go=No, A/D=Off,
AD_pretvorba:
BSF ADCON0, ADON ; vklop A/D modula
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP ; počaka pribli·no 3uS (Priporoeena vrednost za 4MHz =2-4uS
BSF ADCON0, GO ; spro·i branje analogne vrednosti
BTFSC ADCON0, GO ; je GO bit =0 -> Branje analogne vrednosti koneano?
GOTO $-1 ; NE -> poizkusi ponovno prej‘nji korak
MOVF ADRESH, W ; DA -> ADRESH -> W (Analogna vrednost)
BCF ADCON0, ADON ; izklop A/D modula
MOVWF Izmerjeno ; vrednost A/D pretvorbe se shrani v register Izmerjeno |
Štos je bil v tistih NOP ukazih pred BSF ADCON0, GO _________________ If at first you don't succeed, destroy all evidence that you tried. |
|
Nazaj na vrh |
|
 |
mucek4 Član


Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 12.46 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Pet Jun 08, 2007 7:05 am Naslov sporočila: |
|
|
Časa je dovolj, ker sedaj med merjenji preko RS232 pošljem 16 znakov z 2400 bps. Bolj me zanima je možnost, da bi meritev nihala zaradi zunanjih motenj, 7805 stabilizatorja, ... Ker se je po vezavi nekaj elektrolitov in 100nF kondenzatorjev odstopanje močno zmanjšalo. |
|
Nazaj na vrh |
|
 |
zcetrt Član


Pridružen-a: Tor 13 Dec 2005 11:29 Prispevkov: 275 Aktiv.: 1.16 Kraj: Ljubljana
|
Objavljeno: Pet Jun 08, 2007 8:45 am Naslov sporočila: |
|
|
Že večkrat sem uporabljal AD konverter na protoboardu, ki je napajan z usmerniškim 12V adapterjem preko 7805 regulatorja. Okrog napajanja imam vezan le en elektrolit 47u in dva 100n poliesterska (eden pred 7805 in eden za). Večjih odstopanj med samimi meritvami še nisem opazil (običajno niha le LSB), pri vezavi na gnd ali Vdd pa se vrednost zabetonira na 0 oz. 1024.
Res je, da sem najpogosteje uporabljal 16 serijo mikrokrmilnikov, a mislim, da tu pretiranih razlik ne bi smelo biti. Če imaš na voljo še kakšno 12F, poskusi z njo. Obnašanje vsekakor ni normalno. _________________ 4. |
|
Nazaj na vrh |
|
 |
mucek4 Član


Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 12.46 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Pet Jun 08, 2007 10:04 am Naslov sporočila: |
|
|
Druge serije nimam imam pa druge procesorje iste serije. Poizkusil sem s tremi in povsod ista stvar  |
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.62 Kraj: Trzic
|
Objavljeno: Pet Jun 08, 2007 10:19 am Naslov sporočila: |
|
|
Poskusi napajanje priključiti na baterije. Če se bo pojav končal, veš kje iskat krivca. _________________ Lp,
Matevž |
|
Nazaj na vrh |
|
 |
California Član

Pridružen-a: Pet 26 Avg 2005 19:48 Prispevkov: 236 Aktiv.: 1.00 Kraj: Hrastnik
|
Objavljeno: Pet Jun 08, 2007 11:18 am Naslov sporočila: |
|
|
Pred leti sem imel podobne probleme. Ugotovil sem, da je vzrok za probleme v motnjah na kablu. Z osciloskopom jih je bilo možno lepo videti. Uporabil sem mrežni kabel z opletom in motnje so se poslovile.
Seveda je pa kvalitetno napajanje tudi pogoj za normalno delovanje.
Lp.
Vlado _________________ California |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Pet Jun 08, 2007 12:38 pm Naslov sporočila: |
|
|
mucek4 je napisal/a: |
Časa je dovolj, ker sedaj med merjenji preko RS232 pošljem 16 znakov z 2400 bps. Bolj me zanima je možnost, da bi meritev nihala zaradi zunanjih motenj, 7805 stabilizatorja, ... Ker se je po vezavi nekaj elektrolitov in 100nF kondenzatorjev odstopanje močno zmanjšalo. |
Zakaj ne pripneš celotne kode? (danes sicer nimam časa, da bi jo pregledal a prepričan sem, da je nekaj narobe s programom) Kaj imaš za referenco, Vdd ali eksterno z GP1 ? Kak je conversion clock? Kak je oscilator(clock) pic-a? _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
mucek4 Član


Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 12.46 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Pet Jun 08, 2007 1:21 pm Naslov sporočila: |
|
|
Silvo je napisal/a: |
Zakaj ne pripneš celotne kode? (danes sicer nimam časa, da bi jo pregledal a prepričan sem, da je nekaj narobe s programom) Kaj imaš za referenco, Vdd ali eksterno z GP1 ? Kak je conversion clock? Kak je oscilator(clock) pic-a? |
Kode je veliko. Lahko ti jo pošljem na email. Referenca ja Vdd, conversion time je Fosc/8, clock je interni 4 MHz. |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 493 dni
Powered by phpBB © 2001, 2005 phpBB Group
|