Schematic Design Review

just remove the esp32 from the circuit and instead use a pin header.
I’ll replace the ESP32-C3 module interface with a simple pin header while preserving the existing signals for an external controller connection, then verify the schematic connectivity.
Done — I removed the ESP32-C3 module U4 and replaced it with J2, a 1x08 external-controller pin header.
J2 pinout:
  • Pin 1: 3V3
  • Pin 2: GND
  • Pin 3: SDA
  • Pin 4: SCL
  • Pin 5: ALT
  • Pin 6: ADR
  • Pin 7: DQ
  • Pin 8: GND
Verification passed: the new header nets are connected and ERC checks showed no open schematic issues. I also updated Concise BOM - Part Name, Value, Designators and Circuit and Documentation Reverification.
Fix issues and verify
Add ALRT pull-up
Make pull-ups populated
Update all documentation
Run full review
Explain header wiring

Refine this doc
Ask about this doc
ADS1115 pH Sensor Design Notes
Goal
Arduino-compatible, through-hole-friendly pH probe interface using a high-impedance analog front end and ADS1115 16-bit I2C ADC breakout/module. The pH channel is designed for improved sensitivity, while ADS1115 AIN2 and AIN3 remain available for additional analog sensors.
Through-Hole Revision Summary
  • Replaced the SMD ADS1115 VSSOP IC with U1: ADS1115 Module, a 10-pin 2.54 mm breakout/module-style part.
  • Replaced the SMD LMC6482 op amp with U2: MCP6002-I/P, a through-hole 8-PDIP dual CMOS rail-to-rail op amp.
  • Changed all generic resistors to axial through-hole packages.
  • Changed small capacitors to ceramic disc through-hole packages and bulk capacitors to radial through-hole packages.
  • Kept BNC probe connector and Arduino/sensor header as through-hole parts.
Selected Architecture
  • pH probe connector: BNC jack J1.
  • pH probe center: routed through 1 MΩ series protection resistor R3 into MCP6002 op amp U2A configured as a unity-gain buffer.
  • Probe reference/shield: biased to VBIAS, not GND, so the pH electrode can swing around mid-supply while all circuit nodes stay within the ADS1115 input range.
  • Mid-supply bias: R1/R2 create VREF_DIV, buffered by U2B, then isolated by R4 to create VBIAS.
  • ADC pH input: ADS1115 module U1 reads differential channel A0 - A1:
    • A0 = buffered pH signal through R5
    • A1 = VBIAS reference through R6
    • C8 provides differential low-pass filtering.
  • Auxiliary channels: A2 and A3 are exposed on J2 through 1 kΩ series resistors R9/R10 and optional 100 nF filters C9/C10.
  • Arduino interface: J2 exposes VCC_5V, GND, SDA, SCL, ALRT, ADDR, A2 input, and A3 input.
Key Datasheet-Grounded Design Points
  • ADS1115 silicon operates from 2 V to 5.5 V, so a 5 V Arduino rail is valid for the ADS1115 module when the module supports 5 V operation.
  • ADS1115 analog inputs must stay between GND and VDD. Biasing the pH probe shield to VBIAS keeps the pH signal safely inside that range.
  • MCP6002-I/P operates from 1.8 V to 6.0 V, supports rail-to-rail input/output, and is available in 8-PDIP.
  • MCP6002 input bias current is low for a DIP/prototyping op amp, but it is not as ultra-low as LMC6482. For highest pH accuracy, keep the input clean and dry and avoid breadboards at the pH probe input.
  • MCP6002 VDD needs a local bypass capacitor; C2 provides 100 nF decoupling and C3 provides rail bulk capacitance.
pH Front-End Leakage and Bias-Current Audit
The through-hole revision uses U2: MCP6002-I/P. From the MCP6002 datasheet, input bias current is typically +/-1.0 pA at +25 deg C, 19 pA at +85 deg C, and 1100 pA at +125 deg C. The common-mode input impedance is listed as 10^13 ohms || 6 pF, and the differential input impedance is listed as 10^13 ohms || 3 pF.
This is suitable for an Arduino/student prototype if the input area is kept very clean and dry, but it is not a true electrometer-grade pH front end. Glass pH probes can have very high source impedance, so the bias-current error depends strongly on probe impedance and temperature. At +25 deg C, 1 pA through 100 Mohm is about 0.1 mV, roughly 0.0017 pH at 25 deg C. At +85 deg C, 19 pA through 100 Mohm is about 1.9 mV, roughly 0.032 pH. With a 1 Gohm probe, the same +85 deg C bias current could become about 19 mV, roughly 0.32 pH. PCB leakage, flux residue, fingerprints, humidity, and breadboard leakage can easily become worse than the op-amp bias current.
Design actions already included for leakage control:
  • J1 BNC center enters U2A through R3 = 1 Mohm series protection.
  • The pH input is buffered before the ADS1115, so the ADC input impedance does not load the probe directly.
  • The BNC shield/reference is biased to VBIAS rather than hard-grounded, keeping the signal centered in the ADC range.
Layout/build requirements for best pH accuracy:
  • Do not build the pH input node on a solderless breadboard.
  • Keep J1 center, R3, U2 pin 3, and PH_IN short, guarded where possible, and physically away from digital/I2C traces.
  • Clean the PCB thoroughly after soldering; no flux residue around J1/R3/U2A input.
  • Add a driven guard ring tied to VBIAS/PH_IN-adjacent low-impedance guard during PCB layout if very high stability is needed.
  • For laboratory-grade accuracy or hot/humid operation, consider replacing MCP6002 with an ultra-low-input-bias electrometer/CMOS op amp if a suitable through-hole or module option is available.
DS18B20 Temperature Compensation Addition
Added a waterproof DS18B20 probe interface for pH temperature compensation:
  • J3: 3-pin through-hole DS18B20 probe connector.
  • J3 pin 1 = VCC_5V, probe red wire.
  • J3 pin 2 = DS18B20_DATA, probe yellow or white data wire.
  • J3 pin 3 = GND, probe black wire.
  • R11 = 4.7 kohm pull-up from DS18B20_DATA to VCC_5V, required for the 1-Wire data bus.
  • J4: 2-pin Arduino digital GPIO breakout. J4 pin 1 is DS18B20_DATA and should connect to an Arduino digital input such as D2 or D3. J4 pin 2 is GND reference.
DS18B20 firmware use:
  • Power the sensor in normal 3-wire mode, not parasite-power mode.
  • Read temperature in deg C and compensate the pH slope using the Nernst relationship: ideal slope = 59.16 mV/pH at 25 deg C and scales by absolute temperature, approximately slope(T) = 59.16 * (T + 273.15) / 298.15 mV/pH.
  • Calibrate with buffer solutions at the same temperature as the sample when possible.
Header J2 Pin Map

Table


PinNetFunction
1VCC_5VArduino 5 V supply input
2GNDGround
3I2C_SDAArduino SDA
4I2C_SCLArduino SCL
5ADS_ALERTOptional ADS1115 ALERT/RDY output
6ADS_ADDRADS1115 address-select pin; wire externally to GND/VCC/SDA/SCL as desired
7AUX_SENSOR_AIN2_INAuxiliary sensor input to ADS1115 A2 via R9/C9
8AUX_SENSOR_AIN3_INAuxiliary sensor input to ADS1115 A3 via R10/C10
ADS1115 Module U1 Pin Mapping

Table


Module PinNetFunction
VCCVCC_5VModule supply
GNDGNDGround
SDAI2C_SDAI2C data
SCLI2C_SCLI2C clock
ADDRADS_ADDRI2C address select
ALRTADS_ALERTOptional alert/ready output
A0ADC_PH_PLUSBuffered pH signal
A1ADC_PH_MINUSVBIAS reference for pH differential measurement
A2ADS_AIN2Auxiliary sensor channel
A3ADS_AIN3Auxiliary sensor channel
Suggested ADS1115 Firmware Settings
  • Read pH using differential mode: A0 - A1.
  • Recommended PGA: ±1.024 V for pH measurement.
  • Expected pH probe signal at 25 °C is about 59.16 mV/pH, roughly ±414 mV over pH 0 to 14.
  • ADS1115 ±1.024 V range gives 31.25 µV/count, about 0.00053 pH/count ideal resolution before real-world probe noise, calibration error, and temperature effects.
  • Use low data rate, such as 8 SPS or 16 SPS, and average readings because pH probes respond slowly.
Calibration
Use at least 2-point calibration:
  1. Measure pH 7 buffer and record voltage V7.
  2. Measure pH 4 or pH 10 buffer and record voltage V4 or V10.
  3. Calculate slope in pH/V and apply: pH = 7.00 + slope * (Vmeas - V7).
For better results, use 3-point calibration with pH 4, pH 7, and pH 10 buffers.
Important Usage Notes
  • Do not connect BNC shield/VBIAS to Arduino GND externally.
  • Keep the BNC center input trace short and clean; flux residue can cause leakage and measurement drift.
  • Use the spare A2/A3 pins only for sensors whose output stays between 0 V and VCC_5V.
  • If the ADS1115 breakout/module already includes I2C pull-ups, do not populate R7/R8 to avoid overly strong parallel pull-ups.
  • If external sensor boards already include filters or strong output drivers, C9/C10 may be reduced or omitted.
Review Status
The schematic has been revised for a through-hole/module build and revalidated after replacing U1/U2 and changing passive packages. Full PCB layout/manufacturing review can only be completed after board placement and routing.
  • Goal

  • Through-Hole Revision Summary

  • Selected Architecture

  • Key Datasheet-Grounded Design Points

  • pH Front-End Leakage and Bias-Current Audit

  • DS18B20 Temperature Compensation Addition

  • Header J2 Pin Map

  • ADS1115 Module U1 Pin Mapping

  • Suggested ADS1115 Firmware Settings

  • Calibration

  • Important Usage Notes

  • Review Status

ESP32-C3 ADS1115 pH ORP Sensor Interface 4412

ESP32-C3 ADS1115 pH ORP Sensor Interface 4412 thumbnail
ESP32-C3 battery-powered pH and ORP probe interface using ADS1115 differential ADC, MCP6002 through-hole buffers, DS18B20 temperature compensation, and short net labels for firmware handoff.

Properties

Sensor

3.3

V

Arduino

I2C

Battery

Pricing & Availability

Distributor

Qty 1

Arrow

$8.74–$11.13

Digi-Key

$3.68

LCSC

$16.69–$17.39

Mouser

$11.45

TME

$6.21

Verical

$7.55–$15.85

Controls