Table des matières:

Horloge et générateur d'impulsions Esp8266 : 3 étapes
Horloge et générateur d'impulsions Esp8266 : 3 étapes

Vidéo: Horloge et générateur d'impulsions Esp8266 : 3 étapes

Vidéo: Horloge et générateur d'impulsions Esp8266 : 3 étapes
Vidéo: Modulation d’Impulsions 2024, Juillet
Anonim
Horloge et générateur d'impulsions Esp8266
Horloge et générateur d'impulsions Esp8266

Cette instructable est pour une simple pièce d'équipement de test; une horloge et un générateur d'impulsions.

Il utilise l'interface matérielle i2S sur un esp8266 pour générer une horloge de test ou une séquence d'impulsions. Cela le rend facile à assembler car aucun matériel spécial n'est requis pour un système de base.

  • Génération d'horloge de 2Hz à 20MHz
  • N'importe quelle fréquence peut être utilisée
  • Recherche la meilleure correspondance entre les diviseurs d'horloge et la longueur de bits à partir de l'horloge de base de 160 MHz
  • Typiquement mieux que 0,1% de correspondance pour les fréquences < 100KHz
  • Marquer la sélection du rapport d'espacement
  • La tolérance de correspondance de fréquence peut être assouplie pour obtenir une meilleure gestion de l'espace de marquage
  • Génération de train d'impulsions basée sur des définitions dans des fichiers
  • Interface graphique Web permettant le contrôle à partir d'un PC, d'un téléphone, d'une tablette
  • Gestion Wifi pour permettre une configuration initiale facile du routeur
  • Mise à jour du logiciel OTA
  • Utilise une bibliothèque I2s spéciale (i2sTXcircular) offrant un contrôle flexible

Étape 1: Matériel

Matériel
Matériel
Matériel
Matériel

J'ai construit le mien dans un boîtier imprimé en 3D contenant une batterie 18650 avec un chargeur USB, un interrupteur marche/arrêt, une prise d'en-tête à 3 broches pour le signal de sortie.

Le boîtier a une fente étroite pour tenir l'électronique à côté de la batterie.

Le signal sort de la broche GPIO3 (RX). Cela peut être utilisé directement, mais pour une capacité de lecteur plus élevée, j'ai choisi d'inclure un petit tampon à l'aide d'un 74LVC2G34. J'ai mis en parallèle les deux tampons de cet appareil pour offrir encore plus de capacité d'entraînement.

Tout se fait uniquement dans le logiciel de l'appareil et le contrôle se fait en fournissant un serveur Web afin qu'un navigateur sur un PC, un téléphone ou une tablette offre un contrôle total.

Étape 2: Logiciel

Pour créer et configurer le logiciel, utilisez le code sur

  • Installer la bibliothèque i2sTXcircular (incluse)
  • Installez la bibliothèque BaseSupport (https://github.com/roberttidey/BaseSupport)
  • Ajouter la bibliothèque WifiManager
  • Modifier les mots de passe dans BaseConfig.h
  • Compiler et télécharger dans l'environnement Arduino
  • Configurez la gestion du réseau wifi en vous connectant à AP et en naviguant sur 192.168.4.1
  • télécharger un ensemble de fichiers de base à partir du dossier de données à l'aide de STA ip/upload
  • d'autres téléchargements peuvent alors être effectués en utilisant ip/edit - l'interface normale est à ip/

Comment ça fonctionne

La bibliothèque i2sTXcircular permet de construire une chaîne circulaire de tampons qui sont ensuite générés automatiquement par le matériel i2S sur l'esp8266 en utilisant DMA afin qu'aucune surcharge logicielle ne soit utilisée une fois qu'elle est lancée.

L'horloge de base de l'appareil est de 160 MHz, divisée par une paire de diviseurs. Le signal de sortie est ensuite déterminé par les données mises dans les tampons qui sont sorties par l'horloge divisée. En choisissant les deux diviseurs et en utilisant potentiellement plusieurs bits de données pour représenter chaque impulsion, une fréquence peut être approchée assez étroitement. Il permet également de faire varier le rapport cyclique (rapport marque/espace des impulsions d'horloge).

Le code javascript du navigateur essaie d'optimiser le choix des paramètres pour donner une correspondance étroite avec n'importe quelle fréquence sélectionnée.

Bien que le but principal soit de générer des horloges, il est également possible de produire des trains d'impulsions plus complexes en mettant une définition dans un fichier d'impulsions qui contrôle ensuite les données qui seront générées et mises dans le tampon circulaire. Les détails sont dans les exemples de fichiers d'impulsions inclus.

Étape 3: Opération

Le fonctionnement est contrôlé par l'interface du navigateur illustrée dans l'image principale.

Pour une génération d'horloge normale, il vous suffit de sélectionner l'horloge cible et le ratio % d'espace de marquage. L'horloge réelle atteinte et son erreur sont affichées. Lorsque le bouton Générer l'horloge est enfoncé, les paramètres sont envoyés à l'appareil et la génération de l'horloge à l'aide de ces paramètres démarre.

En cliquant sur la barre Avancé, vous pouvez voir plus de détails.

L'horloge binaire montre le sous-multiple de 160 MHz qui est utilisé.

Les bits de marque et d'espace indiquent combien de bits sont utilisés pour représenter les marques et les espaces.

Div1 et Div2 montrent les deux diviseurs qui ont été choisis pour générer l'horloge binaire la plus proche.

Normalement, les deux diviseurs sont choisis pour donner la correspondance la plus proche de la fréquence choisie et pour maximiser le nombre de bits de données utilisés, ce qui aide à fournir plus de flexibilité en permettant différents cycles de service. Cependant, parfois, la meilleure correspondance entraîne un faible nombre de bits, laissant peu de place pour modifier le cycle de service. En changeant la valeur de % de tolérance, les diviseurs seront choisis pour donner une fréquence dans cette tolérance mais avec potentiellement plus de bits de données utilisés. Essayez par exemple de régler la tolérance sur 0,5 ou 1.

Vous pouvez également définir le nombre de bits par mot pour contrôler le choix des paramètres. 0 (par défaut) signifie choisir n'importe quel bit par mot. Un seul nombre (par exemple 24) signifie que vous ne choisissez que les paramètres qui correspondent. Vous pouvez également mettre une plage (par exemple 24, 31). Cela ne fonctionne que pour les Hz cibles au-dessus de 10KHz, en dessous de cette mise à l'échelle prendra effet afin que le nombre soit multiplié.

La taille de la mémoire tampon indique l'espacement total de la mémoire tampon utilisé dans des mots de 32 bits. Ceci est choisi pour garantir que l'impulsion d'horloge forme un ajustement circulaire parfait dans le tampon. En interne, ce tampon est divisé en un certain nombre de petits rbuffers pour permettre au DMA chaîné de fonctionner.

Pour le fonctionnement par impulsions, choisissez les impulsions TAB. Cela montre les fichiers d'impulsions disponibles et un bouton à côté de chacun qui produira un train d'impulsions en fonction de sa définition. Vous pouvez voir le contenu du fichier en cliquant sur son lien. D'autres fichiers d'impulsions peuvent être téléchargés à l'aide du navigateur de fichiers ip/edit. Ils devraient commencer par le nom pulse.

Conseillé: