Inhaltsverzeichnis:

Müllsortierer CPE 133 - Gunook
Müllsortierer CPE 133 - Gunook

Video: Müllsortierer CPE 133 - Gunook

Video: Müllsortierer CPE 133 - Gunook
Video: Recyclinghof: Wenn Müll mehr ist als der Dreck der anderen | 7 Tage | NDR 2024, November
Anonim
CPE 133 Müllsorter
CPE 133 Müllsorter

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

Materialien
Materialien
Materialien
Materialien
Materialien
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

Programmieren beginnen
Programmieren beginnen
Programmieren beginnen
Programmieren beginnen
Programmieren beginnen
Programmieren 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

Einschränkungsdatei
Einschränkungsdatei
Einschränkungsdatei
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

Flip-Flop-Datei
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

Segmentdatei
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

Clock Divider-Datei
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

Servosignaldatei
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

Servo-Top-Datei
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

Top-Datei
Top-Datei
Top-Datei
Top-Datei
Top-Datei
Top-Datei
Top-Datei
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
Löten
Löten
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

Finale
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".