초음파 신호 감지


9

두 개의 스피커에서 방출 된 초음파 신호를 사용하여 휴대 전화를 지리적 위치 (스피커에 대한)로 지정하는 상당히 간단한 TDOA 시스템을 만들었습니다. 두 신호는 주파수로 분리됩니다.

시스템에는 다음과 같은 제약 조건이 있습니다.

  • 신호가 들리지 않아야합니다. 이를 위해 17kHz 이상의 주파수를 사용합니다. 몇몇 사람들은 여전히 ​​그것을들을 수 있지만 대부분은들을 수 없습니다.
  • 샘플링 속도는 44.1kHz입니다.
  • 일반적으로 음악이 재생되므로 낮은 주파수에서 많은 간섭이 발생합니다.
  • 스피커와 마이크가 더 높은 주파수에서 얼마나 잘 작동하는지 제어 할 수 없으므로 상한을 약 20kHz로 유지했습니다.

내가 사용하고있는 특정 신호는 좋은 자기 상관 특성으로 인해 BPSK 변조 된 13 비트 바커 코드입니다. 자기 상관은 다음과 같습니다. 신호 자기 상관

그래도 예상 신호와 실제 수신 신호를 상호 연관시킬 때 일반적으로 얻는 것은 다음과 같습니다. 전형적인 상호 상관

파란색은 스피커 1 신호와의 상호 상관 관계이고 빨간색은 스피커 2 신호와의 상호 상관 관계입니다. 에코의 영향은 유감 스럽지만 불행히도 마이크의 방향성 이득으로 인해 직접 경로 신호보다 강한 경우가 많습니다.

직접 경로 일 가능성이 높기 때문에 신호의 가장 빠른 모양을 감지하려고했습니다. 이 접근법은 신호가 존재하는 시점을 결정하는 데 사용하는 임계 값에 매우 민감하므로 전혀 견고하지 않습니다.

신호의 "진정한"도착 시간, 즉 직접 경로 신호의 도착 시간을 결정하는 강력한 접근 방법을 원합니다. 아마도 어떤 형태의 채널 추정 및 디컨 볼 루션? 그렇다면 어떻게 작동합니까?

데이터 / 코드 : 데이터를 분석하거나 코드를 검사 할 사람이 아무도 없다는 것을 분명히하고 싶습니다. 원하는 경우에 대비하여 사용할 수 있도록 만들었습니다. 나는 대부분 아이디어에 관심이 있습니다.

원시 수신 신호와 변조 된 예상 신호를 다운로드 할 수있게 만들었습니다. 그것들은 모두 44.1 kHz에서 샘플링됩니다. 수신 신호를 예상 신호와 상관 시키면 수신 신호를 기저 대역으로 이동하고 예상 신호와 상관시키기 전에 데시 메이션하기 때문에 위의 그림과 유사하지만 동일하지는 않습니다.

수신 신호

예상 신호 # 1

예상 신호 # 2

Matlab 스크립트 Matlab 스크립트에는 신호 생성 스크립트 (genLocationSig.m)와 수신 / 처리 스크립트 (calcTimingOffset.m)가 있습니다.


rx1, rx2 및 템플릿 데이터를 공유 할 수 있습니까?
Tarin Ziyaee

@ user4619 오늘 저녁에 그렇게하려고합니다.
Jim Clay

빠른 결과 : 데이터를 받아 대비가 강화 된 STFT-PSD를 제작했습니다 . 하단에있는 5 개의 립이 주파수로 분리 된 두 신호라고 생각합니다. 신호가 정상적으로 전송되는 것처럼 보이지만 에코 또는 다중 경로가 문제라고 생각하지 않습니다. 보시다시피, 적어도 처음에는 펄스 사이에 많은 간헐적 (광대역) 노이즈가 있습니다. 복잡한 밴드 시프트, 다운 샘플링, 바커 시퀀스와 상관 관계가 있고 엔벨로프를 보면 무엇을보고 있습니까?
Tarin Ziyaee

