Frage:
Wie kann eine konstante Rechteckwelle von 38 kHz für eine IR-Lichtquelle erzeugt werden?
feklee
2017-02-08 00:11:08 UTC
view on stackexchange narkive permalink
  • Anwendung: IR-Lichtschranke über eine Entfernung von 1 m

  • Empfänger: z.B. Vishay TSSP4038 IR-Sensor (auf 38 kHz eingestellt)

  • Umgebungstemperaturbereich: -10 bis 40 ° C

Hier habe ich eine -Schaltung mit einem Schmidt-Trigger gefunden, die das tun sollte Trick, wenn ein Kristall bei 38 kHz schwingt. Aber ich kann nicht finden irgendein. Digikey listet 38-kHz-Kristalle auf, aber - unter Berücksichtigung der Spezifikation Blätter - es stellt sich heraus, dass es sich tatsächlich um 32.768 Hz-Kristalle handelt.

Wie erhalte ich 38 kHz?

Ich habe auch eine NE555-basierte Schaltung in Betracht gezogen, aber das ist keine Temperatur stabil, und es erfordert Trimmen. Eine andere Option, wurde mir gesagt, wäre Verwenden Sie ein Arduino, um die 38 kHz zu erzeugen, aber das sieht so aus Overkill.

Update

Nach der Empfehlung in der Bewerbungsnotiz, die in Ali Chens Antwort erwähnt wurde, entschied ich mich schließlich für einen Arduino Nano. Für die Erzeugung der 38 kHz habe ich den Timer verwendet, wie in einem Arduino-Forumsbeitrag von Nick Gammon im Arduino-Forum beschrieben. Sein Codebeispiel:

  const byte LED = 11; // Timer 2 "A" Ausgang: OC2A

void setup () {
 PinMode (LED, OUTPUT);

 // Timer 2 einrichten
 TCCR2A = _BV (COM2A0) | _BV (WGM21); // CTC, OC2A auf Compare Match umschalten
 TCCR2B = _BV (CS20); // Kein Vorteiler
 OCR2A = 209; // vergleiche einen Registerwert (210 * Taktrate)
                        // = 13,125 nS, also ist die Frequenz 1 / (2 * 13,125) = 38095

} // Ende des Setups

void loop () {}
 

Über einen Interrupt-Pin habe ich den Nano an einen Yún angeschlossen, der die Hauptlogik ausführt und den Nano anweist, das Signal ein- oder auszuschalten. Beachten Sie, dass es in der Vishay-Anwendungsnotiz darum geht, die Entfernung zu einem Objekt zu messen, während es in meiner Anwendung lediglich darum geht, zu messen, ob ein Strahl unterbrochen ist oder nicht.

Nächste Schritte: Den Nano loswerden; Upgrade von 38 auf 56 kHz für eine etwas schnellere Erkennung.

MCU.Mehr Zeichen, um das Minimum auszufüllen.
Überlegen Sie, wie "temperaturstabil" der IR-Generator einer hoch kostenoptimierten, massenproduzierten, fiesen, generischen TV-Fernbedienung sein könnte.Es würde mich nicht wundern, wenn ein 32.768-Hz-Kristall für diese Anwendung ideal wäre.
Ist es für die reflektierende Wahrnehmung oder für eine direkte Sichtanwendung?
@AliChen durch Strahl
Ihre Herausforderung besteht nicht in der Frequenzgenauigkeit, sondern darin, dass der Empfänger ein Signal schnell ignoriert, wenn die Modulation selbst nicht mit der erwarteten Geschwindigkeit ein- und ausgeschaltet wird.Beachten Sie die Erwähnung von "Burst" im Datenblatt.
@Wossname, Alle TV-Fernbedienungen sind mit speziellen Mikroprozessoren (Beispiel: upD78F0527) mit einem stabilen Kristall im Bereich von 5 bis 6 MHz ausgestattet.Die erforderliche Trägerfrequenz für den IR-Sender (36 kHz, 38 kHz, 56 usw.) und alle hoch entwickelten Modulationen wird intern durch digitale Logik erzeugt.
Sieben antworten:
#1
+6
Chris Stratton
2017-02-08 11:55:31 UTC
view on stackexchange narkive permalink

