Go Down

Topic: Verstehe ich PulseIn richtig? (Read 4658 times) previous topic - next topic

DE8MSH

Moin,

ich versuche gerade meine 433 MHz Funksteckdose zu knacken. Leider passt sie nicht in die RCSwitch Library :( Daher will ich die Pulse selbst messen. Frage: wenn duration=PulseIn(xxx) einen Wert 1200 ausgibtm ist das dann in µ-Sekunden? Sind das dann 1,2 Millisekunden?

Look at
http://de8msh.blogspot.com/
and
http://www.youtube.com/user/de8msharduino

Jomelo

Laut Dokumentation sind das Microsekunden

Arbeitsbereich dieser Funktion
Zitat: "10 microseconds to 3 minutes in length"

http://arduino.cc/en/Reference/PulseIn

uwefed

PulseIn mißt aber nur den Positiven Impuls oder die Länge der Pause.
PulseIn ist nicht geeignet um die Puls und Pausen-Längen einer Sequenz von Impulsen und Pausen verschiedener Längen zu messen.
Da ist es einfacher den Eingang einer Soundkarte mit dem richtigen programm als Speicheroszilloskop zu mißbrauchen.

Viele Grüße Uwe

sui

Was sind denn das für Steckdosen (ich würde die Library gerne erweitern...)? Spuckt das ReceiveDemo Example Sketch aus der Library irgendetwas aus?

Wenn Du kein Oszi hast, hier die Version für ganz arme ;)

Folgendes Sketch liest fortlaufend die Zeitabstände von 500 Changes auf Interrupt 0 (Pin2) aus und spuckt sie seriell aus. Unter http://test.sui.li/oszi/ kannst Du die ausgegebene Liste eintragen und bekommst das Ergebnis einigermaßen hübsch dargestellt. Sieht dann ungefähr so aus:


Code: [Select]

#define maxChanges 500

unsigned int changeCount;
unsigned int timings[maxChanges];
unsigned long lastTime;
int nStartValue;

void setup() {
  Serial.begin(9600);

  lastTime = micros();
  changeCount = 0;

  attachInterrupt(0, r, CHANGE);
}

void loop() {

}

void output() {

}

void r() {
  long time = micros();
  if (changeCount ==1) {
    nStartValue = digitalRead(2) ;
  }
  timings[changeCount++] = time - lastTime;
  lastTime = time;
  if (changeCount-1 >= maxChanges) {
    if (nStartValue == 0) {
      Serial.print(1); Serial.print(',');
    }
    for (int i = 1; i<changeCount-1; i++) {
      Serial.print(timings[i]);
      Serial.print(",");
    }
    Serial.println();
    Serial.println();
    changeCount = 0;
  }
}



DE8MSH

#4
Sep 17, 2011, 09:06 am Last Edit: Sep 17, 2011, 09:13 am by DE8MSH Reason: 1
Hi sui,

das wäre mal ein super Angebot von Dir. Es sind Schalter von Quigg. Sie heßne GT-7008AS und können codes lernen:

http://shop.zeitlos-vertrieb.de/Multimedia/Funksteckdosen/Funksteckdosenset-GT-7008A/

Ich habe die Signalfolgen aus der Mega32_Steckdosen.rar Datei von

http://www.mikrocontroller.net/topic/121567

mal in Arduino eingehackt. Dann habe ich das ganze mit dem 433 MHz Sender von Big C


http://www.conrad.de/ce/de/product/130428/SENDE-EMPFAeNGERMODULSET-433MHZ

gesendet. Wenn ich eine Quigg Steckdosen mit diesen beiden An/Aus Codes anlerne, dann kann ich eine damit schalten.

Ich habe aber noch drei weitere Dosen... Die habe ich nicht mit einem anderen Code belernen können, da ich die Systematik noch nicht kapiert habe. Daher wäre eine Erweiterung der Lib genial!

Look at
http://de8msh.blogspot.com/
and
http://www.youtube.com/user/de8msharduino

DE8MSH

#5
Sep 17, 2011, 09:31 am Last Edit: Sep 17, 2011, 09:36 am by DE8MSH Reason: 1
sui,

auf so ein Analysesketch habe ich schon eweig gewartet!!! Der hätte uns damals beim Reversen des 433 MHz Thermometers galube gut unterstützt :)

Hier die Codes:

Dose 1 an:


Dose 1 aus:


Dose 2 an:


Dose 2 aus:




Look at
http://de8msh.blogspot.com/
and
http://www.youtube.com/user/de8msharduino

DE8MSH


Laut Dokumentation sind das Microsekunden

Arbeitsbereich dieser Funktion
Zitat: "10 microseconds to 3 minutes in length"

http://arduino.cc/en/Reference/PulseIn


Um mich Topicrelevant zu bendanken bedanke ich mich bei Dir, Jomelo, .......
Look at
http://de8msh.blogspot.com/
and
http://www.youtube.com/user/de8msharduino

DE8MSH


PulseIn mißt aber nur den Positiven Impuls oder die Länge der Pause.
PulseIn ist nicht geeignet um die Puls und Pausen-Längen einer Sequenz von Impulsen und Pausen verschiedener Längen zu messen.
Da ist es einfacher den Eingang einer Soundkarte mit dem richtigen programm als Speicheroszilloskop zu mißbrauchen.

Viele Grüße Uwe



..... und natürlich auch bei Dir, Uwe! :) Das war ja Ursprünglich meine Frage.
Look at
http://de8msh.blogspot.com/
and
http://www.youtube.com/user/de8msharduino

sui


Hier die Codes:


2an und 2aus sehen absolut gleich aus ;)

Ich wollte gerade schon sagen es sei Manchester Code, weil da nur zwei verschiedene Längen mit "1*lang" so lang wie "2*kurz" ist... aber irgendwie kommt das ohne Flanke bei den ?? nicht hin, oder?



Werd' nacher mal weiterknobeln...

uwefed

#9
Sep 17, 2011, 10:10 pm Last Edit: Sep 17, 2011, 10:30 pm by uwefed Reason: 1
Wenn der Coder/Decoder die Bausteine HX2262/HX2272 sind dann hätte ich da eine Idee.

Der HX2262 (und kompatible) arbeitet nicht mit einer binären Logik sondern mit einer tertiären. Die Eingänge können H,L und nicht beschaltet (float) sein, also 3 Zustände haben.
Meist verwendet man nur 2 Eingangspegel aber es sind 3 möglich.

laut http://www.princeton.com.tw/downloadprocess/downloadfile.asp?mydownload=PT2262_1.pdf werden die Bits aber andes decodiert:

Jedes Bit besteht aus 2 Impulsen. Die Periodendauer eines Bits (also 2 Impulse) ist 32 Oszilatorschwingungen des 2262 lang.

Die Zahl gibt die Zeit in Oszilatorperioden an:
Bit 0 besteht aus     : 4H, 12L, 4H, 12L
Bit 1 besteht aus     : 12H, 4L, 12H, 4L
Bit float besteht aus: 4H, 12L, 12H, 4L

Im Endefekt ist die Dauer der Impulse bzw Pausen 1 oder 3 mal 4 Oszillatoperioden lang (lang ist 3*kurz).
Das stimmt aber auch wieder nicht mit der Aufzeichnung zusammen.
Meine Idee bringt auch keinen Durchbruch.

Grüße Uwe

DE8MSH

#10
Sep 17, 2011, 10:26 pm Last Edit: Sep 17, 2011, 10:28 pm by DE8MSH Reason: 1
Hi Leute,

hier nochmal neue Daten:

2 an:


2 aus:


3 an:


3 aus:


Das 2x gleiche "2er" vorhin habe ich wohl doppelt geupped ;)
Look at
http://de8msh.blogspot.com/
and
http://www.youtube.com/user/de8msharduino

uwefed

@DE8MSH Kannst Du die Fernsteuerung / Steckdose öffnen und nachsehen welches IC darin ist?
Viele Grüße Uwe

DE8MSH

#12
Sep 17, 2011, 10:34 pm Last Edit: Sep 17, 2011, 10:45 pm by DE8MSH Reason: 1

Wenn der Coder/Decoder die Bausteine HX2262/HX2272 sind dann hätte ich da eine Idee.



Hi Uwe,

das dumme ist, dass in dem Geber kein großer IC gelötet ist, sondern alles in einer schwarzen Perle versteckt ist.

EDIT: Und die doesen bekomme ich auch nicht auf, da sie so dreieckige Schrauben haben :(

Look at
http://de8msh.blogspot.com/
and
http://www.youtube.com/user/de8msharduino

uwefed

Ja, das macht das etwas schwieriger.

Mir Geber meinst Du die Fernsteuerung?

Grüße Uwe

DE8MSH

Ja, mit Geber meine ich immer die Fernbedienung ;) Alter Radio- und Fernsehtechniker-Slang. Habe die Dose doch mit einem schmalen Schlitzschraubenzieher aufbekommen. Leider auch kein Chip drinnen. Nur eine Perle.
Look at
http://de8msh.blogspot.com/
and
http://www.youtube.com/user/de8msharduino

Go Up