pH calibration is a necessary annoyance. Because each probe and module is slightly different, each probe/module combination must be calibrated.

pH probes don't give a linear response to pH, rather it gives two (mostly) linear slopes. One slope is between 0 and 7, and the other is between 14 and 7. So it is apparent that three points are needed with 7 in the middle to calibrate a pH probe fully.

pH calibration most commonly comes in 4.0, 7.0, and 10.0. In calibration terms, 4.0 is the low point, 7.0 is the midpoint, and 10.0 is the high point.

### Temperature Messing Things Up

There is another confounding factor here, temperature. pH can change with temperature. To use an example, pure water changes with temperature. At 0 °C, the pH is 7.47, but at 50 °C, it is 6.63. So the change in measurement isn't an error, it is the pH changing.

Another source of temperature changing the measurement is the probe becoming more or less resistive with temperature. This measurement deviation is an error, and there are generally accepted formulas that attempt to compensate for it. As with all compensation formulas, it introduces inaccuracy.

### Calibration Steps

Now to bring all of this information together:

1. Get calibration solutions and some fresh/distilled/DI water ready.
2. Clean the probe in the water, then blot it dry.
3. Put the probe in the 4.0 solution and wait until the readings stabilize.
4. Run the `::calibrateLow()` method. It might look like this `ph.calibrateLow(4.0, 18.2);`. 4.0 is the low point, and 18.2 is the temperature of the solution.
5. Clean the probe in the water, then blot it dry.
6. Put the probe in the 7.0 solution and wait until the readings stabilize.
7. Run the `::calibrateMid()` method. It might look like this `ph.calibrateMid(7.0, 18.2);`. 7.0 is the midpoint, and 18.2 is the temperature of the solution.
8. Clean the probe in the water, then blot it dry.
9. Put the probe in the 10.0 solution and wait until the readings stabilize.
10. Run the `::calibrateHigh()` method. It might look like this `ph.calibrateHigh(10.0, 18.2);`. 10.0 is the high point, and 18.2 is the temperature of the solution.

That's it!

### Skipping a Step

But what if you'll never measure higher than 7.0 or lower than 7.0? You can skip doing a low, mid, and high calibration and just use low and high. For example, if you're only interested in measuring between 4 and 6, you can calibrate with a low point of 4.0 and a high of 7.0. If the measurement goes above 7.0, it will still be reasonably accurate, just not as accurate as possible. The further from 7.0 it goes, the higher the inaccuracy will be.

### How Often?

How long can you go between calibrations is not a straightforward answer. It depends on how the probe is being used. Some solutions will cause drift to occur quicker than others. Because there is no lookup chart for us to refer to, consider how important the measurement is, and how much it could vary before things go wrong. If the variance is just one or two hundredths, consider calibration weekly. If being off a tenth is fine, consider a monthly calibration schedule. After a few calibrations, you should start seeing how much drift the probe is experiencing and get a better idea of how often calibration is needed.

### The End of the Road

No matter what you do, a pH probe will eventually reach the end of its useful life. There's no cut-and-dry method to determine when that time is, aside from it being broken, but it will start to drift more rapidly or respond slowly when calibrating. When this is the case, it is time to replace the probe or accept that it will require more maintenance.