Innehållsförteckning:
- Steg 1: Material
- Steg 2: Börja kodning
- Steg 3: Begränsningsfil
- Steg 4: Flip Flop -fil
- Steg 5: Segmentsfil
- Steg 6: Clock Divider File
- Steg 7: Servosignalfil
- Steg 8: Servo Top File
- Steg 9: Toppfil
- Steg 10: Testning i Vivado
- Steg 11: Bygga hårdvaruintro
- Steg 12: Förbered
- Steg 13: Lödning
- Steg 14: Avsluta
Video: CPE 133 papperskorgen: 14 steg
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
För vår CPE 133 -klass på Cal Poly fick vi besked om att skapa ett VHDL/Basys 3 -projekt som skulle hjälpa miljön och var tillräckligt enkelt för att vi skulle kunna genomföra det med vår nya kunskap om digital design. Tanken bakom vårt projekt att människor i allmänhet inte tänker på vart de ska slänga sina sopor. Vi bestämde oss för att skapa en maskin som skulle tvinga människor att tänka på var de lade sin papperskorg. Vår papperskorgen sorterar användarens inmatning genom tre switchar, var och en representerar antingen skräp, återvinning eller kompost. När användaren har valt den typ av avfall de vill slänga trycker de på en knapp. Denna knapp gör att motsvarande behållarlock öppnas. Maskinen använde också displayen på Basys 3 för att indikera om något av locken för närvarande är öppna. När knappen släpps stängs locken igen så att maskinen är redo för nästa användare.
Steg 1: Material
Materialet som krävs för detta projekt är:
Basys 3 -bräda
Dator med Vivado installerad
3x servo*
3 fot koppartråd
Wire Cutter/Stripper
Lödkolv och löd
*eftersom servon är dyra och vi är studenter har vi bytt ut ett 68 ohm motstånd och LED för varje servo som en prototyp (koden fungerar på samma sätt)
Steg 2: Börja kodning
Det finns mycket kod att skriva för detta projekt. Vi kommer att använda VHDL -kod skriven i Vivado. För att börja vill vi skapa ett nytt projekt. Först kommer du att namnge projektet och ange projekttypen. Var noga med att välja samma inställningar som på bilden. När du har kommit till källskärmen vill du lägga till sex källor med namnet "topp", "flip_flop", "segment", "servo_top", "servo_sig" och "clk_div". Var noga med att välja VHDL för språket i varje fil, inte Verilog. På begränsningsskärmen bör du skapa en fil för pin -tilldelningen. Filens namn är inte viktigt. Du uppmanas sedan att välja den tavla du ska använda. Se till att du väljer rätt. Referensbilder för rätt val. Det sista steget kommer att be dig att ange in- och utdata för varje källfil. Det här steget kan kodas senare så klicka på nästa.
Steg 3: Begränsningsfil
I detta steg skriver vi begränsningsfilen. Detta berättar för Vivado vilka stift som skickar/tar emot vilka signaler från kretsen. Vi kommer att behöva klockan, tre omkopplare, displayen med sju segment (sju katoder och fyra anoder), en knapp och de tre utgående PMOD -stiften som servon/lysdioden kommer att använda. Referensbilder för hur koden ska se ut.
Steg 4: Flip Flop -fil
Nästa fil som vi ska skriva är källfilen flip_flip. Detta kommer att vara en VHDL -implementering av en D -flip -flop. Med andra ord kommer det bara att passera dess ingång till utgången på klocksignalens stigande kant och när knappen trycks in. Det kommer att ta klocka, D och knappen som ingång och kommer att mata ut Q. referera till bilderna för kod. Syftet med den här filen är att låta papperskorgarna bara öppna när knappen trycks ned istället för att öppnas direkt varje gång omkopplaren vänds och endast stängas när omkopplaren vänds tillbaka.
Steg 5: Segmentsfil
Nästa fil som ska skrivas är segmentfilen. Detta tar knappen som i in- och utgångsvärden för de sju katoderna och fyra anoderna i Basys 3: s sju segmentvisning. Denna fil får sju segmentvisning att visa ett "C" när facken är stängda och ett "O" när facken är öppna. För kod se bifogad bild.
Steg 6: Clock Divider File
Servos fungerar genom att ta en PWM -signal med en frekvens på 64k Hz medan klockan inbyggd i Basys 3 fungerar vid 50M Hz. Klockavdelningsfilen konverterar standardklockan till en vänlig frekvens för servon. Filen tar klockan och en återställningssignal som en ingång och matar ut en ny klocksignal. Se bilden bifogad för kod.
Steg 7: Servosignalfil
Servosignalfilen tar en klockingång, en återställningsingång och en önskad positionsingång. Den kommer att mata ut en PWM -signal som driver servon till önskad position. Denna fil använder klocksignalen som skapades i den senaste filen för att skapa en PWM -signal för servon med olika driftcykler beroende på önskad position. Detta gör att vi kan vända servona som styr locken på soptunnorna. Se bifogad bild för kod.
Steg 8: Servo Top File
Syftet med den här filen är att sammanställa de två sista filerna till en funktionell servodrivrutin. Det kommer att ta en klocka, en återställning och en position som en ingång och kommer att mata ut servo PWM -signalen. Den kommer att använda både klockavdelaren och servosignalfilen som komponenter och kommer att inkludera en intern klocksignal för att överföra den modifierade klockan från klockavdelaren till servosignalfilen. Se bilder på
Steg 9: Toppfil
Detta är projektets viktigaste fil eftersom det omsluter allt vi har skapat tillsammans. Det tar knappen, de tre omkopplarna och klockan som ingångar. Det kommer att ge de sju katoderna, de fyra anoderna och de tre servo/LED -signalerna som utgångar. Den kommer att använda flip -flop, segment och servo_top -filer som komponenter och kommer att ha en intern switch och intern servosignal.
Steg 10: Testning i Vivado
Kör syntes, implementering och skriv bitream i Vivado. Om du stöter på några felmeddelanden hittar du felplatsen och jämför sedan med den angivna koden. Utför alla fel tills alla dessa körningar slutförts framgångsrikt.
Steg 11: Bygga hårdvaruintro
I det här steget skapar du LED -hårdvaran som vi använde i vår prototyp. Om du använder servon bör projektet vara klart så länge rätt stift används. Följ stegen nedan om du använder lysdioder.
Steg 12: Förbered
Skär tråden i sex jämna bitar. Ta bort ändarna på varje trådbit så att lödning kan ske. Separata lysdioder, motstånd och ledningar i tre grupper. Värm upp lödkolven.
Steg 13: Lödning
Löd var och en av de 68 ohm motstånden till den negativa sidan av deras motsvarande lysdiod. Löd en tråd på den positiva sidan av lysdioden och en annan tråd på sidan av motståndet som inte är lödt till lysdioden. Du bör ha tre av LED -lamporna på bilden ovan.
Steg 14: Avsluta
Sätt in varje positiv tråd i motsvarande PMOD -stift och varje negativ i en jordad PMOD -stift. Alternativt kan du lägga till pappkorgar för att representera papperskorgar och dölja din lödröra. När kablarna är korrekt anslutna och koden laddas upp korrekt på kortet utan fel ska maskinen fungera som avsett. Gå tillbaka till föregående steg för att felsöka om något går fel. Ha kul med din nya "papperskorgen".