Inhaltsverzeichnis:

Kraftstoffeffizienz-Detektor - Gunook
Kraftstoffeffizienz-Detektor - Gunook

Video: Kraftstoffeffizienz-Detektor - Gunook

Video: Kraftstoffeffizienz-Detektor - Gunook
Video: 2023 International front radar detection 2024, November
Anonim
Kraftstoffeffizienz-Detektor
Kraftstoffeffizienz-Detektor

Von: Danica Fujiwara und William McGrouther

Autos sind heute das wichtigste Fortbewegungsmittel der Welt. Insbesondere in Kalifornien sind wir von Straßen, Autobahnen und Mautstraßen umgeben, auf denen täglich Tausende von Autos fahren. Autos verbrauchen jedoch Benzin und Kalifornien verbraucht am meisten Benzin als jeder andere Bundesstaat der USA, etwa 4.500 Gallonen pro Tag. Für unser CPE 133 Final-Projekt haben wir uns entschieden, ein System zu entwickeln, mit dem es die Geschwindigkeit eines Autos verfolgen und feststellen kann, ob es die effizienteste Geschwindigkeit für den besten Benzinverbrauch oder Kraftstoffverbrauch überschreitet. Dieses Projekt würde den Fahrern helfen, sich ihres Kraftstoffverbrauchs bewusst zu werden, was ihnen hoffentlich helfen würde, Geld zu sparen, weniger Benzin zu verbrauchen und weniger Luftverschmutzung zu verursachen.

Schritt 1: Materialien

Materialien
Materialien
Materialien
Materialien
Materialien
Materialien
Materialien
Materialien

Benötigte Materialien für dieses Projekt:

- Basys 3 FPGA

- Arduino Uno

- Steckbrett

- Adafruit BNO055 Absoluter Orientierungssensor

- Männlich zu männlichen Drähten

Schritt 2: Das Design verstehen

Das Design verstehen
Das Design verstehen
Das Design verstehen
Das Design verstehen

Endliches Zustandsdiagramm

Dieses Projekt hat zwei verschiedene Zustände innerhalb des oben gezeigten endlichen Zustandsdiagramms. Das Licht kann entweder eingeschaltet (durch „1“dargestellt) oder ausgeschaltet (durch „0“dargestellt) sein. Der Zustand ändert sich abhängig von der Eingabe der Nachführgeschwindigkeit (ts) und der konstanten optimalen Geschwindigkeit.

Black-Box-Diagramm

Oben befindet sich auch ein Black-Box-Diagramm des Fuel Efficiency-Moduls, das das Schema des Geschwindigkeitskomparators und der Sieben-Segment-Anzeige enthält, die weiter unten erläutert werden. Dieser VHDL-Code erhält einen 8-Bit-Eingang aus den Messungen des Beschleunigungsmessers, der mit dem Arduino verbunden ist.

Schritt 3: Codieren von VHDL

Für dieses Projekt gibt es drei VHDL-Dateien, die unser Design aufbauen, das Fuel_Efficency_FinalProject-Modul, das Speed_Comparator-Modul und das sseg_dec-Modul, wobei sich Speed_Comparator und sseg_dec auf der unteren Ebene befinden, um das Fuel Efficiency-Modul zu bilden.

Das Geschwindigkeitskomparatormodul

Dieses Modul nimmt eine 8-Bit-Geschwindigkeit in Meilen pro Stunde auf und vergleicht sie mit der optimalen Geschwindigkeit für den geringsten Gasverbrauch. Die durchschnittliche optimale Geschwindigkeit für den besten Benzinverbrauch eines Autos beträgt etwa 55 Meilen pro Stunde und weniger. Dies kann jedoch von Auto zu Auto variieren und kann innerhalb des Moduls angepasst werden. Die Zeile 45 des Codes, die zur persönlichen Optimierung geändert werden kann, ist unten gezeigt

if (tracking > "00110111") then

Wobei „00110111“(55 in binärer Form) in eine beliebige 8-Bit-Zahl für die ideale Geschwindigkeit Ihres persönlichen Autos für den geringsten Kraftstoffverbrauch geändert werden kann.

