Estou construindo um quadro branco para rastrear a posição de sua caneta. Tenho n
receptores de ultrassom colocados na periferia do quadro branco e um emissor de ultrassom na caneta. A caneta emite pulsos que os receptores detectam. Um microprocessador reúne os tempos de chegada dos pulsos para cada receptor e, com as diferenças horárias de chegada (TDOA), faz uma estimativa da posição da caneta seguindo um algoritmo de multilateração .
Os ultrassons refletem nas superfícies, o que pode causar interferência. Esta é uma restrição na frequência dos pulsos. No momento, pulso a caneta em 10Hz, o que é suficiente para que os reflexos se extingam e não interfiram. Infelizmente, 10Hz não é uma amostra suficientemente rápida para os meus propósitos. Idealmente, a caneta pulsaria a 100Hz. (O emissor da caneta está conectado a um microcontrolador, para que eu possa controlar a forma e a frequência do pulso.)
Que truques posso usar para resolver o problema de reflexão? Quais são algumas técnicas de filtragem padrão? O uso de diferentes padrões de pulso em um ciclo ajuda a filtrar as reflexões?
fonte
Respostas:
Parece que seu problema se presta muito bem ao uso de um esquema CDMA .
Vamos começar com algumas propriedades do CDMA (DSSS). (Espectro de propagação de sequência direta, acesso múltiplo por divisão de código). É um bocado, mas é realmente fácil de implementar.
No CDMA, seu pulso (na banda base) é realmente composto de muitos ' chips ' concatenados , como são chamados. As fichas são apenas 1s ou -1s, com duração fixa. Por exemplo, sua sequência de chipping pode ser [1 -1 1 -1 -1 -1 1]. Você usaria essa sequência de lascas para modular sua operadora.
No entanto, você não pode apenas inventar seu código de chip. O que você quer fazer é usar códigos de lascamento que possuam uma propriedade muito boa, que sua função de autocorrelação seja uma função delta da seguinte forma:
(Equivalentemente, sua densidade espectral de potência é branca). Por exemplo, você pode usar o Barker Sequences como seu código de chip (normalmente usado em radar) ou também usar códigos de ouro . Na prática, no entanto, isso significa que você obtém a pontuação máxima de correlação no seu receptor, SOMENTE quando o código do receptor está alinhado exatamente com o código transmitido e, caso contrário , zero .
Como isso te ajuda? No seu receptor, você estaria executando um correlacionador continuamente. O correlacionador estaria executando um produto escalar em execução com seu próprio código local, com o que quer que seja recebido. Agora imagine que você recebe uma forma de onda transmitida da caneta e uma segunda forma de onda de um reflexo. À medida que o correlacionador de seus receptores for executado, ele atingirá um pico quando sua própria palavra de código se alinha exatamente com o código da caneta. Isso fará com que o seu detector 'trave' nesse valor de atraso específico. Agora, aqui é onde você colhe os benefícios de uma função de autocorrelação quase delta do seu código: O sinal refletido também estará presente e também terá seu produto escalar obtido com o código bloqueado dos receptores, mas dará zero, ou quase zero, por ser ortogonalou quase ortogonal ao código atrasado em que o seu receptor já travou.
Por outro lado, se você enviasse um pulso portador não codificado, estaria à mercê de interferências construtivas ou destrutivas que disparariam quando exatamente seu pulso atingisse o nível de detector do seu receptor e, portanto, obteria TDOAs errôneos.
fonte