Table des matières:

Modèle d'un interrupteur universel : 10 étapes
Modèle d'un interrupteur universel : 10 étapes

Vidéo: Modèle d'un interrupteur universel : 10 étapes

Vidéo: Modèle d'un interrupteur universel : 10 étapes
Vidéo: Montage simple allumage 2024, Juillet
Anonim
Modèle d'un interrupteur universel
Modèle d'un interrupteur universel

Êtes-vous fatigué de vérifier que toutes les lumières de votre maison sont éteintes avant d'aller vous coucher ? Souhaitez-vous pouvoir éteindre toutes les lumières à la fois sans aucun problème ? Afin d'économiser de l'énergie et du temps, nous avons décidé de créer un système qui pourrait théoriquement fermer une maison entière d'un seul coup.

Nous avons modélisé une preuve de ce concept en utilisant quelques LED et un circuit imprimé basys 3, et avons créé une conception qui désactiverait toutes les LED en appuyant sur un bouton. Ce modèle pourrait également être appliqué à un système d'éclairage domestique réel, bien qu'il nécessiterait un câblage plus compliqué et des modifications des fichiers VHDL donnés.

Étape 1: importer les fichiers VHDL donnés

Pour que notre modèle fonctionne correctement, vous devrez télécharger le logiciel qui donne ses instructions à la carte Basys 3.

Vous devrez d'abord télécharger un outil de synthèse pour implémenter les fichiers vhdl sur le matériel. Si vous voulez être certain que tout le code reproduira entièrement notre conception sans aucune modification, nous vous recommandons d'utiliser Vivado 2016.2. Après avoir installé Vivado, vous pouvez créer un projet et télécharger nos fichiers sources. Ajoutez-les en tant que sources à votre projet, n'oubliez pas d'ajouter également le fichier de contraintes !

Ensuite, nous expliquerons ce que fait chacun des fichiers source. Ignorez les étapes 2 à 6 si vous souhaitez simplement accéder à la construction physique de l'appareil.

Étape 2: Répartition du module supérieur VHDL

Répartition du module supérieur VHDL
Répartition du module supérieur VHDL
Répartition du module supérieur VHDL
Répartition du module supérieur VHDL

Le module supérieur du projet est ce qui relie tous les modules de composants individuels au matériel utilisé. Comme vous pouvez le voir, les modules killSwitch et buzzerControl sont définis en tant que composants sur le dessus.

La section inférieure précise comment ces modules sont connectés entre eux. Nous avons connecté quatre LED à la carte et les avons associées aux modules killSwitch dev0 à dev3. Nous avons quatre modules killSwitch définis car nous en avons besoin d'un pour gérer l'état de chaque LED connectée. Chacun de ces modules utilise le signal d'horloge et de bouton que nous avons créé dans la définition du module supérieur ainsi que leurs signaux respectifs de commutateur d'entrée et de périphérique de sortie.

Le module de commande du buzzer en bas active le buzzer lorsque le bouton d'arrêt universel est enfoncé. Comme vous pouvez le voir, le module de commande du buzzer reçoit le signal de l'horloge et du bouton en tant qu'entrées. Il est également passé à la broche de sortie du buzzer physique pour le contrôler en conséquence.

Étape 3: Répartition du module VHDL Kill Switch

Répartition du module VHDL Kill Switch
Répartition du module VHDL Kill Switch
Répartition du module VHDL Kill Switch
Répartition du module VHDL Kill Switch

Le Kill Switch est le bouton d'arrêt universel, et le module s'occupe principalement de le connecter à d'autres éléments du circuit de sorte que lorsqu'il est enfoncé, toutes les lumières s'éteignent.

Alors que le module supérieur gère la connexion du matériel physique au logiciel, le module killSwitch gère la logique principale de chaque périphérique. Le module reçoit des entrées pour le signal d'horloge, le bouton d'arrêt universel et l'interrupteur à bascule de l'appareil. En retour, il contrôle l'état de la broche de l'appareil auquel il est connecté.

Dans la section architecture du code, nous voyons qu'il a une dépendance sur le module dFlipFlop pour stocker la mémoire. Vous pouvez également voir que nous avons déclaré quatre signaux qui seront utilisés pour connecter la bascule ainsi que pour implémenter nos instructions logiques. Dans la section comportementale du code, nous avons créé une instance du module dFlipFlop et affecté nos signaux d'E/S aux ports.

À partir de là, la partie principale de notre logique réside dans les valeurs de signal pour invertState et isDevOn. Notre base logique pour l'appareil est la suivante: « À chaque fois que l'interrupteur est actionné, la lumière inversera son état marche/arrêt. Chaque fois que le bouton est enfoncé et que la LED est actuellement allumée, la LED inversera son état pour s'éteindre. À partir de ces deux déclarations, nous pouvons extrapoler que l'état de la LED devrait être le XOR du commutateur et notre élément de mémoire. De cette façon, un changement dans l'un ou l'autre inverse la LED. Cela peut être vu implémenté dans le signal isDevOn. La LED allumée pour l'élément mémoire est gérée par notre signal invertState. Si la LED est allumée et que le bouton est enfoncé, notre élément de mémoire se mettra à jour et inversera son état. Cela inverse également l'état de la LED.

Étape 4: Répartition du module de bascule VHDL

Répartition du module de bascule VHDL
Répartition du module de bascule VHDL

Un problème avec notre conception était le fait qu'après avoir utilisé l'interrupteur d'arrêt, les lumières qui étaient précédemment allumées pouvaient devoir être retournées deux fois pour revenir en position allumée. Ce serait tout à fait l'inconvénient pour les gens au fil du temps. Nous avons réussi à contourner cet inconvénient en incluant un "Flip Flop", un élément de circuit capable de stocker des informations, dans notre conception. Maintenant, le système se souvient si un interrupteur d'éclairage était précédemment allumé, de sorte que s'il est à nouveau basculé, il s'allumera quelle que soit sa position initiale.

Le code VHDL utilise des instructions if et else afin de créer la bascule en tant que composant dans notre conception de circuit. Il garantit que lorsque le signal d'horloge passe d'un état bas à un état haut, lorsque l'ampoule est allumée et lorsque l'interrupteur d'arrêt est enfoncé, la sortie des bascules écrase son entrée. Lorsque l'entrée est écrasée, la bascule est inversée.

Étape 5: Répartition du module VHDL Piezo Buzzer

Répartition du module VHDL Piezo Buzzer
Répartition du module VHDL Piezo Buzzer
Répartition du module VHDL Piezo Buzzer
Répartition du module VHDL Piezo Buzzer

Ce fichier est un peu superflu en ce qui concerne la conception matérielle, mais il est essentiel pour que les fichiers du module supérieur et des contraintes fonctionnent correctement. Si vous choisissez de ne pas utiliser le buzzer Piezo, téléchargez ce fichier, mais n'attachez pas le buzzer à la carte Basys 3.

Le buzzer Piezo, en appuyant sur le bouton de désactivation, jouera une tonalité à deux notes qui fournira à l'utilisateur un retour auditif indiquant que le bouton a été enfoncé. Nous avons implémenté cela de manière comportementale en VHDL via une série d'instructions if dans une structure de processus. Nous avons commencé par créer une valeur entière pour garder une trace du nombre de changements d'horloge qui se sont produits. Une fois le processus commencé, le programme passe la première demi-seconde (0 à 50 millions de tics d'horloge) à produire une note A à 440 hertz. Ceci est accompli en inversant le signal du buzzer piézo tous les multiples pairs de 227272 tops d'horloge avec une fonction modulo. Ce nombre est le résultat de la division du signal d'horloge de la carte (100 MHz) par la fréquence souhaitée (400 Hz). Pendant la seconde demi-seconde (50 à 100 millions de tops d'horloge), la carte émet une note de Fa à 349,2 hertz via la même méthode que précédemment. Après une seconde, le programme n'incrémente plus la variable d'horloge et arrête de sortir quoi que ce soit du buzzer piézo. Une nouvelle pression sur le bouton d'arrêt universel remet ce nombre à 0, ce qui redémarre le cycle de bruit.

Étape 6: Répartition du fichier de contraintes VHDL

Le fichier de contraintes indique à Vivado quels appareils de la carte Basys 3 nous utilisons. Il fournit également à Vivado les noms que nous avons donnés aux appareils dans notre code. Vivado a besoin de ces informations pour savoir comment connecter nos éléments logiques au matériel physique. Le fichier de contraintes comprend une grande quantité de code commenté (non utilisé). Ces lignes de code font référence aux périphériques de la carte que nous n'utilisons pas.

Les appareils que nous utilisons incluent quatre commutateurs d'entrée étiquetés V17, V16, W16 et W1 sur la carte. Nous utilisons également le bouton d'arrêt universel, étiqueté U18. Les broches de sortie de nos quatre LED connectées sont JB4, JB10, JC4 et JC10. Pour notre buzzer piezzo, nous utilisons la broche de sortie JA9.

Comme nous l'avons indiqué dans la ventilation du module supérieur, si vous souhaitez ajouter des LED supplémentaires ou d'autres périphériques à la carte, vous devez augmenter la portée des signaux sw et dev, ajouter plus de modules killSwitch et les connecter ensemble. Vous devez ensuite lier ces noms de variables au matériel de l'appareil via le fichier de contraintes. Cela peut être fait en décommentant (réactivant) les lignes de code associées aux broches que vous souhaitez utiliser, puis en ajoutant le nom de sa variable associée dans le module supérieur. La syntaxe appropriée pour cela peut être copiée à partir des appareils que nous utilisons. Pour connaître les noms des broches que vous souhaitez utiliser sur la carte, reportez-vous au guide de référence Baasys 3 ici.

Étape 7: Construire le Basys 3

Construire le Basys 3
Construire le Basys 3
Construire le Basys 3
Construire le Basys 3

Vous devrez brancher vos LED dans les bons ports d'E/S du Basys 3. Suivez les images fournies pour déterminer quels sont les bons ports, car si vous branchez une LED dans le mauvais port, elle ne s'allumera pas. Si vous avez choisi de connecter le buzzer piézo, vous devrez également le connecter aux bons ports d'E/S.

Lorsque la carte est prête, branchez-la sur votre ordinateur via un câble USB.

Étape 8: Implémentation des fichiers VHDL sur Basys 3

Implémentation de fichiers VHDL sur Basys 3
Implémentation de fichiers VHDL sur Basys 3
Implémentation de fichiers VHDL sur Basys 3
Implémentation de fichiers VHDL sur Basys 3

Maintenant que votre carte est prête et que votre code est terminé, vous pouvez enfin assembler le modèle.

Une fois que vous avez configuré votre projet dans Vivado, vous devez cliquer sur le bouton "Générer Bitstream" afin de compiler le code avant qu'il ne soit téléchargé sur le tableau. Si vous recevez un message d'erreur à ce moment-là, vous devez vérifier que votre code correspond exactement au nôtre. Quand je dis exactement, je veux dire jusqu'aux points-virgules ou aux types de parenthèses qui sont utilisés. Une fois que votre bitstream a été écrit avec succès, accédez au gestionnaire de matériel dans Vivado et cliquez sur le bouton "Ouvrir la cible", puis cliquez sur "Programmer le périphérique" immédiatement après. Votre carte Basys 3 devrait maintenant être entièrement fonctionnelle.

Étape 9: Utilisation de la carte Basys 3

Utilisation de la carte Basys 3
Utilisation de la carte Basys 3

Maintenant que la carte Basys 3 est opérationnelle et programmée pour représenter notre modèle, il faut savoir s'en servir.

Chacun des quatre commutateurs les plus à droite contrôle l'une des LED, les effleurer entraînera l'allumage ou l'extinction de la LED. Si la LED ne s'active pas, vérifiez que vous êtes branché sur le bon port d'E/S et que votre LED est fonctionnelle en premier lieu.

Lorsque vous souhaitez désactiver tous les voyants à la fois, vous devez appuyer sur le bouton central dans l'ensemble de cinq boutons affichés ci-dessus.

Étape 10: Montrez-vous

Le modèle est une petite nouveauté soignée que vous pouvez démontrer devant vos amis et votre famille. Il peut théoriquement également être utilisé pour mettre en œuvre l'interrupteur d'arrêt universel dans votre système électrique domestique, si vous remplacez les LED par des fils menant à vos lumières. Bien que cela soit possible, nous serions quand même obligés de le déconseiller. Si vous essayez de recâbler sans l'aide d'un électricien, vous risquez de vous blesser gravement ou de blesser votre maison.

Conseillé: