Domanda:
Come generare un'onda quadra costante a 38 kHz per la sorgente di luce IR?
feklee
2017-02-08 00:11:08 UTC
view on stackexchange narkive permalink
  • Applicazione: barriera fotoelettrica IR su una distanza di 1 m

  • Ricevitore: ad es. Sensore IR Vishay TSSP4038 (sintonizzato su 38 kHz)

  • Intervallo di temperatura ambiente: da -10 a 40 ° C

Qui ho trovato un circuito con un trigger Schmidt che dovrebbe fare il trucco, se ci fosse un cristallo che oscilla a 38 kHz. Ma non riesco a trovare qualunque. Digikey elenca cristalli a 38 kHz, ma - guardando le specifiche fogli: si scopre che in realtà sono cristalli a 32.768 Hz.

Come ottengo 38 kHz?

Ho anche considerato un circuito basato su NE555, ma non è la temperatura stabile e necessita di rifilatura. Un'altra opzione, mi è stato detto, sarebbe stai usando un Arduino per generare i 38 kHz, ma sembra eccessivo.

Aggiorna

Seguendo la raccomandazione nella nota applicativa menzionata nella risposta di Ali Chen, ho finalmente deciso di utilizzare un Arduino Nano. Per generare i 38 kHz, ho utilizzato il timer come descritto in un post del forum Arduino di Nick Gammon nel forum Arduino. Il suo esempio di codice:

  LED const byte = 11; // Uscita "A" del timer 2: OC2A

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

 // imposta il timer 2
 TCCR2A = _BV (COM2A0) | _BV (WGM21); // CTC, attiva OC2A su Confronta corrispondenza
 TCCR2B = _BV (CS20); // Nessun prescaler
 OCR2A = 209; // confronta un valore di registro (210 * velocità di clock)
                        // = 13,125 nS, quindi la frequenza è 1 / (2 * 13,125) = 38095

} // fine della configurazione

void loop () {}
 

Tramite un pin di interruzione, ho collegato il Nano a uno Yún, che esegue la logica principale e che dice al Nano di attivare o disattivare il segnale. Tieni presente che la nota applicativa di Vishay riguarda la misurazione della distanza da un oggetto, mentre la mia applicazione riguarda semplicemente la misurazione se un raggio è interrotto o meno.

Passaggi successivi: sbarazzarsi di Nano; Passa da 38 a 56 kHz per un rilevamento leggermente più veloce.

MCU.Più caratteri da compilare il minimo.
Considera quanto potrebbe essere "stabile alla temperatura" un generatore IR di telecomando TV generico, prodotto in serie e altamente ottimizzato in termini di costi.Non sarei sorpreso se un cristallo da 32.768 Hz fosse l'ideale per questa applicazione.
È per il rilevamento riflettente o per un'applicazione con vista diretta?
@AliChen tramite trave
La tua sfida non è la precisione della frequenza, ma piuttosto il fatto che il ricevitore ignorerà rapidamente un segnale se la modulazione non si accende e si spegne a una velocità entro le aspettative.Notare la menzione di "burst" nella scheda tecnica.
@Wossname, tutti i telecomandi TV sono progettati con microprocessori specializzati (esempio: upD78F0527) con un cristallo stabile nella gamma 5-6MHz.La frequenza portante necessaria per il trasmettitore IR (36kHz, 38kHz, 56, ecc.) E tutta la modulazione sofisticata è generata internamente dalla logica digitale.
Sette risposte:
Chris Stratton
2017-02-08 11:55:31 UTC
view on stackexchange narkive permalink

I tuoi sforzi sono stati indirizzati male; questi ricevitori non sono così sensibili alla frequenza precisa , ma non manterranno l'uscita con un segnale modulato costante.

Invece, sono progettati per cercare "raffiche" di modulazione e rifiuteranno il rumore che non sembra un treno di impulsi di portante modulata; per farli continuare a funzionare non avrete bisogno di un generatore di segnale ma di due, uno per la modulazione e l'altro per creare i burst nell'inviluppo della modulazione.

Il primo generatore produce una modulazione a 38 KHz.

Il secondo generatore accende e spegne il primo generatore a una velocità all'interno della finestra dei tipi di segnali remoti che il ricevitore è progettato per accettare.

In genere, utilizzi un microcontrollore; utilizzare un canale timer diviso dal clock MCU per produrre i 38 KHz con l'approssimazione più vicina possibile. Non è necessario che sia esatto.

Quindi o il software o un altro canale del timer che lo attivi e disattivi.

(Probabilmente potresti usare 556 dual timer; ma gli MCU che possono farlo sono ben al di sotto di un dollaro in quantità, richiedono meno componenti di supporto e possono fare anche altre cose).

Se ti aspettavi un output costante dal rilevatore, dovrai ripensare alla progettazione del tuo sistema; al contrario, probabilmente è necessario seguire il rilevatore con un allungatore di impulsi che possa riempire gli spazi tra i vostri impulsi di trasmissione; se la tua trasmissione cessa, l'impulso più intenso estenderà l'ultimo impulso dal ricevitore, quindi si fermerà.

Hai ragione, il demodulatore in questo tipo di ricevitori è "ingegnerizzato" con la necessità di avere un intervallo minimo tra i burst attivi di impulsi portanti.Le specifiche per questa particolare parte non lo menzionano, ma altri prodotti Vishay simili menzionano esplicitamente il divario minimo.Ma non direi che sia "ingegnerizzato" in questo modo, penso che questa sia una carenza di progettazione, un bug.I prodotti Sharp hanno caratteristiche simili.
@AliChen Il rilevamento dell'ampiezza richiede il controllo automatico del guadagno (AGC) per accettare un intervallo di ampiezza portante * enorme *.La costante di tempo del controllo del guadagno è progettata ed è fissata per mantenere questi chip semplici.La maggior parte ha una costante di tempo abbastanza breve, alcune sono più lunghe.Ma tutto deve con un guadagno elevato dopo un po '.
@glen_geek, su una seconda riflessione, sì, l'AGC può spiegare perché hai bisogno di un divario nella modulazione.È necessario quando si desidera ricevere bit di modulazione successivi.Ma come spiega perché il ricevitore non può produrre un'uscita sostenuta con un ingresso portante non modulato?Le specifiche Vishay TSSP4038 potrebbero essere più chiare sui limiti del segnale.
@AliChen - la tua modifica era altamente inappropriata;le modifiche non devono mai ** invertire ** il significato di una risposta come ha fatto il tuo.Sono proprio le portanti modulate in modo continuo che i ricevitori respingono, risponderanno solo se la modulazione stessa viene attivata e disattivata a impulsi - burst 38 KHz - silenzio - burst 38 KHz - silenzio - ecc.
@Chris, questo potrebbe essere dovuto alla mia limitata comprensione dell'inglese.La mia lettura è che se il segnale è "costante" (commutazione 38kHz), non è modulato.Se il segnale è modulato, non è "costante".La combinazione "Segnale modulato costante" non ha alcun senso letterale per me.Quindi il significato non è stato invertito.L'alternativa comprensibile potrebbe essere "segnale costante, non modulato", con virgola.
Insisti nel cercare di invertire il significato.** Il segnale modulato costante ** è * esattamente * ciò che si intendeva ed è ovviamente distinto da un segnale * non modulato *.Se non capisci, è meglio che tu non provi a cambiare le parole degli altri!
Apparentemente abbiamo una difficoltà terminologica qui.Secondo il più completo motore di ricerca Google, una richiesta di "segnale modulato" restituisce 455.000 risultati, con la definizione di ** "In elettronica e telecomunicazioni, la modulazione è il processo di variazione di una o più proprietà di una forma d'onda periodica, chiamata segnale portante"**. * Al contrario, il termine" Segnale modulato costante "restituisce 3 (tre!) Risultati.Apparentemente significa un segnale DC tagliato da una portante periodica.La prossima volta si prega di utilizzare una terminologia comunemente accettata se si desidera comunicare le proprie idee e osservazioni.
Il linguaggio ha la proprietà di permetterci di aggiungere modificatori ai termini per estenderne il significato."Constant" ne è un chiaro esempio;capita anche che non sia la mia scelta originale della parola, * ma piuttosto la parola usata nella domanda stessa * per descrivere l'obiettivo particolare che sarebbe controproducente qui - un segnale modulato * costante * non funzionerà, ciò che è necessario è un modulatosegnale che * non * è costante.
@AliChen AGC è molto spesso utilizzato dal demodulatore a 38 kHz, per determinare il livello di soglia di bit nella modulazione OOK.La portante sostenuta diventa la nuova "normale" e viene scambiata per "nessun segnale".Hai ragione sul fatto che questo tipo di demodulatore richiede delle lacune.Richiede anche un impulso iniziale (condizionante) di portatore pieno di qualche tipo.Tutti i protocolli iniziano con un'intestazione.
@ChrisStratton, la tua invenzione del termine "segnale modulato costante" è assurda.Un "segnale modulato" non è costante per definizione.
Il tuo errore sta nel cercare di applicare individualmente sia "costante" che "modulato" a "segnale".Piuttosto, e ovviamente "costante" si applica al "segnale modulato" per dire che il "segnale modulato" è immutabile.Non è la stessa cosa che dire che il "segnale" è immutabile.E ancora, non è una mia "invenzione", ma piuttosto il mio rimanere con ** lo stesso modificatore utilizzato nella domanda **.
@glen_geek, grazie, sono stato fuorviato dalla tua espansione di AGC.Invece di "automatico" dovrebbe leggere "adattivo", quindi tutto sta diventando chiaro.Grazie.
Alla fine ho cablato la barriera fotoelettrica e * non * è necessario modulare il segnale a 38 kHz.Il TSSP4038 * continuamente * emette un segnale basso quando vede il segnale e * continuamente * emette un alto quando non c'è segnale.
cyberponk
2017-02-08 07:27:18 UTC
view on stackexchange narkive permalink

Prendi un ATMega328p e mettici sopra un cristallo di quarzo a 7,6 MHz. Quindi con la modalità Phase Frequency Correct con ICR1 come 100 emetterai un segnale esatto a 38kHz.

Per fare questo:

Imposta i fusibili MCU durante il caricamento del codice su questi valori:

  low_fuses = 0x7D = 1111 1101
bit 7 = 1 = CKDIV8 = Dividi il clock per 8
bit 6 = 1 = CKOUT = uscita orologio
bit 5 = 1 = SUT1 = Seleziona tempo di avvio
bit 4 = 1 = SUT0
bit 3 = 1 = CKSEL3 = Seleziona sorgente clock
bit 2 = 1 = CKSEL2
bit 2 = 0 = CKSEL1
bit 0 = 1 = CKSEL0
 

Il codice per produrre i 38 kHz sui pin PB1 / OSC1A e PB2 / OSC1B sarà:

  // Imposta il Timer1 sulla modalità corretta di fase e frequenza. Modalità NON invertita
TCCR1A = _BV (COM1A1) | _BV (COM1B1);

// Imposta il prescaler su clk / 1
TCCR1B = _BV (WGM13) | _BV (CS10);

// Registro ICR, che controlla la lunghezza totale dell'impulso
ICR1 = 100; // Divide il clock per 100/2, quindi 7,6 MHz / 100/2 = 38 kHz
// Registri OCR, che controllano il ciclo di lavoro.
// OCR1A + OCR1B deve essere = IRC1.
OCR1A = 50; // Il 50% dell'impulso sarà nello stato BASSO
OCR1B = 50; // Il 50% dell'impulso sarà nello stato ALTO
 
Optionparty
2017-02-08 00:37:19 UTC
view on stackexchange narkive permalink

Se la frequenza è così critica, potresti prendere in considerazione un "Phase Locked Loop" (PLL).Un oscillatore a cristallo con un "denominatore comune più piccolo" con la frequenza che stai cercando di produrre dovrebbe produrre meno jitter (se questo è anche un fattore).Ad esempio 1,9 MHz diviso per 38 kHz = 50 volte.Quindi un 1.9 MHz diviso per 50 sarebbe il tuo 38 kHz.Spero che questo aiuti.

@JMRM22 Grazie per aver rilevato il mio errore.È importante fornire informazioni corrette ai lettori.
Bob
2017-02-08 00:37:32 UTC
view on stackexchange narkive permalink

Le specifiche del sensore IR Vishay TSSP4038 mostrano la reattività rispetto alla frequenza relativa.Un 555 con componenti esterni stabili alla temperatura dovrebbe mantenerti entro un intervallo ragionevole di reattività, ma devi capire quale percentuale di reattività puoi soffrire sull'intero intervallo (una specifica dello 0% non è mai realistica, ma la percentuale effettiva è moltospecifica dell'applicazione).Devi solo fare un po 'di matematica per capire la deriva del caso peggiore rispetto alla temperatura sui componenti RC e capire se puoi sopportare il colpo di reattività.

In alternativa, un microcontrollore con un cristallo per la temporizzazione che utilizza un'uscita timer per attivare un pin all'ora corretta funzionerebbe e sarebbe senza dubbio più stabile.

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

Le specifiche del ricevitore Vishay mostrano la caratteristica del filtro come + -5% con un'attenuazione di 3dB rispetto alla frequenza nominale (38kHz).

Il migliore (timer SE555 TI) ha una sensibilità interna tipica di 90 ppm / C, che su un intervallo di 50 C si traduce in 4500 ppm, o 0,45%.

Per arrivare a 38kHz, dovrai usare un condensatore da 10nF con resistore da 2k. Puoi usare cappucci in ceramica tolleranti all'1% NPO (ad esempio, da Murata) e, se ottieni anche un alimentatore stabile, dovresti essere in grado di ottenere qualcosa come una stabilità del 2-3% su un intervallo di 50 C.

Tuttavia, quanto sopra è più simile a un pio desiderio, dal momento che TI stesso non garantisce nulla, vedi questo post di blog.

In addition, come menziona Chris Stratton, la parte del ricevitore Vishay non garantisce un'uscita stabile se viene applicato un segnale ottico stabile a frequenza portante, il ricevitore necessita di alcune "interruzioni" tra burst di impulsi portanti, vedere specifiche parte come TSOP6238.

UPDATE: Ho appena fatto un rapido esperimento con un ricevitore IR simile, GP1UV700QS (36kHz, di Sharp). Con un LED IR pilotato da un generatore di segnale come sorgente, il comportamento è il seguente: in assenza di segnale IR l'uscita del ricevitore è ALTA; se il segnale viene avviato e continua, il ricevitore va in BASSO, quindi va in ALTO da solo . La durata dell'impulso BASSO dipende dalla vicinanza all'emettitore. A distanza ravvicinata (20 cm) l'impulso può essere lungo fino a 300 ms, mentre a una distanza maggiore (1 m) si riduce a 1-2 ms, fino a passare a 250 µs. Poiché la caratteristica della risposta in frequenza della portante è piuttosto ampia (5% a -3dB) e la gamma dinamica è enorme, non importa molto se la portante viene deviata di + -5kHz, i risultati sembrano gli stessi.

BOTTOM LINE: Se il segnale dell'emettitore IR non è modulato, solo una portante a 38 kHz ad ampiezza costante, la classe dei ricevitori IR come Vishay TSSP40xx o Sharp GP1UV70xx non sosterrà l'uscita del rivelatore logico.Affinché questi circuiti integrati funzionino come "fotocellula", l'ampiezza della portante deve essere modulata in raffiche distintive di circa 1 ms ON e di ~ 1 ms portante OFF.Sfortunatamente, l'uscita si alternerà di conseguenza, quindi per utilizzare il ricevitore come rilevatore "go-nogo" il circuito di elaborazione deve rilevare la commutazione.

Quindi potrebbe essere più semplice utilizzare un cristallo con un microprocessore e utilizzare timer programmabili interni per ottenere la giusta frequenza e la giusta modulazione, come suggerisce l ' appnote Vishay originale.

cyberponk
2017-02-08 10:36:53 UTC
view on stackexchange narkive permalink

Cristallo a 38 kHz su Ebay Usa semplicemente la casella di selezione per la frequenza corretta.

MA!considerando che questi sensori esatti vengono utilizzati con Arduino, che di solito hanno clock a 16 MHz, prenderei in considerazione di fare qualche ricerca sul codice Arduino per questi kit di sensori, poiché potrebbe esserci del codice finito per il tuo progetto!

DEED
2017-02-08 11:46:08 UTC
view on stackexchange narkive permalink

Due semplici opzioni per un'onda quadra a 38 kHz:

  1. Utilizza l'oscillatore controllato in tensione integrato in questo chip PLL: http://www.ti.com/lit/an/scha002a/scha002a.pdf (Vedi p. 16 del PDF per come scegliere i componenti per impostare la frequenza di uscita)

  2. Costruisci un oscillatore di rilassamento con un amplificatore operazionale e resistori stabili in temperatura: http://www.falstad.com/circuit/e-relaxosc.html

Un 555 sarebbe probabilmente la soluzione più semplice e potrebbe essere abbastanza stabile in un ampio intervallo di temperature.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...