Ihre Bemühungen sind fehlgeleitet. Diese Empfänger sind nicht sehr empfindlich gegenüber der genauen Frequenz , aber sie halten die Ausgabe nicht mit einem konstanten modulierten Signal aufrecht.

Stattdessen sind sie so konstruiert, dass sie nach "Modulationsbursts" suchen und Rauschen zurückweisen, das nicht wie eine Folge von Impulsen eines modulierten Trägers aussieht. Damit sie weiter funktionieren, benötigen Sie nicht einen Signalgenerator, sondern zwei, einen für die Modulation und einen für die Erzeugung der Bursts in der Hüllkurve der Modulation.

Der erste Generator erzeugt eine 38-KHz-Modulation.

Der zweite Generator schaltet den ersten Generator mit einer Geschwindigkeit innerhalb des Fensters der Arten von Fernsignalen ein und aus, für die der Empfänger ausgelegt ist.

Normalerweise verwenden Sie einen Mikrocontroller. Verwenden Sie einen Timer-Kanal, der vom MCU-Takt getrennt ist, um 38 kHz so genau wie möglich zu erzeugen. Es muss nicht genau sein.

Dann müssen Sie entweder Software oder einen anderen Timer-Kanal ein- und ausschalten.

(Sie könnten wahrscheinlich einen 556-Dual-Timer verwenden; MCUs, die dies können, haben jedoch eine Menge von weniger als einem Dollar, benötigen weniger Support-Komponenten und können auch andere Aufgaben ausführen.)

Wenn Sie eine konstante Ausgabe vom Detektor erwartet haben, müssen Sie Ihr Systemdesign überdenken. Stattdessen müssen Sie dem Detektor wahrscheinlich eine Impulsdehnung folgen, die die Lücken zwischen Ihren Sendeimpulsen füllen kann. Sollte Ihre Übertragung aufhören, verlängert der Impulsstrether den letzten Impuls vom Empfänger und stoppt dann.

