0-5V kompas reference

D

DrWhoF

Guest
Jeg er nødt til at designe en enhed, der tager to 0-5V signaler: det ene kommer 0-360 ° kompas (reference), og man kommer fra et instrument fra inde i et rør.
Rørets position er fra kompas og instument's position skal beregnes med reference til kompas og output som ASCII via seriel port.
Jeg har brug for A / D konvertering og derefter nogle matematik til at beregne korrekt position af instrumentet.
Enhver hjælp er meget værdsat.
DrWho<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Meget glad" border="0" />
 
Hvis du er tilfreds med 10-bit konvertering, kan du gøre det med Picaxe-08m, som har tre 10-bit A / D og seriel port ..

Compass: 0-359deg <=> 0-5VDC <=> 0-1.023
Instrument: 0-359deg <=> 0-5VDC <=> 0-1.023

Det kan absolut position i det instrument, der skal beregnes på følgende måde:

Hvis [Compass] ≤ [Instrument] derefter [Resultat] = [Instrument] [Compass]
Hvis [Compass]> [Instrument] derefter [Resultat] = 1023 ([Compass] [Instrument])

Til output [Resullt] i 0 ° -359 ° interval, du bliver nødt til at formere den ved 360 og dividere med 1024, men i Picaxe-BASIC dette bør ikke være et problem ..

Rgds,
IanP

 
Hej Ianp.
Jeg har ikke Picaxe-08m, men jeg har Picaxe-18.
Kan jeg bruge det, og kan du komme med nogle Picaxe-grundlæggende kode

<img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Græder eller meget trist" border="0" />Tak<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Meget glad" border="0" />
 
Prøv Thie kode:

Kode:

»Micro: Picaxe-08m eller Picaxe-18X

"Input 1 [pin6] kompas som reference [Ref]

"Input 2 [pin5] encoder som instrument [Instr]setfreq M8 'seriel hastighed 9600bps ..start:

readadc10 1, w0 'Compass som reference => Ref. til W0

readadc10 2, W1 'Encoder som instrument => Instr til W1hvis W0 <= w1 derefter Situation1 'Res = Instr - Ref

hvis W0> W1 derefter Situation2 'Res = 360 - (Ref - instr)

goto startSituation1:

w2 = w1 - W0

goto calcSituation2:

w2 = 1023 - w0 W1 '0 / 359 => 0 / 1023 ..
med 10-bit ADC ..calc:

w3 = w2 * 30 '12 * 30 = 360

w3 = w3 / 32 '32 * 32 = 1024

w3 = w3 * 12

W4 = w3 / 32sertxd (# W4, $ 0D, $ 0A) 'sende W4 som ASCII [# W4]

'String format: [W4 CR LF]

pause 1000 'vent 1sek

goto startende
 
Jeg vil prøve det på mandag.
THX<img src="http://www.edaboard.com/images/smiles/icon_neutral.gif" alt="Neutral" border="0" />
 
Det fungerer fint, men der er lille problem, når instrumentet er potentiometeret mellem 5V og 0V (kontinuerlig rotation): læsning kan være alt mellem 0 og 359deg.
Hvordan kan det blive udbedret?
DrWho

 
Lyder ligesom puljen er død band fejl ..
Afhængig af værdien af din potentiometer, brug 10kΩ-100kΩ modstand til at trække spændingen ned til GND eller op til Vcc ..
Også, bør du overveje Rf / CF - se:
ftp://ftp.campbellsci.com/pub/csl/outgoing/uk/technotes/31_nov05.pdf

Rgds,
IanP

 
THX<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Meget glad" border="0" />
 

Welcome to EDABoard.com

Sponsor

Back
Top