This repository has been archived by the owner on Oct 25, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
/
designLV.html
373 lines (270 loc) · 18.3 KB
/
designLV.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>LV System of Chimera Evoluzione — EAGLEDOC 0.2 documentation</title>
<link rel="stylesheet" href="static/css/theme.css" type="text/css" />
<link rel="top" title="EAGLEDOC 0.2 documentation" href="index.html"/>
<link rel="up" title="Design Presentation" href="design.html"/>
<link rel="next" title="Chassis of Chimera Evoluzione" href="designChassis.html"/>
<link rel="prev" title="Accumulator of Chimera Evoluzione" href="designAccumulator.html"/>
<script src="static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="index.html" class="icon icon-home"> EAGLEDOC
</a>
<div class="version">
0.6
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="design.html">Design Presentation</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="designCooling.html">Cooling of Chimera Evoluzione</a></li>
<li class="toctree-l2"><a class="reference internal" href="designTelemetry.html">Steering Wheel and Telemetry</a></li>
<li class="toctree-l2"><a class="reference internal" href="designEco.html">Organization, budgeting and ASD Administration for Chimera Evoluzione</a></li>
<li class="toctree-l2"><a class="reference internal" href="designAerodynamics.html">Aerodynamics of Chimera Evoluzione</a></li>
<li class="toctree-l2"><a class="reference internal" href="designPowertrain.html">Powertrain of Chimera Evoluzione</a></li>
<li class="toctree-l2"><a class="reference internal" href="designAccumulator.html">Accumulator of Chimera Evoluzione</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="">LV System of Chimera Evoluzione</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#glv-battery">GLV Battery</a></li>
<li class="toctree-l3"><a class="reference internal" href="#low-voltage-bms">Low Voltage BMS</a></li>
<li class="toctree-l3"><a class="reference internal" href="#ecu">ECU</a></li>
<li class="toctree-l3"><a class="reference internal" href="#sensors-and-telemetry">Sensors and telemetry</a></li>
<li class="toctree-l3"><a class="reference internal" href="#sensors">Sensors</a></li>
<li class="toctree-l3"><a class="reference internal" href="#antenna-and-logging">Antenna and logging</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="designChassis.html">Chassis of Chimera Evoluzione</a></li>
<li class="toctree-l2"><a class="reference internal" href="designControl.html">Control of Chimera Evoluzione</a></li>
<li class="toctree-l2"><a class="reference internal" href="designVehicalDynamics.html">Vehical Dynamics and Control of Chimera Evoluzione</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="volante.html">Volante</a></li>
<li class="toctree-l1"><a class="reference internal" href="webplatform.html">Web Platform</a></li>
<li class="toctree-l1"><a class="reference internal" href="sensori.html">Sensori</a></li>
<li class="toctree-l1"><a class="reference internal" href="help.html">Help</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">EAGLEDOC</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> »</li>
<li><a href="design.html">Design Presentation</a> »</li>
<li>LV System of Chimera Evoluzione</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<img alt="images/wallpaper.png" src="images/wallpaper.png" />
<div class="section" id="lv-system-of-chimera-evoluzione">
<h1>LV System of Chimera Evoluzione<a class="headerlink" href="#lv-system-of-chimera-evoluzione" title="Permalink to this headline">¶</a></h1>
<img alt="images/design.png" src="images/design.png" />
<div class="section" id="glv-battery">
<h2>GLV Battery<a class="headerlink" href="#glv-battery" title="Permalink to this headline">¶</a></h2>
<p>We started last year from a custom made 14p4s battery pack composed by single Samsung 25R batteries.
This batter pack contains enough energy to supply all the Low Voltage systems for at least two endurance
races. This year we choose to substitute it with a smaller and powerful one. Here an entire render of the
new GLV battery</p>
<img alt="images/designLV2.png" src="images/designLV2.png" />
<p>So we choose to substitute it with eight 6p1s Energus Module which are made by Sony VTC5 cells. The
battery configuration now is 12p4s and thanks to the higher energy density of the Sony VTC5 we were able
to save 20% of weight while keeping almost the same amount of energy stored.
Io order to correctly supply all the Low Voltage devices we use 3 DC/DC converters. The first one generates
+12V DC which are necessary in order to supply the inverters and the shutdown circuit. The second one
generates +5V DC for all the ECU’s and sensors while the last one generates +24V DC for the cooling system.
The overall power consumption is 380W. Here a scheme of the GLV battery, the BMS and the power
management part:</p>
<img alt="images/designLV3.png" src="images/designLV3.png" />
</div>
<div class="section" id="low-voltage-bms">
<h2>Low Voltage BMS<a class="headerlink" href="#low-voltage-bms" title="Permalink to this headline">¶</a></h2>
<p>The brain of the GLV battery is the Battery Monitoring System (BMS). Last year we used uPython board
while this year we choose to use a faster and more powerful STM32F446 and on top a it a custom PCB
which includes: one CAN-Bus transceiver, 4 Sallen-key Buttherworth filter in order to drive the pumps
velocity, 3 +5V PWM output which are used for driving the accumulator fans, 6 external thermistors which
monitor the GLV battery temperature, one SD card slot which can be used in order to store data and one
fixed 5V DC/DC converter which guarantees a stable and independent supply . Here the render of the Low
Voltage BMS Shield</p>
<img alt="images/designLV4a.png" src="images/designLV4a.png" />
<img alt="images/designLV4b.png" src="images/designLV4b.png" />
<p>The main role of the BMS is to keep under control the voltages, temperatures and the current coming from
the battery then send it through the CAN-Bus. The BMS also manage the cooling system by reading the CAN
temperature messages from inverters, motors and accumulator then, set the speed of the two fans and the
two pumps in order to kept them well cooled.</p>
</div>
<div class="section" id="ecu">
<h2>ECU<a class="headerlink" href="#ecu" title="Permalink to this headline">¶</a></h2>
<p>Since the beginning, ECU’s (Electronic Control Unit) role was to handle the whole communication between
devices deployed in the car and to take care of the control of the vehicle. For these reasons we decided to
use a NI sbRIO-9627 developed with LabVIEW</p>
<img alt="images/designLV5.png" src="images/designLV5.png" />
<p>The sbRIO-9627 guarantees powerful hardware while LabVIEW allowed us an easy and fast way to program
it.
ECU was composed by 2 states: IDLE and RUN, during IDLE the car was turn on but cannot move, instead
during RUN the car can move.
RUN was structured in 3 different phases: acquisition data, management data and transmission. At the
beginning of the acquisition period, the sbRIO wrote messages to all the devices to allow them to send data
so it could store them. During the management part there was a complete analysis of data collected. If we
were in the running state then the sbRIO enters in the transmission part so it sent via CAN-Bus the desired
torque to the inverters.
The right torque command had to be decided together with the control of the vehicle, but since it hadn’t
been implemented yet we used direct transmission. Even if it wasn’t still online we knew that we had just
10 milliseconds to run a cycle of our software to have a realistic output of torque but, after few tests, we
understood that we were out of time.
Furthermore we noticed that LabVIEW had some problems with the CANbus so we decided to change
device.
So we decided to move to the microcontroller STM32F446. This one is very cheap and fast enough for our
application. The only drawback was that we had to rewrite the architecture of communication. We refused
to maintain a question/answer communication between ECU and the other devices so, now, all online
devices write via CANbus their messages every a certain amount of time. This allow to increase the amount
of messages received. Here the timing scheme that we applied for the new architecture:</p>
<img alt="images/designLV6.png" src="images/designLV6.png" />
<p>Another limit of the sbRIO 9627 was that it is not able to implement CAN-Bus interrupt functions so, most
of the time we lost CAN messages causing car instability. Now, thanks to the CAN interrupt function of the
STM32 microcontroller the ECU save and store, in a circular FIFO, each CAN message also when a task is
running. Once the current task is finished the ECU starts to elaborate the older messages stored in the FIFO.
With the new hardware we decided to change the state machine as well so we implemented a Finite State
Machine composed by 4 states: INITIALIZATION, IDLE, SET-UP and RUN. The following image shows our state
machine:</p>
<img alt="images/designLV7.png" src="images/designLV7.png" />
<p>The IDLE state is useful to understand which device is online and working. During this state the Tractive
System is turned off. When driver wants to turn on the car ECU gets a message and forward it to the High
Voltage BMS (BMS_HV). If the High Voltage BMS confirmed that the car can be turned on then the ECU
enable the driver to switch to the SET-UP state. The driver follows the procedure using the steering wheel so
it can see if the procedure occurred correctly.
During SET-UP, the driver can switch on inverters. After the request, the ECU controls inverters temperatures
and if they are good it switch them on. When these ones are switched on the driver can go to the RUN
state.
Whenever a fault happens during SET-UP or RUN the ECU send a message to the High Voltage BMS which
turn off the whole car then the ECU return to the IDLE state.
The ECU switch off the car when over-temperature of inverters or motors occurred or for every Safety
Critical Signal (SCS) received by the other devices.
Thanks to the steering wheel the driver is able to set the amount of the maximum power that the car can
generate.
Now there aren’t any vehicle stability control cause we didn’t have time to implement it but next year we
want to implement and test torque vectoring control and yaw rate control. Furthermore the driver will be
able, from the steering wheel, to choose which type of control use. None, torque vectoring, yaw rate
control or both.
Another improvement will be the use of dual-core device, this will be helpful because it will allow us to run
long math computation (vehicle stability control) on one core while in the other one the FSM.</p>
</div>
<div class="section" id="sensors-and-telemetry">
<h2>Sensors and telemetry<a class="headerlink" href="#sensors-and-telemetry" title="Permalink to this headline">¶</a></h2>
<p>Last year our sensors and telemetry part was based on the micro python board. This one includes CAN bus
communication, microSD card slot, 3-axis accelerometer and 3x 12 bit ADC available on 16 pins. Here a
picture of the microPython board:</p>
<img alt="images/designLV8.png" src="images/designLV8.png" />
<p>Thanks to Python we were able to design our first working architecture in just few months but the main
problem was that most of the time the micro controller was not able to meet our time constraints. So for
this reason we decided to use the STM32-F446 Nucleo board. Here a picture of the board that we used:</p>
<img alt="images/designLV9.jpg" src="images/designLV9.jpg" />
<p>In order to integrate all the sensors that we need we design PCB which are plugged to the Nucleo boards
thank to its Morpho connectors. These PCB contain, RC filters, voltage divider, IMU module, GPS module,
Radio module and SD card slot. Here a picture of the PCB that can be used as IMU, GPS and for the throttle
pedal.</p>
<img alt="images/designLV10.png" src="images/designLV10.png" />
<p>Next year we want to develop our own PCB which contains not only the sensors but also the
microcontroller, this will allow us to reduce its volume up to 60%.</p>
</div>
<div class="section" id="sensors">
<h2>Sensors<a class="headerlink" href="#sensors" title="Permalink to this headline">¶</a></h2>
<p>Chimera Evoluzione has many sensors deployed all over. The sensors are then managed by 4 microcontroller
board. The first board is placed near the pedals and it aquires values from the throttle potentiometer and
brake pedal and then it actuates the brakelight.
The second board is placed and the steering column and it acquires the steering angle and the data coming
from the IMU. The third board is placed in the center of mass of the car and it acquire data from the IMU
and the GPS. The last board is placed behind the headrest and is the one that logs all the data that pass
through the CAN-Bus and send it to the paddock thorough a radio module.
The GPS, the IMU, the steering angle and the motor’s resolver are now only logged but in the future they
will be used for the vehicle control stability.
Once the raw data are acquired they are elaborate through median filters in order to reduce their noise and
then they are send through the CAN-Bus at 1Mb/s of speed. Compared to the microPython board here we
were able to modify and optimize the CAN-Bus function in order to achieve better performance like
message interrupt functions.</p>
</div>
<div class="section" id="antenna-and-logging">
<h2>Antenna and logging<a class="headerlink" href="#antenna-and-logging" title="Permalink to this headline">¶</a></h2>
<p>To log the data present in the CAN-Bus of the car, we use a STM32-F446RE board, just like the ones used for
our sensors. We designed our own shield for the board, and we decided to put a microSD slot on it, so that
we can save all of the data quickly and efficiently. Here a picture of the self-develop PCB</p>
<img alt="images/designLV11.jpg" src="images/designLV11.jpg" />
<p>The board supports up to 4GB microSD cards, and, although it may not seem much, it’s actually about 400
hours of data. Between each session we can easily remove the microSD card and download the data to a
computer, from which we can analyze what we just gathered. We developed our own matlab scripts to
parse and plot the data collected.
On the same shield we also added a connector for the antenna module RTX-LONG-RANGE 869MHZ, here in
the following picture.</p>
<img alt="images/designLV12.png" src="images/designLV12.png" />
<p>Although fairly slow (it reaches speeds of about 1kbps), it’s a very useful tool to track the status of the car
during both testing and races. Through the antenna we can see the temperature and voltage of both the LV
battery and HV accumulator, as well as the temperatures of both inverters and the power being requested
to the car (or, in short, the motor map chosen by the driver). All of this allows the driver to focus on driving,
without continuously answering to the paddock the status of the car.
We also use the antenna module during the tech inspections, to send the voltage and temperature of each
cell inside the HV accumulator to a PC. This procedure is usually done through a cable, but we decided to
use our wireless solution as it is easier to use.</p>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="designChassis.html" class="btn btn-neutral float-right" title="Chassis of Chimera Evoluzione" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="designAccumulator.html" class="btn btn-neutral" title="Accumulator of Chimera Evoluzione" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
© Copyright 2018, Eagle Trento Racing Team.
</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'0.2',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="static/jquery.js"></script>
<script type="text/javascript" src="static/underscore.js"></script>
<script type="text/javascript" src="static/doctools.js"></script>
<script type="text/javascript" src="static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>