Sie haben Recht, der Demodulator in dieser Art von Empfängern ist "konstruiert" mit der Notwendigkeit, eine minimale Lücke zwischen aktiven Bursts von Trägerimpulsen zu haben.Die Spezifikationen für diesen speziellen Teil erwähnen dies nicht, aber andere ähnliche Vishay-Produkte erwähnen die minimale Lücke ausdrücklich.Aber ich würde nicht sagen, dass es so "konstruiert" ist, ich denke, das ist ein Designmangel, ein Fehler.Produkte von Sharp haben ähnliche Funktionen.
Die @AliChen-Amplitudenerkennung erfordert eine automatische Verstärkungsregelung (AGC), um einen * großen * Trägeramplitudenbereich zu akzeptieren.Die Konstante der Verstärkungsregelungszeit ist so konstruiert, dass diese Chips einfach gehalten werden.Die meisten haben eine ziemlich kurze Zeitkonstante, einige sind länger.Aber alle müssen nach einer Weile mit hohem Gewinn.
@glen_geek, über eine zweite Reflexion, ja, die AGC kann erklären, warum Sie eine Lücke in der Modulation benötigen.Es wird benötigt, wenn Sie aufeinanderfolgende Modulationsbits empfangen möchten.Aber wie erklärt es, warum der Empfänger mit nicht moduliertem Trägereingang keinen dauerhaften Ausgang erzeugen kann?Die Spezifikationen des Vishay TSSP4038 könnten hinsichtlich der Signalbeschränkungen klarer sein.
@AliChen - Ihre Bearbeitung war höchst unangemessen.Änderungen sollten niemals die Bedeutung einer Antwort wie Ihre umkehren.Es sind genau kontinuierlich modulierte Träger, die die Empfänger ablehnen. Sie reagieren nur, wenn die Modulation selbst ein- und ausgeschaltet wird - 38-kHz-Burst - Stille - 38-kHz-Burst - Stille - usw.
@Chris, Dies könnte an meinem eingeschränkten Englischverständnis liegen.Ich lese, wenn das Signal "konstant" ist (38-kHz-Umschaltung), ist es nicht moduliert.Wenn das Signal moduliert ist, ist es nicht "konstant".Die Kombination "Konstant moduliertes Signal" ergibt für mich keinen wörtlichen Sinn.Die Bedeutung wurde also nicht umgekehrt.Die verständliche Alternative könnte "konstantes, nicht moduliertes Signal" mit Komma sein.
Sie versuchen weiterhin, die Bedeutung umzukehren.** Konstantes moduliertes Signal ** ist * genau * das, was gemeint war, und unterscheidet sich offensichtlich von einem * unmodulierten * Signal.Wenn Sie nicht verstehen, sollten Sie am besten nicht versuchen, die Worte anderer zu ändern!
Anscheinend haben wir hier eine terminologische Schwierigkeit.Laut der umfassendsten Suchmaschine von Google liefert eine Anfrage nach "moduliertem Signal" 455.000 Treffer mit der Definition ** "In der Elektronik und Telekommunikation ist Modulation der Prozess des Variierens einer oder mehrerer Eigenschaften einer periodischen Wellenform, die als Trägersignal bezeichnet wird"**. * Im Gegensatz dazu gibt Ihr Begriff" Konstant moduliertes Signal "3 (drei!) Treffer zurück.Anscheinend bedeutet dies ein Gleichstromsignal, das von einem periodischen Träger unterbrochen wird.Verwenden Sie beim nächsten Mal eine allgemein akzeptierte Terminologie, wenn Sie Ihre Ideen und Beobachtungen kommunizieren möchten.
Die Sprache hat die Eigenschaft, dass wir Begriffen Modifikatoren hinzufügen können, um ihre Bedeutung zu erweitern."Konstante" ist ein klares Beispiel dafür;Es ist auch nicht meine ursprüngliche Wortwahl, * sondern das Wort, das in der Frage selbst verwendet wird *, um das bestimmte Ziel zu beschreiben, das hier kontraproduktiv wäre - ein * konstantes * moduliertes Signal funktioniert nicht, was benötigt wird, ist ein moduliertesSignal, das * nicht * konstant ist.
@AliChen AGC wird sehr häufig vom 38-kHz-Demodulator verwendet, um den Bitschwellenwert bei der OOK-Modulation zu bestimmen.Ein anhaltender Träger wird zum neuen "Normalen" und wird für "kein Signal" gehalten.Sie haben völlig Recht, dass diese Art von Demodulator Lücken erfordert.Es erfordert auch einen anfänglichen (konditionierenden) Vollträgerimpuls irgendeiner Art.Alle Protokolle beginnen mit einem Header.
@ChrisStratton, Ihre Erfindung des Begriffs "konstant moduliertes Signal" ist absurd.Ein "moduliertes Signal" ist per Definition nicht konstant.
Ihr Fehler besteht darin, dass Sie versuchen, sowohl "konstant" als auch "moduliert" einzeln auf "Signal" anzuwenden.Vielmehr gilt ganz offensichtlich "konstant" für "moduliertes Signal", um zu sagen, dass das "modulierte Signal" unverändert ist.Das ist nicht dasselbe wie zu sagen, dass das "Signal" unverändert ist.Und wieder ist es nicht meine "Erfindung", sondern mein Aufenthalt bei ** dem gleichen Modifikator, der in der Frage verwendet wurde **.
@glen_geek, danke, ich wurde durch Ihre Erweiterung von AGC in die Irre geführt.Anstelle von "automatisch" sollte "adaptiv" lauten, dann wird alles klar.Vielen Dank.
Ich habe endlich die Lichtschranke verkabelt und es ist * nicht * notwendig, das 38-kHz-Signal zu modulieren.Der TSSP4038 * wird kontinuierlich * niedrig ausgegeben, wenn er das Signal sieht, und er wird * kontinuierlich * hoch ausgegeben, wenn kein Signal vorhanden ist.
#2
+3
cyberponk
2017-02-08 07:27:18 UTC
view on stackexchange narkive permalink

Nehmen Sie einen ATMega328p und setzen Sie einen 7,6-MHz-Quarzkristall darauf. Im Phasenfrequenzkorrekturmodus mit ICR1 als 100 geben Sie dann ein genaues 38-kHz-Signal aus.

