Table des matières:

Capteur de mouvement/lumières contrôlées par compteur : 7 étapes
Capteur de mouvement/lumières contrôlées par compteur : 7 étapes

Vidéo: Capteur de mouvement/lumières contrôlées par compteur : 7 étapes

Vidéo: Capteur de mouvement/lumières contrôlées par compteur : 7 étapes
Vidéo: Le capteur de boîte de vitesse/ Le rôle - Les typs - Les causes de défaillance - Le contrôler .... 2024, Novembre
Anonim
Capteur de mouvement/lumières contrôlées par compteur
Capteur de mouvement/lumières contrôlées par compteur

Ce projet a été créé comme projet final pour un cours de conception numérique à Cal Poly, San Luis Obispo (CPE 133).

Pourquoi faisons-nous cela ? Nous voulons aider à conserver les ressources naturelles dans le monde. Notre projet se concentre sur l'économie d'électricité. En économisant plus d'électricité, nous pourrons conserver les ressources naturelles qui sont utilisées pour produire de l'électricité. Au début de 2018, les ressources naturelles sont consommées à un rythme incroyable. Nous voulons être conscients de notre impact sur notre environnement et jouer notre rôle dans la préservation des ressources naturelles. L'électronique peut être mise en œuvre de différentes manières pour économiser de l'énergie, ce qui aide l'environnement ainsi que notre situation économique. * Ce modèle a été créé à l'aide des composants dont nous disposons.

Quelle a été notre inspiration ? Les gens oublient souvent d'éteindre leurs lumières de Noël et gaspillent de l'énergie en les laissant allumées toute la nuit. En réalité, ce projet permettra d'économiser l'électricité car les «lumières de vacances» ne seraient allumées que lorsque les gens sont à proximité, économisant ainsi l'énergie lorsque personne n'est là. De plus, nous avons voulu concevoir une minuterie pour que les lumières s'éteignent complètement après un temps donné pour s'assurer qu'elles ne s'allument pas en raison d'un mouvement détecté à 3 heures du matin, par exemple.

Comment pourriez-vous utiliser ce design ? Ce design peut être mis en œuvre pour toutes sortes de lumières, qu'elles soient décoratives, pratiques ou les deux. Si vous voulez que votre lampe de bureau ne fonctionne que 6 heures d'affilée, par exemple. Vous devrez régler un compteur à 21 600 secondes (6 heures x 3 600 secondes/heure). Pendant que le compteur augmente activement, le capteur de mouvement contrôle la lumière. Ainsi, chaque fois qu'il s'éteint pendant ce laps de temps, il vous suffit de passer votre main devant le capteur de mouvement et il se rallumera. Si vous vous endormez à votre bureau et que vous vous réveillez 7 heures plus tard, votre mouvement ne l'activera pas.

Étape 1: Logiciels et matériel requis

Logiciel et matériel requis
Logiciel et matériel requis
Logiciel et matériel requis
Logiciel et matériel requis
Logiciel et matériel requis
Logiciel et matériel requis
Logiciel et matériel requis
Logiciel et matériel requis

Logiciel:

  • Vivado 2016.2 (ou une version plus récente) peut être trouvé ici
  • Arduino IDE 1.8.3 (ou une version plus récente) peut être trouvé ici

Matériel:

  • 1 carte Basys 3
  • 1 Arduino Uno
  • 2 planches à pain
  • 1 capteur de télémétrie à ultrasons HC-SR04
  • 9 fils mâle-mâle
  • 1 DEL
  • 1 100Ω Résistance

Étape 2: Codes (Vivado)

Codes (Vivado)
Codes (Vivado)

