Go Down

Topic: Capturing MUX'd BCD from ICL7135 (Read 688 times) previous topic - next topic

Grumpy_Mike

Quote
my model B was only 2MHz clock
Was it a US one?

PaulRB

Was it a US one?
No, I believe it was made at the ICL factory in Kidsgrove, where my father worked as an engineer for over 20 years, and I had a summer job for a couple of months while I was studying in Manchester.

Grumpy_Mike

Interesting, I got offered a job there after my post grad research, but I turned it down in favour of a lecturing career in Manchester.

I never knew the made a 2MHz one, I wonder why they did that?

PaulRB

#18
May 09, 2019, 01:21 pm Last Edit: May 09, 2019, 01:26 pm by PaulRB
I never knew the made a 2MHz one, I wonder why they did that?
I didn't know they made a 4MHz one. I remember the ram clock speed was 4MHz, so that the CPU and video chips could access it on alternating cycles, avoiding contention with each other.

EDIT: was that the "BBC Master Turbo" with the faster second processor?

Grumpy_Mike

Oh I never had one of those. Looks like they identified a bottle neck and sacrificed processor performance for graphics.  Maybe because it looked more impressive.

Gustavo_Murta

#20
Jul 06, 2019, 02:56 pm Last Edit: Jul 06, 2019, 03:01 pm by Gustavo_Murta
Hi FlashNote,

My whole project using the ICL7135 with ESP32. It is fantastic and works perfectly. But with some modifications to the ESP32 I2C library that were made by the responsible, now my code will have to be adapted. As soon as possible I will post my predecessor project with the Arduino.


ESP32 Digital Volmeter


ESP32 DVM blynk apllication


Gustavo_Murta

#21
Jul 06, 2019, 03:07 pm Last Edit: Jul 06, 2019, 03:21 pm by Gustavo_Murta
Why I used the old ADC converter in my project ?

For a few years I did many experiments with voltage reading with the Arduino. First, I used the Arduino ADC converter and anyone who has tried it, knows that the Arduino ADC is subject to noise in these readings. I do not know by now why, but it is certainly because of the type of ADC (SAR - Successive-approximation-register).

Then I tried out other tests with 12-bit SAR ADCs and 12-bit Sigma Delta ADCs (both low-cost). And I've also been frustrated with both. My dissatisfaction was mainly due to the instability of the readings!

When I was studying one Bench Power Supply circuit, this caused me interest in another type of ADC, dual slope ADC. So I studied the dual slope ADC, in deep. Now there are many other types of modern types of slope ADCs, three or four slope ADCs. My studies directed me to TLC7135, because it is a low-cost digital voltmeter, and I found it in  electronics store of my city. Many older DVMs have used this similar Intersil chip. Now there are many other manufacturers, like Texas Instruments.



Intersil ICL7135 (now Reneseas)

Grumpy_Mike

Quote
First, I used the Arduino ADC converter and anyone who has tried it, knows that the Arduino ADC is subject to noise in these readings
I have tried this and am never troubled with noise.

Quote
but it is certainly because of the type of ADC (SAR - Successive-approximation-register).
What ever your trouble was it was not the type of ADC, that is just silly.

Yes I have used that chip you get about three samples per second.

Gustavo_Murta

#23
Jul 06, 2019, 03:26 pm Last Edit: Jul 06, 2019, 03:27 pm by Gustavo_Murta
Hi Grumpy,
Explaining better, my need is for millivolts resolution, and the Arduino ADC is incapable of that. Try reading voltages with millivolts and you'll know what I'm saying.

Gustavo_Murta

ESP32 - DVM 7135 - How it works

TLC7135 is a high precision monolithic 4 1/2 digit A/D converter. Dual slope conversion reliability
is combined with ±1 in 20,000 count accuracy and a 2.0000V full scale capability.  It features high impedance differential inputs, nearly ideal differential linearity, true ratiometric operation, auto zero and auto-polarity.

These Digital Voltmeter is designed to provide interfaces to both a microprocessor and or a visual display. The digit-drive circuit  outputs digits D1 through D5 and multiplexed binary-coded-decimal (BCD) outputs B1, B2, B4, and B8 provide an interface for LED decoder/drivers as well as  Microcontrollers.