1
좋아, 몇 가지 : I) 이와 같은 코딩 된 파형 대신 선형 처프 사용을 고려 했습니까? 유연성이 훨씬 뛰어나고 움직이는 부품이 크게 줄어 듭니다. II) 대역폭 제약이 있다면 무엇입니까? 예를 들어 템플릿의 너비가 약 1KHz 인 것 같습니다. 더 높이 갈 수 있습니까? 선형 처프를 사용하면 쉽습니다. III) 나는 당신의 복조에 어떤 문제가 있는지 의심하지만 그것을 세우는 것이 도움이 될 것입니다. 그리고 그것은 그것을 쓰는 데 어려움을 덜어 줄 것입니다!
Tarin Ziyaee

1
비트 주석과 관련하여 오해가 있습니다 .13 개의 바커 코드 상태 중 각각 1 개를 '칩'이라고합니다. 비트를 전송하면 13 개의 칩이 전송됩니다. 2 비트를 전송하면 26 칩 등을 전송합니다. 그래서 내 질문은 몇 비트 를 전송하고 있습니까? 나는 단지 1 비트를 전송한다고 가정하고 있으므로 코딩 이득을 강화하기 위해 훨씬 더 많은 전송을 고려할 수도 있다고 말하고 있습니다. 말이 돼?
Tarin Ziyaee

답변:


3

이들은 당신이 찾고있는 코드가 아닙니다 ...

의견에서 언급했듯이 강력한 TDOA를 수행하는 데는 여러 가지 방법이 있습니다. (선형 처프, 지수 처프 및 CDMA 유형 방법과의 상호 상관 관계). 코드를 사용하여 TDOA 시스템을 이미 구축했으며 (도플러에 견고성이 필요한 경우 선형 처프를 선택하는 것이 좋습니다), 두 가지 방법으로 인위적으로 제한하고 있습니다.

  • 바커 코드는 길이까지만 올라갑니다 13. 그러나 더 많은 코딩 게인을 얻기 위해 임의 길이의 PN 시퀀스 코드를 만들 수 있습니다.
  • 만 사용 1당신의 전송에 비트. 전송하기 위해 많은 비트의 전체 프리앰블을 인코딩하여 다중 경로에 대한 추가 복원력을 얻을 수 있습니다.

PN 시퀀스를 사용하십시오.

따라서 간단히 말해서 반송파를 변조하는 데 사용하는 코드를 다음과 같이 변경하십시오. 대신 PN 시퀀스를 사용하십시오. PN 생성 코드는 (거의) 임의 길이를 가질 수 있으며 LFSR을 통해 생성 될 수 있습니다 . (또한 일부 텍스트에서는 '화이트 너'라는 이름으로 표시됩니다). 다음은 길이의 세 가지 PN 시퀀스입니다.31, 61, 127 각기.

PN_31 = [ 1  1 -1 -1  1  1 -1  1 -1 -1  1 -1 -1 -1 -1  1 -1  1 -1  1  1  1 -1  1  1 -1 -1 -1  1  1  1];

PN_61 = [ 1  1  1 -1  1  1 -1  1 -1 -1  1 -1 -1  1  1  1 -1 -1 -1  1 -1  1  1  1  1 -1 -1  1 ...
     -1  1 -1 -1 -1  1  1 -1 -1 -1 -1  1 -1 -1 -1 -1 -1  1  1  1  1  1  1 -1  1 -1  1 -1 ...
      1  1 -1 -1  1  1 -1];