T Um dies zu tun:

Stellen Sie die MCU-Sicherungen beim Hochladen des Codes auf die folgenden Werte ein:

  low_fuses = 0x7D = 1111 1101
Bit 7 = 1 = CKDIV8 = Takt durch 8 teilen
Bit 6 = 1 = CKOUT = Taktausgang
Bit 5 = 1 = SUT1 = Startzeit auswählen
Bit 4 = 1 = SUT0
Bit 3 = 1 = CKSEL3 = Taktquelle auswählen
Bit 2 = 1 = CKSEL2
Bit 2 = 0 = CKSEL1
Bit 0 = 1 = CKSEL0
 

Der Code zum Erzeugen der 38 kHz an den Pins PB1 / OSC1A und PB2 / OSC1B lautet:

  // Stellen Sie Timer1 auf den korrekten Phasen- und Frequenzmodus. NICHT invertierter Modus
TCCR1A = _BV (COM1A1) | _BV (COM1B1);

// Prescaler auf clk / 1 setzen
TCCR1B = _BV (WGM13) | _BV (CS10);

// ICR-Register, das die Gesamtimpulslänge steuert
ICR1 = 100; // Teilt den Takt durch 100/2, also 7,6 MHz / 100/2 = 38 kHz
// OCR-Register, die den Arbeitszyklus steuern.
// OCR1A + OCR1B muss = IRC1 sein.
OCR1A = 50; // 50% des Impulses sind LOW
OCR1B = 50; // 50% des Impulses sind im HIGH-Zustand
 
#3
+2
Optionparty
2017-02-08 00:37:19 UTC
view on stackexchange narkive permalink

Wenn die Frequenz so kritisch ist, sollten Sie einen "Phase Locked Loop" (PLL) in Betracht ziehen.Ein Quarzoszillator mit einem "kleinsten gemeinsamen Nenner" mit der Frequenz, die Sie erzeugen möchten, sollte weniger Jitter erzeugen (wenn dies überhaupt ein Faktor ist).Nur als Beispiel 1,9 MHz geteilt durch 38 kHz = 50 mal.Ein 1,9 MHz geteilt durch 50 wäre also Ihr 38 kHz.Ich hoffe das hilft.

@JMRM22 Danke, dass Sie meinen Fehler abgefangen haben.Es ist wichtig, den Lesern korrekte Informationen zur Verfügung zu stellen.
#4
+2
Bob
2017-02-08 00:37:32 UTC
view on stackexchange narkive permalink

Die IR-Sensorspezifikation des Vishay TSSP4038 zeigt die Empfindlichkeit gegenüber der relativen Frequenz.Ein 555 mit temperaturstabilen externen Komponenten sollte Sie in einem angemessenen Bereich der Empfindlichkeit halten, aber Sie müssen herausfinden, wie viel Prozent der Empfindlichkeit über den gesamten Bereich auftreten können (eine Spezifikation von 0% ist niemals realistisch, aber der tatsächliche Prozentsatz ist sehr hochanwendungsspezifisch).Sie müssen nur einige Berechnungen anstellen, um die Drift im schlimmsten Fall gegenüber der Temperatur der RC-Komponenten zu ermitteln und herauszufinden, ob Sie den Empfindlichkeitstreffer erzielen können.

Alternativ würde ein Mikrocontroller mit einem Kristall zum Timing unter Verwendung eines Timerausgangs zum Umschalten eines Pins zum richtigen Zeitpunkt funktionieren und wäre zweifellos stabiler.

#5
+2
Ale..chenski
2017-02-08 05:07:24 UTC
view on stackexchange narkive permalink

Die Vishay-Empfängerspezifikationen zeigen die Filtercharakteristik als + -5% bei einer Dämpfung von 3 dB relativ zur Nennfrequenz (38 kHz).

Der beste (SE555 TI-Timer) hat eine interne interne Empfindlichkeit von 90 ppm / C, was über eine Spannweite von über 50 ° C 4500 ppm oder 0,45% ergibt.