Machine à états finis (voir diagramme d'état ci-dessus):

La LED nécessitait une machine à états finis. Une LED a seulement deux états d'être allumé et éteint. Seules deux entrées contrôlent l'état de la LED, du compteur et du capteur. Le seul moment où la LED doit être allumée est lorsque le capteur détecte un mouvement et lorsque le compteur compte de zéro à trente secondes. Dans tout autre cas, la LED sera éteinte.

Nom du fichier: LEDDES

Contrer:

Le compteur permet de limiter la durée pendant laquelle le détecteur de mouvement peut activer la LED. Sa valeur est affichée sur l'affichage à sept segments de la carte Basys 3 via un code source (« sseg_dec »). Lorsque le bouton Reset est abaissé (valeur: '0'), le compteur commence à augmenter chaque seconde de 0 à 30. Lorsqu'il atteint 30, il se fige sur ce nombre. Il ne redémarrera pas à partir de 0 jusqu'à ce que le commutateur de réinitialisation soit basculé sur « 1 » et de nouveau sur « 1 ». Lorsque Reset repasse à « 0 », le compteur redémarre de 0 à 30. Cette implémentation nécessite également l'utilisation d'un signal d'horloge, son code est fourni ci-dessous ("clk_div2").

Nom du fichier: FinalCounter

FICHIERS FOURNIS:

Affichage à sept segments:

Ce code permet à l'affichage à sept segments d'afficher des valeurs décimales. Un sous-module agit comme décodeur entre une entrée binaire à 8 bits et une décimale codée binaire à 4 bits. L'autre divise le signal d'horloge pour rafraîchir sa valeur à une certaine fréquence.

Nom du fichier: sseg_dec

Signal d'horloge:

Ce code permet au compteur d'augmenter par incréments de 1 seconde. Il divise la fréquence d'horloge d'entrée en une fréquence plus lente. Nous nous sommes adaptés pour fournir une période de 1 seconde en changeant la constante max_count: entier:= (3000000) » en « constante max_count: entier:= (50000000) ».

Nom du fichier: clk_div2

Fichiers fournis: sseg_dec, clk_div2 *Ces fichiers sources ont été fournis par le professeur Bryan Mealy.

Étape 3: Comprendre comment ils s'assemblent (schémas des composants VHDL)

Comprendre comment ils s'assemblent (schémas des composants VHDL)
Comprendre comment ils s'assemblent (schémas des composants VHDL)

Le fichier principal (" MainProjectDES ") contient tous les sous-fichiers évoqués précédemment. Ils sont connectés de la manière ci-dessus. Les différents composants sont interconnectés à l'aide de mappages de ports pour envoyer un signal d'un élément à un autre.

Comme vous l'avez peut-être remarqué, le FinalCounter fournit une sortie 5 bits tandis que sseg_dec nécessite une entrée 8 bits. Pour compenser, nous définissons le signal reliant les deux composants pour commencer par "000" et ajoutons la sortie 5 bits du compteur. Fournissant ainsi une entrée 8 bits.

Contraintes:

Afin d'exécuter ces codes sur la carte Basys 3, un fichier de contraintes était nécessaire, indiquant à chaque signal où aller et comment les pièces étaient connectées.

Étape 4: Coder (Arduino)

Nous avons programmé l'Arduino Uno pour utiliser le capteur de mouvement pour détecter les mouvements et fournir une sortie qui signale à la LED de s'allumer. De plus, l'utilisation du capteur pour détecter un mouvement nécessite des boucles de course qui recherchent constamment un changement de distance. Essentiellement, il a besoin d'une minuterie qui fonctionne simultanément pour produire un signal "élevé" pour que la LED s'allume tandis que la minuterie doit être réinitialisée une fois qu'un nouveau mouvement est détecté, ce qui est presque impossible à mettre en œuvre sur Vivado en fonction de l'étendue des connaissances. de la classe. De plus, nous avons utilisé un Arduino car il ne serait pas envisageable d'utiliser le HC-SR04 avec la carte Basys 3 car la carte ne fournit que 3,3V alors que le capteur nécessite une alimentation 5V. Pour la mise en œuvre du mouvement de détection, c'est le codage réel par opposition à la CAO en VHDL.

Nous avons utilisé la fonction intégrée d'impulsion du capteur pour récupérer le temps écoulé entre le son initialement émis par le capteur et le son qui rebondit lors de la frappe d'un objet. Ensuite, nous utilisons la vitesse du son et l'intervalle de temps pour calculer la distance entre l'objet et le capteur. À partir de là, nous stockons la distance actuelle et en gardons une trace. Nous vérifions la distance toutes les 150ms. Nous avons également utilisé la bibliothèque elapsedmil pour exécuter une minuterie interne à l'intérieur de l'arduino afin de suivre le temps écoulé. Si nous détectons un changement de distance, qui correspond à un mouvement, le chronomètre est remis à zéro et il gardera la lumière allumée jusqu'à ce que 3 secondes se soient écoulées. Chaque fois que le capteur détecte un autre mouvement, la minuterie est réinitialisée à 0 et le signal de la lumière LED sera "élevé" pendant les 3 prochaines secondes. Nous avons joint une copie de notre code Arduino ci-dessous.

Étape 5: Comment nos composants s'assemblent

Comment nos composants s'emboîtent !
Comment nos composants s'emboîtent !
Comment nos composants s'emboîtent !
Comment nos composants s'emboîtent !
Comment nos composants s'emboîtent !
Comment nos composants s'emboîtent !

Comme vous pouvez le voir dans le "Basys3: Pmod Pin-out Diagram*" et la photo de la carte Arduino Uno, nous avons mis en évidence et étiqueté les ports que nous avons utilisés.

1. La carte LED et Basys 3

La LED est connectée en série avec la résistance 100Ω. -Le fil blanc relie la résistance à la broche PWR de la carte Basys 3. -Le fil jaune relie la LED à la broche H1 de la carte Basys 3.

2. Le capteur de mouvement et l'Arduino Uno

-Le fil orange relie Vcc (alimentation) du capteur de mouvement à la broche 5V de la carte Arduino Uno.-Le fil blanc relie la broche Trig du capteur de mouvement à la broche 10 de la carte Arduino Uno.-Le fil jaune relie la broche Echo de le capteur de mouvement à la broche 9 de la carte Arduino Uno.-Le fil noir relie la broche GND du capteur de mouvement à la broche GND de la carte Arduino Uno.

[Les fils que nous avons utilisés étaient trop courts pour atteindre les composants, ils étaient donc interconnectés]

3. La carte Basys 3 et l'Arduino Uno

Le fil jaune relie la broche A14 de la carte Basys 3 à la broche 6 de la carte Arduino Uno.

*Ce diagramme est tiré du "Manuel de référence de la carte FPGA Basys 3™" de Digilent, disponible ici.

Étape 6: Démonstration

Étape 7: Il est temps de le tester

Toutes nos félicitations! Vous avez atteint la fin de notre projet de détection de mouvement et de lumière contrôlée par compteur ! Merci beaucoup d'avoir lu notre article Instructables. Il est maintenant temps pour vous d'essayer de construire ce projet vous-même. Si vous suivez attentivement chaque étape, vous devriez avoir un détecteur de mouvement et une lumière contrôlée qui fonctionne de la même manière que la nôtre ! Nous vous souhaitons bonne chance dans la construction de ce projet, et espérons qu'il pourra contribuer à économiser l'électricité ainsi que les ressources naturelles !

Conseillé: