×

Sale ends todayGet 30% off any course (excluding packages)

Ends in --- --- ---

PDM Installation & Configuration: Step 5: Configure Outputs

Watch This Course

$149 USD

-OR-
Or 8 easy payments of only $18.63 Instant access. Easy checkout. No fees. Learn more
Course Access for Life
60 day money back guarantee

Step 5: Configure Outputs

44.52

00:00 - In this 5th step of our SR86 worked example for configuring a PMU, we're going to get to the really fun part now.
00:07 So I'm sitting in our SR86 race car, everything's wired up and we're going to get to configuring that PMU to turn everything on and off as we actually want.
00:16 Now when you're performing this, particularly if it's in situation, I would advise you to at the moment, just have all of your loads that the PMU is going to control unplugged because we're going to be configuring those output channels and likely we're going to be turning them on and off, possibly even slightly inadvertently so we don't want those loads turning on and off inadvertently as well.
00:37 So just keep stuff unplugged at the moment, we'll still be able to see that the control logic is working correctly in response to our input conditions for turning on those outputs, because the PMU software is going to show us that nice and easily.
00:51 Now the way we've got things wired up here, we talk about this in the function design stage, we've got a main power stage and an enable power stage.
01:00 So our main power stage is controlled via the ignition key barrel in the vehicle and it also ties in with our battery isolator output as well.
01:10 Our enable power stage is going to come from our keypad.
01:13 Now our isolator output, the way we've got things wired up, it's when the system is not isolated, so the isolator is allowing the battery to make a connection, that is powering up the main input supply to our PMU and it is powering the 12 volt switched input on the PMU as well.
01:32 So that's going to turn the PMU on, which is really important because we need the PMU to be powered on for us to get CAN communications to it, for us to program it.
01:40 So if we pop over to my laptop, we can see that I've got a connection to our PMU here, you can see we've got some board temperatures, bit of a hot day here today actually, and we've got a system voltage level sitting here as well, so we know we've got good comms through to our PMU.
01:56 This section here is where we're going to do the majority of our work, that's where we're going to be designing or specifying all of our inputs, designing our functions and all of our outputs as well.
02:07 So currently, she's a totally clean sheet and we're going to go through this one from scratch.
02:11 So to get started on that process, we'll pop back over to our spreadsheet and starting from the top we can see here our first element is our ignition coils.
02:21 On output 12 and the control function for that is main power, enable power and the battery isolator signal.
02:30 Now I mentioned this in the course material that when it comes to powering ignition coils in particular, you have to be really careful because if I power up the ignition coils before I power up the controlling element which is the ECU, it's possible those ignition coils will get locked into dwell mode and they'll constantly pass current.
02:46 It's not going to take long for those coils to actually overheat, let out the smoke and they'll be no good anymore.
02:53 So I would be really cautious about powering up ignition coils.
02:57 In this particular instance, I've actually got all the loads unplugged which is the other reason that we do that, so there wouldn't be a problem because the ignition coils currently aren't plugged in.
03:06 But even so, I think I'm actually going to go through and configure our ECU output channel first.
03:13 So that is on PMU1, output channel 9 and it's input driving function is main power and that isolator input to the ECU.
03:23 Now interestingly if we look down, every time our main power input is referenced, our battery isolator input is also referenced so those two are never looked at individually, they're always looked at together and you want to try and spot things like that when you've designed your control functions because what we're going to be able to do is if I, we'll pop back over to our PMU software and we'll set those up as individual inputs, I'm then going to be able to create a function that will "and" those individual inputs together and give us one output and then every time those functions are referenced, we can just reference that single function instead of having to reference both of those inputs, so it'd be a good wee short cut there.
04:06 So we'll get into setting up those inputs.
04:09 So I want to add here, analog input and the Ecumaster naming scheme for inputs is sort of loosely based on some embedded coding naming schemes.
04:19 For an analog input here we've got A underscore.
04:23 I'm going to just follow along with that because it'll mean when we've got the list up and down the left hand side here of all our different inputs, outputs and functions, we'll simply be able to look at that first letter and there'll be a wee icon there as well but it'll give us a really clear indication of what that element actually is.
04:38 So we're going to go A underscore, let's set up our main power stage input first, so we'll call this main power.
04:47 Just popping back to our spreadsheet.
04:50 We can see that our main power was on input PMU1 A2 so that's our pin.
04:56 I know that this is an active high input, the way this ignition barrel switch works is when it's off it connects to ground and when it's on it actually disconnects so we're going to have to give that a pull up as well.
05:08 That'll give us our default state when it's on of being high and then it'll connect to ground when it's off which will drive things low.
05:16 So I can accept that one there, got our main power, currently we're reading an input on that of 1 which is correct because I do have the ignition switch on.
05:27 Can add another input here, so just different ways of getting to the same dialogue boxes, we can add an input over here, but we can add them over here as well.
05:35 Analog input, call this one isolator signal.
05:43 Should be enough.
05:45 And that was A9 I believe, we'll just double check that over on our sheet.
05:51 Yep PMU1 A9.
05:54 So that was also an active high as the documentation for our Motorsport Electronics isolator tells us and that one, there's actually no option here to not have a pull up so we'll just leave it as default, 10K pull down on that one.
06:11 The isolator actually drives that signal in both directions so we wouldn't need a pull up or a pull down on it but we'll just leave that, that'll be fine.
06:19 So we've got that one there.
06:21 So that's excellent, also giving us a 1 at the moment which makes sense because I don't have that input, the isolator is currently not isolating the system so it should be giving us a high on that.
06:31 So to test that isolator signal, what I'm going to do is just click this button here, that's going to write this configuration through to the power management unit which means if it gets powered off and powered back on, the configuration will still be there.
06:44 Because what I'm going to do is I'm going to hit the isolator trip button.
06:47 That's, we should then be able to see our isolator signal go to zero.
06:52 It'll happen quite quickly but then the isolator's actually going to isolate the battery from the PMU, so it's going to power down and disconnect it.
07:00 Now that is the operation that we want, we want this sort of soft isolation signal stage first because that can have the PMU kill the engine, then the isolator actually isolates out the battery.
07:10 So we'll go ahead and hit this button and we'll just be watching isolator signal here.
07:17 There we go, we saw that flick to zero there, right before we lost connection to our power management unit.
07:24 So if I unisolate the system, there we go we've got our connection back and we've got a 1 here.
07:29 So just a wee test here so we know that input is coming in correctly.
07:36 Now I can create a function there "anding" those two together so I'm going to call this F_isolated power, going to add an input to this function which is going to be our isolator signal.
07:57 If it is true, I want it to evaluate to 1 so that is correct.
08:01 I'm going to "and" that with our main power input right there.
08:09 Once again is true I want that to compute through to one.
08:13 So that's basically created a virtual "and" gate.
08:16 If we've got our isolator signal and our main power coming in as a 1, it's going to give us a 1 on the output.
08:23 If either one of those is a 0, that's going to give us a 0 or a low on the output which is exactly what we want.
08:29 So we can accept that and now every time we need to reference both our main power and isolator signal, we can instead just reference this function.
08:36 Now that was all the inputs we needed for our ECU output channel which is output channel 9 with a 15A limit so we can go ahead and set that one up.
08:46 So power output, call this O_ECU.
08:52 Output 9 and I'm going to set that in rush current to be the same as our maximum current limit for the channel because this is basically a purely electronic load so I don't expect there to be a big in rush current on it.
09:03 So we'll get that one underway.
09:05 Now our retry counts here I'm going to leave as the default settings, so 3 retries with 1 second in between is actually pretty standard.
09:12 If there's a problem with the ECU wiring, that's likely to actually be a car stopper but in the event that that was actually slightly intermittent, then it is nice to have that retry facility but as I sort of mentioned in an earlier course module, it's best to power the ECU from its own output channel.
09:32 Hopefully we'd never be using these.
09:35 So the channel that is going to drive this output channel, the input we're going to link to our function, which is our isolated power.
09:44 So we can see there, it has actually turned this output on, because both our main power signal and our isolator signal are currently high so our function is computing through the high so that has actually turned that output on.
10:01 Which is exactly what we want there, we can see we've got a voltage output on it there.
10:05 We've got a little bit of current draw because I do actually have the ECU plugged in because we're going to be doing some CAN bus communications, they need to be coming from the ECU.
10:16 So let's look at setting up another output here.
10:20 We absolutely could do our ignition coils now because we've got our ECU powered up.
10:24 So let's go ahead and do that one, so that's output channel 12 with a 15 amp limit, based on our main power and isolator power function but also our enable power function.
10:35 Now this is where we're going to have to follow down a chain a little bit, little bit of a chicken and egg scenario.
10:40 So I want to set up our enable power input, now that comes from our CAN bus keypad.
10:45 Now our CAN bus keypad is powered up on output channel 7 so I'm going to have to set up output channel 7, then that input and then I'm actually able to set up my coils.
10:54 So that's just part of the procedure, there is another way around this where you can set up all your output channels and just turn them all on.
11:02 For this initial setup procedure and then start linking things up via your functions but I find it actually easiest to follow through this procedure because if you do it in just a stepped out way like this, you're very unlikely to actually miss anything.
11:17 Now setting up output 7 here, based on main power and our battery isolator signal, so that's our function that we've created.
11:26 It's got a 6 amp limit on it there.
11:29 So the Ecumaster software actually gives us a really nice functionality here to duplicate a current setup because the control function for this is identical.
11:39 So I can just duplicate this and call it, what's on that output channel, our keypad is on it, our steering wheel is on it.
11:52 Steering wheel and our dash is on it as well so that is output channel 7.
11:59 Once again, purely electronic load so we'll set our in rush current the same as our maximum current, default retry counts and our channel is already set for us because we used that duplicate of our isolated power.
12:11 So I can go ahead and accept that and I can see our dash has actually sprung to life here, I've got a wee blinky light on our steering wheel and once I set up our keyboard, I'll see some action on that as well.
12:26 So with our Ecumaster software here, because it's an Ecumaster 4x2 keypad we're using, I can use our default keypad setup block here.
12:38 Don't have to do any custom CAN profiles.
12:41 Give this a name of KB keypad, we've only got one in the vehicle so there won't be any getting confused with multiple keypads.
12:49 Now the keypad communicates with the PMU on the CAN2 port at a 500K speed and the keypad is as it was out of the box, all the default settings here are going to be fine.
12:59 If you've got multiple keypads, you do actually have to go through and set them up with different node IDs.
13:06 Now we're looking at our enable power button, so I want that to be the top left button here.
13:13 So I can give that a name of K enable power, we want that to be a latching switch with a first state of 0 and a last state of 1.
13:22 So what that means is every time you push that button an individual time, it will kind of ratchet through those states.
13:29 So you could set our first state as 0 and our last state as 5 and every time you pressed it, it will advance it until it gets to 5 and then it'll go back to 0.
13:37 Now I only want 0 or 1 so those are the settings I'm going to leave there.
13:41 Default state is going to be 0, so that's when the keypad is powered up, it's going to start off in 0 and I'm actually going to change our colours here, so every key on the keypad has individual back lighting.
13:54 I'm going to make it so it's red when it's in state 0 and green when it's in state 1.
13:59 So when we turn the car on and the enable power is not engaged, that button there is going to be red letting us know that hey I'm off.
14:07 And then you press it and it'll go green and then it's on.
14:10 I'm going to choose a decal here that'll be on this button.
14:14 And to be honest, there's not one that I really like here for an enable power stage but we're going to stick with our lightning bolt symbol here because at least it's related to power.
14:23 As long as we know what it means and everyone's trained that that's what it means, it's not going to cause us any issues.
14:29 I like to actually select these in the software because it gives us a functionality later on to generate an order for the little physical press in keypad button decals that go into the keypad so we can get all that lined up.
14:43 So we'll accept that.
14:45 We'll accept that.
14:49 So we've got our K enable power setup on our keypad there so I should be able to press this button now, I can see it's changed to green and our enable power input has come through as 1.
15:00 So that is set up nicely.
15:02 So now I've got all the inputs required for our coil output, so just popping back again, that was output channel 12 with a 15A limit and it's going to be a driving function of an "and" between our existing function and our enable power there.
15:17 So we'll go through and set that one up.
15:20 Output coils.
15:24 Channel 12, 15, 15.
15:31 Now I can set a formula in here, instead of having just a single element reference to drive that channel on and off, you can set multiple elements to be referenced here.
15:43 So this is basically the same as when we've set up a function for our two inputs but this is on a per channel basis.
15:52 So I'm going to add here, channel existing isolated power function and I want to "and" that with our enable power input.
16:08 So when both of those are active, it will turn this output channel on.
16:15 So we can see currently our output channel for the coils is off.
16:21 If I press our enable power, it switches on which is exactly the functionality we want.
16:27 Now setting up the rest of these output channels here is exactly the same process, so I'm going to go through and we'll do a little bit of a time lapse while I do that.
17:26 OK so I've got down to the point where I'm setting up the output channels for our thermofans here and these are the first of what we'd call a complex control function, going to be based on a few different elements and possibly, including a little bit of hysteresis there.
17:42 So to include that hysteresis we need the engine coolant temperature data and that's actually coming in via CAN bus from our ECU which is why I've got it plugged in and powered up down there.
17:54 Now current the engine coolant temperature sensor is not plugged into the ECU, so the ECU's actually flagged an error on that, and that's going to output a solid value of 95°C so that's a failsafe in case the engine coolant temperature sensor or the wiring to it fails.
18:08 The ECU defaults to outputting a high temperature because that's the safer of the states so should be able to set up the CAN communications and we should see an input of 95°C coming in on that one.
18:20 Now our data on that one is that it's CAN from the ECU, a 1Mb bus, so that's CAN1, our ID is OX649, byte 0, 8 bit unsigned, offset of 40 so we'll go through and we'll set that up.
18:36 Now I've got to set up the CAN bus message object to interface with that particular PID on the bus, so we'll call this message object ECU1.
18:46 It's going to interface with CAN1.
18:49 Our base ID is OX649.
18:55 Standard, and this is actually a really nice feature of the PMU software as it gives us a live update of our CAN traffic.
19:01 Now that seems like it'd be a little thing but often when you're entering in PIDs and stuff it can be a little bit easy to have them off by just a wee bit so having this good data immediately live here gives me good confidence that I know I am actually seeing signals on the bus.
19:18 So that's good, so we can accept that, that's our message object, so now I need to determine a CAN bus input which will take the information out of that message object and actually decode into the variable we want.
19:30 So we'll call this CAN bus ECT, message object is the one we just created.
19:35 8 bit unsigned, little endian, that's correct, byte offset is 0 because we want to be talking to byte 0, so you can see that's the highlighted one here which it's showing us.
19:45 Multiplier of 1, divider of 1, offset of, the ECU adds 40 to it, so we want to have the PMU subtract 40 from it.
19:56 Now that's going to get us to our desired value of 95 there.
20:00 Which is exactly what we need, so now we've got that engine coolant temperature data coming into the PMU, that's going to be really key because we're going to need to base a couple of control functions on that.
20:12 So popping back over to my spreadsheet, we can see that our cooling fans, our engine coolant temperature, is based on the hysteresis around the engine, sorry the fans being on and off is based on the hysteresis around the engine coolant temperature, a manual override switch which we'll set up on our keypad here, or the pit mode enabled.
20:31 Now the pit mode enabled signal is going to come from our steering wheel which I do have sitting here and plugged in.
20:37 So we're going to have to set up another CAN bus message object.
20:42 To talk to our steering wheel.
20:46 So we'll just get those details from our spreadsheet here.
20:49 Pit mode enabled, steering wheel, ID OX702, it's in byte number 4 and it's bit number 6 in there is that pit mode so we'll set that one up.
21:03 Now the way this steering wheel actually transmits data, is it transmits 3 frames on IDs OX700, 701 and 702.
21:14 So I'm going to give us a base ID here of OX700 and we're going to have our, the size of the message coming in is going to, we're going to call it 4 frames, but it's actually going to only be 3 frames coming in, so this last one when everything's set up is just going to be blank.
21:35 I'm just going to set our CAN to CAN1.
21:38 There we go so now we've got some data coming in, 700, 701 and 702 and if I press this pit mode button we should see byte 0, 1, 3, 4, 5, 6.
21:53 Should see that change.
21:57 Ah it was 702 wasn't it.
21:58 There we go so we can see that changing there.
22:06 Details on that one, it was, oh it was byte 4 bit position 6, that makes more sense, so byte 0, 1, 2, 3, 4.
22:17 And yep bit position 6 would give us an output of OX40 if it was an 8 bit number.
22:23 So we know that's working so I can accept that message object, except I might just name it something more logical.
22:33 Steering wheel.
22:36 I can set up an input to talk to that and pull the information we want out of it, so call it a CAN bus input pit mode, message object is our steering wheel.
22:49 Data format is 8 bit unsigned, little endian and byte offset is going to be 4 because we want to be talking to byte number 4.
22:56 We do want to extract a bit field.
22:59 Now our bit count is going to be 1 because we only want 1 bit out of that 8 bit message and our bit position is 6.
23:09 So if we set all of that up, we look at our result down here, if I press our pit mode switch, we should be able to see that change to 1.
23:17 Which we haven't, ah that's why because our message object I've told is our steering wheel but I haven't told it that it's actually the 3rd message in there.
23:27 There we go, so now we've got a result of 1 when we're in pit mode and a result of 0 when we're not in pit mode.
23:34 So that's another one of the inputs we need for our thermofan driving function so the last one is going to be our keypad and it's going to be a override for our fans.
23:48 So we'll set that up as the button at the bottom left there.
23:52 And we'll call that fans override.
23:59 Want it to be latching.
24:02 And we'll leave everything there as default, give it an icon for a fan here.
24:10 Cool so we've got our fans override there, we'll just test that one.
24:15 Excellent, so now I can set up our fan output channel, so that's outputs 4 and 5, 45A in rush and a 15A current limit and we can do an "or" function with some hysteresis for those inputs that we've just set up there.
24:32 So getting that underway.
24:36 Output channel, call this output fan 1 on output 4, in rush current of 45A, max current of 15.
24:51 We are going to have a formula here.
24:54 So first element in our formula is going to be a hysteresis on our engine coolant temperature and if it is above the upper value which we're going to set to 95, we want it to be on and if it's below the lower value of 90, we want it to be off.
25:14 Then we want to "or" that with our pit mode button, so we can choose our pit mode and we also want to "or" that with our fan override.
25:26 So if any of those 3 elements equates to true, it's going to turn our fans on.
25:37 Cool so we can currently see our fans are, well our fan 1 is off.
25:42 If I turn our pit mode on, it's on and off again, if I turn our fan override on, it's on and off again.
25:52 And because we've got a fixed engine coolant temperature of 95° coming through, I can actually test that as well.
25:58 I'll just change our hysteresis value here to be, if it's above 94, that should turn it on.
26:05 Which it has, so we know that's going to work correctly as well but we do want that set at 95 so we'll just change that back.
26:14 Now our fan 2 is a complete duplicate of that, except that we want that on output channel 5.
26:27 Excellent so that is, if we pop back over to our spreadsheet there, I believe that is actually all of our output channels on PMU1 configured.
26:38 Now there is a little bit more work we need to do though because we're going to configure our second PMU for that load, distributing out that load like we needed and that is going to need to reference some data from PMU1, particularly from the keypad.
26:54 So our keypad here is only wired into PMU1 because that's a 500Kb bus so our PMU1 is going to have to take that keypad data and spit it back out on the 1Mb bus which is going to talk to our other PMU.
27:09 So to do that, I'm going to create a CAN bus export object here.
27:17 I'm going to call that X PMU1 to, just a wee arrow there, to PMU2.
27:26 It's going to be on CAN 1 and I'm going to give it an ID here of 7FF because I know nothing else is transmitting on the CAN bus on that one.
27:36 Now there's a couple of other variables I'm going to want to pass through there.
27:41 One of which definitely being our isolated power signal.
27:46 I'm also going to want to pass through our enable power signal and I need that water pump override signal which I haven't actually configured in our keypad configuration here so I'll go ahead and set that up now.
28:02 So that's just a latching switch and we'll call it K_waterpump override.
28:12 Everything is fine, that's sort of like a waterpump symbol.
28:19 Choose that one.
28:22 Then our output here will have a waterpump override.
28:28 So the way this is going to output is it's going to output 1 8 byte frame of data on ID OX, oh get rid of that zero there actually, OX7FF and the first byte is going to be the state of the isolated power input, second byte our enable power input and the third byte our waterpump override.
28:51 So that's transmitting a binary value on and off using a complete byte which is a little bit of a waste of data but to be honest we've got lots to spare here so it's not going to be a problem.
29:00 So I can go ahead and accept that.
29:03 I'm going to store that permanently in our PMU there.
29:09 And then I'm going to power down the system, connect my comms to PMU2 and we'll go through the procedure for setting that one up.
29:16 So I've got our USB to CAN programmer plugged into our PMU number 2 now, so you can see I've got a connection here, our device name is different to our last one.
29:25 Blank slate again so we'll go through the procedure for setting up this second PMU.
29:29 Now this is a good point to mention that when you're working in a system like this where you've got 2 PMUs, there's no difference in setting up the second one from the first one.
29:36 Just the key thing to be aware of is if you need to pass any information between them.
29:41 So you can think of it like we're using our PMU number 1 at the moment basically as a CAN gateway, passing our control pad signals up here on the centre console through to our PMU2 as needed.
29:53 So popping back across to our spreadsheet here, we can see the first of the elements that's on our PMU2 that we need to configure here to send power to is our shift actuator.
30:03 So that's on output 11, it's the only device on there, so we've got a current limit of 5A and that's based on our main power and our battery isolator PMU signal.
30:15 So that's actually just our isolated power signal that we're sending through from our PMU1.
30:22 Now that's coming in via CAN bus.
30:26 So I'm going to have to set up that CAN bus message object that's coming from our PMU1 there.
30:32 So message object, call this message PMU1.
30:38 It is on CAN2 in this instance, now that reminds me I do need to set something up there first.
30:45 So we're actually just going to continue and we'll come back to setting that up.
30:48 In my configuration here, I need to set up our CAN2, our speed is 1Mb because if I don't set that up now, it's not going to give me that live CAN reading that I'm looking for and well that would also alert me that something's wrong and I know I'd have to investigate further.
31:04 So we've got our CAN2 there, based ID was OX7FF.
31:14 And it is just one frame that's coming through, you can see we've got some of our inputs here already.
31:21 First one being our isolated power, which everything is currently powered up, so do expect that to be a 1.
31:26 So that's looking pretty correct.
31:28 Just do a wee test there with our coolant pump override command, yep so that's coming through, we said that'd be in byte position 2.
31:36 So that is good, and our enable power...
31:43 This one here.
31:47 There it is, that's our enable power, so that's coming through as well.
31:50 So that's going to be excellent, so I'm going to go through and actually set all of those up just as our CAN bus inputs.
32:11 Cool so I've got all of those set up there now, I'm going to just, while I'm working in the CAN system, I'm actually just going to create another message object here because I'm going to need to talk to the ECU in this PMU as well because we're going to base our driving function for the water pump, it's going to have a PWM output that's going to reference engine coolant temperature.
32:31 So I'm going to have to set that up in this PMU as well, it's exactly the same procedure as setting it up in the first PMU so I'll just get that done.
32:54 Now there's another CAN bus input, there's actually 2 other CAN bus inputs from the ECU that we're going to need for this PMU.
33:00 One of which being the fuel pump turn on request and the other being the compressor turn on request.
33:05 So back on our spreadsheet here, we can see our, where are we? Fuel pump request, CAN from the ECU, OX11A, byte 0, bit 0 and the compressor request is also OX11A byte 0 bit 1.
33:21 So popping back across I can create a message object to talk to that PID.
33:26 So we'll call this one ECU2.
33:31 OX11A, so I can see we've got some data here which is cool.
33:37 And currently we've got a setting here of 2 and so that would mean the bit in bit position 1 is currently high so it is asking for the compressor to be turned on currently.
33:51 And that makes sense because the system's discharged, so there's no pressure in it so the ECU's looking at that pressure sensor and going hey the system pressure's low, you'd better turn that compressor on to top it up.
34:01 Now I've got the compressor unplugged at the moment because it's a serious current draw and I want to plug that in and test it in the last stage of the process which is when we're actually going to perform all our testing.
34:12 So know that CAN bus data is coming in well so I can accept that message object and create our CAN bus input variables, I have CAN bus fuel pump request.
34:28 ECU2, it is the first byte that we want, we do want to extract a bit field.
34:34 We want 1 bit and it is the bit that's in position 0.
34:38 I don't have an easy way of turning that on at the moment.
34:42 Possibly it'd be nice to have a fuel pump override button up here as well, that's something we'll have to discuss with the engineering team if that's something they want to implement.
34:50 Really good advertisement for the benefits of using CAN bus though is that if we want to make that change, I can do it purely in software down the line.
34:57 So we get that added flexibility which is excellent.
35:00 But we'll accept that variable and we'll set up the next one for that compressor request.
35:22 Awesome so if we pop back over to our spreadsheet here, we should be able to see that I think that's actually going to be every single input that we require for PMU2.
35:32 So PMU2 actually has no hardwired inputs coming into it, everything is over CAN so that's really nice and flexible there.
35:42 So we can go ahead and set up all of these output functions now.
35:44 So first is going to be output 11, powering our shift actuator 5A limit and that's based on our isolated power function input.
35:56 So we'll set up that output.
36:17 Now we've got to the point of setting up the output that's going to drive our electric water pump here.
36:22 So that is specified for output one, so that's one of the higher current outputs on our PMU16, 25A capable and it's PWM capable as well.
36:30 So we are going to PWM control this.
36:33 The driving function behind that PWM duty cycle is not going to be linear and it's going to require a little bit of time to set up, a wee bit of testing but I'm going to get things kind of dialled in on just historical experience and data to begin with.
36:47 So if we pop back over to our PMU configuration there's going to be two modes of operation for this coolant pump, it's either going to be PWM controlled based on engine coolant temperature or we're going to have an override switch which just sets that PWM frequency of 100% and turns the pump on.
37:06 So to get that functionality, I'm going to create a table which I'm going to call PWM water pump and it's going to have units of ratio which is percentage.
37:22 Now our X axis channel is going to be engine coolant temperature but I'm going to put a Y axis channel in there as well which is going to be our override signal.
37:31 Now for our engine coolant temperature, yep it'd be nice to have a table between 0 and 100 but I don't actually need quite that many steps in there.
37:40 It's going to be quite a coarse control function so I think we're going to have, if I put a maximum in here of 70 with steps of 10, that's going to give me 8 cells and then I can actually change the numbers of what those cells reference.
37:55 Now for our water pump override, it's either a 0 or a 1.
37:59 So our min is 0, our maximum is 1 and it's going to have steps of 1 as well.
38:06 So that's going to give us 2 rows and 8 columns, so I can create that.
38:11 So first thing I'm going to do is come up to our engine coolant temperature levels down here and I'm going to set these to what I actually want them to be.
38:22 So the highest one would be 100 and then I'm going to come down in slightly granular steps because we might want to tune this PWM output frequency a little bit around this sort of coolant temperature range.
38:36 So I'm going to give myself a bit more resolution in this range and then it's going to be very coarse down the lower end.
38:41 So we'll have 95 down to 90, down to 85, we'll go 80, maybe 60 and 40.
38:55 And then for, if we had an engine coolant temperature of 0°C, well that's pretty cold, that will also relate to anything below that, we probably want the pump turned on but not particularly quickly because we want the engine to be warming up as fast as possible.
39:12 So engines operate best at their specified operating temperature.
39:17 They make the most power there, everything seals up so you want to get them to that point as quickly as possible.
39:22 So I'm going to put a PWM frequency in here of 15%.
39:26 We still want some water circulation through the engine, we don't want hot spots developing, so we don't want it at 0 but we're going to leave that at 15% and I'm actually going to carry that through 40° and I'll carry it through 60°, I might make this 25 so once we're coming up in temperature we're just starting to speed up that water pump a little bit.
39:47 We don't want the temperature to be rising and to run away on us before we actually get the coolant circulating.
39:55 Now as I mentioned, this is going to be a little bit of a tuning on the track scenario.
40:00 So we'll have a specified test day for setting this up.
40:04 Once we're up to 80°C, we might have a PWM frequency of roughly 40% here.
40:09 85 we could be up at 50 and then from 90 onwards, I'm going to set it to 60.
40:16 The reason being that just through working with these coolant pumps, it's not often you want them running at 100% operational speed.
40:23 Now for our row up the top here, this is going to be the active row when our fuel pump override switch is engaged and because I've got that coming in via CAN bus, I should be able to turn that on, yep and you can see our input has actually flicked up to this cell here now.
40:41 That's because we're getting our 95° signal from the ECU because the coolant temperature sensor is currently unplugged so same story we had with our PMU1.
40:49 So in this cells here I just want 100% across the board and that is going to give us that override functionality that when we hit that button, that coolant pump is on 100%.
41:04 Now what we might find is that this is actually too high and we want to not run the coolant pump at 100% even when it's being overridden but for the moment, that's what we're going to choose, so we'll just turn that override off again.
41:18 We can accept that table.
41:19 So now I've got a table in there that's going to give me a number output, that number being a percentage of 100 or a ratio in there that I'm going to be able to use to drive the PWM frequency output of the output that's connected to our water pump.
41:35 So that output is, where are we, water pump here, EWP150, PMU2 output 1 and we've got an in rush of 50 and a current limit of 15A.
41:47 So I can set up an output here and call it output water pump, output 1, in rush current of 50, max current of 15, leave our retries to fault, we do want PWM configuration.
42:08 I'm going to leave this at 100Hz for the moment.
42:10 Actually we'll change that up to 200, maximum being 400, so this is the switching frequency of the PWM, the higher that is typically the better the control but also the higher it is the more switching events there are.
42:24 Every switching event is a discrete little injection of heat into the transistor in the PMU so we're going to be watching that heat there as well.
42:31 So we'll set that at 200, we want it duty cycle and we want that duty cycle control to be linked to our table.
42:41 So our table here, it's alphabetical order so it'll be T so it'll be right down the bottom.
42:47 PWM water pump.
42:51 Cool so if we just pop back to, based on coolant temp and water pump manual override.
43:05 Excellent so because I've sort of baked in the override functionality into that table, that should be the only input that I actually need on that PWM channel.
43:15 Controlling our water pump there so I can accept that.
43:18 So the remaining channels to set up, we've got 2, 4, 12 and 13 so 4, 12 and 13 being fuel pumps and output 2 being our compressor.
43:29 They're based on simple binary on/off signals coming via CAN bus from our ECU.
43:33 So nothing new with what we've done there, we do have to be cognisant of our in rush currents and setting those correctly.
43:40 So I'll go through and get those output channels set up.
44:21 Excellent so we've got our PMU2 set up there.
44:25 We can do some basic testing of the functionality with our keypad here, just seeing that things turn on and off in response to our enable and override commands like we need, which they absolutely are so that's excellent.
44:39 Now in the next part of the process we're going to plug all our loads in, keeping an eye on what we're doing and we're going to test the system, make sure everything is operating like we expect.

We usually reply within 12hrs (often sooner)

Need Help?

Need help choosing a course?

Experiencing website difficulties?

Or need to contact us for any other reason?