Analog Circuit (see Analog Section figure) :
TLC7135 analog section

A measurement cycle for the TLC7135C consists of the following four phases:

1. Auto-Zero Phase (A/Z):
The internal IN+ and IN- inputs are disconnected from the terminals and internally
connected to ANLG COMMON. The reference capacitor is charged to the reference voltage. The
system is configured in a closed loop and the auto-zero capacitor is charged to compensate for offset voltages in the buffer amplifier, integrator, and comparator.

2. Signal Integrate Phase (INT):
The auto-zero loop is opened and the internal IN+ and IN- inputs are connected to the external terminals. The differential voltage between these inputs is integrated for a fixed period of time. Upon completion of this phase, the polarity of the input signal is recorded.

3. Deintegrate Phase (DE+ for positive voltage and DE- for negative voltage):
The reference is used to perform the deintegrate task. The internal IN- is internally connected to ANLG COMMON and IN+ is connected across the previously charged reference capacitor. The recorded polarity of the input signal ensures that the capacitor is connected with the correct polarity so that the integrator output polarity returns to zero. The time required for the output to return to zero is proportional to the amplitude of the input signal. The return time is displayed as a digital reading and is determined by the equation 10,000 × (VID/Vref). The maximum or full-scale conversion occurs when VID is two times Vref.

4. Zero Integrator Phase (Z/I):
The internal IN- is connected to ANLG COMMON. The system is configured in a closed loop to cause the integrator output to return to zero. Typically, this phase requires 100 to 200 clock pulses. However, after an over-range conversion, 6200 pulses are required.

Gustavo_Murta

ESP32 - DVM 7135 - How it works (continued):

Reference Voltage:
The full scale reading of 20,000 will occur when VIN = 2 x VREF. Recommended Reference Voltage is 1.000 Volts with high stability for high accuracy absolute measurements. In my DVM I used LM336 2.5V Reference diode with easy adjustment of reference voltage. Use a precision DVM to adjust this voltage.

Clock Frequency :
The clock frequency is chosen to obtain the desired conversion rate, and to maximize the normal mode rejection of power line frequency interference. For both 60Hz and 50 Hz rejection, the 480 KHz was choosed for me. The ESP32 generates this clock pulse with good accuracy. The conversion rate is directly proportional to the clock frequency, with each conversion taking 40,002 clock cycles.
Then my DVM project has a conversion rate of 12 samples/second.

Negative Power Supply:
Since the DVM board is supplied with only positive voltage (+3,3 V), I used the old-style CMOS Voltage converter ICL7660 to supply negative voltage (-3,3v). Simple and efficient for low current consumption. It works fine !

Digital Circuit (see Digital Section figure) :
TLC7135 digital section

In my design, the  STROBE, RUN/HOLD, CLOCK IN  control signals are connected directly on ESP32.
CLOCK IN receives clock pulses from ESP32. RUN/HOLD is used to enable/disable the DVM.
And STROBE line generates interrupts pulses in the ESP32. The other data from DVM is acquired by the PCF8574 I/O Expander. It uses I2C interface to communicate with the ESP32.

The only digit strobe used is DS5 (MSD) to receive data, and the BUSY output is ignored. The STROBE output goes low five times per conversion cycle. Each STROBE pulse of the TLC7135 generates an interrupt in the ESP32 to acquire BCD data and status of Over-voltage, Under-voltage and Polarity lines.

The first STROBE pulse occurs in the middle of DS5 when BCD data for the most significant digit (MSD) is available on outputs B1-B8. STROBE also pulses LOW during the following DS4 through DS1 signals, after which STROBE remains high until the next conversion cycle. Therefore, only one STROBE pulse occurs for each digit select, and each STROBE corresponds to a BCD digit in MSD-to-LSD order.  When reading the ADC data, the ESP32 simply reads BCD data during each STROBE pulse and stores that data in memory corresponding to the number of STROBE pulses received.


References :

The Integrating A/D Converter (ICL7135):

Simplify A/D Converter Interface with Software:

Integrating ADCs: A Tutorial

Grumpy_Mike

Yes I have already said that I have used that chip. See reply #2 for the text and diagrams I published back in April 1985.

Go Up