PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Manchester Codierung???



Dan89
22.12.2005, 14:04
Ich habe ein Sender/Empfänger-Set gekauft. Nach Anleitung muss man bei diesem ein Rechtecksignal in Manchester Codierung am Sender anlegen. Was ist das???

Ich habe bereits zum testen ein Rechtecksignal, das ich mit meinem Digital Multimeter herstellen kann am Sender angelegt. Die Übertragung klappte einwandfrei.
Nun habe ich den Sender in ein Gerät eingebaut, hier erzeuge ich mit einem NE555 ein Rechtecksignal. Der Sender überträgt dieses aber nicht.

Wo liegt jetzt der Unterschied zwischen diesen Signalen? Am Oszilloskop kann ich keinen erkennen.

Außerdem: Wie kann ich ein Rechtecksignal in dieser Manchester Codierung herstellen???

askazo
22.12.2005, 14:26
Hier der Wikipedia Eintrag zur Manchester-Codierung: http://de.wikipedia.org/wiki/Manchester_Code

Um vernünftig damit arbeiten zu können, wirst Du das Signal wohl am einfachsten mit einem µC herstellen können. Oder Du erzeugst ein Trägersignal und ein Nutzsignal seperat, awobei das Trägersignal die doppelte Frequenz des Nutzsignals haben muss. Dann kannst Du beide Signale mit XOR verknüpfen und hast den Manchester-Code.

Warum die Übertragung mit deinem Multimeter klappt und mit dem NE555 nicht, kann ich nicht sagen. Sind wirklich beide Signale 100%ig gleich (Amplitude und Frequenz)? Hast Du die Signale im angeschlossenen Zustand gemessen?

askazo

Dan89
22.12.2005, 15:30
Danke für das schnelle beantworten.

Also ich möchte eigendlich nur einen einzigen schaltzustand senden. Ich bräuchte also diese Manchester Codierung nicht oder?

An den Signalen zwischen dem Messgerät erkenne ich echt keinen Unterschied. Egal wie ich die frequenz und das Tastsignal am Multimeter verstelle, der sender sendet es und ich kann es super empfangen.

Ich such dann mal weiter nach gründen an der schaltung...

Dan89
22.12.2005, 23:30
Ich habe das Problem behoben. Es lag nicht am Signal. Eigendlich habe ich keine Ahnung wieso es nicht ging, auf jedenfall habe ich gerade noch rein intuitiv einen Elko in meine Schaltung eingelötet. Jetzt sendet der Sender mein Rechtecksignal, das sich hierdurch aber nicht verändert hat. Naja haupsache es geht.

Danke nochmals


Mfg

askazo
23.12.2005, 09:02
Wo hast Du den Elko denn eingebaut?

hacker
23.12.2005, 11:19
Welches Sende/EmpfängerSet ist das? Das von Conrad?

Sommer
23.12.2005, 11:25
Hi,

hier ein Demo vom Proton+ Compiler zum Thema Manchester Code


' Manchester ENCODE and DECODE, as well as CRC caulculator

Include "PROTON_G4.INT" ' Use an INTERNAL FONT

Dim ENCODER_LOOP as Byte
Dim CRC_LOOP as ENCODER_LOOP
Dim TempVar as Byte
Dim EncodedWord as Word
Dim ERROR_FLAG as Bit
Dim CRC_OUT as Word
Dim CRC_IN as Byte

Dim Y as Byte

Symbol CRCPolynomial = $1021 ' CRC-CCIT

TempVar = %10001001
Cls

For Y = 0 to 255
TempVar = Y
Print at 1,1,"TEMPVAR ", bin8 Tempvar
Gosub Encode ' MANCHESTER ENCODE the value held in TEMPVAR. Result in ENCODEDWORD
Print at 2,1,"ENC ", bin16 ENCODEDWORD
Gosub Decode ' MANCHESTER DECODE the value held in ENCODEDWORD. Result in TEMPVAR
Print at 5,1,"ERROR ",DEC ERROR_FLAG
CRC_IN = TempVar

Gosub Calc_CRC ' Calculate a CRC of variable X. Result in CRC.HIGHBYTE
Print at 3,1,"CRC " , bin8 CRC_OUT

CRC_IN = CRC_OUT.highbyte
Gosub Calc_CRC ' Calculate the CRC of variable X. Result in CRC.Lowbyte

Print at 4,1,"RESULT " , @CRC_OUT.lowbyte
Delayms 400
Next
Stop
'--------------------------------------------------------------------------------------------------
' Manchester Encode The byte value in TEMPVAR, and place the result in WORD variable ENCODEDWORD
' Note that:
' 1. TEMPVAR is the byte we want to encode
' 2. We will encode it into a 16 bit word, the low byte will contain the lower nibble of the encoded
' variable; ' the high byte will contain the upper nibble of the encoded variable
' 3. A “0” will be equated to a 0-1 transition
' 4. A “1” will be equated to 1-0 transition
' 5. The below subroutine will encode each 8-bit byte to a 16-bit word with an equal number of 1’s and 0’s.
' Run length is 1. The upside is that this is perfect for DC balancing the receiver’s bit slicer. The
' downside is that this results in doubling the bandwidth.

Encode:
EncodedWord = 0
Clear ENCODER_LOOP
Repeat
EncodedWord = EncodedWord << 2
EncodedWord.0 = 1 ' Default to Bit = 1
EncodedWord.1 = 0
If TempVar.0 = 0 Then
EncodedWord.0 = 0 ' Bit = 0
EncodedWord.1 = 1
Endif
TempVar = TempVar >> 1
Inc ENCODER_LOOP
Until ENCODER_LOOP > 7
Return
'--------------------------------------------------------------------------------------------------
' Note that:
' 1. We will decode ENCODEDWORD (lower byte) as the lower nibble of TEMPVAR
' 2. ENCODEDWORD ( high byte) as the upper nibble of TEMPVAR
' 3. ERROR_FLAG will return SET is an invalid value was found i.e. 1-1 or 0-0 together

