Table des matières:
- Étape 1: Matériaux
- Étape 2: Commencer le codage
- Étape 3: Fichier de contraintes
- Étape 4: fichier de bascule
- Étape 5: Fichier de segments
- Étape 6: Fichier de diviseur d'horloge
- Étape 7: Fichier de signal servo
- Étape 8: Fichier de tête de servo
- Étape 9: Fichier supérieur
- Étape 10: Tester dans Vivado
- Étape 11: Introduction au matériel de construction
- Étape 12: Préparation
- Étape 13: Souder
- Étape 14: Finaliser
Vidéo: Trieur de déchets CPE 133 : 14 étapes
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
Pour notre classe CPE 133 à Cal Poly, on nous a demandé de créer un projet VHDL/Basys 3 qui aiderait l'environnement et qui était suffisamment simple pour que nous puissions le mettre en œuvre avec nos nouvelles connaissances en conception numérique. L'idée derrière notre projet que, en général, les gens ne pensent pas à l'endroit où ils jettent leurs déchets. Nous avons décidé de créer une machine qui obligerait les gens à réfléchir à l'endroit où ils jettent leurs déchets. Notre trieur de déchets prend l'entrée de l'utilisateur à travers trois commutateurs, chacun représentant soit les déchets, le recyclage ou le compost. Une fois que l'utilisateur a sélectionné le type de déchets qu'il souhaite éliminer, il appuie sur un bouton. Ce bouton entraînera l'ouverture des couvercles des conteneurs correspondants. La machine a également utilisé l'écran du Basys 3 pour indiquer si l'un des couvercles est actuellement ouvert. Lorsque le bouton est relâché, les couvercles se referment pour que la machine soit prête pour le prochain utilisateur.
Étape 1: Matériaux
Les matériaux nécessaires à ce projet sont:
Carte Basys 3
Ordinateur avec Vivado installé
3x servo*
3 pieds de fil de cuivre
Coupe-fil/dénudeur
Fer à souder et soudure
*parce que les servos sont chers et que nous sommes des étudiants, nous avons substitué une résistance de 68 ohms et une LED pour chaque servo en tant que prototype (le code fonctionne de la même manière)
Étape 2: Commencer le codage
Il y a beaucoup de code à écrire pour ce projet. Nous utiliserons du code VHDL écrit en Vivado. Pour commencer, nous voudrons créer un nouveau projet. Vous allez d'abord nommer le projet et spécifier le type de projet. Assurez-vous de sélectionner les mêmes paramètres que ceux illustrés. Lorsque vous êtes arrivé à l'écran des sources, vous voudrez ajouter six sources nommées "top", "flip_flop", "segments", "servo_top", "servo_sig" et "clk_div". Assurez-vous de sélectionner VHDL pour la langue de chaque fichier, pas Verilog. Sur l'écran des contraintes, vous devez créer un fichier pour l'affectation des broches. Le nom de ce fichier n'est pas important. Vous serez alors invité à sélectionner le tableau que vous utiliserez. Assurez-vous de sélectionner le bon. Photos de référence pour une sélection correcte. La dernière étape vous demandera de spécifier les entrées et sorties de chaque fichier source. Cette étape peut être codée plus tard, alors cliquez sur suivant.
Étape 3: Fichier de contraintes
Dans cette étape, nous allons écrire le fichier de contraintes. Cela indique à Vivado quelles broches enverront / recevront quels signaux du circuit. Nous aurons besoin de l'horloge, de trois commutateurs, de l'affichage à sept segments (sept cathodes et quatre anodes), d'un bouton et des trois broches de sortie PMOD que le servo/LED utilisera. Photos de référence pour savoir à quoi le code devrait ressembler.
Étape 4: fichier de bascule
Le prochain fichier que nous allons écrire est le fichier source flip_flip. Ce sera une implémentation VHDL d'une bascule D. En d'autres termes, il ne transmettra son entrée à la sortie que sur le front montant du signal d'horloge et lorsque le bouton est enfoncé. Il prendra l'horloge, D et le bouton comme entrée et produira Q. référencera les photos pour le code. Le but de ce fichier est de permettre aux bacs de s'ouvrir uniquement lorsque le bouton est enfoncé plutôt que de s'ouvrir directement à chaque fois que l'interrupteur est basculé et de ne se fermer que lorsque l'interrupteur est basculé.
Étape 5: Fichier de segments
Le fichier suivant à écrire est le fichier de segments. Cela prendra le bouton comme dans les valeurs d'entrée et de sortie pour les sept cathodes et quatre anodes de l'affichage à sept segments du Basys 3. Ce fichier fait que l'affichage à sept segments affiche un « C » lorsque les bacs sont fermés et un « O » lorsque les bacs sont ouverts. Pour le code voir photo ci-jointe.
Étape 6: Fichier de diviseur d'horloge
Les servos fonctionnent en prenant un signal PWM avec une fréquence de 64k Hz tandis que l'horloge intégrée au Basys 3 fonctionne à 50M Hz. Le fichier diviseur d'horloge convertira l'horloge par défaut en une fréquence conviviale pour le servo. Le fichier prendra l'horloge et un signal de réinitialisation en entrée et produira un nouveau signal d'horloge. Voir la photo ci-jointe pour le code.
Étape 7: Fichier de signal servo
Le fichier de signal d'asservissement prendra une entrée d'horloge, une entrée de réinitialisation et une entrée de position souhaitée. Il produira un signal PWM qui conduira le servomoteur à la position souhaitée. Ce fichier utilise le signal d'horloge créé dans le dernier fichier pour créer un signal PWM pour le servo avec différents cycles de service en fonction de la position souhaitée. Cela nous permet de faire tourner les servos qui contrôlent les couvercles des poubelles. Voir la photo ci-jointe pour le code.
Étape 8: Fichier de tête de servo
Le but de ce fichier est de compiler les deux derniers fichiers dans un servodriver fonctionnel. Il faudra une horloge, une réinitialisation et une position comme entrée et produira le signal servo PWM. Il utilisera à la fois le diviseur d'horloge et le fichier de signaux d'asservissement comme composants et inclura un signal d'horloge interne pour transmettre l'horloge modifiée du diviseur d'horloge au fichier de signaux d'asservissement. Voir les photos sur
Étape 9: Fichier supérieur
C'est le fichier le plus important du projet car il englobe tout ce que nous avons créé ensemble. Il prendra le bouton, les trois interrupteurs et l'horloge comme entrées. Il donnera les sept cathodes, les quatre anodes et les trois signaux servo/LED comme sorties. Il utilisera la bascule, les segments et les fichiers servo_top comme composants et aura un commutateur interne et un signal servo interne.
Étape 10: Tester dans Vivado
Exécuter la synthèse, l'implémentation et l'écriture de bitsream dans Vivado. Si vous rencontrez des messages d'erreur, recherchez l'emplacement de l'erreur, puis comparez-le au code donné. Résolvez toutes les erreurs jusqu'à ce que toutes ces exécutions se terminent avec succès.
Étape 11: Introduction au matériel de construction
Dans cette étape, vous allez créer le matériel LED que nous avons utilisé dans notre prototype. Si vous utilisez des servos, le projet doit être prêt à fonctionner tant que les bonnes broches sont utilisées. Si vous utilisez des LED, suivez les étapes ci-dessous.
Étape 12: Préparation
Coupez le fil en six morceaux égaux. Dénudez suffisamment les extrémités de chaque morceau de fil pour que la soudure puisse se produire. Séparez les LED, les résistances et les fils en trois groupes. Faire chauffer le fer à souder.
Étape 13: Souder
Soudez chacune des résistances de 68 ohms au côté négatif de leur LED correspondante. Soudez un fil sur le côté positif de la LED et un autre fil sur le côté de la résistance non soudé à la LED. Vous devriez avoir trois des engins à LED illustrés ci-dessus.
Étape 14: Finaliser
Insérez chaque fil positif dans la broche PMOD correspondante et chaque négatif dans une broche PMOD mise à la terre. Ajoutez éventuellement des bacs en carton pour représenter les poubelles et masquez vos dégâts de soudure. Une fois que les fils sont correctement branchés et que le code est correctement téléchargé sur la carte sans erreur, la machine devrait fonctionner comme prévu. Si quelque chose ne va pas, revenez aux étapes précédentes pour dépanner. Amusez-vous avec votre nouveau "trieur de déchets".