aboutsummaryrefslogtreecommitdiffstats
path: root/doc/proposal
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2025-12-08 16:10:32 -0500
committerSam Anthony <sam@samanthony.xyz>2025-12-08 16:10:32 -0500
commitb8704d98e828c14682187c71f99a02adad94c321 (patch)
tree792f6e862789ddfed1d23d20195746009789d79d /doc/proposal
parentf204c072074336b7b802595f192c479f6b221767 (diff)
downloadcan-gauge-interface-b8704d98e828c14682187c71f99a02adad94c321.zip
move proposal and midterm report to doc/
Diffstat (limited to 'doc/proposal')
-rw-r--r--doc/proposal/diagram.fig120
-rw-r--r--doc/proposal/proposal.tex63
2 files changed, 183 insertions, 0 deletions
diff --git a/doc/proposal/diagram.fig b/doc/proposal/diagram.fig
new file mode 100644
index 0000000..0be7b07
--- /dev/null
+++ b/doc/proposal/diagram.fig
@@ -0,0 +1,120 @@
+#FIG 3.2 Produced by xfig version 3.2.9a
+#encoding: UTF-8
+Landscape
+Center
+Metric
+A4
+300.00
+Single
+-2
+1200 2
+6 4725 1575 5940 2115
+6 4837 1665 5827 2025
+4 1 0 50 -1 0 12.00 0.0000 4 165 435 5332 1800 CAN\001
+4 1 0 50 -1 0 12.00 0.0000 4 165 945 5332 2010 Transceiver\001
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4725 1575 5917 1575 5917 2115 4725 2115 4725 1575
+-6
+6 4725 2565 5940 3105
+6 4860 2655 5805 3015
+4 1 0 50 -1 0 12.00 0.0000 4 165 435 5332 2790 CAN\001
+4 1 0 50 -1 0 12.00 0.0000 4 165 840 5332 3000 Controller\001
+-6
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4725 2565 5917 2565 5917 3105 4725 3105 4725 2565
+-6
+6 5265 2115 5355 2565
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 5310 2115 5310 2565
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 5355 2295 5265 2385
+-6
+6 5265 3105 5355 3555
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 5310 3105 5310 3555
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 5355 3285 5265 3375
+-6
+6 5265 3960 5355 4410
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 5310 3960 5310 4410
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 5355 4140 5265 4230
+-6
+6 4905 4410 5670 4725
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4905 4410 5670 4410 5670 4725 4905 4725 4905 4410
+4 0 0 50 -1 0 12.00 0.0000 4 165 570 4995 4635 PROM\001
+-6
+6 4635 3555 6075 3960
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 4635 3555 6075 3555 6075 3960 4635 3960 4635 3555
+4 0 0 50 -1 0 12.00 0.0000 4 165 1290 4725 3825 Microcontroller\001
+-6
+6 3600 3262 4230 3577
+2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5
+ 3600 3262 4230 3262 4230 3577 3600 3577 3600 3262
+4 0 0 50 -1 0 12.00 0.0000 4 165 435 3690 3487 DAC\001
+-6
+6 1665 1665 2430 2565
+6 1755 1665 2340 2070
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1755 1665 2340 1665 2340 2070 1755 2070 1755 1665
+4 0 0 50 -1 0 12.00 0.0000 4 165 405 1845 1935 ECU\001
+-6
+6 1665 2250 2430 2565
+2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
+ 1665 2250 2430 2250 2430 2565 1665 2565 1665 2250
+4 0 0 50 -1 0 12.00 0.0000 4 165 615 1710 2475 Sensors\001
+-6
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 2025 2070 2025 2250
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 2070 2115 1980 2205
+-6
+6 1710 3105 2340 4410
+6 1710 3780 2340 4410
+1 3 0 1 0 7 50 -1 -1 4.000 1 0.0000 2025 4095 302 302 2025 4095 2160 4365
+4 0 0 50 -1 0 12.00 0.0000 4 165 540 1755 4140 Gauge\001
+-6
+6 1710 3105 2340 3735
+1 3 0 1 0 7 50 -1 -1 4.000 1 0.0000 2025 3420 302 302 2025 3420 2160 3690
+4 0 0 50 -1 0 12.00 0.0000 4 165 540 1755 3465 Gauge\001
+-6
+-6
+6 2475 3240 2745 4005
+6 2475 3240 2745 3330
+3 2 0 1 0 7 50 -1 -1 4.000 0 0 0 4
+ 2475 3330 2565 3240 2655 3330 2745 3240
+ 0.000 -0.500 -0.500 0.000
+-6
+6 2475 3915 2745 4005
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 7
+ 2475 4005 2475 3915 2565 3915 2565 4005 2655 4005 2655 3915
+ 2745 3915
+-6
+-6
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 6075 3780 6705 3780
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 4
+ 4635 3645 4455 3645 4455 3420 4230 3420
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 4410 3375 4320 3465
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
+ 3600 3420 2340 3420
+2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 4
+ 4635 3870 4455 3870 4455 4095 2340 4095
+2 2 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5
+ 3510 1485 6210 1485 6210 4815 3510 4815 3510 1485
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 2340 1845 4725 1845
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 3150 1800 3060 1890
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+ 6525 3735 6435 3825
+4 1 0 50 -1 0 12.00 0.0000 4 165 795 3060 1710 CAN Bus\001
+4 0 0 50 -1 0 12.00 0.0000 4 165 270 5400 3375 SPI\001
+4 0 0 50 -1 0 12.00 0.0000 4 165 270 5400 4230 SPI\001
+4 0 0 50 -1 0 12.00 0.0000 4 165 390 6300 3690 USB\001
+4 0 0 50 -1 0 12.00 0.0000 4 165 270 4320 3330 SPI\001
diff --git a/doc/proposal/proposal.tex b/doc/proposal/proposal.tex
new file mode 100644
index 0000000..00aca85
--- /dev/null
+++ b/doc/proposal/proposal.tex
@@ -0,0 +1,63 @@
+\documentclass{article}
+\usepackage{graphicx}
+
+\title{
+Analog Gauge Driver with CAN Interface \\
+\large COMP490 Project Proposal
+}
+\author{
+Sam Anthony 40271987 \\
+sam@samanthony.xyz \\ s\_a365@concordia.ca
+\and
+Hovhannes Harutyunyan, PhD \\
+Department of Computer Science and Software Engineering \\
+haruty@encs.concordia.ca
+\and
+Concordia University \\
+}
+
+\begin{document}
+
+\maketitle
+
+Installing aftermarket gauges in a car typically requires installing sensors as well.
+However, such sensors are often already present, and are used by the ECU (engine control unit).
+Thus, the installation of aftermarket gauges can result in duplicate sensors which add complexity without augmenting the functionality or reliability of the vehicle.
+Sensors installed like this are not redundant.
+In fact, they reduce reliability, because each is a single point of failure.
+
+The proposed device allows gauges to use the sensors already on the car.
+It retrieves sensor data from the ECU via the CAN bus (controller area network bus) and transforms the data into a format that the gauges can understand: a 0--5V analog signal in the case of a temperature or pressure gauge, or a square wave in the case of a tachometer or speedometer.
+
+The device is an embedded system comprising a microcontroller, a CAN controller and transceiver, several DACs (digital-to-analog converters), and PROM (programmable read-only memory).
+The CAN interface is used for retrieving data from the ECU via the bus.
+The DACs drive analog signals to the temperature and/or pressure gauges.
+The microcontroller has an integrated PWM peripheral for driving a square wave to the tachometer and/or speedometer.
+The PROM stores the calibration: a table that maps CAN data values to voltages or frequencies.
+The microcontroller has a USB interface for programming the PROM from a computer.
+
+\begin{figure}
+ \includegraphics[width=\textwidth]{diagram.png}
+ \caption{System diagram}
+\end{figure}
+
+The project has three parts: hardware design, software development, and testing.
+The hardware and software development can be carried out concurrently.
+Testing is the final step.
+
+Hardware design involves selecting ICs (integrated circuits), creating a circuit schematic, and designing a PCB (printed circuit board).
+Once the board design is finalized, it can be sent for manufacturing.
+
+Two pieces of software must be written.
+The first runs on the microcontroller.
+Essentially, it must communicate with the various peripherals by transforming and transferring data between them.
+It must fetch frames from the CAN controller and decipher them.
+The CAN data are used to lookup the output value in the ROM.
+Either the PWM peripheral or a DAC is used to send the appropriate signal to the gauge.
+The microcontroller uses SPI (serial peripheral interface) to communicate with the peripherals.
+
+The second piece of software runs on the user's computer.
+It programs the PROM with calibration data.
+It communicates with the microcontroller using a simple text-based protocol over USB.
+
+\end{document}