3D-positionering mha ultraljud

Berätta om dina pågående projekt.
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

3D-positionering mha ultraljud

Inlägg av oJsan »

Har precis påbörjat en väldig skoj kurs på universitetet; 'Wearable Computers'. Med hjälp av en sändare och fem mottagare för ultraljud ska vi bygga ett handhållet/kroppsburet system som kan användas som en tredimensionell indataenhet till en PC. Sändaren hålls i handen och de fem mottagarna monteras på t.ex. magen. Tidsmätning sköts av en ATmega8 som sedan ska skicka mätdata till ett axis-kort för processing.
Än så har vi inte kommit speicellt långt men vi har lyckats mäta avståndet mellan en sändare och en mottagare med en noggrannhet på ungefär +/- 0,5cm. Vi behöver dock högre upplösning för att kunna beräkna en bra 3D-koordinat! Just nu mäter vi bara den tid det tar för pulsen att komma fram men den tiden blir inte korrekt pga signalnivåer osv. Så vi måste även mäta fasskillnad mellan utsignalen och insignalen. Mätningar av hela våglängder ger bara en upplösning på ca 8,5mm (340[m/s]/40000[Hz]).
Är det någon som vet om det färdiga chip klarar fasdetektering eller måste man bygga en faslägesdetektering med OP's och dyligt?
Övriga idéer tas gärna emot också!
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg av bengt-re »

Tipset är FM.modulera sändarsignalen med en ramp och ta emot signalen samtidigt. Blanda signalerna och deltaF ger dig avståndet. Det fungerar riktigt bra. Tipset är att sampla den mottagna signalen och sedan göra en FFT i uP på den och vips så har du alla ekoavstånd. Mätrepeterbarheten blir också bättre än att bara mäta "time of flight" då det är en längre signal som ger mätvärdet än bara flanken på sändpulsen.
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

Jag tror inte att jag förstår riktigt hur du menar... Kan du utveckla det där med att "modulera med en ramp"? Vi har tidigare funderat på att sampla signalen för att hitta första flanken men det krävdes aldeles för hög samplingshastighet för att vi skulle klara av det... och jag antar att det blir samma hastighet som måste användas här va? Runt 10Mhz samplingshastighet, vilket inte en uP klarar. Vår idé var då att använda en 1-bitars AD och en FIFO för att sampla.
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg av bengt-re »

Finessen är att du blandar sändarfrekvens med mottagen frekvens och då får ut skilnadfrekvensen. Har du en ramp där sändarfrekvensen ändras linjärt med exempelvis 100Hz per millisekund så ger ett avstånd på 65cm en delfaF på 190Hz typ. Lätt att sampla dessa frekvenser och avståndet är direkt linjärt med frekvensen. Enkel och bra metod. blir en del elektronik, men lätt att labba med - bygg bara sändardel, mottagardel och blandare så kan du med en oscilloscop med FFT kontrollera hur bra kretsen fungerar.
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

Ok, då är jag med på hur det fungerar, hittade några whitepapers på nätet! =) Hur hög nogrannhet kan man uppnå per mätning (Dvs utan att använda löpande medelvärden osv)?
Jag är ändå tveksam till metoden eftersom vi behöver göra minst ett tiotal hela mätningar per sekund. Antag att vi nöjer oss med 20 mätningar per sekund för fem givare. Detta innebär då 100 FFT/s, vilket jag är tveksam om vår embedded-PC klarar (samtidigt som den även ska beräkna position, korrektion och agera HID).
M!k@el
Inlägg: 173
Blev medlem: 25 oktober 2005, 12:38:51
Ort: Varberg
Kontakt:

Inlägg av M!k@el »

Välkommen till Forumet!

Hoppas du/ni lyckas
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg av bengt-re »

DÅ är valet att gå upp i högre frekvens på ultraljussändaren och acceptera att du förlorar räckvidd. för som du märkt måste det till lite mer avancerad signalbehandling för att få till noggranheten vid 40kHz.

kolla exempelvis på:http://www.lawicel-shop.se/shop/custom/ ... &refcode=p
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

Modulen som du länkade till har tyvärr för mycket riktverkan för vår applikation, dessutom så tror jag inte att budgeten håller för den. :?
För oss vore det mer intressant att bygga ett system med pulser som mäter time-of-flight. Vad som krävs för det är en AGC, envelopeföljare, differentiator och jaaaa... lite saker till...
För att ens göra en dålig mätning så behöver vi förstärka insignalen till en 'lagom' nivå.. Är det någon som har förslag på hur en AGC (automatic gain controll) lämpligast byggs eller om det finns färdiga kretslösningar för det?
Användarvisningsbild
Andax
Inlägg: 4373
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Inlägg av Andax »

Om det är en time of flight lösning kan man kanske använda en s.k. constant fraction discriminator (CFD) för att hantera variationer i den mottagna pulsens amplitud. Ni hittar säkert något schema om ni söker på google. Principen är mycket enkel, två komparatorer varav ena används för att tröskla bort brus och den andra har en deriverande länk bestående av ett RC-nät som hittar nollgenomgången hos den deriverade pulsen.
Nollgenomgången är oberoende av amplituden hos pulsen.
AND-a sedan ihop utgångarna från komparatorerna och låt den gå in på en interrupt på MCU så kan ni säkert mäta med en inbyggd timer med en upplösning på kanske 1 mikrosek vilket bör motsvara en avståndsupplösning på 0.170 millimeter.

