Silicon ChipMake it with Micromite - March 2022 SILICON CHIP
  1. Outer Front Cover
  2. Contents
  3. Subscriptions: PE Subscription
  4. Subscriptions: PicoLog Cloud
  5. Back Issues: PICOLOG
  6. Publisher's Letter
  7. Feature: How resilient is your lifeline? by Mark Nelson
  8. Feature: Net Work by Alan Winstanley
  9. Project: Mini Isolated Serial Link by Tim Blythman
  10. Feature: I’m busy. Go away! by John Chappell
  11. Project: Battery Monitor Logger by TIM BLYTHMAN
  12. Project: ELECTRONIC Wind Chimes by John Clarke
  13. Project: Geekcreit LCR-T4 Mini Digital Multi-Tester by Jim Rowe
  14. Feature: Max’s Cool Beans by Max the Magnificent
  15. Feature: AUDIO OUT by Jake Rothman
  16. Feature: Circuit Surgery by Ian Bell
  17. Feature: Make it with Micromite by Phil Boyce
  18. Feature: Electronic Building Blocks
  19. PCB Order Form
  20. Advertising Index

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:
  • (November 2020)
  • Techno Talk (December 2020)
  • Techno Talk (January 2021)
  • Techno Talk (February 2021)
  • Techno Talk (March 2021)
  • Techno Talk (April 2021)
  • Techno Talk (May 2021)
  • Techno Talk (June 2021)
  • Techno Talk (July 2021)
  • Techno Talk (August 2021)
  • Techno Talk (September 2021)
  • Techno Talk (October 2021)
  • Techno Talk (November 2021)
  • Techno Talk (December 2021)
  • Communing with nature (January 2022)
  • Should we be worried? (February 2022)
  • How resilient is your lifeline? (March 2022)
  • Go eco, get ethical! (April 2022)
  • From nano to bio (May 2022)
  • Positivity follows the gloom (June 2022)
  • Mixed menu (July 2022)
  • Time for a total rethink? (August 2022)
  • What’s in a name? (September 2022)
  • Forget leaves on the line! (October 2022)
  • Giant Boost for Batteries (December 2022)
  • Raudive Voices Revisited (January 2023)
  • A thousand words (February 2023)
  • It’s handover time (March 2023)
  • AI, Robots, Horticulture and Agriculture (April 2023)
  • Prophecy can be perplexing (May 2023)
  • Technology comes in different shapes and sizes (June 2023)
  • AI and robots – what could possibly go wrong? (July 2023)
  • How long until we’re all out of work? (August 2023)
  • We both have truths, are mine the same as yours? (September 2023)
  • Holy Spheres, Batman! (October 2023)
  • Where’s my pneumatic car? (November 2023)
  • Good grief! (December 2023)
  • Cheeky chiplets (January 2024)
  • Cheeky chiplets (February 2024)
  • The Wibbly-Wobbly World of Quantum (March 2024)
  • Techno Talk - Wait! What? Really? (April 2024)
  • Techno Talk - One step closer to a dystopian abyss? (May 2024)
  • Techno Talk - Program that! (June 2024)
  • Techno Talk (July 2024)
  • Techno Talk - That makes so much sense! (August 2024)
  • Techno Talk - I don’t want to be a Norbert... (September 2024)
  • Techno Talk - Sticking the landing (October 2024)
  • Techno Talk (November 2024)
  • Techno Talk (December 2024)
  • Techno Talk (January 2025)
  • Techno Talk (February 2025)
  • Techno Talk (March 2025)
  • Techno Talk (April 2025)
  • Techno Talk (May 2025)
  • Techno Talk (June 2025)
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