Switch to full style
The very latest news and updates for the iRobot Roomba robotic vacuum, the Scooba Robotic Washer and the Dirt Dog workshop sweeper. All discussion and troubleshooting questions go here.
Post a reply

Quad OpAmp at U8 Supports Three R3-Roomba Sensors

July 10th, 2013, 12:53 pm

About that U8 IC used in the R3-Roomba:

As I was saying...(over in justinkau's thread) "I compared U8's amplifier usage with a particular LM324 in the R2-Roomba and picked up some ideas to explore. ...". Those "ideas" have, in fact, revealed to me that the LM324 U8 on R3-Roomba's mobo supports the same sensor functions as does R2-Roomba's U3 LM324 integrated circuit on its mobo.

In summary, the four OpAmp sections provide signal conditioning for these three main_PCA sensor functions:
    A) Total System Current (requires using two amplifier sections).
    B) Battery Terminal Voltage Monitoring. And,
    C) Battery-Temperature Tracking.
In each of those three applications U8's amplifiers are tasked with the job of buffering and/or scaling raw sensor input signals prior to passing them on to the robot's MCU.

If a reader is interested in troubleshooting this U8 IC, it is feasible to make qualitative assessments of the three functions without much difficulty. Quantitative assessments could also be done by following the same procedures but requires additional work (work that is outside the scope of this post). The main_PCA under test may be either in the robot and connected to peripherals or a loose PCA on the bench top. The latter condition was used while exploring U8's functions. I like to hear the system play its 'battery connect song' as I electrically connect power to the mobo, so I generally connect a loose speaker to the PCB's J4 (aft edge of card, port side).

Roomba Equipment (in addition to a main_PCA) Required:
    • Roomba style re-chargeable battery;

    • R3-Roomba's Charging Power Supply Unit; And...

    • Optional: iRobot's SCI to USB (or serial-port) Cable and PC S/W to display the Roomba's charging-data stream.

Minimum Non-Roomba Equipment Required:
    • DMM with Needle-point Test Prods;

    • Commercial, or custom prepared clip leads that permit an iRobot R2 or R3 style battery to be safely connected to main_PCA terminals J14 & J15 (marked on upper face of PCB), BUT without touching the board's thermistor (temperature sensor) contacts located aft of J14 & J15 spring-form style electrical contacts;

    • 10k ohms variable resistance (power rating is unimportant), set to a resistance greater than 5k ohms at beginning of testing, and wire-leads to clip-connect it to Roomba' small-size leaf-spring contacts that are normally found in the robot's battery well; And ...

    • Optional, only needed for 'board-loose testing': A custom fabricated cable (length is of no importance) with a coaxial socket to fit the PSU's plug at one end, and connector plug having one row of three sockets to mate with the three pins of board mounted jack J3 (aft edge of card and on starboard half) on the opposite end of the adapter cable.

Recommended Reference Material:
    • R2-Roomba's "DC-Power Forms & Battery-Charging Control Schematic", archived at rr and searchable as "schematic1", and

    • An internal block diagram (with pin-out detail) for the LM324 quad, OpAmp IC. OK, this one will do:

LM324internalBlocksSml.jpg (10.85 KiB) Viewed 7568 times

As stated in the opening of this thread I said I had an idea that the R2-Roomba's use of a quad-OpAmp might be the key to unlocking how the iRobot EE designer configured the use of the four amplifiers in U8's package.

This is what I did to sort out that "key": In justinkau's thread we had just finished reviewing a thread in which member's learned that U8-A3 (amplifier #3 in the LM324) serves R3-Roomba by converting the raw battery-temperature data signal into a form that would be acceptable to Roomba's micro controller unit, MCU. I then took a look at R2's schematic1 to refresh my memory of its thermistor-data signal conditioning circuit. Whoa! That's a little spooky, it is OpAmp A3 in R2's LM324 marked "U3", the same amplifier section number that performs the same task for R2-Roomba.

BTW, I am viewing schematic1's zones C2 & C3 to see how thermistor data comes into that U3-A3 stage, becomes buffered by the amplifier wired as a 'voltage-follower' (meaning input voltage goes out of the amplifier at the same, nominal, level but with more robust signal-drive capability). OK, good.

Next, I looked at the other three sections of R2's U3 IC to see what I can make out of them. The circuit of R2's U3-A2 is in schematic1 ZN:D3, and is the circuit that conditions battery voltage for presentation to the MCU. The amplifier accepts a small fraction of total battery voltage and passes the smaller signal through its unity-gain (voltage-follower) wired OpAmp to the MCU.

R2's U3-A1 is not wired as a voltage follower, it is being used as a differential amplifier having voltage gain. (ZNs:A2,A3)

However, R2's U3-A4 IS wired as a voltage follower. So that makes three amps in U3 that are voltage followers. (ZNs:A3,A4)

I quickly measure R3's U8 voltage follower status (checking continuity between output pins and corresponding IN(-) pins). U8 also has three sections wired as voltage followers: U8-A1, -A2, & -A3. This is making it look more like R3's U8 is a functional copy of R2's U3 functions!

Initially (prior to doing electrical measurements) I could not be certain that the designer simply traded purposes between U8-A1 & U8-A4, say as s/he began incorporating the existing Roomba-R2's U3 circuits into the R3-Roomba, but by using this newly found possibility that U8 was handling the system current signal, I was able to trace connections between the master current shunt resistors, R235//R257, and inputs to U8, thus confirming to me that U8-A4 is the differential amp that processes system current.

However, I had not yet attained that confidence so I resorted to voltage measurements on a powered board.

I decided to obtain data from two set ups.

The first setup was for the simple case of a battery-powered robot that had been switched "ON" from the state I call STBY (standby) into 'Clean Ready' (from which the next depress & release of the Clean button would ordinarily set Roomba into Clean Mode).

The second setup was to be the robot's Charging-Mode state.

In both setups, all U8 pins, save for pin-11, GND, were sampled with a DVM on its 20V, f.s., range and referenced to SYS_GND at the master-current-shunt's starboard terminal.

Two additional voltage readings that were taken require exceptions to the general rule just written: i) When battery voltage was measured, test points were between PCB-marked points "J14" & "J15", and with J15 treated as more positive than J14 (also marked "GND", but, more accurately it is BATT(-)). And, ii) Voltage read across the master current shunt, R235//R257 (a resistance of 0.05 ohms, NOM) may require use of a more sensitive scale for the latter, since the maximum signal voltage for the examinations done in this post is only 0.065 volts.

Let us now look at measured data. First I show two tables of data that were acquired in the time sequence: Setup-1, then Setup-2.

While under Setup-1, battery-operation, all U8 pins (except "GND" on pin-11) were measured and logged into Table-I. Voltage values of the two points described above in (i) & (ii) were logged in Side notes.

Table-II was filled with voltage data by repeating the Setup-1 set of measurements after connecting a live Charging PSU to the main_PCA under test.


I preferred capturing U8 data in the sequence shown by Tables I & II. But, it would also have been feasible to switch between battery operation and charging mode operation as each U8 amplifier is examined. In fact I find by displaying the acquired data in that implied format it tends to make easier the task of tracking changed values, or no changes for a given amplifier. Therefore, I copied records from Tables I & II and pasted like records (like functions) together to form tables, III, IV, & V.

Data discussion will be addressed to Tables III, IV, and V, not directly to Tables I & II.

A) Total System Current.

Two OpAmps serve this signal conditioning requirement. One amp, (A4), samples the tiny voltages that develop across the master current shunt resistance, a resistance of only 0.05 ohms, NOM. The second OpAmp (A1) adds a relatively large voltage offset to the non-inverting input of A4 (to prevent A4's OUTput from getting too negative).

In Table-III we see that voltage data in Rows 1 and 5 are identical (to the precision reported) and that is good if the magnitude is correct. We can't know whether "1.24V" is correct simply by looking at tabled values. We must know more about the voltage divider that reduces some unknown bus voltage to an appropriate level. Thus, a little extra work was done to give us confidence in the "1.24" number. I began tracing from U8-3, and quickly located both divider resistors, R209 & R218, nearby to U8 (they are near U8's pins 1, 2, & 3 package corner). I then knew where the supply end of the upper resistor, (R218), was located; so it was just a matter of re-powering the main_PCA and measuring that supply voltage. Voila! It is the +5VREG power-form. Therefore, one fourth of five volts is the nominal input voltage to U8-3(IN(+)). Thus, "1.24 volts" is not bad.

Rows 4 & 8 in that table show us how A4's OUTput changes between battery powered operation and charging mode's high-rate charging period. These are the voltages shown in column-D cells, Rows 4 & 8. We can't learn much by trying to make sense of the values in those two cells. Possibly, the easiest way to sort out whether they are correct is to obtain SCI data from the robot while it is powered by a battery that has an ammeter between it and the Roomba. I did not take time to do that work, so I am limited to commenting on the magnitudes of system currents passing through the shunt and determined by using my DVM to measure dV across the shunt. In the battery-powered On state, actual current was computed as I_batPwr ~= +0.0044 / 0.05 = 0.09 A ( value that, from experience is known to be reasonable); and while PSU-powered and supplying high-rate (I_chrg > 1.25A) charging current the actual current was computed to be: I_hiRate ~= 0.056 / 0.05 = 1.3A. A good value.

The latter calculations basically say the master shunt is OK, and nothing about the (row,col) 4,D, 8,D values. Once again, the SCI connection may be the most satisfying tactic to check those data.

B) Battery Terminal Voltage Monitoring.

In this table we see that voltage data in Rows 2 and 6 are very much the same, but there was an appropriate increase in voltage after charging mode began. Good! We can't know whether those values are correct simply by looking at tabled values. We must know more about the voltage divider that scales VBAT so the MCU can process a sample. Thus, a little extra work was also done in that regard. Now that I was able to begin tracing from U8-5, both divider resistors, R207 & R208, were quickly found nearby U8 (they are near U8's pin-7 package corner). Easier than that was to divide the U8-5 voltage by a measured VBAT value to learn that about 17.4% of VBAT is tapped for the MCU's sample.

C) Battery-Temperature Tracking.

In this table the OUTput of A3 remains the same when Roomba is either battery powered or PSU powered. In this test case the explanation is seen in the Row-7 comment, namely, the 10k variable resistance (representing the battery's thermistor) was not changed from its 10k ohms setting after changing power sources. Row-3's comment points out that temperature sensing is active when battery powered, even though Roomba makes no use of those data. The signal on U8-8 (A3-OUT) dropped to 1.0 volts as the variable resistance was reduced to 2k ohms (representing a very hot battery).

Similarly, after completing the charging-mode measurements, I exited the high-rate charging portion of charging mode by simulating an extremely hot battery--the resistance of 1600 ohms was slowly approached, V_pin8 was reading 0.83 volts, and the MCU+F/W halted high-rate charging. Normally, this would be the start of a cooling period.

To obtain more detail about this thermistor data handling circuit visit this thread.

If you care to translate dummy thermistor resistance into thermistor-temperature visit this thread.

------------------------------ END of ARTICLE ----------------------------

Please keep in mind that the voltages reported here are from a single main_PCA (R3, 560), a single battery (an R2's APS battery, at a nominal state of charge, but not freshly charged), a single R3-Charging-PSU, and a single inexpensive DMM having an unknown calibration accuracy trail to National Standards. IOW, don't expect measurements that you make on your equipment to exactly match any voltage numbers shown in this post.

{keywords: icu8, u8ic, youeight, sensor, vbat, master, shunt, system, conditioner, signal, smdu8,

Re: Quad OpAmp at U8 Supports Three R3-Roomba Sensors

August 20th, 2016, 4:23 pm

Schematic of U8.
U8 (2).png
Last edited by a1robotrepair on October 3rd, 2016, 10:52 am, edited 1 time in total.

Re: Quad OpAmp at U8 Supports Three R3-Roomba Sensors

October 1st, 2016, 11:13 pm

I have repaired the same error 3 on my Roomba 551, There is an error in the above schematic which I have corrected and supplemented, thank you a1robotrepair for the schematic.

My motherboard was having issues with R252, there was a short somewhere on the board causing R252 to be ~11k in value. I solved this by replacing it with a 20k 25-turn trim pot and then adjusting till I got the correct value.
This fault was making the Roomba think that there was charging current during the FET tests. As the below image shows, if the voltage at Pin 14 of U8 is to low (1.15v-1.20v) during the fet test it assumes that the charger is broken, and states charging error 3. The following shows the Gate voltage of u17 u18 and the ADC voltage for the current circuit.
Fet Test_2.jpg

Re: Quad OpAmp at U8 Supports Three R3-Roomba Sensors

December 16th, 2018, 9:42 am

wherre main reason erro 3 by ???

Re: Quad OpAmp at U8 Supports Three R3-Roomba Sensors

December 16th, 2018, 7:13 pm

U8 A1 & A4 current to voltage MCU input.

Re: Quad OpAmp at U8 Supports Three R3-Roomba Sensors

December 26th, 2018, 5:25 am

a1robotrepair wrote:U8 A1 & A4 current to voltage MCU input.

thank you but how know it lost current

Re: Quad OpAmp at U8 Supports Three R3-Roomba Sensors

December 26th, 2018, 5:31 am

vinhvu wrote:
a1robotrepair wrote:U8 A1 & A4 current to voltage MCU input.

thank you but how know it lost current
. it only one pin to mcu is pin 14

Re: Quad OpAmp at U8 Supports Three R3-Roomba Sensors

December 26th, 2018, 5:32 am

vinhvu wrote:
a1robotrepair wrote:U8 A1 & A4 current to voltage MCU input.

thank you but how know it lost current
. it only one pin to mcu is pin 14
Post a reply