Decode:
Clear ENCODER_LOOP
Clear ERROR_FLAG
Repeat
TempVar = TempVar << 1
If EncodedWord.0 = 0 Then If EncodedWord.1 = 1 Then TempVar.0 = 0 ' bit = 0
If EncodedWord.0 = 1 Then If EncodedWord.1 = 0 Then TempVar.0 = 1 ' bit = 1
If EncodedWord.0 = 0 Then If EncodedWord.1 = 0 Then Set ERROR_FLAG ' error in bit decode
If EncodedWord.0 = 1 Then If EncodedWord.1 = 1 Then Set ERROR_FLAG ' error in bit decode
EncodedWord = EncodedWord >> 2
Inc ENCODER_LOOP
Until ENCODER_LOOP > 7
Return
'--------------------------------------------------------------------------------------------------
' Calculate BYTE CRC; 16 bit crc based on CCIT polynomial
' Note:
' 1. The CRC polynomial was given in the Constant definition. Note that there is a plethora of material
' available on the internet about CRC calculations and the various polynomials used.
' 2. Caveat here: At the end of the CRC calculation on the transmitted data, the sum of the decoded CRC
' must equal to “0”. If the resulting CRC calculation is NOT 0 then there was a transmission error. Pay
' attention to the order in which you calculate the CRC when you transmit AND the order in which you
' calculate the CRC when you receive. Also when you transmit the CRC byte, remember to transmit
' High byte first. For further information, look at the below code.

Calc_CRC:
CRC_OUT = (CRC_IN * 256) ^ CRC_OUT
Clear CRC_LOOP
Repeat
ROL CRC_OUT , CLEAR
If STATUS.0 = 1 then
CRC_OUT = CRC_OUT ^ CRCPolynomial
Endif
Inc CRC_LOOP
Until CRC_LOOP > 7
Return

Include "FONT"


Vieleicht hilft es dir...

Frohe Weihnachten und einen guten Rutsch!

Bye Ulli

Dan89
23.12.2005, 23:34
Danke für eure Antworten. Das mit der Manchester Codierung lasse ich aber, ist mir noch zu kompliziert, da ich bisher nur einige kleine Schaltungen mit PICs gebaut habe und nicht viel Ahnung von Microprozessoren hab.

Den Elko hab ich am Spannungseingang vom Sender eingelötet. Allerdings weiß ich nicht warum das nötig war weil die Spannung geglättet genug war. Als ich das Signal aus meinem Multimeter genommen hab gings ja auch. Hab nur die Vermutung das vielleicht etwas vom Rechtecksignal auf die Versorgungsspannung kam und es dadurch kleine Schwankungen gab. Ich hab aber auf dem Ozilloskop nichts entdeckt.

Auf jeden Fall geht es jetzt. Am Sender speise ich ein Signal von ca. 500Hz ein. Am Empfänger hab ich ne Schaltstufe aufgebaut und das ganze in ein kleines Handgehäuse gesteckt. Den Sender hab ich in ein Steckergehäuse gebaut. Ich kann diesen jetzt an irgendein beliebiges Gerät stecken und kann dann dessen Zustand am Empfänger ablesen.

Ach so:
Das Set hab ich vor einiger Zeit bei Conrad gekauft. Ich glaub das hier ist es. Sieht jetzt ein bisschen anders aus, ich weiß nicht ob die was dran geändert haben:

SENDE-/EMPFÄNGERMODULSET 433MHZ
Artikel-Nr.: 130428 - 62

kostet 14,95€

Die Reichweite (laut Text 200m) ist wirklich gut. Ich kann bequem durchs ganze Haus laufen (3 Stockwerke).


Also dann;

FROHE WEIHNACHTEN!!!!!

teslanikola
24.12.2005, 12:25
Ich würde mir das nicht kaufen, da ja unser schlauer Conrad den Schaltplan mit Platine veröfentlicht, also schnell nachbauen, ist auf jedenbilliger als beim magischen C

stegr
24.12.2005, 15:35
Der Kauf hat den Vorteil, dass er keine Schaltung bauen muss, die er nicht betreiben darf, weil sie nicht angemeldet ist und er kein Amateurfunker ist... ;)

Ausserdem dürfte er gewisse Schwierigkeiten haben, das SAW-Filter (bzw. Oszillator) irgendwo zu bekommen, wo er nicht mehrere hundert davon abnehmen muss.

Die 15 Euro sind da vergleichsweise günstig, also eher kaufen anstatt nachbauen (auch wenn Conrad sonst eine Apotheke ist) :)

Frohe Weihnachten,
Stefan

teslanikola
25.12.2005, 17:41
das mit dem SAW-Filter hat was, aber wenn ich wüsste wo ich die teile bekommen könnte würde ich es mir bauen, wenn ichs bräuchte!

sdz55
27.12.2005, 19:26
Wie funktioniert denn genau diese Manchester Codierung?
Ist es so, dass wenn ich drei verschiedene Taktsignale Auf den Sender gebe, (natürlich nicht gleichzeitig) so kann ich mit hilfe von Schaltungen, welche nur auf bestimmte Taktsinale reagieren, diese Unterscheiden, und somit beliebig viele Kanäle steuern?