Um auf 38 kHz zu kommen, müssen Sie einen 10nF-Kondensator mit 2k-Widerstand verwenden. Sie können NPO 1% tolerante Keramikkappen (z. B. von Murata) verwenden. Wenn Sie auch eine stabile Stromversorgung erhalten, sollten Sie in der Lage sein, eine Stabilität von 2-3% über 50 ° C zu erreichen.

Das Obige ist jedoch eher ein Wunschdenken, da TI selbst nichts garantiert, siehe diesen Blogeintrag.

Zusätzlich , wie Chris Stratton erwähnt, garantiert der Vishay-Empfängerteil keine konstante Ausgabe, wenn ein stabiles optisches Signal mit Trägerfrequenz angelegt wird Teil als TSOP6238.

UPDATE: Ich habe gerade ein kurzes Experiment mit einem ähnlichen IR-Empfänger, GP1UV700QS (36 kHz, von Sharp), durchgeführt. Wenn eine IR-LED von einem Signalgenerator als Quelle angesteuert wird, ist das Verhalten wie folgt: Wenn kein IR-Signal vorhanden ist, ist der Empfängerausgang HOCH; Wenn das Signal gestartet wird und fortgesetzt wird, geht der Empfänger auf LOW und goes HIGH von selbst. Die LOW-Pulsdauer hängt von der Nähe zum Emitter ab. In der Nähe (20 cm) kann der Puls bis zu 300 ms lang sein, während er in der Ferne (1 m) auf 1-2 ms schrumpft, bis er bei 250 us umschaltet. Da die Trägerfrequenzantwortcharakteristik ziemlich breit ist (5% bei -3 dB) und der Dynamikbereich sehr groß ist, spielt es keine Rolle, ob der Träger um + -5 kHz abweicht, die Ergebnisse sehen gleich aus.

BOTTOM LINE: Wenn das IR-Emitter-Signal nicht moduliert ist, nur ein 38-kHz-Träger mit konstanter Amplitude, kann die Klasse der IR-Empfänger als Vishay TSSP40xx oder Sharp GP1UV70xx den Ausgang des Logikdetektors nicht unterstützen.Damit diese ICs als "Lichtschranke" fungieren, muss die Trägeramplitude in charakteristische Bursts von etwa 1 ms EIN und ~ 1 ms Träger AUS moduliert werden.Leider wird der Ausgang entsprechend umgeschaltet. Um den Empfänger als "Go-Nogo" -Detektor zu verwenden, muss die Verarbeitungsschaltung das Umschalten erkennen.

Daher ist es möglicherweise einfacher, einen Kristall mit einem Mikroprozessor zu verwenden und interne programmierbare Timer zu verwenden, um die richtige Frequenz und Modulation zu erhalten, wie in der ursprünglichen Vishay-Appnote vorgeschlagen.

#6
+1
cyberponk
2017-02-08 10:36:53 UTC
view on stackexchange narkive permalink

38-kHz-Kristall bei Ebay Verwenden Sie einfach das Auswahlfeld für die richtige Frequenz.

ABER!Angesichts der Tatsache, dass genau diese Sensoren mit Arduinos verwendet werden, die normalerweise 16-MHz-Takte haben, würde ich in Betracht ziehen, den Arduino-Code für diese Sensor-Kits zu untersuchen, da möglicherweise ein fertiger Code für Ihr Projekt vorhanden ist!

#7
+1
DEED
2017-02-08 11:46:08 UTC
view on stackexchange narkive permalink

Zwei einfache Optionen für eine 38-kHz-Rechteckwelle:

  1. Verwenden Sie den in diesen PLL-Chip integrierten spannungsgesteuerten Oszillator: http://www.ti.com/lit/an/scha002a/scha002a.pdf (Informationen zur Auswahl von Komponenten zum Einstellen der Ausgangsfrequenz finden Sie auf Seite 16 des PDF.)

  2. Bauen Sie einen Relaxationsoszillator mit einem Operationsverstärker und temperaturstabilen Widerständen: http://www.falstad.com/circuit/e-relaxosc.html

  3. ol>

    Ein 555 ist wahrscheinlich die einfachste Lösung und über einen großen Temperaturbereich stabil genug.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...