Question:
Comment générer une onde carrée constante de 38 kHz pour une source de lumière IR?
feklee
2017-02-08 00:11:08 UTC
view on stackexchange narkive permalink
  • Application: barrière lumineuse infrarouge sur une distance de 1 m

  • Récepteur: par ex. Vishay TSSP4038 Capteur infrarouge (réglé sur 38 kHz)

  • Plage de température ambiante: -10 à 40 ° C

Ici, j'ai trouvé un circuit avec un déclencheur Schmidt qui devrait faire le truc, s'il y avait un cristal oscillant à 38 kHz. Mais je ne trouve pas tout. Digikey répertorie les cristaux 38 kHz, mais - en regardant les spécifications feuilles - il s'avère qu'il s'agit en fait de cristaux à 32 768 Hz.

Comment obtenir 38 kHz?

J'ai également envisagé un circuit basé sur NE555, mais ce n'est pas la température stable, et nécessite une coupe. Une autre option, on m'a dit, serait utiliser un Arduino pour générer le 38 kHz, mais cela ressemble à exagéré.

Mise à jour

Suite à la recommandation de la note d'application mentionnée dans la réponse d'Ali Chen, j'ai finalement décidé d'utiliser un Arduino Nano. Pour générer le 38 kHz, j'ai utilisé la minuterie comme décrit dans un message du forum Arduino par Nick Gammon sur le forum Arduino. Son exemple de code:

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

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

 // configurer la minuterie 2
 TCCR2A = _BV (COM2A0) | _BV (WGM21); // CTC, activer OC2A sur Compare Match
 TCCR2B = _BV (CS20); // Pas de prescaler
 OCR2A = 209; // comparer une valeur de registre (210 * vitesse d'horloge)
                        // = 13,125 nS, donc la fréquence est 1 / (2 * 13,125) = 38095

} // fin de l'installation

boucle vide () {}
 

Via une broche d'interruption, j'ai raccordé le Nano à un Yún, qui exécute la logique principale et qui dit au Nano d'activer ou de désactiver le signal. Gardez à l'esprit que la note d'application Vishay concerne la mesure de la distance à un objet, alors que mon application consiste simplement à mesurer si un faisceau est interrompu ou non.

Prochaines étapes: débarrassez-vous du Nano; Passez de 38 à 56 kHz pour une détection légèrement plus rapide.

MCU.Plus de caractères pour remplir le minimum.
Considérez à quel point le générateur IR d'une télécommande TV générique, hautement optimisé, produit en série, peut être "stable en température".Je ne serais pas surpris si un cristal à 32 768 Hz serait idéal pour cette application.
Est-ce pour une détection réfléchissante ou pour une application de vue directe?
@AliChen traversant le faisceau
Votre défi n'est pas la précision de la fréquence, mais plutôt le fait que le récepteur ignorera rapidement un signal si la modulation ne s'allume pas et ne s'éteint pas elle-même à une vitesse conforme aux attentes.Notez la mention "burst" dans la fiche technique.
@Wossname, toutes les télécommandes TV sont conçues avec des microprocesseurs spécialisés (exemple: upD78F0527) avec un cristal stable dans la plage 5-6 MHz.La fréquence porteuse nécessaire pour l'émetteur IR (36 kHz, 38 kHz, 56, etc.) et toute modulation sophistiquée est générée en interne par une logique numérique.
Sept réponses:
Chris Stratton
2017-02-08 11:55:31 UTC
view on stackexchange narkive permalink

Vos efforts sont mal dirigés; ces récepteurs ne sont pas tout à fait sensibles à la fréquence précise mais ils ne maintiendront pas la sortie avec un signal modulé constant.

Au lieu de cela, ils sont conçus pour rechercher des "rafales" de modulation et rejetteront le bruit qui ne ressemble pas à un train d'impulsions de porteuse modulée; pour qu'ils continuent à fonctionner, vous aurez besoin non pas d'un générateur de signaux mais de deux, l'un pour la modulation et l'autre pour créer les rafales dans l'enveloppe de la modulation.

Le premier générateur produit une modulation de 38 KHz.

Le deuxième générateur active et désactive le premier générateur à une vitesse dans la fenêtre des types de signaux à distance que le récepteur est conçu pour accepter.

En règle générale, vous utilisez un microcontrôleur; utilisez un canal de minuterie divisé de l'horloge MCU pour produire les 38 KHz à une approximation la plus proche possible. Il n'a pas besoin d'être exact.

Ensuite, ayez un logiciel ou une autre chaîne de minuterie active et désactive cette option.

(Vous pourriez probablement utiliser la double minuterie 556; mais les microcontrôleurs capables de le faire sont bien inférieurs à un dollar en quantité, nécessitent moins de composants de support et peuvent également faire d'autres choses).

Si vous vous attendiez à une sortie constante du détecteur, vous devrez repenser la conception de votre système; au lieu de cela, vous devez probablement suivre le détecteur avec un étireur d'impulsions qui peut combler les espaces entre vos impulsions d'émission; si votre transmission cesse, le strether d'impulsions prolongera la dernière impulsion du récepteur, puis s'arrêtera.

Vous avez raison, le démodulateur de ce type de récepteurs est "conçu" avec un besoin d'avoir un espace minimal entre les salves actives d'impulsions porteuses.Les spécifications pour cette pièce particulière ne le mentionnent pas, mais d'autres produits Vishay similaires mentionnent explicitement l'écart minimal.Mais je ne dirais pas que c'est "conçu" de cette façon, je pense que c'est un défaut de conception, un bug.Les produits de Sharp ont des caractéristiques similaires.
La détection d'amplitude @AliChen nécessite un contrôle automatique du gain (AGC) pour accepter une plage d'amplitude de porteuse * énorme *.La constante de temps de contrôle de gain est conçue et est fixée pour que ces puces restent simples.La plupart ont une constante de temps assez courte, quelques-uns sont plus longs.Mais tout doit avec un gain élevé après un certain temps.
@glen_geek, sur une deuxième réflexion, oui, l'AGC peut expliquer pourquoi vous avez besoin d'un écart de modulation.Il est nécessaire lorsque vous souhaitez recevoir des bits de modulation successifs.Mais comment cela explique-t-il pourquoi le récepteur ne peut pas produire une sortie soutenue avec une entrée porteuse non modulée?Les spécifications Vishay TSSP4038 pourraient être plus claires sur les limites du signal.
@AliChen - votre modification était hautement inappropriée;les modifications ne doivent jamais ** inverser ** le sens d'une réponse comme la vôtre.Ce sont précisément des porteuses modulées en continu que les récepteurs rejettent, ils ne répondront que si la modulation elle-même est pulsée on et off - rafale de 38 KHz - silence - rafale de 38 KHz - silence - etc.
@Chris, cela pourrait être dû à ma compréhension limitée de l'anglais.Ma lecture est que si le signal est "constant" (basculement à 38 kHz), il n'est pas modulé.Si le signal est modulé, il n'est pas "constant".La combinaison «Signal modulé constant» n'a aucun sens pour moi.Le sens n'a donc pas été inversé.L'alternative compréhensible pourrait être "un signal constant, non modulé", avec une virgule.
Vous persistez à essayer d'en inverser le sens.** Le signal modulé constant ** est * exactement * ce que l'on voulait dire, et est évidemment distinct d'un signal * non modulé *.Si vous ne comprenez pas, vous feriez mieux de ne pas essayer de changer les mots des autres!
Apparemment, nous avons ici une difficulté terminologique.Selon le moteur de recherche le plus complet de Google, une demande de "signal modulé" renvoie 455 000 résultats, avec la définition ** "Dans l'électronique et les télécommunications, la modulation est le processus consistant à faire varier une ou plusieurs propriétés d'une forme d'onde périodique, appelée signal porteur."**. * En revanche, votre terme" Signal modulé constant "renvoie 3 (trois!) Résultats.Apparemment, cela signifie un signal CC coupé par une porteuse périodique.La prochaine fois, veuillez utiliser une terminologie communément acceptée si vous souhaitez communiquer vos idées et vos observations.
Le langage a la propriété de nous permettre d'ajouter des modificateurs aux termes pour étendre leur signification."Constant" en est un exemple clair;il se trouve également que ce n'est pas mon choix initial de mot, * mais plutôt le mot utilisé dans la question elle-même * pour décrire l'objectif particulier qui serait contre-productif ici - un signal modulé * constant * ne fonctionnera pas, il faut un signal modulésignal qui n'est * pas * constant.
@AliChen AGC est très souvent utilisé par le démodulateur 38 kHz, pour déterminer le niveau de seuil de bit dans la modulation OOK.La porteuse soutenue devient la nouvelle «normale» et est confondue avec «aucun signal».Vous avez tout à fait raison de dire que ce type de démodulateur nécessite des lacunes.Il nécessite également une impulsion initiale (conditionnement) de porteuse complète.Tous les protocoles commencent par un en-tête.
@ChrisStratton, votre invention du terme «signal modulé constant» est absurde.Un "signal modulé" n'est pas constant par la définition même.
Votre erreur consiste à essayer d'appliquer à la fois «constant» et «modulé» individuellement au «signal».Plutôt, et bien évidemment, «constant» s'applique au «signal modulé» pour dire que le «signal modulé» est inchangé.Ce n'est pas la même chose que de dire que le «signal» est inchangé.Et encore une fois, ce n'est pas mon "invention" mais plutôt mon maintien avec ** le même modificateur utilisé dans la question **.
Merci @glen_geek,, j'ai été induit en erreur par votre expansion d'AGC.Au lieu de «automatique», il devrait lire «adaptatif», alors tout devient clair.Merci.
J'ai finalement câblé la barrière lumineuse, et il n'est * pas * nécessaire de moduler le signal 38 kHz.Le TSSP4038 * en continu * émet un niveau bas lorsqu'il voit le signal, et il émet * en continu * un niveau élevé en l'absence de signal.
cyberponk
2017-02-08 07:27:18 UTC
view on stackexchange narkive permalink

Prenez un ATMega328p et placez-y un cristal de quartz de 7,6 MHz. Ensuite, avec le mode de correction de fréquence de phase avec ICR1 comme 100, vous émettez un signal exact de 38 kHz.

TPour faire ceci:

Définissez les fusibles MCU lors du téléchargement du code, sur ces valeurs:

  low_fuses = 0x7D = 1111 1101
bit 7 = 1 = CKDIV8 = Diviser l'horloge par 8
bit 6 = 1 = CKOUT = sortie d'horloge
bit 5 = 1 = SUT1 = sélectionner l'heure de démarrage
bit 4 = 1 = SUT0
bit 3 = 1 = CKSEL3 = Sélectionner la source d'horloge
bit 2 = 1 = CKSEL2
bit 2 = 0 = CKSEL1
bit 0 = 1 = CKSEL0
 

Le code pour produire le 38kHz sur les broches PB1 / OSC1A et PB2 / OSC1B sera:

  // Réglez Timer1 sur le mode correct de phase et de fréquence. Mode NON inversé
TCCR1A = _BV (COM1A1) | _BV (COM1B1);

// Définit le prescaler sur clk / 1
TCCR1B = _BV (WGM13) | _BV (CS10);

// Registre ICR, qui contrôle la longueur d'impulsion totale
ICR1 = 100; // Divise l'horloge par 100/2, donc 7,6 MHz / 100/2 = 38 kHz
// Registres OCR, qui contrôlent le cycle de service.
// OCR1A + OCR1B doit être = IRC1.
OCR1A = 50; // 50% de l'impulsion sera à l'état BAS
OCR1B = 50; // 50% de l'impulsion sera à l'état HAUT
 
Optionparty
2017-02-08 00:37:19 UTC
view on stackexchange narkive permalink

Si la fréquence est si critique, vous pouvez envisager une "boucle à verrouillage de phase" (PLL).Un oscillateur à cristal ayant un «plus petit dénominateur commun» avec la fréquence que vous essayez de produire devrait produire moins de gigue (si c'est même un facteur).À titre d'exemple, 1,9 MHz divisé par 38 kHz = 50 fois.Donc, un 1,9 MHz divisé par 50 serait votre 38 kHz.J'espère que cela vous aidera.

@JMRM22 Merci d'avoir détecté mon erreur.Il est important de fournir des informations correctes aux lecteurs.
Bob
2017-02-08 00:37:32 UTC
view on stackexchange narkive permalink

La spécification du capteur IR Vishay TSSP4038 montre la réactivité par rapport à la fréquence relative.Un 555 avec des composants externes stables en température devrait vous maintenir dans une plage raisonnable de réactivité, mais vous devez déterminer le pourcentage de réactivité que vous pouvez subir sur toute la plage (une spécification de 0% n'est jamais réaliste, mais le pourcentage réel est trèsspécifique à l'application).Il vous suffit de faire quelques calculs pour déterminer le pire des cas de dérive par rapport à la température sur les composants RC et déterminer si vous pouvez prendre le coup de réactivité.

Alternativement, un microcontrôleur avec un cristal pour le chronométrage utilisant une sortie de minuterie pour basculer une broche au bon moment fonctionnerait et serait sans aucun doute plus stable.

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

Les spécifications du récepteur Vishay affichent la caractéristique du filtre à + -5% à une atténuation de 3 dB par rapport à la fréquence nominale (38 kHz).

Le meilleur (minuterie SE555 TI) a une sensibilité interne typique de 90 ppm / C, ce qui, sur une plage de 50 C, donne 4500 ppm, soit 0,45%.

Pour atteindre 38 kHz, vous devrez utiliser un condensateur 10nF avec une résistance 2k. Vous pouvez utiliser des bouchons en céramique NPO 1% tolérants (par exemple, de Murata), et si vous obtenez également une alimentation stable, vous devriez pouvoir obtenir quelque chose comme une stabilité de 2 à 3% sur une plage de 50 C.

Cependant, ce qui précède ressemble plus à un vœu pieux, puisque TI lui-même ne garantit rien, consultez cette entrée de blog.

En plus , comme le mentionne Chris Stratton, la partie récepteur Vishay ne garantit pas une sortie constante si un signal optique stable à la fréquence porteuse est appliqué, le récepteur a besoin de quelques "pauses" entre les rafales d'impulsions porteuses, voir les spécifications pour un signal similaire partie comme TSOP6238.

UPDATE: Je viens de faire une expérience rapide avec un récepteur IR similaire, GP1UV700QS (36kHz, par Sharp). Avec une LED IR pilotée par un générateur de signaux comme source, le comportement est le suivant: si aucun signal IR, la sortie du récepteur est HIGH; si le signal est démarré et continue, le récepteur passe à BAS, puis passe à HAUT par lui-même. La durée de l'impulsion BASSE dépend de la proximité de l'émetteur. À courte distance (20 cm), l'impulsion peut durer jusqu'à 300 ms, tandis qu'à une distance plus longue (1 m), elle se réduit à 1-2 ms, pour basculer à 250 us. Étant donné que la caractéristique de réponse en fréquence de la porteuse est plutôt large (5% à -3 dB) et que la plage dynamique est énorme, peu importe si la porteuse est déviée de + -5 kHz, les résultats se ressemblent.

BOTTOM LINE: Si le signal de l'émetteur IR n'est pas modulé, juste une porteuse à amplitude constante de 38 kHz, la classe des récepteurs IR comme Vishay TSSP40xx ou Sharp GP1UV70xx ne soutiendra pas la sortie du détecteur logique.Pour que ces circuits intégrés fonctionnent comme "barrière lumineuse", l'amplitude de la porteuse doit être modulée en salves distinctes d'environ 1 ms ON et ~ 1 ms de porteuse OFF.Malheureusement, la sortie bascule en conséquence, donc pour utiliser le récepteur comme détecteur "go-nogo", le circuit de traitement doit détecter le basculement.

Il peut donc être plus facile d'utiliser un cristal avec un microprocesseur et d'utiliser des minuteries programmables internes pour obtenir la bonne fréquence et la bonne modulation, comme le suggère la note d'application Vishay originale.

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

Cristal 38 kHz sur Ebay Utilisez simplement la zone de sélection pour la bonne fréquence.

MAIS!étant donné que ces capteurs exacts sont utilisés avec des Arduinos, qui ont généralement des horloges de 16 MHz, j'envisagerais de faire des recherches sur le code Arduino pour ces kits de capteurs, car il pourrait y avoir du code fini pour votre projet!

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

Deux options simples pour une onde carrée de 38 kHz:

  1. Utilisez l'oscillateur contrôlé en tension intégré à cette puce PLL: http://www.ti.com/lit/an/scha002a/scha002a.pdf (Voir p. 16 du PDF pour savoir comment choisir les composants pour régler la fréquence de sortie)

  2. Construisez un oscillateur à relaxation avec un ampli-op et des résistances stables en température: http://www.falstad.com/circuit/e-relaxosc.html

Un 555 serait probablement la solution la plus simple, et il pourrait être suffisamment stable sur une large plage de températures.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...