Triangulering med PIC

Berätta om dina pågående projekt.
jonwas-2
Inlägg: 28
Blev medlem: 11 mars 2006, 17:50:09

Triangulering med PIC

Inlägg av jonwas-2 »

Hej alla!

Jag har ett litet projekt på G där jag vill tillämpa triangulering för att possitionsbestämma en viss händelse i ett koordinatsystem. Förloppet och tanken ser ut enligt nedan.

1) Händelsen inträffar (tex någon pratar i ett rum)
2) Ljudet når fram till sensor 1, efter tiden t når ljudet till sensor 2, och efter t2 når ljudet sensor 3.
3) Man tar emot de analoga signalerna, vaskar fram t och t2 och beräknar sedan possitionen i rummet där personen stog och pratade.
4) En PC visar upp koordinaten i någon form av visualisering.

Nu är det som så att jag har några alternativ av utförande som jag väljer mellan.

A) Låta en PIC köra A/D-konverteringen och ta fram t och t2 samt efter det beräkna koordinaten och skicka den vidare till PC'n

B) Låta en PIC sköta A/D-konverteringen och ta fram t och t2 för att sedan skicka dem till PC'n som sköter beräkningen av koordinaten som sedan visar den.


Nu är det också så att jag är ny på området microkontrollrar och har läst lite literatur men fortfarande har jag några frågeställningar.
Klara en PIC av att köra allt enl utförande nr A, eller är det bäst att köra enl alternativ nr B. Hur kan en pic få fram tiden i sekunder mellan de tre signalerna som kommer från sensorerna i rummet?
Har läst lite om timers som finns på pic'arna, men kan inte se hur jag kan få ett tidsvärde från den.

Är det någon som har ett bra förslag på hur man kan göra????

Mvh Jonas
Användarvisningsbild
JimmyAndersson
Inlägg: 26308
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Intresssant projekt!

Jag har (än så länge) inte programmerat ljud på PIC-kretsar, men några idéer kanske jag kan bidra med:

Öronen/hjärnan använder transienterna (det absolut första innehållet i ett ljud) för att bestämma riktning. Det är ett användbart sätt även i detta fallet. Det går även att avgöra riktning om man analyserar hur ljudet studsar i omgivningen, men det är ganska mycket svårare.

Man behöver bara avläsa korta tider (max ca 200ms). Upplösningen (dvs antal nivåer) behöver däremot vara god. Ofta är transienterna ganska diskant-rika, men samtidigt så minskar diskantinnehållet ganska snabbt när avståndet mellan personen och sensorn ökar, så man behöver inte kunna registrera frekvenser högre än ca 6-7kHz iallafall. För att inte elda massa kraft i onodan så tror jag en samplingshastighet på 10kHz vore lagom. I ljudsammanhang brukar man använda Nyqvist's teori med att använda dubbla samplingshastigheten, men så långt behöver man inte gå här. Det hade varit en annan sak om du skulle registrera fladdermöss.. :)


Phu, mycket text, men ungefär sådär borde specifikationerna för A/D-omvandlingarna se ut. Själva omvandligarna borde en PIC-krets klara. Frågan är om en PIC-krets dessutom skulle orka med alla beräkningar.

En helt annan idé är ju att göra allt i PC'n. Då behöver du bara ett (eller flera) ljudkort som totalt ger tre ingångar, sedan är det bara beräkningarna kvar.

Men om jag måste välja mellan A och B, så röstar jag nog på B.
jonwas-2
Inlägg: 28
Blev medlem: 11 mars 2006, 17:50:09

Inlägg av jonwas-2 »

Jo jag tror också att det kan bli tungt för PIC att lösa det ekvationssystem som blir av det hela.
Men det kommer behövas mer sampling än 10 khz. har provat i labmiljö och kommit fram till att jag behöver åtminstone 65khz per kanal för att få en god upplösning (Helst mer). Man kan iof sampla saktare och sedan matematiskt interpolera fram en kurva, men då kan man få endel fel.

Bifogar en bild nedan som visar tre signaler i ett test.

Bild

Det är tidsförskjutningarna mellan dessa kurvor jag vill ha ut, och hur gör man lämpligast det med en PIC??
Som sagt jag lär ha tidsangivelser i Sekunder för att jag ska kunna räkna fram en koordinat sedan.
I testerna som bilden ovan visar har jag tagit tiden för topparna på resp kurva för att få ut tidsförskjutningarna, kan man göra på annat sätt???

Illuwatar: fixade din bild - en img-avslutning saknades, dessutom verkar din webserver vara teckenkänslig (måste ha stora bokstäver i ".JPG").
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43178
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Inlägg av sodjan »

En PIC (eller liknande microcontroller) är säkert lämplig för att
beräkna tidsdifferenserna mellan de olika mickarna, men däremot
så tror jag att du ska ha någon signalanpassning mellan mickarna
och PIC'en. Du behäver inte alls köra någon ADC, se bara till att
du får in en "flank" när ett ljud har uppträtt på ett par olika
ingångar och mät tiden mellan flankerna. Antagligen ett par
opamps med lämplig koppling.

Om du ska försöka köra en lösning där du "läser" signalen
direkt från mickarna "analogt" via ADC'n, så tror jag att du får
problem med timingen mellen kanalerna. Möjligtsvis om du kör
en PIC som har samtidig sampling på flera kanaler...

Jag utgår från att det är "tyst" i rummet innan rösten kommer !?

Sen, om man ska triangulera eller inte är väl en smaksak. Det beror
lite på önskad upplösning o.s.v. Men för en person bör väl +/- 1 dm
räcka !?
jonwas-2
Inlägg: 28
Blev medlem: 11 mars 2006, 17:50:09

Inlägg av jonwas-2 »

tackar för förslaget sojdan!

Men jag är inte så vidare värst inne på elektronik och förstår inte riktigt ditt resonemang med flankerna, som jag kan förstå så menar du att jag ska koppla opamps i någon slags koppling som gör att jag får en "puls" då ett ljud med den frekvensen jag letar efter träffar en mikrofon? och sedan räkna tiderna mellan "pulserna" som kommer till pic'en?
är jag rätt ute?

Det ska inte behöva vara helt tyst i "rummet" innan jag ska mäta, men amplituderna som jag ska mäta på är mkt större än det almänna amplituderna (bruset) som ligger hela tiden.

Kretsen som jag vill göra vill jag ha så att den är adapterbar på flera olika saker vad gäller possitionsbestämming, inte bara en person i ett rum.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43178
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Inlägg av sodjan »

Om du vill försöka ha en *kontinuerlig* positionsberäkning under tiden
som en person t.ex pratar hela tiden, så är det naturligtsvis en helt
annan fråga ! Är det det du vill ?

Opamparna skulle förstärka och klippa (förenklat) så att man får en tydlig
puls/flank då ljudet startar.

> amplituderna som jag ska mäta på är mkt större än det almänna
> amplituderna (bruset) som ligger hela tiden.

D.v.s trimming av de analoga (opamp) delarna för att hitta rätt "triggpunkt".
Eventuellt skulle det kunna göras dynamiskt.

> Kretsen som jag vill göra vill jag ha så att den är adapterbar på flera olika
> saker vad gäller possitionsbestämming, inte bara en person i ett rum.

Som vadå t.ex ???
jonwas-2
Inlägg: 28
Blev medlem: 11 mars 2006, 17:50:09

Inlägg av jonwas-2 »

Jag vill inte ha en konternuerlig bestämming, bara en bestämming av en ljudpuls från en viss plats.

Tänkta användningsområden kan vara att tex på boulebana bestämma var boulekulan landade, vart en lufgevärskula träffar tavlan mm..... det är därför vill jag att den ska kunna "lyssna" till många olika frekvenser på ljud.

Kan man kanske göra så att när pic'en upptäcker att spänningen från en mikrofon går över ett visst värde så lagrar den upp värden under en viss tidsperiod, säg 500ms, och sedan skickar värdena till PC'n för behandling.
Men då måste jag också ha en tidsreferens för varje datapunkt. hur gör man det??
Kan man anta att pic'en samplar med konstant tidintervall??
Användarvisningsbild
björn
EF Sponsor
Inlägg: 2570
Blev medlem: 29 mars 2004, 23:09:55

Inlägg av björn »

Det var inga lätta krav, luftgevärskula och boulekula är nog inte helt lätt. Framförallt inte var luftgevärskulan träffar.
jonwas-2
Inlägg: 28
Blev medlem: 11 mars 2006, 17:50:09

Inlägg av jonwas-2 »

hehe, njaa.. men helt klart genomförbart.
Har provat upställningen i lab och fått det att fungera godkänt.

Så nu vill jag gå vidare å göra en egen enhet för datainsamlingen, då vi i labbet använde samplingskort som hade 20Msps. Och de kostar ju endel och är inte särskilt mobila :D
Användarvisningsbild
JimmyAndersson
Inlägg: 26308
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Det här med att du behöver sampla i (minst) 65kHz låter intressant.
Vad hände vid lägre hastigheter?

Hur hög noggranhet vill du ha på resultatet?
Användarvisningsbild
BER
Inlägg: 395
Blev medlem: 9 mars 2005, 00:02:10
Ort: Östergötland

Inlägg av BER »

Tidsskillnaden fås enklast fram med korskorrelation (KKF).

http://astronomy.swin.edu.au/~pbourke/other/correlate/

Med KKF kan du även avgöra vad som är eko och inte. Med tre kanaler på 65 kSa kan det nog bli lite tungt att hinna korrelera för PIC. Borde gå att lösa om du bara packar samplena och skickar dem till en PC, som får sköta beräkningen. Det krävs en del banbredd mot PC:n, så USB kanske vore bra.
jonwas-2
Inlägg: 28
Blev medlem: 11 mars 2006, 17:50:09

Inlägg av jonwas-2 »

Bra tips där om korskorrelationen, ska läsa på lite på det området....

Jimmy
Kör man enl nyqvist så får man ju enbart två mätvärden per period på vågen, det räcker för att säga vilken frekvens det var på ljudet men inte för att jämföra de tre vågorna, jag behöver fler mätvärden per period om jag ska kunna bestämma topparna på vågorna med hjälp av "rådatat" från samplingen.
Jag kan iof köra med lägre samplingsfrekvens men då lär jag ta de mätvärdena och matemariskt interpolera fram en funktion för kurvorna och med funktionerna bestämma tidsvärdena för topparna. Och då kan det bli många oberäknerliga felkällor.

Därför vill jag ha hög samplingsfrekvens....Men ska kolle upp det där med korskorrelationen, då kanske det går med lägre samplingsfrekvens..
Gimbal
Inlägg: 7932
Blev medlem: 20 april 2005, 15:43:53

Inlägg av Gimbal »

Min första tanke var exakt samma som sodjans, lite op-ampar som triggar när ljudnivån går över en viss nivå och skickar en puls till mikrocontrollern som mäter tidskillnaden och räknar ut positionen.

Men positionera en luftgevärskulas träff på en tavla kräver löjligt hög precision om det skall vara användbart, kan nog också bli svårt att trigga på rätt ljud om det inte sticker ut ordentligt från bakgrundsljudet.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43178
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Inlägg av sodjan »

> Men positionera en luftgevärskulas träff på en tavla kräver löjligt hög precision om det skall vara användbart,

Det jag undrar är *varför* ?
Det syns ju normalt tydligt var kulan träffade...
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

Inlägg av MicaelKarlsson »

Intressant projekt!!

jonwas-2: Är det verkligen triangulering du är ute efter? Om inte jag är alldeles ute på cykeln så beräknar man positionen med hjälp av vinklar, hur får du fram dem?
Skriv svar