PN_127 = [-1     1     1     1    -1     1    -1    -1     1    -1     1     1    -1    -1    -1     1     1    -1     1     1     1     1    -1     1     1    -1     1    -1 ...
       1     1    -1     1     1    -1    -1     1    -1    -1     1    -1    -1    -1     1     1     1    -1    -1    -1    -1     1    -1     1     1     1     1     1 ...
      -1    -1     1    -1     1    -1     1     1     1    -1    -1     1     1    -1     1    -1    -1    -1     1    -1    -1     1     1     1     1    -1    -1    -1 ...
       1    -1     1    -1    -1    -1    -1     1     1    -1    -1    -1    -1    -1     1    -1    -1    -1    -1    -1    -1     1     1     1     1     1     1     1 ...
      -1     1    -1     1    -1     1    -1    -1     1     1    -1    -1     1     1     1];

시퀀스의 원형 및 선형 자동 상관이 아래에 나와 있습니다. 그것들은 분명히 백색 스펙트럼을 산출 할 것이지만, 그 이상으로 우리는 더 이상13칩 길이. 실제로 마지막 코드 인 PN_127은10 영형[12713]10 화이트 스펙트럼을 보장하면서 바커 시퀀스에 대한 dB 이득.

여기에 이미지 설명을 입력하십시오

프리앰블을 전송합니다.

특정 응용 프로그램에서는 1 비트 만 전송한다고 언급했습니다. 응용 프로그램이 허용 할 수 있습니다대로 얻을 수 많은 비트로 전송을 당신이 그것을 도울 수 있다면이를 방지하려고해야하고 코딩 게인 .

이것은 패킷의 시작에 맞춰 통신 프로토콜에서 일반적으로 수행되는 작업입니다. (알려진) 프리앰블이 전송되며 많은 비트로 구성 됩니다. 각 비트는 많은 칩으로 구성됩니다. (이 예에서는31, 61또는 127위의 PN 코드 중 하나를 가진 칩). 마지막으로 비트 시퀀스 자체는 또 다른 PN 시퀀스로 구성 될 수 있으며 원하는 경우 전송할 수 있습니다.13 각각의 비트가 상기 PN 시퀀스 중 하나로 구성되는 바커 패턴을 구성하는 비트.


이러한 솔루션 중 하나 또는 둘 다를 시도하고 결과를 작성하십시오. 그런 다음 반복 할 수있는 실질적인 개선이있을 것으로 기대합니다. (펄스 성형, 다르거 나 더 긴 PN 시퀀스 등).


1
예, 더 긴 시퀀스를 시도 할 계획입니다. pn 시퀀스의 순환 자기 상관이 매우 흥미 롭다는 것을 몰랐습니다. 불행히도 내 응용 프로그램의 경우 선형 자기 상관이 중요합니다. 프리앰블과 관련하여, 프리앰블을 유용하게 만드는 것은 그것이 알려진 데이터 패턴이라는 점에서 전체 시퀀스는 "프리앰블"이다. 내 전체 신호는 선험적으로 알려져 있습니다.
Jim Clay

나는 신호를 길게함으로써 문제를 해결할 수 있다는 것을 증명하거나 배제하기 위해 10 lfsr (1023 칩)을 사용하여 신호 길이를 약간 과도하게 결정했습니다. 어떻게되는지 게시하겠습니다.
Jim Clay

1
@JimClay 기쁘다. 수신 된 xcorrs / 신호가 지금 어떻게 보이는지 궁금합니다. 그래도 좋습니다.
Tarin Ziyaee

1
@endolith 예, 도플러는 문제입니다. 여러 번 상관시켜 수신 신호의 주파수를 매번 다른 양만큼 이동시켜 처리합니다. 주파수 영역에서 상관 관계가 있으면 쉽게 수행 할 수 있습니다.
Jim Clay

1
@endolith Jim Clay가 자신의 방법을 설명 할 때 기본적으로 Ambiguity Function을 계산하고 있습니다. 즉, 2 차 차원이 기본 주파수에 해당하는 교차 결과가 나타납니다. 그러면 피크가 표시되므로 원래 주파수, 도플러 정도를 알 수 있습니다.
Tarin Ziyaee
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.