Ugh, I don't know how I missed this. When making up the cables for the DACs I realized something; for the DACs I need +5 (on)and 0(off), and I can get this with the FB's switched-low digital outputs and a pull-up. BUT... In order to get +5 to the DAC, the output needs to be off (no current through the pull-up resistor connected to +5V), with the Digital Output on, full corrent flows and the output drops to 0V. This works, I think, but it's not ideal. With +5V to each DAC's input, the DAC's output becomes maximum (4.2V) which, through the opamp and feedback circuit, creates the maximum output. I did not invert things. What this means is, the default or failed position of the interface's outputs which replace the dials is FAN -100%, Max Heat, Defrost. Not the most ideal failure mode, especially in LV. But, if the outputs fail, then the relay drops out, removing PC control. Which means Fan-Minimum, Heat (wherever it's set), Mode- Max AC. Ok not so bad, but I just don't like the default-on outputs here.
I wonder if sending the DAC output to the inverting terminal of the opamps instead of the non inverting would make me happier. At a minimum, I have to add another small board with another 17 pull-up resistors to +5V, and more:eek: headers. I have a little room left. I have to be kind of careful here, I don't have a lot of room between the halves for cables/wires. I'm probably going to have to make the box a little taller (good thing it's made out of ABS).
I'm open to suggestion.
After completing all of the connections from the Brains to the Interface board. I just can't look at it without telling myself, "Don't cut the red wire!..."
This is taking a long time, my crimping tool is cheap and I don't like it.
Since this is my first run, and I plan on upgrading a few more times until I have one that is versatile enough to work with different setups, I'm trying not to get carried away with my retentive tendancies. I do have to modify the box a little, raising the roof so the jumpers don't hit eachother (top-bottom). I'm putting a 12V plug on the outside, holes for the USB (decided not to do extensions from the brain out to the same style female plugs on the box exterior), and one more D-sub connector on the box.
I can't decide if I just want to make holes for the sensor cables to go through where they can plug directly to the interface board, or do some sort of molex plug on the outside. (6 external sensor cables, 16 pins total).........
I guess I'm still on track for plugging into the car tomorrow night.
I just finished putting this thing together, and I started to test the inputs and outputs, but my test skin is freezing up. I noticed with the virtual brains that one of the brains is hanging up after a few seconds. It's reminiscant of problems I had several months back. That brain hangs if it's the only brain attached, or in a pair. The other brain works great. So instead of making and breaking connections to test one part at a time, I ordered my new brain, and I'll just wait. I have 3 more cables to make for my sensors anyway.
And it's HUUGE! Oh well, it's only a start. Still, I'm going to clean up the box a little, prior to the brain swap.
Oh, and the used MAF sensor I had bit the dust, so I'm looking at making a homemade heated thermistor sensor. Good thing I made the input channels on the interface board configurable. I'm also looking at adjusting some of the loops so that air velocity measurements (other than initial with a hand held anemometer) won't be needed.
When you suggested this idea for my final year project, I'm quite glad i didn't take up this project. Not that its a good project, its a great project! But damn its complicated. Mainly, because i don't have enough programming background to come close to finishing something like this. Anyway, just wanna say, great work, and goodluck with the rest of the project!
I remember seeing someone recommend that for your project in some thread, somewhere. But it wasn't me. Hopefully once it is up and running and functional, I can find ways to simplify it. I still need to put in support for direct servo, vacuum solenoid, and fan control. And then I can work on simplifying it.
Wasn't me ;)
Originally Posted by h3rk
Anyway, its about time people get into the A/C controllers. Nice project. Did you try to get a replacement for the Fusion Brain since it's obviously not working properly?
All of the IO is finished. I'm officially in full software mode now.
Here are some of the initial testing screens that I have up.
I'm having a hard time with handling the binary use of the outputs. For instance, in MODE, I have to have discrete output values for each mode. Each digital output (or likely, it's controlling variable, has to independently look at the mode, and decide if it (2^4,2^3,2^2,2^1,2^0) needs to be on or off. Furthermore, an output being 'off' sends 5V (or logical 1) to the DAC. So that kind of flipping around and converting a decimal value to several binary-bit-variables in the software is a little bit of an exercise. Any guidance there would be welcome.
I do have:
3 channels of analog output for the dials that work!
Indication and Control of Recirc, AC compressor, and Defogger through FCC.
Sunload, Temperatures, and Humidity (I have two more sensors (ambient and refrigerant pressure) to set up, but they are voltages in the car, bench testing with a variable power supply has proved positive).
and of course Dial position as an input to the software works perfectly.
So, big milestone. The hard(ware) part is mostly over.
I had to do somethign like that once, sending binaries to a program.
I used a function called IntToBin to get binary values, then set them...
function TServerMain.IntToBin(Value: LongInt; Digits: integer ): String;
Result := StringOfChar ('0', Digits) ;
while Value > 0 do begin
if (Value and 1) = 1 then
Result[digits] := '1';
Value := Value shr 1;
Should be easy enough to port to whatever language. Then you have a string of 1s and 0s that define your outputs. You could reverse it by changing
Result := StringOfChar ('0', Digits) ;
Result[digits] := '1';
Result := StringOfChar ('1', Digits) ;
Result[digits] := '0';
Thanks for the advice, while I'm not sure I can do it specifically that way with the restriction of the xml language that FCC understands, thoughts of dividing the number through, and parsing it out in a loop to an array passed through my mind. I'm sure there will be some elements of that necessary.
Originally Posted by colin
There will be some overhead due to doing this with the more simplistic functions available. But I know it's possible.
Something that I am noticing:
The brain is reading voltages higher than I'm getting with my multimeter. For instance, when my fan potentiometer is full high, my multimeter says 4.86VDC but FFCC says 5.00V. mutlimeter=2.896V, FCC=3.30V. multimeter=.565V, FCC=.80.
It's not much, but it's likely to get me into trouble if I don't account for it.