Innholdsfortegnelse:

CPE 133 Trash Sorter: 14 trinn
CPE 133 Trash Sorter: 14 trinn

Video: CPE 133 Trash Sorter: 14 trinn

Video: CPE 133 Trash Sorter: 14 trinn
Video: Get Tax Ready! Solving Source Doc Gathering Issues 2024, November
Anonim
CPE 133 Papirkurvssorterer
CPE 133 Papirkurvssorterer

For vår CPE 133 -klasse på Cal Poly ble vi fortalt å lage et VHDL/Basys 3 -prosjekt som ville hjelpe miljøet og var enkelt nok til at vi kunne implementere det med vår nye kunnskap om digital design. Ideen bak prosjektet vårt om at folk generelt ikke tenker på hvor de skal kaste søppelet. Vi bestemte oss for å lage en maskin som skulle tvinge folk til å tenke på hvor de la søppelet sitt. Vår søppelsorterer tar brukerens innspill gjennom tre brytere, som hver representerer enten søppel, resirkulering eller kompost. Når brukeren har valgt hvilken type avfall de vil kaste, trykker de på en knapp. Denne knappen vil føre til at de tilhørende beholderlokkene åpnes. Maskinen brukte også displayet på Basys 3 for å indikere om noen av lokkene er åpne. Når knappen slippes, lukkes lokkene igjen slik at maskinen er klar for neste bruker.

Trinn 1: Materialer

Materialer
Materialer
Materialer
Materialer
Materialer
Materialer

Materialene som kreves for dette prosjektet er:

Basys 3 brett

Datamaskin med Vivado installert

3x servo*

3 fot kobbertråd

Wire Cutter/stripper

Loddejern og loddetinn

*fordi servoer er dyre og vi er studenter, erstattet vi en 68 ohm motstand og LED for hver servo som en prototype (koden fungerer på samme måte)

Trinn 2: Begynnende koding

Begynnende koding
Begynnende koding
Begynnende koding
Begynnende koding
Begynnende koding
Begynnende koding

Det er mye kode som skal skrives for dette prosjektet. Vi bruker VHDL -kode skrevet i Vivado. For å starte vil vi opprette et nytt prosjekt. Først vil du gi prosjektet et navn og spesifisere prosjekttypen. Sørg for å velge de samme innstillingene som på bildet. Når du har kommet til kildeskjermen, vil du legge til seks kilder som heter "topp", "flip_flop", "segmenter", "servo_top", "servo_sig" og "clk_div". Sørg for å velge VHDL for språket i hver fil, ikke Verilog. På begrensningsskjermen bør du opprette en fil for pin -tildelingen. Navnet på denne filen er ikke viktig. Du blir deretter bedt om å velge brettet du vil bruke. Sørg for at du velger den riktige. Referansebilder for riktig valg. Det siste trinnet vil be deg angi innganger og utganger for hver kildefil. Dette trinnet kan kodes senere, så klikk på neste.

Trinn 3: Begrensningsfil

Begrensningsfil
Begrensningsfil
Begrensningsfil
Begrensningsfil

I dette trinnet skriver vi begrensningsfilen. Dette forteller Vivado hvilke pins som vil sende/motta hvilke signaler fra kretsene. Vi trenger klokken, tre brytere, displayet med syv segmenter (syv katoder og fire anoder), en knapp og de tre utgående PMOD -pinnene som servoen/LED -en vil bruke. Referansebilder for hvordan koden skal se ut.

Trinn 4: Flip Flop -fil

Flip Flop -fil
Flip Flop -fil

Den neste filen vi skal skrive er flip_flip kildefilen. Dette vil være en VHDL -implementering av en D -flip -flop. Med andre ord vil den bare passere inngangen til utgangen på den stigende kanten av klokkesignalet og når knappen trykkes. Det vil ta klokke, D og knappen som inngang og vil sende Q. referere til bildene for kode. Formålet med denne filen er å la beholderne bare åpne når knappen trykkes i stedet for å åpne den direkte hver gang bryteren vendes og bare lukkes når bryteren vendes tilbake.

Trinn 5: Segments -fil

Segments -fil
Segments -fil

Den neste filen som skal skrives er segmentfilen. Dette vil ta knappen som i inngangs- og utgangsverdier for de syv katodene og fire anodene på Basys 3s syv segmentvisning. Denne filen får displayet med syv segmenter til å vise en "C" når hyllene er lukket og en "O" når hyllene er åpne. For kode se vedlagt bilde.

Trinn 6: Clock Divider File

Clock Divider File
Clock Divider File

Servoer fungerer ved å ta et PWM -signal med en frekvens på 64k Hz mens klokken som er innebygd i Basys 3 fungerer ved 50M Hz. Klokkedelerfilen vil konvertere standardklokken til en vennlig frekvens for servoen. Filen tar klokken og et tilbakestillingssignal som inngang og sender ut et nytt klokkesignal. Se bildet vedlagt for kode.

Trinn 7: Servosignalfil

Servosignalfil
Servosignalfil

Servosignalfilen tar en klokkeinngang, en tilbakestillingsinngang og en ønsket posisjonsinngang. Den sender ut et PWM -signal som driver servoen til ønsket posisjon. Denne filen bruker klokkesignalet som ble opprettet i den siste filen for å lage et PWM -signal for servoen med forskjellige driftssykluser avhengig av ønsket posisjon. Dette gjør at vi kan snu servoene som styrer lokkene til søppeldunkene. Se vedlagte bilde for kode.

Trinn 8: Servo Top File

Servo Top File
Servo Top File

Hensikten med denne filen er å kompilere de to siste filene til en funksjonell servodriver. Det vil ta en klokke, en tilbakestilling og en posisjon som inngang og vil sende ut servo PWM -signalet. Den vil bruke både klokkeavdeleren og servosignalfilen som komponenter og vil inneholde et internt klokkesignal for å passere den modifiserte klokken fra klokkedeleren til servosignalfilen. Se bilder på

Trinn 9: Toppfil

Topp fil
Topp fil
Topp fil
Topp fil
Topp fil
Topp fil
Topp fil
Topp fil

Dette er den viktigste filen i prosjektet ettersom det pakker alt vi har laget sammen. Det vil ta knappen, de tre bryterne og klokken som innganger. Det vil gi de syv katodene, de fire anodene og de tre servo/LED -signalene som utganger. Den vil bruke flip -flop, segmenter og servo_top -filer som komponenter og vil ha en intern bryter og internt servosignal.

Trinn 10: Testing i Vivado

Kjør syntese, implementering og skriv bitsream i Vivado. Hvis du støter på noen feilmeldinger, finner du feilstedet og sammenligner det med den oppgitte koden. Gjennomgå eventuelle feil til alle disse kjøringene er fullført.

Trinn 11: Bygging av maskinvareintro

I dette trinnet vil du lage LED -maskinvaren vi brukte i vår prototype. Hvis du bruker servoer, bør prosjektet være klart så lenge de riktige pinnene brukes. Følg trinnene nedenfor hvis du bruker lysdioder.

Trinn 12: Forbered

Skjær tråden i seks jevne biter. Strip endene av hvert stykke tråd slik at lodding kan oppstå. Separate lysdioder, motstander og ledninger i tre grupper. Varm opp loddejern.

Trinn 13: Lodding

Lodding
Lodding
Lodding
Lodding

Lodd hver av de 68 ohm motstandene til den negative siden av deres tilsvarende LED. Lod en ledning på den positive siden av lysdioden og en annen ledning på siden av motstanden som ikke er loddet til ledningen. Du bør ha tre av LED -utstyrene vist på bildet ovenfor.

Trinn 14: Avslutt

Finale
Finale

Sett hver positiv ledning inn i den tilsvarende PMOD -pinnen og hver negative i en jordet PMOD -pinne. Du kan eventuelt legge til pappkasser for å representere søppelbøtter og skjule loddet rot. Når ledningene er riktig plugget inn og koden er riktig lastet opp til brettet uten feil, skal maskinen fungere etter hensikten. Gå tilbake til tidligere trinn for feilsøking hvis noe går galt. Ha det gøy med din nye "søppelsorterer".

Anbefalt: