Inhaltsverzeichnis:
- Schritt 1: Materialien
- Schritt 2: Codierung beginnen
- Schritt 3: Einschränkungsdatei
- Schritt 4: Flip-Flop-Datei
- Schritt 5: Segmentdatei
- Schritt 6: Clock Divider-Datei
- Schritt 7: Servosignaldatei
- Schritt 8: Servo Top-Datei
- Schritt 9: Top-Datei
- Schritt 10: Testen in Vivado
- Schritt 11: Hardware-Einführung erstellen
- Schritt 12: Vorbereitung
- Schritt 13: Löten
- Schritt 14: Finale
Video: Müllsortierer CPE 133 - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:21
Für unsere CPE 133-Klasse bei Cal Poly wurde uns gesagt, dass wir ein VHDL/Basys 3-Projekt erstellen sollten, das der Umwelt hilft und einfach genug war, um es mit unserem neuen Wissen über digitales Design umzusetzen. Die Idee hinter unserem Projekt, dass die Leute im Allgemeinen nicht darüber nachdenken, wohin sie ihren Müll werfen. Wir haben uns entschieden, eine Maschine zu entwickeln, die die Leute dazu zwingt, darüber nachzudenken, wo sie ihren Müll hinbringen. Unser Müllsorter nimmt Benutzereingaben über drei Schalter auf, die jeweils entweder für Müll, Recycling oder Kompost stehen. Sobald der Benutzer die Abfallart ausgewählt hat, die er entsorgen möchte, drückt er einen Knopf. Diese Schaltfläche bewirkt, dass sich die entsprechenden Behälterdeckel öffnen. Die Maschine nutzte auch das Display des Basys 3, um anzuzeigen, ob einer der Deckel gerade geöffnet ist. Beim Loslassen der Taste schließen sich die Deckel wieder, sodass die Maschine für den nächsten Benutzer bereit ist.
Schritt 1: Materialien
Die für dieses Projekt benötigten Materialien sind:
Basys 3-Platine
Computer mit installiertem Vivado
3x Servo*
3 Fuß Kupferdraht
Drahtschneider/Abisolierer
Lötkolben und Lot
*da Servos teuer sind und wir College-Studenten sind, haben wir als Prototyp für jedes Servo einen 68-Ohm-Widerstand und eine LED ersetzt (Code funktioniert genauso)
Schritt 2: Codierung beginnen
Für dieses Projekt muss viel Code geschrieben werden. Wir werden VHDL-Code verwenden, der in Vivado geschrieben wurde. Zu Beginn möchten wir ein neues Projekt erstellen. Zuerst benennen Sie das Projekt und geben den Projekttyp an. Achten Sie darauf, die gleichen Einstellungen wie abgebildet zu wählen. Wenn Sie den Quellenbildschirm erreicht haben, möchten Sie sechs Quellen namens "top", "flip_flop", "segments", "servo_top", "servo_sig" und "clk_div" hinzufügen. Achten Sie darauf, VHDL für die Sprache jeder Datei auszuwählen, nicht Verilog. Auf dem Constraint-Bildschirm sollten Sie eine Datei für die Pinbelegung erstellen. Der Name dieser Datei ist nicht wichtig. Sie werden dann aufgefordert, das zu verwendende Board auszuwählen. Stellen Sie sicher, dass Sie das richtige auswählen. Referenzfotos für die richtige Auswahl. Im letzten Schritt werden Sie aufgefordert, die Ein- und Ausgaben jeder Quelldatei anzugeben. Dieser Schritt kann später codiert werden, also klicken Sie auf Weiter.
Schritt 3: Einschränkungsdatei
In diesem Schritt schreiben wir die Constraint-Datei. Dies teilt Vivado mit, welche Pins welche Signale von der Schaltung senden/empfangen. Wir benötigen die Uhr, drei Schalter, die Sieben-Segment-Anzeige (sieben Kathoden und vier Anoden), einen Knopf und die drei Ausgangs-PMOD-Pins, die das Servo / die LED verwendet. Referenzfotos für das Aussehen des Codes.
Schritt 4: Flip-Flop-Datei
Die nächste Datei, die wir schreiben werden, ist die Quelldatei flip_flip. Dies wird eine VHDL-Implementierung eines D-Flip-Flops sein. Mit anderen Worten, es wird seinen Eingang nur bei der steigenden Flanke des Taktsignals und beim Drücken der Taste an den Ausgang weitergeben. Es nimmt Uhr, D und die Taste als Eingabe und gibt Q aus. Referenzieren Sie die Fotos für den Code. Der Zweck dieser Datei besteht darin, dass sich die Behälter nur öffnen lassen, wenn die Taste gedrückt wird, anstatt jedes Mal, wenn der Schalter umgelegt wird, direkt zu öffnen und nur zu schließen, wenn der Schalter zurückgeklappt wird.
Schritt 5: Segmentdatei
Die nächste zu schreibende Datei ist die Segmentdatei. Dadurch wird die Schaltfläche als Eingabe- und Ausgabewerte für die sieben Kathoden und vier Anoden der Siebensegmentanzeige des Basys 3 übernommen. Diese Datei bewirkt, dass die Siebensegmentanzeige ein "C" anzeigt, wenn die Behälter geschlossen sind, und ein "O", wenn die Behälter geöffnet sind. Code siehe angehängtes Foto.
Schritt 6: Clock Divider-Datei
Servos funktionieren, indem sie ein PWM-Signal mit einer Frequenz von 64 kHz aufnehmen, während der im Basys 3 eingebaute Takt mit 50 MHz arbeitet. Die Taktteilerdatei konvertiert den Standardtakt in eine für das Servo geeignete Frequenz. Die Datei nimmt den Takt und ein Reset-Signal als Eingabe und gibt ein neues Taktsignal aus. Den Code finden Sie im beigefügten Foto.
Schritt 7: Servosignaldatei
Die Servosignaldatei nimmt einen Takteingang, einen Rücksetzeingang und einen gewünschten Positionseingang an. Es gibt ein PWM-Signal aus, das das Servo in die gewünschte Position fährt. Diese Datei verwendet das in der letzten Datei erstellte Taktsignal, um je nach gewünschter Position ein PWM-Signal für das Servo mit unterschiedlichen Tastverhältnissen zu erzeugen. Dadurch können wir die Servos drehen, die die Deckel der Mülltonnen steuern. Den Code finden Sie auf dem beigefügten Foto.
Schritt 8: Servo Top-Datei
Der Zweck dieser Datei besteht darin, die letzten beiden Dateien in einen funktionsfähigen Servotreiber zu kompilieren. Es nimmt einen Takt, einen Reset und eine Position als Eingang und gibt das Servo-PWM-Signal aus. Es verwendet sowohl den Taktteiler als auch die Servosignaldatei als Komponenten und enthält ein internes Taktsignal, um den modifizierten Takt vom Taktteiler an die Servosignaldatei weiterzugeben. Siehe Fotos unter
Schritt 9: Top-Datei
Dies ist die wichtigste Datei des Projekts, da sie alles umfasst, was wir zusammen erstellt haben. Als Eingänge werden der Taster, die drei Schalter und die Uhr verwendet. Es gibt die sieben Kathoden, die vier Anoden und die drei Servo-/LED-Signale als Ausgänge. Es verwendet die Flip-Flop-, Segment- und servo_top-Dateien als Komponenten und verfügt über einen internen Schalter und ein internes Servosignal.
Schritt 10: Testen in Vivado
Führen Sie Synthese, Implementierung und Schreiben von Bitsream in Vivado aus. Wenn Sie auf Fehlermeldungen stoßen, suchen Sie die Fehlerstelle und vergleichen Sie sie mit dem angegebenen Code. Arbeiten Sie alle Fehler ab, bis alle diese Läufe erfolgreich abgeschlossen sind.
Schritt 11: Hardware-Einführung erstellen
In diesem Schritt erstellen Sie die LED-Hardware, die wir in unserem Prototyp verwendet haben. Bei Verwendung von Servos sollte das Projekt einsatzbereit sein, solange die richtigen Pins verwendet werden. Wenn Sie LEDs verwenden, führen Sie die folgenden Schritte aus.
Schritt 12: Vorbereitung
Schneiden Sie den Draht in sechs gleichmäßige Stücke. Die Enden jedes Drahtstücks ausreichend abisolieren, damit das Löten erfolgen kann. Trennen Sie LEDs, Widerstände und Drähte in drei Gruppen. Lötkolben aufheizen.
Schritt 13: Löten
Löten Sie jeden der 68-Ohm-Widerstände an die negative Seite der entsprechenden LED. Löten Sie einen Draht auf die positive Seite der LED und einen anderen Draht auf die Seite des Widerstands, der nicht an die LED gelötet ist. Sie sollten drei der oben abgebildeten LED-Geräte haben.
Schritt 14: Finale
Stecken Sie jeden positiven Draht in den entsprechenden PMOD-Pin und jeden negativen in einen geerdeten PMOD-Pin. Fügen Sie optional Pappbehälter hinzu, um Mülleimer darzustellen und Ihr Lötchaos zu verbergen. Sobald die Drähte richtig eingesteckt sind und der Code ordnungsgemäß und fehlerfrei auf die Platine hochgeladen wurde, sollte die Maschine wie vorgesehen funktionieren. Wenn etwas schief geht, kehren Sie zur Fehlerbehebung zu den vorherigen Schritten zurück. Viel Spaß mit Ihrem neuen "Mülleimer".