Wie sende ich ein 60-kHz-Signal von der Antenne?

HINTERGRUND

In Japan gibt es Funkuhren. Die Zeit wird durch 40-kHz- (in Westjapan) und 60-kHz- (in Ostjapan) Radio synchronisiert, das von Sendemasten ausgestrahlt wird. Das Signal ist als JJY bekannt:

https://en.wikipedia.org/wiki/JJY

Nach dem Erdbeben 2011 war der Turm im Osten Japans eingestürzt. Die Zeitsynchronisation im Osten Japans ist betroffen. Daher hat jemand Japaner einen Simulator gemacht und im Internet geteilt.


Ich komme aus Hongkong. Ich habe eine funkgesteuerte Armbanduhr und Uhr in Japan gekauft. Ich möchte, dass meine Geräte synchronisiert werden. Es gibt iOS- und Android-App-JJY-Simulatoren. Ich habe einige davon ausprobiert. Dieser funktioniert gut:

https://play.google.com/store/apps/details?id=jp.houryo.jjyemulator&hl=ja

Das Prinzip dahinter ist, die Zeit vom NTP-Server zu verwenden, das JJY-Signal zu emulieren und über den 3,5-mm-Audioanschluss zu senden.


Nun möchte ich den Emulator auf einem Raspberry-Pi implementieren. Im Internet sind einige Tutorials zu finden. Unten ist die, der ich folge:

http://itpro.nikkeibp.co.jp/atcl/column/14/093000080/093000002/?ST=oss&P=1 (Japanisch)

Anstelle des Quellcodes im Tutorial verwende ich diesen: https://github.com/snt/rpi_jjy_server


PROBLEM

Ich habe die Schaltung nach dem Tutorial gemacht:

Meistens liest meine Uhr jedoch kein Signal. Wenn ein Signal vorhanden ist, ist der Signalstatus "niedrig", und schließlich ist die Zeitsynchronisierung fehlgeschlagen. (Für die Android-App kann meine Uhr ein "hohes" Signal lesen.)

Hinweis: Ich verwende den Toshiba 2SC1815-GR-Transistor, 30-kOhm-Widerstände, die im Git-Hub-Artikel vorgeschlagen werden. Und eine aus einer Telefonleitung hergestellte Antenne.

Ich habe versucht, eine 9-V-Batterie zu verwenden, die die 5-V-Raspberry-Pi-Stromquelle ersetzt. Aber es hilft nicht.

Meine Elektronikkenntnisse sind sehr begrenzt. Bitte verzeihen Sie mir, wenn ich dumme Fragen gestellt oder dumme Fehler gemacht habe. Könnte jemand bitte darauf hinweisen, wenn ich etwas falsch gemacht habe? Oder wie könnte ich das Signal von der Antenne verstärken?

Große Anerkennung für jede Hilfe!

Ich persönlich würde einfach die Antenne für das Smartphone nachbauen. Überprüfen Sie das Signal mit einem Oszilloskop und versuchen Sie, es zu reproduzieren. Aber mein erster Gedanke ist.. Die Antenne sieht ganz anders aus. Haben Sie versucht, die 3,5-mm-Antenne an der Schaltung anzubringen, um zu sehen, ob sie funktioniert?
Die 3,5-mm-Antenne ist die gleiche wie die, die ich auf dem Raspberry-Pi verwende. Sie sind die verdrillten Drähte innerhalb einer Telefonleitung. Und ich habe versucht, das 3,5-mm-Modell auf der Himbeere zu verwenden. Es funktioniert nicht. (Funktioniert die Antenne wirklich nur mit einem Ende am Steckbrett?) Ein Oszilloskop ist mir zu teuer, da ich nur Anfänger bin und nur zum Spaß daran arbeite.
Ja, der Draht ist derselbe, aber die Größe spielt auch eine Rolle. Und ... normalerweise haben elektrisch gekoppelte Antennen nur einen angeschlossenen Draht, aber magnetisch gekoppelte haben beide angeschlossen. Hat die zweite Website die Antenne beschrieben? Weil ich denke, Sie brauchen nur ein Stück Draht, keine Spule ...
Vielen Dank für Ihren Kommentar. Ich habe keine Ahnung von "elektrisch gekoppelten" und "magnetisch gekoppelten" Antennen. Lassen Sie mich zuerst etwas recherchieren, um das zu verstehen!
Bei diesen niedrigen Frequenzen funktioniert eine Magnetschleifenantenne meiner Meinung nach besser, siehe meine Antwort.
Im Artikel stand: Finde eine Vinylleine mit 1x-cm bis zu mehreren Metern, mach eine Schlaufe, platziere sie neben einer Funkuhr; Legen Sie ein Ende auf das Steckbrett. 最も簡単なのはGPIOでLEDを点灯する回路を作り、LEDとトランジスタのコレクタの間からビニール線(数十センチから数メートル程度)を引き出して、その線をぐるぐる巻きにしておくというものでしょう。その" Ich glaube also, dass die ursprüngliche Einrichtung funktionieren sollte?
Sehen Sie sich das Foto an, die Schleife ist mit 2 Anschlüssen mit dem Audioausgang des Smartphones verbunden!
Ja. Und deshalb poste ich das Foto auch. Ich glaube, sie (die Antennen) verhalten sich unterschiedlich.

Antworten (1)

„Funktioniert die Antenne eigentlich wirklich, wenn nur ein Ende mit dem Steckbrett verbunden ist?“ Nein, nicht diese Art von Antenne. Was Sie haben, ist eine Rahmenantenne, die ein Magnetfeld erzeugt. Sie verwenden es jetzt so, als wäre es eine elektrische Antenne, und das würde funktionieren, WENN es sehr lang wäre. Bei 60 kHz sprechen wir von 1250 Metern (!!!) und nicht wie bei Ihnen aufgerollt.

Ich schlage vor, dass Sie das offene Ende der Antenne an +5 V anschließen, ABER um den Strom zu begrenzen, verwenden Sie einen Vorwiderstand mit einem Wert von etwa 1 kOhm.

Wenn Sie das bauen, dann denke ich, dass es eine gute Chance gibt, dass es funktioniert. Beachten Sie, dass die Antenne eine Spule ist (langer Draht mit vielen Windungen) und beide Enden des Drahtes verbunden sind!

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Vielen Dank für Ihre Antwort. Es tut mir leid, aber mein Wissen ist begrenzt. Entscheidet die physikalische Form der Antenne oder die Art der Verbindung über die Form (elektrisch / magnetisch) der Antenne?
Antennen, das ist ein schwieriges Thema ! Antennen senden EM-Wellen aus, also sowohl elektrische als auch magnetische. Allerdings ist bei manchen Typen das Magnetfeld stärker, bei anderen das elektrische Feld. Das könnte auch damit zusammenhängen, wie du es anschließt. Normalerweise sind einseitig verbundene Antennen elektrisch und zweiseitig mit einer leitenden Verbindung (wie Ihre) sind magnetisch.
Da ich also nur einen Pin anschließe, wodurch die Antenne als elektrische funktioniert, würde die Begrenzung des Stroms mit einem 1-kOhm-Widerstand das Signal "besser" machen, ohne die Länge der Antenne zu verlängern, oder?
Wie wäre es, wenn ich die Antenne in eine magnetische umwandeln möchte, muss ich die Hardware oder den Code ändern?
Der 1-kOhm-Widerstand wird benötigt, um den Strom zu begrenzen, da Ihre Antennenschleife im Wesentlichen nur ein langer Draht ist. Machen Sie einfach, wie ich vorgeschlagen habe, verbinden Sie das offene Ende der Antenne über den 1-kOhm-Widerstand mit +5 V, das ist alles, was Sie tun müssen. Sie verwenden eine Rahmenantenne, die als Magnetantenne funktionieren soll. Es besteht keine Notwendigkeit, Ihren Code zu ändern.
Ich habe gerade die Schaltung ausprobiert, die Sie mir gegeben haben. Obwohl es vielversprechend aussieht, kann meine Uhr immer noch kein Signal lesen. Hast Du eine Idee? i13.photobucket.com/albums/a298/y2kbugleung/…
Ihre Schaltung sieht jetzt für mich in Ordnung aus. Sind Sie sicher, dass ein GPIO-Ausgang das richtige Signal liefern kann? Ich sage das, weil das ursprüngliche Projekt den Audioausgang eines Telefons verwendet, der ein analoger Ausgang ist. Vielleicht dauert es einfach sehr lange, bis die Uhr das Zeitsignal empfängt. Bist du sicher, dass es im Empfangsmodus ist? Normalerweise erhalten diese Uhren nur einmal am Tag die Uhrzeit, um Batterie zu sparen.
Meine Uhr hat früher ein "niedriges" Signal von GPIO empfangen, und es gibt ein Tutorial zur Verwendung von GPIO als Signalausgang, ich denke, es ist möglich. (Ich kann jedoch nicht bestätigen, dass es ein Signal von GPIO gibt, da ich es nicht überprüfen kann.) Ich kann meine Uhr in den Force-Sync-Modus versetzen. Der "Second-Pin" der Uhr würde beim Starten des Sync-Modus auf 12 zeigen und auf "H", "L" für hohes und niedriges Signal und "N" für kein Signal zeigen. Und ich habe auch eine Uhr zum Testen. Das gleiche Ergebnis.
Entschuldigung für den Titel. Das Projekt erzeugt ein 40-kHz-Signal, aber kein 60-kHz-Signal. Ich habe einen Artikel gelesen, bevor ich dieses Projekt gemacht habe. a-chien.blogspot.hk/2013/08/blog-post_2620.html (Chinesisch) Anscheinend kann der Computer kein 40-kHz-Signal erzeugen. Wir machen die Harmonie des 13,3-kHz-Signals und daher 40 kHz. (Ich bin mir nicht sicher, was ich sage: P) Kannst du es verstehen, wenn du die Grafiken in dem Artikel liest? Ich bin mir nicht sicher, ob dies bei diesem Problem helfen kann. Danke nochmal für deine Hilfe!
Von einem Audioport können Sie normalerweise tatsächlich keine 40 kHz machen, da Audio bis zu 20 kHz geht. Ich verstehe ungefähr die 3. Harmonische von 13,3333 kHz, das sind tatsächlich 40 kHz. Aber mit dem GPIO-Port kann man vielleicht direkt 40 kHz machen. Das Problem ist, dass wir nicht wissen, ob das Signal, das Sie machen, gut für die Uhr ist, vielleicht ist es zu stark? Normalerweise sind diese Signale sehr schwach. Interessantes Projekt, wenn man es nur zum Laufen bringen könnte :-)
Ah ich sehe. Ich werde weiter nach der Lösung suchen. Mein Freund, der an der Universität studiert, kann mir helfen, mir ein Oszilloskop zu leihen. Ich werde hier auf dem Laufenden halten. Danke für deine erneute tolle Hilfe!
Ja, ein Oszilloskop hilft sehr! Viel Glück mit Ihrem Projekt.
Entschuldigen Sie, ich möchte nach einigen grundlegenden Ideen fragen. Wie bestimmen Sie, welche Widerstände in der Schaltung verwendet werden sollen? Und gibt es eine Beziehung zwischen dem Spannungseingang in den Basisstift des Transistors und dem Ausgang des Emitters? Danke.
Ja, das gibt es, aber das lässt sich nicht in ein paar Zeilen erklären! Dies ist ein guter Ausgangspunkt: en.wikipedia.org/wiki/Bipolar_junction_transistor Die Widerstandswerte sind in Ihrer Schaltung nicht so kritisch (2x größer oder kleiner würde auch funktionieren), ich habe nur Werte verwendet, die ich normalerweise verwende, und 9 von 10 Mal ist das gut genug. Ich spiele seit 30 Jahren mit Transistoren, also muss ich nicht mehr so ​​viel darüber nachdenken.
Boah 30 Jahre! :o Einige Aktualisierungen. Ich bin dazu übergegangen, den C-Quellcode aus dem japanischen Tutorial anstelle des Python-Codes zu verwenden. Es verwendet den bcm2835-Chip auf dem Raspberry-Pi, um eine genaue "Lücke" zwischen Impulsen zu erzeugen. Nach einigen Versuchen kann meine Uhr ständig ein "niedriges" Signal und manchmal ein "hohes" Signal anzeigen. Aber es scheint, dass die Zeitsynchronisierung noch nicht abgeschlossen werden konnte. Ich denke, ich muss das Signal verbessern. Darf ich wissen, ob ich mehr Schleifen machen, einen längeren Draht oder eine höhere Spannung verwenden sollte, um ein stärkeres Signal zu erzeugen? Was ist der Unterschied zwischen einer Linien- und einer Rahmenantenne? Wie wäre es mit Alufolie?
30 Jahre, weil ich früh im Leben angefangen habe :-) Da Ihre Uhr jetzt ein niedriges/hohes Signal zu haben scheint, denke ich, dass die Antenne usw. in Ordnung ist. Ich würde mich auf das Zeitsignal konzentrieren und prüfen, ob es so ist, wie es sein sollte. Verwenden Sie vielleicht das Oszilloskop, um sicherzugehen. Ich erwarte nicht, dass das Ändern der Antenne, das Hinzufügen von Alufolie usw. irgendetwas verbessert.
Ich finde heraus, ob die "Real Time Performance Constraints" helfen: airspayce.com/mikem/bcm2835 Ich liebe Wissenschaft sehr, seit ich ein Kind war. Da Studenten in Hongkong im Studium in „Kunst“ und „Wissenschaft“ eingeteilt werden und ich mit Freunden in „Kunst“ ging, kann ich mein Interesse mit meinem Wissen nicht aufrechterhalten. HK ist eine Wirtschaftsgesellschaft... Raspberry-Pi ist wirklich ein gutes "Spielzeug" für mich, um in diesem Alter alles aufzuschnappen :D
Es scheint, dass ich es zum Laufen gebracht habe: i13.photobucket.com/albums/a298/y2kbugleung/… Aber ich muss das Signal noch verstärken, da ich möchte, dass es innerhalb von 1 - 2 Metern empfangen wird. Können Sie mir bitte beibringen, wie das geht? i13.photobucket.com/albums/a298/y2kbugleung/…
Übrigens habe ich etwas merkwürdiges gefunden. Dies ist das C-Programm, das ich verwende: pastebin.com/QLSSv0rz Es sollte ein 40-kHz-Signal ausgeben. In Japan werden im Osten 40 kHz und im Westen 60 kHz verwendet. Aber wie Sie auf dem Bild sehen konnten, das ich in der letzten Nachricht gepostet habe, zeigte die Uhr "W" anstelle von "E". Gibt es eine Möglichkeit, das Signal der Antenne zu beeinflussen und in 60 kHz zu ändern?
Die 40 kHz haben nichts mit der Antenne zu tun! Die Antenne ist nur ein Stück Draht. Die 40 oder 60 kHz werden im Code vom RPi definiert. Es war schwer zu finden, aber ich glaube, ich habe es gefunden, schauen Sie in: void gen_pulse(int ms) und genauer gesagt: bcm2835_delayMicroseconds(12); es gibt 2 davon, 2 x 12 us = 24 us und 1/24us = 41,67 kHz, OK, nicht 40 kHz, aber nah genug. Vielleicht liegt der offizielle Zeitsender auch bei 41,67 kHz. Also für 60 kHz: 1/ 60 kHz = 16,67 us /2 = 8,33 us. Wenn Sie also bcm2835_delayMicroseconds(12) in bcm2835_delayMicroseconds(8.333) ändern, sollten Sie 60 kHz erhalten
Aber prüfen Sie, welche Frequenz der offizielle Sender tatsächlich verwendet, denn es könnte auch sein, dass Sie bcm2835_delayMicroseconds(8) benötigen, also wären das 2 x 8 us = 16 us: 1/ 16 us = 62,5 kHz.
Wenn Sie die Reichweite Ihres Senders erweitern möchten, können Sie den 1-kOhm-Widerstand in Reihe mit der Antenne auf 470 Ohm verringern oder noch besser eine größere Rahmenantenne herstellen. Aber dafür brauchst du viel Draht, ich denke an eine 50 cm breite Antenne und 10 Schleifen oder so. Also mindestens 5 m Kabel.
Ich glaube, theoretisch sollten es 40 kHz und 60 kHz sein jjy.nict.go.jp/jjy/trans/index-e.html Mein Punkt ist, dass das RPi ein 40-kHz-Signal senden sollte, aber die Uhr liest 60 kHz. Es ist seltsam. Meinst du 50cm Durchmesser für die Antenne? Gibt es einen Artikel, den ich über die Beziehung zwischen Spannung, Durchmesser, Anzahl der Schleifen, Drahtdicke, Form der Antenne usw. zur Signalstärke der Antenne lesen kann? Danke.
Ja, ich meine 50 cm Durchmesser für die Antenne, aber das ist nur meine Vermutung! Es gibt Bücher über Antennen, jede Menge davon. Aber lesen Sie diese nur, wenn Sie Antennenexperte werden wollen. Antennen sind ein kompliziertes Thema. Ich denke, in Ihrem Fall ist es am besten, einfach ein bisschen zu experimentieren.
Ich habe versucht, 28 cm Durchmesser und 15 Schleifen als Antenne zu machen. Diese Größe ist ungefähr die maximale Grenze, die ich zu Hause platzieren kann. (HK ist Platzangst) Versucht, die Widerstandswerte zu tauschen, die Signallänge scheint nicht viel zu helfen. Könnte ich angesichts der Tatsache, dass ich einen Durchmesser von etwa 30 cm beibehalten möchte, einfach mehr Schleifen hinzufügen, um die Signallänge zu erhöhen? Das Seltsame ist immer noch, dass meine Uhr immer noch "W" anzeigt (60-kHz-Signal empfängt), während ich 40-kHz-Code sende. Beim Wechsel in 8,3 ms im Code (Senden von 60 kHz) empfängt meine Uhr ein sehr schwaches oder kein Signal. Es scheint, dass das Senden des Signals problematisch ist?
Und wie ich im Internet gefunden habe, sollte das Signal von den beiden Seiten der Antenne gesendet werden, anstatt vom "Loch". Diese Platzierung sollte also korrekt sein, oder? i13.photobucket.com/albums/a298/y2kbugleung/…
Du hast da ein cooles Setup :-) Ausgezeichnet! Ja, das Signal kommt aus der Vorder- und Rückseite der Antenne, sodass die Platzierung in Ordnung sein sollte. Auch da die Frequenz sehr niedrig ist, ist die Platzierung nicht so kritisch. Wenn ich Sie wäre, würde ich mit den 8,3 ms im Code experimentieren, ihn größer und kleiner machen, sehen, was am besten funktioniert. Auch ein Trick ist zu sehen, was funktioniert, zum Beispiel: Wenn 7,5 ms - 8,5 ms funktionieren, machen Sie 8,0 ms, was genau in der Mitte liegt.
Ich habe mir das Tutorial gerade nochmal genau durchgelesen. (Ich spreche nicht fließend Japanisch, also habe ich die Absätze nur überflogen). " " Das Signal konnte also nicht rein 40 kHz sein, da 12 ms Schlaf nicht erreicht werden konnten. @FakeMoustache kennst du dich mit C aus? Ich habe "Echtzeit-Leistungseinschränkungen" gesehen, habe aber keine Ahnung, wie ich sie anwenden soll. Ich glaube, das sollte der entscheidende Punkt sein. Danke
NVM, ich denke, es läuft bereits als "Echtzeit" -Priorität: 1479 root rt 0 18192 1464 1136 R 60.5 0.2 0:22.13 waveclock
Nein, ich kenne mich mit C nicht aus, ich benutze hauptsächlich Python, was viel einfacher ist :-) Ich würde auch versuchen, dem Programm eine hohe Priorität einzuräumen. In einer Multitasking-Umgebung wie Linux können Sie nur begrenzt viel tun. Aber auch für eine schnelle CPU ist eine Millisekunde eine lange Zeit.
ja es ist seltsam. auf nächste Sekunde warten, 697634 usec auf nächste Minute warten, 13000000 usec Aktuelle Uhrzeit: 09.12.2015 13:54:00 Aktuelle Uhrzeit: 09.12.2015 13:54:59 55:59 ... Aktuelle Uhrzeit: 09.12.2015 15:17:37 Aktuelle Uhrzeit: 09.12.2015 15:18:37 Aktuelle Uhrzeit: 09.12.2015 15:19:36 Soweit ich verstehe , sollte der Sendevorgang 1 Minute dauern und sofort einen weiteren Sendevorgang starten.
Oh? Ist eine Millisekunde nicht ein "Standard"? Wäre es auf einigen CPUs schneller und auf anderen langsamer? :Ö
Ja, natürlich ist eine Millisekunde eine Millisekunde, ABER Linux ist kein Echtzeit-Betriebssystem, daher kann es nicht garantieren, dass es 1 ms wartet, wenn Sie ihm sagen, dass es 1 ms warten soll. Linux wird sein Bestes geben, aber es kann etwas länger als 1 ms dauern, wenn die CPU ausgelastet ist. Zeitkritische Systeme verwenden Echtzeit-Betriebssysteme, aber diese sind im Allgemeinen nicht multitaskingfähig, sodass das Timing fast garantiert werden kann.
Okay, lassen Sie mich den Status aktualisieren. Nach dem letzten Kommentar habe ich Raspbian in Echtzeit studiert. Nach vielen Versuchen funktioniert der BCM2835-Code immer noch nicht. Aber zum Glück wird von einem Taiwanesen gnitnawtw.blogspot.hk/2015/10/piquadcopter-raspberry-pi.html darauf hingewiesen, dass es sinnlos ist, BCM2835 weiter auszuprobieren. Wie auf der Webseite airspayce.com/mikem/bcm2835 Changelog 1.9 angegeben, kostet der Aufruf der Verzögerungsfunktion 100-200us. Während ich nur mein Skript brauche, um jedes Mal 12 us zu verzögern. Ich denke, es erklärt, warum das Signal nicht genau ist und eher wie 60 kHz als 40 kHz aussieht.
Und wie vom taiwanesischen Autor vorgeschlagen, werde ich stattdessen Folgendes versuchen: abyz.co.uk/rpi/pigpio
Ich bin daran interessiert, ob dieser wie eine Antenne verwendet werden würde: robot-electronics.co.uk/htm/srf05tech.htm
Nein, das ist etwas ganz anderes! Es ist ein Ultraschall-Abstandssensor (Hochfrequenzschall). Vielleicht hat Sie das Strahlungsmuster verwirrt, das aussieht, als könnte es von einer Antenne stammen. Es ist in der Tat ein ähnliches Diagramm, aber es zeigt die Schallleistung, nicht die elektromagnetische Wellenleistung.
Nach dem letzten Update habe ich im Internet gesucht und verschiedene Wege ausprobiert, um 12us auf Raspberry zu erreichen. Mit einem Betriebssystem scheint dies jedoch unmöglich zu sein. Und ich habe angefangen, mit meinem neuen Arduino zu spielen. Heute habe ich gerade das Internetmodul bekommen, nach einigen Programmänderungen funktioniert es endlich! Hurra! Die Uhr kann ein "hohes" Signal empfangen. Aber es ist immer noch seltsam, dass der Arduino ein 40-kHz-Signal aussendet und die Uhr sagt, dass er 60 kHz empfängt. Ich muss die Antenne noch kleiner und länger im Empfangsbereich machen. Ich danke Ihnen für Ihre Hilfe!
Für jemandes Interesse an der Zukunft ist dies die Webseite, die das Arduino-Programm enthält: d.hatena.ne.jp/NeoCat/20110328/1301256560
Und das Programm muss aktualisiert werden, bevor es ausgeführt werden kann. Bitte suchen Sie den ursprünglichen Link auf dieser Seite, um den Artikel zu finden. Bitte überspringen Sie Schritt 6, da das Programm dadurch fehlschlagen wird. seesaawiki.jp/system3333/d/…