434 RF-zender en ontvanger voor probleem met afstandsmeting

Als student werk ik aan een project waarbij we 434 MHz RF-zender en ontvangerparen gebruiken voor afstandsmeting. Ik weet dat deze technologie hiervoor geen goede keuze is, maar we moeten dit probleem aanpakken vanwege externe beperkingen.

Hier is de ontvanger: RF Link Receiver - 4800bps (434MHz) .

Ik heb een beetje onderzoek gedaan naar hoe deze ontvangers werken, maar ik vond het een beetje overweldigend om ze beetje bij beetje te begrijpen.

We willen de signaalsterkte gebruiken voor afstandsmeting. Dus probeerden we pulsen van signalen van de ene zender naar een ontvanger te sturen. Als de amplitude van het ontvangen signaal hoger is dan een bepaalde waarde (laten we zeggen 3V), zendt het een signaal terug (laten we het triggersignaal noemen) in de opening tussen de twee pulsen.

Het probleem is dat deze signalen elkaar lijken te beïnvloeden, ook al zijn ze niet in dezelfde tijd (dus het is geen superpositie waar we het over hebben). Wanneer er een teruggestuurd signaal is, zal de volgende puls lager zijn, wat resulteert in een foutieve afstandsmeting.

De hele moeilijkheid is (naar mijn mening) dat we deze signalen niet gebruiken om gegevens te verzenden, we gebruiken het voor afstandsmeting. Mijn idee is dat we te lange pulsen gebruiken en de AC-koppeling in de ontvanger het niet verdraagt, maar nogmaals, ik heb niet genoeg elektrische kennis om dat veilig te zeggen.

Ik weet dat dit niet beschrijvend is, maar ik weet niet hoe ik het meer beschrijvend moet maken, dus ik beantwoord graag meer vragen op afroep.

1
Dit klinkt alsof het verzenden van het antwoord de AGC van de ontvanger desensetiseert. Misschien kunt u enkele tests uitvoeren door pulsenparen in één richting uit een verschillende tijdsperiode uit elkaar te zenden en te kijken hoe de amplitude van de tweede ontvangen puls varieert op basis van de tijdvertraging. Misschien kunt u eenvoudig de experimentfrequentie verlagen om de AGC meer tijd te geven om te herstellen, of het antwoord op een andere manier verzenden (2,4 GHz? IR?). Nog betere implementaties van uw RSSI-afstandsidee (bijvoorbeeld BTLE-chips) zijn minder dan indrukwekkend.
toegevoegd de auteur rossp, de bron
Dat is afhankelijk van welke AGC je wilt bereiken. Ik zat te denken door langer te wachten na elke antwoordpuls (of gelegenheid) voor een nieuwe zendpuls, je kon de AGC resetten. Hoewel ik veronderstel dat een alternatief zou zijn om minder tijd te wachten en de AGC actief te houden. Om dat te doen, moet je altijd een antwoord verzenden. Misschien zou je het resultaat kunnen coderen in een variabele vertraging tussen de uitgaande puls en het antwoord, maar altijd de tijd van het antwoord naar de volgende uitgaande puls hetzelfde maken. Als u een antwoord geheel mist, zult u waarschijnlijk de volgende moeten negeren gezien de ongekende AGC-status.
toegevoegd de auteur rossp, de bron
Heb je gelezen over de RX-module? Heeft het AGC (Automatic Gain Control)? Als is, wordt de versterking verhoogd tot het ruisniveau. Wanneer een signaal wordt gedetecteerd, moet het "afstemmen".
toegevoegd de auteur Mikael Patel, de bron
Dit is de eenvoudige RSSI-implementatie voor RF433 Virtual Wire die ik bedacht heb voor Cosa; github.com/mikaelpatel/Cosa/blob/master/ libraries/VWI/& hellip; . Na ontvangst van een bericht meet de ontvanger de tijd om te "herstellen", d.w.z. de AGC om terug te afstemmen op het ruisniveau. Hoe zwakker de TX was, des te sneller het deuntje terug.
toegevoegd de auteur Mikael Patel, de bron
Waar kan ik daar meer over lezen? Of waar is dat voor?
toegevoegd de auteur Bytemain, de bron
Wat bedoel je met het verminderen van de experimentfrequentie? Verhoogt niet wat hier redelijk zou zijn? Dus het zet het geluidsniveau niet op een nieuwe waarde?
toegevoegd de auteur Bytemain, de bron

1 antwoord

Het is zeer waarschijnlijk dat u een AGC-probleem hebt. Probeer de meting te vertragen. De afzender zal niet vaker dan eenmaal per seconde gegevens verzenden.

Dit idee is niet helemaal perfect voor het doen van een afstandsmeting. Het meet de binnenkomende krachtsterkte - beïnvloed door muren, reflectie, AGC van de ontvanger en nog veel meer. Als u een scope hebt, meet u de golfvorm op pin 3 van de module (lineair uit). Het is geen constante spanning, vrees ik, dus je hebt ook een soort van middeling nodig.

Een lastige manier om samen te leven, zelfs als je een AGC hebt, is om te meten hoe lang de AGC moet regelen. De AGC werkt als volgt: hij detecteert het signaal en binnen een bepaalde tijd (zeg 2ms) zal het de versterking veranderen zodat het signaal er uit zal zien met de volledige amplitude.

  • vergelijk bij een tweekanaalscope de signaalpuls die de zender aandrijft
  • en het signaal op de pin 3 van de ontvangermodule

Als je geluk hebt, zie je dat de pin3- of pin2-output een beetje is vertraagd in vergelijking met de stuurimpuls van de zender. De vertraging is afhankelijk van de kracht van het binnenkomende signaal naar de ontvanger, afhankelijk van de afstand.

Ik was in staat om een ​​acceptabele afstandssensor te maken van een standaard AGC-enabled IR-ontvanger volgens de bovenstaande principes.

1
toegevoegd
Ik ontdekte dat vertragingen verrassend precies zijn. Je moet echter wel een mechanisme hebben om eerst de stijgende lijn van je hartslag te krijgen. Daarvoor hebt u ofwel een eenvoudige lus nodig die controleert of de pincode met digitalRead werkt, en zodra een stijgende flank is gevonden, kunt u de timing starten. Maar bent u niet van plan om de analoge waarde op pin 3 van de module te lezen?
toegevoegd de auteur joeqwerty, de bron
We hebben het probleem vandaag opgelost door 2ms-pulsen en 100ms-spleten te verzenden. Dit lijkt het probleem op het bereikniveau op te lossen. Het punt is dat onze Arduino-vertragingen niet precies genoeg lijken om de 2ms-puls op het juiste moment te kunnen lezen, maar dat is een ander probleem.
toegevoegd de auteur Bytemain, de bron