Det skulle vara mycket enklare att tipsa om ideer om ni postade några typiska pulssvar som ni får från er mottagare.

Det kan vara troligt att ni redan har en deriverad signal där nollgenomgångsdetektion är en typ av fasmätning.
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

Tyvärr så har detta projekt stått rätt så stilla ett tag på grund av sjukdom, men nu börjar i jobba på det igen. Just nu känns allt omöjligt men vad tiden lider så blir det nog något tillslut!
I projektet ingår att vi ska "docka ihop" vår 3D-mojäng med en vanlig PC via Bluetooth. Vi trodde i början att det skulle vara enkelt men det verkar vara krångligare än vi trodde...
grundproblemet är: Går det att via en bluetooth-dongle få ett linuxsystem att agera som om det vore en HID-kompatibel Bluetooth-mus?!
Jag hittar knapphändigt med info på nätet, så jag sätter mitt hopp till att någon kanske har jobbat med HID-protokollet tidigare och vet vad som är möjligt. Vad jag vet är iaf att nyare SE-telefoner (t.ex. K700) kan dyka upp på en PC som att de var en HID-enhet (tangentbord eller mus).
Är det någon som har något info att tillföra som vi kan ha nytta av, då vore jag väldigt tacksam?
Barry_Lyndon
Inlägg: 557
Blev medlem: 14 november 2005, 23:57:34
Kontakt:

Inlägg av Barry_Lyndon »

Jag är definitivt ingen bluetoothexpert så ta detta med en rejäl nypa salt, men bluetooth-stacken i datorn måste stödja bluetooth-"tjänsten" du vill använda, t.ex. att agera som HID. Är osäker på om det är så vanligt att få en linuxburk att agera HID, brukar ju vara tvärtom, men det kan ju finnas stöd för det i linux. I så fall borde det finnas med någonstans i dokumentationen till bluetoothstacken. Man använder ju ofta linux till specialprylar och inbyggda system, så det är nog inte omöjligt, fast det verkar som sagt svårt att hitta något på nätet.

Annars borde det finnas stöd för serieportar via bluetooth, vore det inte enklare att använda dom? Då kan ni ju skicka rådata på någon form som passar applikationen och tolka den i datorn. Är det ett krav att ni skall använda HID? Eller det kanske finns någon annan hake som kräver HID?

/Andreas
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

Precis som Barry_London säger så är det vanligast med tvärtom-förhållandet, dvs att man ansluter en HID till en PC. Men i vårt fall vill vi att den inbyggda PC:n ska dyka upp på en vanlig dator som en HID. Jag misstänker att det går att hitta en lösning om man går till botten med dokumentationen, men innan det så är det ju bra att fråga. Rätt som det är så sitter någon på en massa kunskap! :)

Alternativet vore, som du säger, att använda sen serieport över Bluetooth, men då krävs programvara på PC:n. Tanken var att det inte skulle behövas, därav HID.
Användarvisningsbild
Andax
Inlägg: 4373
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Inlägg av Andax »

Tycker att det låter konstigt att låta den dyka upp som en HID device för att man inte ska behöva någon mjukvara på PC sidan. Informationen som er 3D-manick genererar lär väl knappast likna någon standard HID!!

Sen finns risken att projektet hamnar där många andra projekt hamnar. Att man låter ett interface ta all tid i anspråk utan att man kommer framåt med det som faktiskt är huvudmålet, i ert fall 3D mätning med ultraljud.
Har sett detta hända i många projekt!
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

Här var man då pessimistisk! :o I projektet så har vi ett krav på att det ska vara lätt att ansluta till en PC, det ska alltså inte behöva installeras drivrutiner osv på PC:n man ansluter till.
Det finns för övrigt massor av HID-klasser färdiga att använda. Vi har inte utforskat alla än, men bara för att vår "givare" klarar tre dimensioner så innebär det ju inte att den ska röra muspekaren i tre dimensioner. Vi planerar att använda två dimensioner som "mus" och den tredje för "vänsterklick". En helt vanlig mus alltså.
Användarvisningsbild
Andax
Inlägg: 4373
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Inlägg av Andax »

Det är inte för att vara pessimistisk som jag skrev så. Dock är det mycket vanligt att fokus hamnar på fel saker i projekt, framförallt projektarbeten och examensprojekt.
Med tanke på er kravspec på själva 3D sensorn fick jag uppfattningen att den kommer att krävas en hel del för att få till den.
Nu vet jag inte vad, när eller hur er uppgift till full är och ska vara färdig men ett tips på vägen är att bestämma er för vad som är viktigast att få fram och gör det sedan bra. Man kan alltid klämma in ett kapitel med förbättringspotentialer och vidare utveckling. Att redovisa 2-3 olika halvfärdiga delprojekt är inte att rekommendera. Been there, done that! :)

En stor styrka i projekt är att visa att man kan prioritera. Det är något man alltid måste göra i riktiga projekt som man ska ro i hamn.
Skriv svar