The BCM tracks the pressure status of the AC system 3 ways. The first is via the low side temperature sensor. The second is via the low pressure switch . The last is via a high side temperature sensor.
The information from the low side temperature sensor will set codes B446 or code B447 when it detects that the low side of the AC systems gets too cold too quickly than it should.
When the pressure switch reports that the measured pressure on the low side drops below 10 psi for more than 3 minutes it will set code B448.
So if you are just getting code B448 without either B446 or B447, then you have a problem in the low side pressure switch. It will prevent the compressor from running even though there may not be anything wrong with the system other than this switch.
Things to check if you are getting codes:
- Check that the AC fuse #19 is good as this powers the circuit.
- Check that the connector on the pressure switch is clean and properly connected.
- If you don't find any obvious issues, then a check of the low pressure switch needs to be done.
The best way is with a DVM and at least an AC low side pressure gauge.
- Verify that you have at least 12 psi or more in the system, and that the switch is open or closed and if those are OK, that the circuit is completed.
Example of how different codes are set:
The pressures, temperatures, and times in this example are not be absolutely accurate, but are reasonable to describe how the system would react to a low refrigerant condition.
Say the target low side pressure of the system is 30 psi.
If a little leaks out and the pressure drops to 25 psi this could cause the evaporator to freeze up, so would not be desirable. If the pressure drops to 20 psi the system needs to be disabled to prevent trouble, and if the pressure drops to 10 psi the compressor could seize up from lack of lubrication so you definitely want the system shut down.
If there is at least 10 psi in the system as reported by the low side pressure switch, the system will turn on. If not the system will not turn on and code B448 will be set after 3 minutes.
The BCM senses that what the pressure is on the low side of an operating system by noting that the temperature of the low side drops quicker that would be expected.
It knows what the ambient temperature is already. Lets say for example that the BCM is programmed to measure the time it takes for the low temp sensor to report a temperature that is 10 degrees colder that ambient. (starting temp of the low side will be higher than ambient because it is in the engine compartment, but that isn't critical to the example.) There is a reference time in the program somewhere of what this time should be for a properly charged system, and two other times that tell the BCM when to issue a trouble code.
For grins let's say that it expects the time to cool 10 degs is 30 seconds (at a normal 30 psi), and the first warning is issued if the time taken is 25 seconds (say 25 PSI), and the second warning is issued if the time taken is only 20 seconds (say 20 PSI) or less but (above the 10 psi switch cut off).
So if the charge in the system drops somewhat, the BCM will note that the time to cool 10 degs is between 21 and 25 seconds and will issue a B446 code low refrigerant warning, but the AC will still run with the BCM cycling the compressor off and on to prevent the evaporator from freezing up.
If the BCM detects that the time to cool was 20 seconds or less, and or the pressure switch opens for any length of time, it will issue a very low refrigerant warning B447, and shut the system down and latch so it won't try to run again until cleared.
If the BCM detects that the switch is open for 3 minutes or more, it will issue code B448 and latch so again the system won't run.
It is very possible to get multiple codes current or history depending on the problem, how severe it is, and when it occurs, but some combinations would not appear.
Rough rule of thumb:
If you get a B446 low warning by itself, either the ambient temp is below 50 degs and the system level is a little low and you probably just need a little refrigerant to be added to get back to optimal from a slight leak.
If you get B447 with or without B446, you probably have a significant leak in the system have lost 30 or more of the refrigerant, and need to have it fixed before recharging, or the pressure switch opened when the AC was operating either because it failed or a leak developed that brought the pressure down low enough to open a working switch. In this case, a B448 code would not appear as the system would shut off when the 447 code was issued.
If you get just a B448 code, you either have had a large leak that let all or most of the refrigerant out of the system when it wasn't on so the BCM didn't pick up on it before all the refrigerant ran out, or there is a problem with the low pressure switch or its circuitry. If there is enough pressure in the system for it to be allowed to start, you would not get to the condition for tbe 448 code to be issued because as soon as the pressure dropped sufficiently to allow a working switch to open, code 447 would be issued, and the system would be shut down.
I don't think you could get a current B446 code and a B448 together if the pressure switch was operating correctly, nor could you get a current code B447 and B448 at the same time either as the B447 would shut the system down before the time needed to set the 448 could take place.
If a major leak occurred when the car was not running, when the AC was next was turned on there would be no cooling since the compressor wouldn't be allowed to run, and after 3 minutes the lone code B448 would display as it would if the switch failed while a good system was running.
If the leak occurred after the AC was running for a while, say a stone hit the condenser, a code B446 probably wouldn't be set, but a code B447 would be issued or as the pressure dropped enough to open the pressure switch and the system would be shut down before code B448 could be issued.