This is only a preview of the March 2022 issue of Practical Electronics. You can view 0 of the 72 pages in the full issue. Articles in this series:
|
Make it with Micromite
Phil Boyce – hands on with the mighty PIC-powered, BASIC microcontroller
Part 34: Using the Micromite with an EEPROM iButton
The iButton – simple, flexible and useful.
L
ast month, we explored how
the serial data exchanged between
an iButton and a Micromite can
become corrupted whenever contact
bounce occurs. A simple test program
demonstrated how contact bounce
arises when you tap an iButton onto
a reader, or when it is removed from
the reader. In fact, it can also occur
while holding the iButton on the reader
since there will always be some slight
Micromite code
The code in this article is available
for download from the PE website.
58
movement of the iButton, during which
the contact can easily be broken – for
example, caused by a dirty contact or
even a shaky hand.
To address this issue, we wrote
a program with an error-checking
algorithm, into which we passed all
the byte values read from the iButton.
The resultant byte value outputted from
this algorithm is compared with the
CRC byte value that is also read from
the iButton. If the values match, then
we regard the data as valid (and not
corrupted by contact bounce) otherwise
we disregard the data.
So far, we have only read an iButton’s
unique 64-bit (8-byte) ID value which
is stamped onto the iButton’s case;
however, if we need to send or receive
more than 8-bytes of serial data (such as
when communicating with an EEPROM
iButton) then the likelihood of data
corruption becomes greater, and so
the use of the CRC algorithm becomes
more critical.
To put this into practice, this month
we will learn how to communicate
100% error-free with an EEPROM
iButton. The iButton that we are going
to use is the DS1971, so first we will
look at its memory layout and the
features available in the DS1971. Then
we will explore the 1-wire commands
that are available to communicate
with it. Once these are understood,
we can then write some simple code
to send data to, and read data from,
the EEPROM iButton. Finally, we will
apply the CRC algorithm to ensure that
everything works 100% error-free. This
is all in preparation for the EEPROM
iButton to be used as an electronic key
in our upcoming Electronic Door Lock
mini-project.
Let’s begin by looking at the features
of the DS1971.
DS1971 memory blocks
The DS1971 can be viewed as a DS1990
ID iButton (the one used in our previous
articles) but with the addition of 32
bytes of EEPROM data storage. In
fact, it also has 8 bytes of one-timeprogrammable (OTP) memory and a
status register.
Looking at the datasheet for the
DS1971, it refers to the following four
‘memory blocks’:
1. 64-bit lasered ROM
2. 256-bit EEPROM (with scratchpad)
3. 64-bit OTP Application Register (with
scratchpad)
4. 8-bit Status register
The ROM memory block contains
t h e i B u t t o n ’s u n i q u e I D n u m b e r
that is factory-programmed by the
manufacturer. We’ve already met this
memory block because it is what we
used in the previous two articles. This
memory block is read only.
The EEPROM memory block is what
will be discussed in detail shortly. One
thing to highlight here is that there is
no direct contact with the EEPROM
memory; instead, communication is
via a ‘scratchpad’. The scratchpad can
be viewed as a safety buffer – more on
this shortly.
The Application Register memory
block is typically used by the end-user to
program their own 8-byte serial number
(or product number) into the iButton.
Note that like the EEPROM memory
block, this also has its own scratchpad;
and once the Application Register has
been programmed, it cannot be altered.
The Status register is a single byte
that only uses the two least-significant
bits to signify whether the Application
Register has been programmed, or not.
It will have a binary value of 11111111
if the Application Register has not
Practical Electronics | March | 2022
yet been programmed, and a value of
11111100 once it has been programmed
and locked. This (single-byte) memory
block is read only.
Note that we are not going to be
using either the Application Register,
or the Status register in our miniproject, these are just mentioned here
for completeness.
Please refer to Fig.1 for a summary
of these four memory blocks. You will
also see reference to all the available
1-wire commands that are associated
with each memory block – something
we will discuss next.
1-wire commands
Each 1-wire command available for use
with the DS1971 has its own command
number – these are also shown in Fig.1.
The relevant command number is used
with the MMBASIC command ONEWIRE
WRITE to perform the relevant action.
We will now briefly describe each
command in more detail, which will
help us understand how the code works
in the examples that we will work
through later.
ROM commands
Read ROM (33h)
This command allows the 1-wire bus
master (ie, the Micromite) to read the
8-byte ID number. As we have already
seen, this comprises a Family Code
byte, followed by a 6-byte unique ID
number, and finally the CRC byte. This
command can only be used when there
is just a single iButton on the 1-wire bus
(as there will be in our scenario when
using an iButton reader). If more than
one iButton is present on the 1-wire
bus, then data-collisions will arise
once they all start responding at the
same time to the Read ROM command
– something the CRC algorithm will
pick up (if implemented).
Match ROM (55h)
This command allows the bus master
to address a particular iButton. It does
this by specifying the unique ROM ID
of the iButton it wishes to communicate
with. The Match ROM command solves
the issue of multiple iButtons present
on the 1-wire bus. Only the iButton
with a matching ID number (if present)
will respond to this command, all other
iButtons simply won’t respond. Instead,
they just wait for a reset signal from the
bus master on the 1-wire bus.
Search ROM (F0h)
This command is used when the
bus master doesn’t know how many
iButtons are present on the 1-wire
bus, or when their ID numbers are not
Practical Electronics | March | 2022
known (and hence
can’t be addressed
by an ID number). It
is quite complex in
its use, and since we
are not going to be
using this command,
we will not go into
any further details
this month.
ROM 64 bits = 8 bytes
0 1 2 3 4 5 6 7
ID
Family
Code
Read ROM (33h)
Match ROM (55h)
Search ROM (F0h)
Skip ROM (CCh)
CRC
EEPROM 256 bits = 32 bytes Write Scratchpad (0Fh)
0 1 2
29 30 31 Read Scratchpad (AAh)
Copy Scratchpad (55h)
Read Memory (F0h)
Skip ROM (CCh)
0 1 2
29 30 31
This command is
Scratchpad
used to save time
when addressing an
iButton. It can only
Application Register 64 bits = 8 bytes
be used when there is
OTP 0 1 2 3 4 5 6 7
just a single iButton
Write Application Register (99h)
Read Application Register (C3h)
on the 1-wire bus.
Copy and Lock Application Register (5Ah)
After a reset signal
0 1 2 3 4 5 6 7
has been sent by
Scratchpad
the bus master on
the 1-wire bus, any
communication
Status Register 8 bits = 1 bytes
must begin with
Read Status Register (66h)
0
a ROM command.
By using the Skip
00 = Application Register locked
1 1 1 1 1 1 x x 11 = Application Register available
ROM command,
MSB
LSB
the bus master may
immediately start to
address other memory Fig.1. The DS1971 comprises four memory blocks: an 8-byte
functionality such as ROM, a 32-byte EEPROM, an 8-byte Application Register,
reading or writing to and a 1-byte Status Register. Shown here are the available
the EEPROM memory. 1-wire commands associated with each memory block (see
Note that we will be text for explanatory details).
using this command
in the majority of the examples coming
increments the address after every byte
up later in this article.
read, and when the address reaches a
value of 31, it wraps around to 0. The
EEPROM commands
reading continues until the bus master
issues a reset signal.
Write Scratchpad (0Fh)
This command is used to write data
Copy Scratchpad (55h)
bytes into the EEPROM’s scratchpad.
This command instructs the DS1971
Note that it does not write data into
to copy the contents of the Scratchpad
the EEPROM itself. After issuing this
into the EEPROM. Ideally, it should
command, the bus master must issue a
only be used after the Scratchpad’s
1-byte starting address (a value between
contents have been verified (ie, after the
0 and 31), which is then followed by the
use of the preceding Read Scratchpad
data bytes that are to be written to the
command). One point to stress here is
scratchpad. The DS1971 automatically
that all 32 bytes from the scratchpad are
increments the address after every
copied into the EEPROM. After issuing
byte it receives, and when the address
the Copy Scratchpad command, the
reaches a value of 31, it simply wraps
bus master must issue a validation key,
around to 0. The writing continues until
which simply means sending a single
the bus master issues a reset signal.
byte with a value of A5h. Furthermore,
the bus master must then keep the
Read Scratchpad (AAh)
1-wire line at a high logic level for a
This command is used to verify the data
minimum specified period. In practice,
previously written to the scratchpad
this simply means pausing for 10ms
before it is copied into the EEPROM
between sending both the command
memory (with the Copy Scratchpad
and validation key, and before the bus
command detailed below). After issuing
master sends the reset signal. Note that
the Read Scratchpad command, the
if the validation key is not sent (or is
bus master must issue a 1-byte starting
sent with any other value), or the 1-wire
address (a value between 0 and 31)
bus is not held high for the required
from where the data will begin to be
time, then the scratchpad contents will
read. Again, the DS1971 automatically
not be copied into the EEPROM.
59
Read Memory (F0h)
This command is useful when you
need to change part of the EEPROM’s
content. On receipt of this command,
the iButton will first copy the entire
contents of the EEPROM memory into
the scratchpad. The bus master may
also optionally send a 1-byte starting
address value (between 0 and 31) from
which the data can then be read from
the scratchpad. The usual automatic
incrementing of the address will occur
(with wrap around from 31 to 0) until
a reset signal is sent by the bus master.
This command is typically used
without sending a starting address –
or put another way, it is used to simply
copy the EEPROM contents into the
scratchpad. This saves the bus master
needing to keep a local copy of the
EEPROM contents should the bus master
only need to change a few bytes of the
EEPROM memory. Remember that the
Copy Scratchpad command copies
all 32-bytes from the Scratchpad into
EEPROM, so by using the Read Memory
command first, the bus master can
then simply use the Write Scratchpad
command to update just the bytes in the
Scratchpad that need to be updated (by
passing the relevant starting address in
the Write Scratchpad). Then, to update
the EEPROM, the Copy Scratchpad
command is sent.
Note that we will not be using the Read
Memory command to update just some
of the EEPROM memory. Instead, we will
use the Write Scratchpad to send a full
set of 32 data bytes to the scratchpad,
then use the Read Scratchpad command
to ensure that the 32 bytes just written
(to the scratchpad) are correct. If they
are, then we will finally use the Copy
Scratchpad command to load the 32
data bytes into EEPROM. In essence,
we overwrite the 32 bytes each time,
rather than partially modify the contents
of the EEPROM.
Application Register commands
We will not be using any of the following
Application Register commands since
we will not be using the Application
Register in our mini-project. However, we
will briefly explain their functionality.
Write Application Register (99h)
This command is used to write data
bytes to the Application Register.
It behaves in a similar way as the
EEPROM Write Scratchpad command
but operates with the Application
Register scratchpad as opposed to the
EEPROM scratchpad. Note that the
Application Register is only 8-bytes
long and hence the supplied starting
address value must be between 0 and 7,
with wrap around happening from 7 to
60
0. If the OTP Application Register has
previously been written to (and hence
locked), then any data written to the
Application Register scratchpad will
be lost. Writing data to the Application
Register is terminated as soon as the
bus master sends a reset signal.
Read Application Register (C3h)
This command will read data from the
Application Register scratchpad (if
it is not locked), or directly from the
Application Register (if it is locked).
Refer to the Read Status Register
command below for how to check the
status of the Application Register. A
starting address must also be supplied
as part of this command. The address
must be a value between 0 and 7, with
wrap around happening from 7 to 0.
Reading data from the Application
Register is terminated as soon as the
bus master sends a reset signal.
Copy and Lock Application Register (5Ah)
This command should only be used
after the above two commands have
been used. So, once the bus master has
written and verified the contents of the
Application Register’s scratchpad, this
Copy and Lock Application Register
command is sent, and must also include
a validation key data byte (with a value
of A5h). In addition, the 1-wire bus
must be held high for a minimum time
before a reset signal is sent. Once these
conditions have been met, the entire
8-byte content of the ApplicationRegister’s scratchpad will be written into
the Application Register’s OTP memory.
This command needs to be used very
carefully because it will immediately
write protect the 8 bytes of the OTP
Application Register memory, and at
the same time it will update the Status
Register (see below). Note that the bus
master may cancel this command by
sending a reset signal instead of sending
the validation key (A5h). Further write
access to the Application Register will
be denied and hence this command can
only be executed once.
Status Register command
Read Status Register (66h)
The Status register is a read-only, singlebyte memory location that the bus
master can interrogate to see if the
OTP Application Register has been
previously programmed, and hence
locked. After issuing the Read Status
Register command, the bus master
needs to send a validation key data
byte with a value of 00h, after which
the DS1971 will send the value stored
in the Status Register. As mentioned
previously, the two least-significant
bits of the 8-bit Status Register are 0 if
the Application Register has previously
been programmed and locked (all other
bits will always bet set to 1). The bus
master sends a reset signal to terminate
the command.
From theory to code
Now that we have a theoretical
understanding of the steps involved
in writing data to the EEPROM, and
subsequently reading the data back from
the EEPROM, we should now apply
this theory to create some functioning
MMBASIC code. We will therefore work
through two simplified examples; the
first being to write some data into the
EEPROM (just seven bytes for now),
with the second example showing you
how to read these seven bytes back from
the EEPROM.
To make these two examples easier
to follow, we will not incorporate the
CRC algorithm at this stage, nor will we
check the type of iButton tapped onto
the reader – we will just assume that it
is a DS1971. All error checking will be
added in a more complex third example,
which is available to download from
the March 2022 page of the PE website
(file EEPROMiButtonDemo.txt).
Example 1: Writing data
to EEPROM
The full code for this demonstration
is also available from the March 2022
page of the PE website. The file you
require is WriteEEPROM.txt
The four theoretical steps involved
in successfully writing data to the
EEPROM are:
1. Write the seven bytes to the scratchpad
in the relevant address (with the Write
Scratchpad command)
2. Read the seven bytes back from the
scratchpad from the relevant address
(with the Read Scratchpad command)
3. Compare what we sent in Step 1 with
what we read back in Step 2
4. If the Step 3 data matches correctly,
then send the Copy Scratchpad
command
Let’s now examine how these four steps
translate into MMBasic code. Note that
the full program download has a few
additional lines of code that essentially
keep checking that the iButton is still
present on the 1-wire bus; however, the
following explanation should help in
understanding how the WriteEEPROM.
txt program works. Do also refer to
Appendix C in the Micromite User
Manual that gives the detail of the
ONEWIRE WRITE, ONEWIRE READ and
ONEWIRE RESET commands, as well as
referring to the 1-wire command numbers
mentioned earlier in this article.
Practical Electronics | March | 2022
in Step 2 to be the same as all seven
data bytes (b1 to b7) that were sent in
Step 1. If they match, then the block of
code inside the IF/THEN/ENDIF block
will be executed (which is Step 4). In
other words, a match will copy the
Scratchpad into the EEPROM.
4. ONEWIRE WRITE iB_pin,0,3,
&hCC,&h55,&hA5
PAUSE 10 : ONEWIRE RESET iB_pin
The first line of code above sends the
Copy Scratchpad command (55) along
with the required validation key (A5)
without sending a reset signal (flag
parameter is set to 0). The second line
pauses for 10ms, which leaves the
1-wire bus set to the required logichigh state. Then a reset signal is sent
which is a requirement to complete the
Copy Scratchpad command.
If you look through the code within the
WriteEEPROM.txt program (shown in
FIg.2), you should now be better placed
to be able to follow how it works. Use
Fig.2. The WriteEEPROM.txt program has four main steps (labeled above) to
is made of several IF MM.ONEWIRE
complete the process of writing data to the EEPROM memory block.
THEN statements which simply ensure
the iButton is still present on the 1-wire bus. Now that the
1. ONEWIRE WRITE iB_pin,2,10,&hCC,&h0F,0,b1,b2,
seven byte values (b1 to b7) have been written into EEPROM,
b3,b4,b5,b6,b7
we can look at how to read them back from EEPROM.
This line of code sends data on the 1-wire bus which is
connected to the pin defined by variable iB_Pin
Example 2: Reading data from EEPROM
The 2 parameter is the flag parameter, as defined in the
The process of reading data from the EEPROM is much easier
User Manual. When set to a value of 2, it means that a reset
than writing data to EEPROM, as we will now see. There
signal is sent after all the other bytes have been sent. The
is just one theoretical step involved, and this is the Read
10 parameter then defines how many data bytes will be sent
Memory command (command number &hF0). Remember that
on the 1-wire bus, with the first byte being the hex value
we are not using the CRC algorithm in this example, and
CC. From the above command numbers, you will see that
hence the program listing is relatively short as shown below
this is the Skip ROM command. The next byte is the hex
(with the two main lines of code being highlighted in bold):
value 0F which is the Write Scratchpad command. This
requires the starting address to be sent next (ie a value
DO
between 0 and 31). Here the starting address is defined
ONEWIRE RESET iB_Pin
by the next data byte: 0 (which effectively means the first
IF MM.ONEWIRE THEN
location in the scratchpad). The seven bytes are then sent
ONEWIRE WRITE iB_pin,0,3,&hCC,&hF0,0
from the variables b1 to b7. This completes the process
ONEWIRE READ iB_pin,2,7,d1,d2,d3,
of writing the seven bytes into the EEPROM’s scratchpad.
d4,d5,d6,d7
PRINT CHR$(d1);CHR$(d2);CHR$(d3);CHR$(d4);
2. ONEWIRE WRITE iB_pin,0,3,&hCC,&hAA,0
CHR$(d5);CHR$(d6);CHR$(d7)
ONEWIRE READ iB_pin,2,7,d1,d2,d3,d4,d5,d6,d7
END IF
LOOP
The first line of code above sends three bytes of data on the
1-wire bus without sending a reset signal afterwards (since
Type in the above listing. You can see that the program
the flag parameter is set to 0). After the Skip ROM command
comprises a DO/LOOP that waits until an iButton is detected
is sent (CC), the Read Scratchpad command is sent (AA) and
by checking for the system variable MM.ONEWIRE to be set
is defined to start reading from address location 0.
to a value of 1, (as explained in Part 32, PE, January 2022).
The second line then reads seven bytes from the 1-wire
Once an iButton is detected, the first highlighted line of
bus into variables d1 to d7, after which a reset signal is
code is executed. This line simply sends three bytes of data
sent (as defined by the flag parameter value of 2). This
on the 1-wire bus (which is connected to the physical pin
reset signal is required to terminate the reading process.
number as pointed to by the iB-pin variable). Note that the
flag parameter is set to 0, and hence no reset signal is sent
3. If d1=b1 AND d2=b2 AND d3=b3 AND d4=b4 AND
after the three data bytes are sent. The first data byte sent
d5=b5 and d6=b6 AND d7=b7 THEN
(CC) represents the Skip ROM command, and then the Read
Memory command (F0) is sent with the starting address
This line of code should be relatively easy to understand.
defined as location 0 (the same starting address location
Essentially, it is an IF statement that requires all seven
that we used in the WriteEEPROM program). Remember that
data bytes (d1 to d7) that are read from the scratchpad
the Read Memory command copies all 32 EEPROM bytes
Practical Electronics | March | 2022
61
into the scratchpad, irrespective of the
starting address.
The second highlighted line then reads
seven data bytes from the scratchpad
(starting at address location 0, as defined
above) into the seven variables d1 to d7.
Finally, a reset signal is sent (because
the flag parameter is set to a value of 2),
this being a requirement to terminate
the Read Memory command. The PRINT
statement then converts the seven data
byte values into characters, and displays
them on the Terminal screen while
the iButton is held on the reader. If
everything has gone to plan, you should
see a seven-letter word displayed that
is relevant to the topic we are working
on! The DO/LOOP in the program above
ensures the whole process is continually
repeated. (Note that you will likely see
the effects of contact bounce in the
characters displayed – something we
will address next.)
EEPROMiButtonDemo.txt
The two examples just worked through
provide working code that allow
communication with the DS1971 EEPROM
iButton. However, no error checking was
used, so in their current state, neither
program is ready to be integrated into the
final code for the upcoming Electronic
Door Lock mini-project. To show how
to make everything work 100% reliably,
another example program has been
written. This not only includes the CRC
algorithm, but it also has a few other nice
features incorporated.
Rather than go into any more detail
here, we recommend that you download
the file EEPROMiButtonDemo.txt,
load it into a Micromite, and RUN the
program. Everything should be selfexplanatory regarding use, and the
comments included in the code (along
with the topics covered in this month’s
article) should help you understand
how it works.
One important detail to point out here
is to ensure that the line of code: iB_
pin=1 is changed to the pin number
that you have connected to your 1-wire
bus (ie, the pin number that connects
to the iButton reader).
Next month, we’ll put our newly acquired
iButton knowledge to good use with an
Electonic Door Lock mini-project.
Next time
Now that we’ve finished exploring how
to use iButtons with the Micromite,
next month we can begin our Electronic
Door Lock mini-project. Until then, stay
safe, and have FUN!
Questions? Please email Phil at:
contactus<at>micromite.org
STEWART OF READING
Fluke/Philips PM3092 Oscilloscope
2+2 Channel 200MHz Delay TB,
Autoset etc – £250
LAMBDA GENESYS
LAMBDA GENESYS
IFR 2025
IFR 2948B
IFR 6843
R&S APN62
Agilent 8712ET
HP8903A/B
HP8757D
HP3325A
HP3561A
HP6032A
HP6622A
HP6624A
HP6632B
HP6644A
HP6654A
HP8341A
HP83630A
HP83624A
HP8484A
HP8560E
HP8563A
HP8566B
HP8662A
Marconi 2022E
Marconi 2024
Marconi 2030
Marconi 2023A
HP 54600B Oscilloscope
Analogue/Digital Dual Trace 100MHz
Only £75, with accessories £125
(ALL PRICES PLUS CARRIAGE & VAT)
Please check availability before ordering or calling in
PSU GEN100-15 100V 15A Boxed As New
£400
PSU GEN50-30 50V 30A
£400
Signal Generator 9kHz – 2.51GHz Opt 04/11
£900
Communication Service Monitor Opts 03/25 Avionics
POA
Microwave Systems Analyser 10MHz – 20GHz
POA
Syn Function Generator 1Hz – 260kHz
£295
RF Network Analyser 300kHz – 1300MHz
POA
Audio Analyser
£750 – £950
Scaler Network Analyser
POA
Synthesised Function Generator
£195
Dynamic Signal Analyser
£650
PSU 0-60V 0-50A 1000W
£750
PSU 0-20V 4A Twice or 0-50V 2A Twice
£350
PSU 4 Outputs
£400
PSU 0-20V 0-5A
£195
PSU 0-60V 3.5A
£400
PSU 0-60V 0-9A
£500
Synthesised Sweep Generator 10MHz – 20GHz
£2,000
Synthesised Sweeper 10MHz – 26.5 GHz
POA
Synthesised Sweeper 2 – 20GHz
POA
Power Sensor 0.01-18GHz 3nW-10µW
£75
Spectrum Analyser Synthesised 30Hz – 2.9GHz
£1,750
Spectrum Analyser Synthesised 9kHz – 22GHz
£2,250
Spectrum Analsyer 100Hz – 22GHz
£1,200
RF Generator 10kHz – 1280MHz
£750
Synthesised AM/FM Signal Generator 10kHz – 1.01GHz
£325
Synthesised Signal Generator 9kHz – 2.4GHz
£800
Synthesised Signal Generator 10kHz – 1.35GHz
£750
Signal Generator 9kHz – 1.2GHz
£700
HP/Agilent HP 34401A Digital
Multimeter 6½ Digit £325 – £375
62
17A King Street, Mortimer, near Reading, RG7 3RS
Telephone: 0118 933 1111 Fax: 0118 933 2375
USED ELECTRONIC TEST EQUIPMENT
Check website www.stewart-of-reading.co.uk
HP33120A
HP53131A
HP53131A
Audio Precision
Datron 4708
Druck DPI 515
Datron 1081
ENI 325LA
Keithley 228
Time 9818
Marconi 2305
Marconi 2440
Marconi 2945/A/B
Marconi 2955
Marconi 2955A
Marconi 2955B
Marconi 6200
Marconi 6200A
Marconi 6200B
Marconi 6960B
Tektronix TDS3052B
Tektronix TDS3032
Tektronix TDS3012
Tektronix 2430A
Tektronix 2465B
Farnell AP60/50
Farnell XA35/2T
Farnell AP100-90
Farnell LF1
Racal 1991
Racal 2101
Racal 9300
Racal 9300B
Solartron 7150/PLUS
Solatron 1253
Solartron SI 1255
Tasakago TM035-2
Thurlby PL320QMD
Thurlby TG210
Modulation Meter
£250
Counter 20GHz
£295
Communications Test Set Various Options
POA
Radio Communications Test Set
£595
Radio Communications Test Set
£725
Radio Communications Test Set
£800
Microwave Test Set
£1,500
Microwave Test Set 10MHz – 20GHz
£1,950
Microwave Test Set
£2,300
Power Meter with 6910 sensor
£295
Oscilloscope 500MHz 2.5GS/s
£1,250
Oscilloscope 300MHz 2.5GS/s
£995
Oscilloscope 2 Channel 100MHz 1.25GS/s
£450
Oscilloscope Dual Trace 150MHz 100MS/s
£350
Oscilloscope 4 Channel 400MHz
£600
PSU 0-60V 0-50A 1kW Switch Mode
£300
PSU 0-35V 0-2A Twice Digital
£75
Power Supply 100V 90A
£900
Sine/Sq Oscillator 10Hz – 1MHz
£45
Counter/Timer 160MHz 9 Digit
£150
Counter 20GHz LED
£295
True RMS Millivoltmeter 5Hz – 20MHz etc
£45
As 9300
£75
6½ Digit DMM True RMS IEEE
£65/£75
Gain Phase Analyser 1mHz – 20kHz
£600
HF Frequency Response Analyser
POA
PSU 0-35V 0-2A 2 Meters
£30
PSU 0-30V 0-2A Twice
£160 – £200
Function Generator 0.002-2MHz TTL etc Kenwood Badged
£65
Function Generator 100 microHz – 15MHz
Universal Counter 3GHz Boxed unused
Universal Counter 225MHz
SYS2712 Audio Analyser – in original box
Autocal Multifunction Standard
Pressure Calibrator/Controller
Autocal Standards Multimeter
RF Power Amplifier 250kHz – 150MHz 25W 50dB
Voltage/Current Source
DC Current & Voltage Calibrator
£350
£600
£350
POA
POA
£400
POA
POA
POA
POA
Marconi 2955B Radio
Communications Test Set – £800
Practical Electronics | March | 2022
|