Wenn die Geschwindigkeit über dem optimalen Wert liegt, schaltet sich das Licht ein und weist darauf hin, dass das Auto nicht die maximale Kraftstoffeffizienz verbraucht.

Das Sieben-Segment-Anzeigemodul

Dieses Modul nimmt eine 8-Bit-Geschwindigkeit in Meilen pro Stunde auf und zeigt die Geschwindigkeit auf der Sieben-Segment-Anzeige an. Dies würde es dem Benutzer ermöglichen, zu wissen, wie schnell er wissen wird, ob er oder sie langsamer werden muss. Dieses Modul wurde uns in unserer Klasse gegeben und wurde von Bryan Meally geschrieben, das die Komponenten bin2bcdconv enthält, die die binäre 8-Bit-Eingabe in eine BCD-Form umwandeln, die einfacher zu decodieren ist, und clk_div, damit das Display eine Zahl mit 3 Ziffern visuell anzeigen kann durch Ändern des Anodenausgangs bei einer hohen Taktfrequenz. Dieser Code akzeptiert eine 8-Bit-Zahl, wandelt die Zahl in eine lesbare Anzeige auf dem basys 3-Board um.

Das Fuel Efficiency Modul

Dies ist die Hauptdatei, die die obigen Module als Komponenten verwendet. Seine Eingaben sind der Takt und die Tracking-Geschwindigkeit. Die Uhr ist auf der basys 3-Platine eingebaut und die Tracking-Geschwindigkeit wird durch den Ausgang des Arduino gegeben, der mit dem analogen Signal pmod-Port (XADC) verbunden ist. Jedes Bit der 8-Bit-Tracking-Geschwindigkeit wird den Ports zugeordnet, die im Verdrahtungsabschnitt in Schritt 4 gezeigt werden. Weitere Einschränkungen von Basys 3 finden Sie in Basys_3_Master.xdc.

Schritt 4: Arduino codieren

Dieses Projekt verwendet eine Haupt-Arduino-Datei, die die Verwendung mehrerer Bibliotheken erfordert, von denen einige bereits in Ihrem Arduino-Programm enthalten sind und andere entweder von dieser Anleitung oder der Adafruit-Website (Link unten) heruntergeladen werden müssen.

Bibliotheken

Link zur Adafruit BNO055-Seite:

Adafruit hat 2 Bibliotheken für die Verwendung des BNO055 entwickelt und gibt Beispiele für deren Verwendung. In diesem Projekt verwenden wir die.getVector-Funktion, damit das Arduino die Daten des Beschleunigungsmessers ausgibt.

Dieses Projekt verwendet auch einige Bibliotheken, die bereits im Arduino-Programm installiert sind, wie die Mathematikbibliothek.

Hauptdatei

Diese Datei verwendet die Beschleunigungsmesserdaten der.getVector-Funktion und verwendet mathematische Gleichungen, um sie in eine Geschwindigkeit in Meilen pro Stunde umzuwandeln, die dann in 8-Bit-Daten an das Basys 3 ausgegeben wird (weitere Informationen finden Sie im Abschnitt "Verdrahten der Hardware".) Information).

Schritt 5: Verdrahten der Hardware

Verkabelung der Hardware
Verkabelung der Hardware
Verkabelung der Hardware
Verkabelung der Hardware
Verkabelung der Hardware
Verkabelung der Hardware
Verkabelung der Hardware
Verkabelung der Hardware

Arduino-Verkabelung

Der Arduino sollte wie in den obigen Bildern mit dem Steckbrett verdrahtet werden.

Basys 3 Verkabelung

Die Ausgänge des Arduino werden den Eingängen des Basys 3 über die analogen Signal pmod JXADC-Ports zugeordnet. Jedes Bit der 8-Bit-Tracking-Geschwindigkeit kann mit einem der im Bild oben gezeigten Pins verbunden werden. Das niedrigstwertige Bit (digitaler Pin 7) wird mit ts(7) verbunden und das höchstwertige Bit (digitaler Pin 0) wird mit ts(0) verbunden.