Inhoudsopgave:

Brandstofefficiëntiedetector: 5 stappen
Brandstofefficiëntiedetector: 5 stappen

Video: Brandstofefficiëntiedetector: 5 stappen

Video: Brandstofefficiëntiedetector: 5 stappen
Video: Fitbit Charge 5 - Eerste indruk 2024, Juli-
Anonim
Detector voor brandstofefficiëntie
Detector voor brandstofefficiëntie

Door: Danica Fujiwara en William McGrouther

Auto's zijn tegenwoordig het belangrijkste vervoermiddel in de wereld. Met name in Californië zijn we omringd door straten, snelwegen en tolwegen waar dagelijks duizenden auto's op rijden. Auto's gebruiken echter gas en Californië gebruikt de meeste benzine dan enige andere staat in de VS, ongeveer 4.500 gallons per dag. Voor ons CPE 133 Final-project hebben we besloten om een systeem te maken waarin het de snelheid van een auto kan volgen en kan bepalen of deze de meest efficiënte snelheid overschrijdt voor het beste benzineverbruik of brandstofverbruik. Dit project zou bestuurders helpen bewust te worden van hun brandstofverbruik, wat hen hopelijk zou helpen geld te besparen, minder gas te verbruiken en minder luchtvervuiling te veroorzaken.

Stap 1: Materialen

Materialen
Materialen
Materialen
Materialen
Materialen
Materialen
Materialen
Materialen

Benodigde materialen voor dit project:

- Basys 3 FPGA

- Arduino Uno

- Broodplank

- Adafruit BNO055 Absolute oriëntatiesensor

- Man-man-draden

Stap 2: Het ontwerp begrijpen

Het ontwerp begrijpen
Het ontwerp begrijpen
Het ontwerp begrijpen
Het ontwerp begrijpen

Eindige toestandsdiagram

Dit project heeft twee verschillende toestanden binnen het hierboven getoonde eindige toestandsdiagram. Het licht kan aan zijn (weergegeven door '1') of uit (weergegeven door '0'). De toestand verandert afhankelijk van de invoer van de volgsnelheid(ts) en de constante optimale snelheid.

Black Box-diagram

Ook hierboven is er een Black Box-diagram van de Fuel Efficiency-module met het schema van de Speed Comparator en de Seven Segment Display die hieronder verder worden besproken. Deze VHDL-code ontvangt een 8-bits invoer van de metingen van de accelerometer die is aangesloten op de arduino.

Stap 3: VHDL coderen

Voor dit project zijn er drie VHDL-bestanden die ons ontwerp construeren, Fuel_Efficency_FinalProject-module, Speed_Comparator-module en de sseg_dec-module waarbij Speed_Comparator en de sseg_dec zich op het lagere niveau bevinden om de Fuel Efficiency-module te vormen.

De snelheidsvergelijkermodule

Deze module neemt een 8-bits snelheid in mijl per uur op en vergelijkt deze met de optimale snelheid voor het minste gasverbruik. De gemiddelde optimale snelheid voor het beste benzineverbruik van een auto is ongeveer 55 mph en minder. Dit kan echter variëren van auto tot auto, die binnen de module kan worden aangepast. De regel 45 met code die kan worden gewijzigd voor persoonlijke optimalisatie wordt hieronder weergegeven:

if (volgen > "00110111") dan

Waarbij "00110111" (55 in binair getal) kan worden gewijzigd in elk 8-bits getal voor de ideale snelheid van uw persoonlijke auto voor het minste brandstofverbruik.

Als de snelheid boven het optimale aantal ligt, gaat het lampje branden om aan te geven dat de auto niet het maximale brandstofverbruik verbruikt.

De Zeven Segmenten DisplayModule

Deze module neemt een 8-bits snelheid op in mijlen per uur en geeft de snelheid weer op het zevensegmentendisplay. Dit zou de gebruiker in staat stellen om te weten hoe snel ze gaan weten of hij of zij moet vertragen. Deze module is ons binnen onze klas gegeven en is geschreven door Bryan Mely en bevat de componenten bin2bcdconv die de binaire 8-bits invoer omzet naar BCD-vorm die gemakkelijker te decoderen is en clk_div zodat het display visueel een getal met 3 cijfers kan weergeven door de anode-uitgang op een hoge klokfrequentie te veranderen. Deze code accepteert een 8-bits nummer en zet het nummer om in een leesbaar display op het basys 3-bord.

De module Brandstofefficiëntie

Dit is het hoofdbestand dat de bovenstaande modules als componenten gebruikt. De ingangen zijn de klok en de volgsnelheid. De klok is ingebouwd in het basys 3-bord en de volgsnelheid wordt gegeven door de uitgang van de arduino die is aangesloten op de analoge signaal pmod-poort (XADC). Elk bit van de 8-bits volgsnelheid wordt toegewezen aan de poorten die worden weergegeven in het bedradingsgedeelte in stap 4. Andere Basys 3-beperkingen zijn te vinden in Basys_3_Master.xdc.

Stap 4: Arduino coderen

Dit project gebruikt één arduino-hoofdbestand dat het gebruik van verschillende bibliotheken vereist, waarvan sommige al in uw arduino-programma staan en andere moeten worden gedownload van deze instructable of de Adafruit-website (link hieronder).

Bibliotheken

link naar Adafruit BNO055-pagina:

Adafruit heeft 2 bibliotheken ontwikkeld voor het gebruik van de BNO055, en geeft voorbeelden van hoe deze te gebruiken. In dit project zullen we de.getVector-functie gebruiken om de Arduino de gegevens van de versnellingsmeter te laten uitvoeren.

Dit project maakt ook gebruik van enkele bibliotheken die al in het arduino-programma zijn geïnstalleerd, zoals de wiskundebibliotheek.

Hoofdbestand

Dit bestand gebruikt de accelerometergegevens van de.getVector-functie en gebruikt wiskundige vergelijkingen om het om te zetten in een snelheid in mijlen per uur, die vervolgens in 8 bits gegevens naar de Basys 3 wordt uitgevoerd (zie het gedeelte "Bekabeling van de hardware" voor meer informatie informatie).

Stap 5: Bedrading van de hardware

Bedrading van de hardware
Bedrading van de hardware
Bedrading van de hardware
Bedrading van de hardware
Bedrading van de hardware
Bedrading van de hardware
Bedrading van de hardware
Bedrading van de hardware

Arduino-bedrading

De Arduino moet op het breadboard worden aangesloten zoals op de bovenstaande afbeeldingen.

Basys 3 bedrading

De uitgangen van de arduino zijn toegewezen aan de ingangen van de Basys 3 via de analoge signaal pmod JXADC-poorten. Elk bit van de 8-bits volgsnelheid kan worden aangesloten op een van de pinnen die in de bovenstaande afbeelding worden getoond. De minst significante bit (digitale pin 7) wordt verbonden met ts(7) en de meest significante bit (digitale pin 0) wordt verbonden met ts(0).

Aanbevolen: