A/D převodník - po zapojení k PIC poklesne na čidlu napětí

Mám PIC 16F877A s nastaveným A/D převodníkem. Když vezmu obyčejnou baterku a zem u baterky dam na zem PICka. +5V baterky dám na pin PICa kde je A/D převodník, tak to normálně to funguje. Mám magnetické čidlo, které je uzěmněno na zemi PICka. Když měřím multimetrem a neni vystup zapojen na PIC tak mi ukazuje multimetr 4,7V. jakmile to zapojim na PIC tak multimetr ukazuje 0,54V nevíte proč to může být?

Nebo také na jeden PIN dám logickou 1. Multimetrem naměrím asi 5,05V a když to spojím s pinem A/D převodníku, tak mi tam napětí spadne na 2,5V nevíte proč?

:arrow_right: administrator: přejmenováno z "Špatně fungující A/D převodník s čidlem."

Bude asi lepší sem dát nějaké schéma a kousek kódu.

Schéma zapojení čídla nemám to dělá můj spolužák. A/D převodník funguje skvěle, vyskoušel jsem ho na baterce a dalších věcech. Ale když dám na nějakej PIN +5V a spojím ho drátkem s pinem A/D převodníku, tak napětí spadne z 5V na 2,5V. To nechápu proč.

Tady je kousek programu na ovládání A/D převodníku. Mám krystal 20MHz na frekvenci.

	movlw	.1
	movwf	pin_adp
	movlw	2h	
	movwf	ADCON1
	call	         pin_ad
	bsf		ADCON0,ADCS1
	bcf		ADCON0,ADCS0
	bsf		ADCON0,ADON
	bcf		PIR1,ADIF
	bsf		STATUS,RP0
	bsf		PIE1,ADIE
	bcf		STATUS,RP0
	bsf		INTCON,GIE
	call	CEK40
	bsf		ADCON0,GO_DONE 
prevodnik_smycka	
	btfsc	ADCON0,GO_DONE	
	goto	prevodnik_smycka
   pin_ad pouze nastavuje kterej pin bude brán jako vstupní v tu chvíly.

No, tenhle kus kódu jsem zrovna nemyslel, to je jedno, spíš mě zaráží ten pokles napětí, z jakého pinu bereš log1 pro ten vstup A/D.

Nemáš náhodou TRISA jako OUT co máš jako A/D?

Tak do TRISA dávám 0h. Takže je nastavenej jako OUT. Skusím to teda změnit a dám vědět jestli to bude mít nějaký vliv na ten převod. Logickou jedničku nastavuju na RE0. Instrukcí BSF PORTE,0 .

Urcite bude mat vplyv, ved to konieckoncov aj tvrdia v datasheete.
Vystupny buffer je aktivny vzdy ked je TRIS v stave 0, bez ohladu na to, ci nieco robite s AD prevodnikom alebo nie.

:arrow_right: administrator: příspěvek byl upraven
Předchozí příspěvky se necitují.

Ten pin, na kterém máš nastaven AD musís mít jako IN.
Pokud jsi natvrdo připojil log 1 na log 0 a nebo opačně, měl by jsi si koupit nějaké PICky do zásoby. :smiley:

PORTE taky může sloužit jako A/D vstup, měl bys ho správně nastavit.

Tak chyba byla nv nastaveni TRISA… po nastavení jako IN věe funguje. Zásobu PICků jsem si udělal, protože jsem uškvařil všechny piny na PORTE.

jestli muzu poradit tak si pri takovyhlech testech dej mezi pin a externi zdroj odpor <200 Ohm :bulb:, omezis tim max proud a nehrozi ze by se ti odpalil pin , az si budes jistej ze je to ok muzes ho vyndat (odpor)

a inac nieje odveci pouzit filtracny rc clen na vstupe AD prevodnika …a hned mas vyriesene dva poblemy ochranu aj odrusenie.

To Atlan:
A prosim ta ako taky RC clen na vstupe AD mal vyzerat??
dakujem Vladimir

Taky by mě to zajímalo. A mimo to,že asi RC člen ovlivní měřenou hodnotu, ale to by se mohlo ošetřit v programu.

Na vstupu každého A/D, kde je možnost výskytu frekvencí vyšších než Fs/2 (polovina vzorkovací frekvence) je nezbytný analogový AA filtr. Jeho parametry závisí na aplikaci, ale měl by to být alespoň LC filtr 2. řádu. Pokud se vám totiž dostane na vstup frekvence vyšší než Fs/2, budete měřit nesmysly díky překrývání spekter. Výjimku tvoří zpracování pásmových signálů s využitím podvzorkování, ale to nebude váš případ. Správně navržený filtr ovlivňuje měřený signál v propustném pásmu minimálně. Samozřejmě je důležité, jesli vás zajímá přesnost měření v dB nebo %. To je ale pravděpodobně pro většinu vašich konstrukcí nedůležité. Jednoduchý RC filtr je kondik paralelně mezi vztupem A/D a GND, R se pak nachází mezi vstupem A/D a zdrojem signálu. Časová konstanta T=R*C. T se volí tak, aby mezní frekvence f=1/T byla pod Fs/2.
RC článek je sice leší než drátem do oka (což by odpovídalo neošetřenému vstupu), ale také žádný zázrak :wink: Ovšem když výrazně nepomůže při zpracování signálu, aspoň částečně chrání mcu.

No netreba to prehanat ja som skromne predpoklada ze bude merat nejke napatie na baterke alebo nieco take nie prudko meniace. Tj aby mu nejaky impulz zabludeny nevyhodil hodnotu 50x vecsiu nez tam je… a potom to riesil ako niektory zpriemerovanim na 1000 cisel a cudoval sa ze furt to mera nezmysly.