|   |
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Home |
The Fluke interface diagram is an example of a typical microcontroller circuit. There is not really much to see, apart from the microcontroller itself. Nevertheless I'll try to explain what's happening here, because not everything is as obvious as it may seem at first glance.
I chose the CCU3000 microcontroller from Intermetall/Micronas for this project for a few important reasons. First of all it has more than the required number of I/O lines. All the input pins are really floating, which is also one of the requirements (I'll explain why later). And last, but not least, it has a quite modest current consumption, which is important because the power supply of the Fluke 8010/8012 is quite small and may not be loaded to heavily. By running the CCU3000 at 1MHz I could reduce the current consumption of the total circuit down to about 3 mA.
The CCU3000 operates on a 4 MHz crystal oscillator, which is connected between the pins 3 and 4. Internally this frequency can be divided down to an appropriate value. I chose a division factor of 4 to reduce the power consumption, resulting in an internal clock frequency of 1 MHz, which is more than sufficient for our application. The reset circuit is also an example of simplicity. A simple RC network connected to pin 6 will do the trick. A diode is added across the resistor to achieve a fast discharge of the capacitor when the power fails, which will guarantee a proper restart if the power supply is interrupted only briefly. The diode will start conducting as soon as the power supply voltage drops below the charge level of the capacitor, effectively discharging the capacitor. It is important to pull pin 17 high with a resistor to make the CCU3000 fetch its mode control byte from external memory, for there is no internal memory to fetch it from. I do admit that the EPROM is a bit over sized with its 32 kb, for the program is just about 6 kb long. I had ample 32 kb EEPROMs in stock, and they are almost always made in CMOS technology, which is a requirement ta achieve low power consumption. It is hardly possible to reveal any more secrets about the connection of the EPROM in this circuit. Except that the OE line of the device is permanently tied to ground, making it active all the time. This is no problem because the EPROM is the only device connected externally to the address/data bus of the CCU3000. The address bus is ignored by the CCU3000 when addressing internal memory or I/O peripherals.
Again nothing special here.
The power supply consist mainly of the linear regulator LM2936-5, which excels in a very low quiescent current which also contributes to the low overall power consumption.
You may also use a normal 78L05 if you can't get the LM2936-5, at the expense of a slightly increased consumption.
The X24C02 is an I²C controlled NVM, with a data capacity of 256 bytes.
Many different manufacturers exist on the NVM market, so there should be plenty compatible ICs to choose from.
It is even possible to put in a larger memory, eg the X24C16.
The SB-Bus connection shown in the upper right hand corner of the diagram shows all that is needed to make the interface connect to the outside world.
The two opto-couplers take care of the necessary galvanic insulation between the SB-Bus and the meter.
The open drain output of the CCU pin 14 can pull the base of the PNP transistor low, which makes it conduct, which makes the opto-coupler to start conducting as well.
The two 100kΩ resistors speed up the transitions of opto-couplers, making the ramps somewhat steeper.
Now we come to the most important property of the CCU3000, which makes it so suitable for this project. Most of the available I/O lines are needed to connect to the segment information of the display. But this is not always as easy as it may seem.
The segments of an LCD are controlled by a 50 Hz square wave (or 60 Hz in the US), with an amplitude switching between +3V and -3V.
The inputs of the CCU3000 aren't allowed to be taken lower than -0.3V.
A series resistor of 100 k should actually be enough, because the internal substrate diodes will limit the voltage automatically.
According to the specifications of the CCU3000 a voltage on an input above +3.6V is considered 'high' level. Lucky for us this is a very pessimistic value, for it appears that the CCU3000 is perfectly happy with voltage levels of only +3V on its inputs. Because of this relatively low voltage, and the fact that this voltage may not be influenced by the interface, it is inevitable that the input lines of the microcontroller really must be floating. Internal pull-up resistors can not be allowed here, for they will raise the LCD voltage, resulting in an added DC component to the LCD which could kill it. The CCU3000 is quite unique in this very important property.
In order to read the display we have to read a total of 20 segments.
Per 7-segment digit we need only 5 segments to find out what digit is shown.
Furthermore we have to read the status of the left most 1, the - sign, and the 3 decimal points.
Remark: Digit 1 is the left most complete digit, while digit 3 is the right most digit. The corresponding decimal points are always located left of these digits.
There's only one thing left to be mentioned, and that is pin 56 of the CCU. The transistor connected to this pin is used to drive the BT indicator on the display. The 6k8 resistor together with the on-board 20kΩ resistor form a voltage divider. This will prevent the voltage on pin 8 of U6 on the main board from raising above +3V.
|