<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Grease monkey]]></title><description><![CDATA[deeper and deeper into the rabbithole...]]></description><link>https://btbm.ch/</link><image><url>https://btbm.ch/favicon.png</url><title>Grease monkey</title><link>https://btbm.ch/</link></image><generator>Ghost 3.37</generator><lastBuildDate>Sun, 12 Apr 2026 08:52:59 GMT</lastBuildDate><atom:link href="https://btbm.ch/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Mitutoyo SPC - Input measurements to excel]]></title><description><![CDATA[Exporting the measurements of an ID-F150 to excel and serial port with an Arduino pro micro]]></description><link>https://btbm.ch/mitutoyo-spc/</link><guid isPermaLink="false">61ff02ade038c703f2d6a12a</guid><category><![CDATA[Test Equipment]]></category><dc:creator><![CDATA[Grease monkey]]></dc:creator><pubDate>Sun, 06 Feb 2022 01:33:17 GMT</pubDate><media:content url="https://btbm.ch/content/images/2022/02/Mitutoyo-ID-F150.jpg" medium="image"/><content:encoded><![CDATA[<h3 id="references-links-">References/links:</h3><ul><li><a href="https://btbm.ch/assets/uploads/f150manual.pdf">Mitutoyo ID-F125/150 User's Manual</a></li></ul><img src="https://btbm.ch/content/images/2022/02/Mitutoyo-ID-F150.jpg" alt="Mitutoyo SPC - Input measurements to excel"><p>I recently bought an ID-F150 dial gauge (for a price that shall remain undisclosed lest the weaker of you start salivating). The instrument has a communication port and the good people at Mitutoyo have documented the protocol in the <a href="https://btbm.ch/assets/uploads/f150manual.pdf">user's manual</a>. BIG thumbs up!</p><p>The way I see it you want two modes of interacting with a dial gauge. First a serial interface for scripting and second a way to enter data on request (e.g. in a spreadsheet). The way I implemented it was with an Arduino Pro Micro that can double as a keyboard too.</p><p>The serial protocol is really easy. Connect at 115200 8N1 and send anything. The instrument will reply with the measured value in ASCII. For the keyboard functionality just click on the field you want to write to and press the button. The instrument will type the value and press RETURN.</p><h3 id="hardware">Hardware</h3><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2022/02/Mitutoyo-ID-F150-IO.png" class="kg-image" alt="Mitutoyo SPC - Input measurements to excel" srcset="https://btbm.ch/content/images/size/w600/2022/02/Mitutoyo-ID-F150-IO.png 600w, https://btbm.ch/content/images/2022/02/Mitutoyo-ID-F150-IO.png 961w" sizes="(min-width: 720px) 720px"></figure><p>The ID-F150 has two outputs and one input. As you can see both they are designed to work with open collector outputs which means you can easily interface it with a 3.3V microcontroller. Just for good measure I added RC filters to the inputs and 10k pull-up resistors. I did not try it but you will probably be OK with the internal pull-up resistors of the microcontroller too.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2022/02/Mitutoyo-SPC-Arduino.png" class="kg-image" alt="Mitutoyo SPC - Input measurements to excel" srcset="https://btbm.ch/content/images/size/w600/2022/02/Mitutoyo-SPC-Arduino.png 600w, https://btbm.ch/content/images/size/w1000/2022/02/Mitutoyo-SPC-Arduino.png 1000w, https://btbm.ch/content/images/2022/02/Mitutoyo-SPC-Arduino.png 1143w" sizes="(min-width: 720px) 720px"><figcaption>The circuit I used</figcaption></figure><h3 id="software">Software</h3><p>The communication protocol is very simple. You basically pull $\overline{REQ}$ down and the instrument starts transmitting the data. For more details RTFM. Here is the code:</p><!--kg-card-begin: html--><script src="https://gist.github.com/greasemonkey-btbm/fd9d5e58bcaf62d433ce11e044e28b44.js"></script><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[24VDC IEC 61131-2 compliant digital inputs with jelly bean parts]]></title><description><![CDATA[An industrial 24V digital input circuit using only jelly bean components]]></description><link>https://btbm.ch/24vdc-iec-61131-2-compliant-digital-inputs-with-jelly-bean-parts/</link><guid isPermaLink="false">61ec6f6de038c703f2d69c85</guid><category><![CDATA[Jelly-bean]]></category><category><![CDATA[industrial automation]]></category><category><![CDATA[python]]></category><dc:creator><![CDATA[Grease monkey]]></dc:creator><pubDate>Sun, 30 Jan 2022 16:14:09 GMT</pubDate><media:content url="https://btbm.ch/content/images/2022/01/IEC61131-2-digital-inputs-test-circuit-current-1.png" medium="image"/><content:encoded><![CDATA[<h3 id="references-links-">References/links:</h3><ul><li><a href="https://www.ti.com/lit/ds/symlink/iso1212.pdf?ts=1642864419119">ISO121x datasheet</a></li><li><a href="https://www.ti.com/lit/ds/symlink/tl431.pdf?ts=1642728125318">TL431 datasheet</a></li><li><a href="https://www.ti.com/lit/ds/symlink/lm393a.pdf">LM393 datasheet</a></li><li><a href="https://download.beckhoff.com/download/document/Application_Notes/DK9222-0909-0008.pdf">Beckhoff Application Note DK9222-0909-0008 </a></li></ul><img src="https://btbm.ch/content/images/2022/01/IEC61131-2-digital-inputs-test-circuit-current-1.png" alt="24VDC IEC 61131-2 compliant digital inputs with jelly bean parts"><p>There is an automation circuit that we do often at work. It takes two sensors as inputs and has a relay as output. It also needs a timer and two more relays. The circuit is not complicated enough to justify a small PLC like Siemens LOGO!. Another cost that is rarely considered is that if you add a programmable device you need someone to reprogram it when it needs replacement. Still I thought it would be great if could do it a small custom PCB with a microcontroller. But I wanted to do it right so I decided to use the <a href="https://www.ti.com/lit/ds/symlink/iso1212.pdf?ts=1642864419119">ISO121x </a> isolators from TI. Not that I needed galvanic isolation but these chips take care of the current draw requirements of IEC 61131-2.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2022/01/IEC61131-2-switching-characteristics.png" class="kg-image" alt="24VDC IEC 61131-2 compliant digital inputs with jelly bean parts" srcset="https://btbm.ch/content/images/size/w600/2022/01/IEC61131-2-switching-characteristics.png 600w, https://btbm.ch/content/images/size/w1000/2022/01/IEC61131-2-switching-characteristics.png 1000w, https://btbm.ch/content/images/2022/01/IEC61131-2-switching-characteristics.png 1031w" sizes="(min-width: 720px) 720px"><figcaption>Figure taken from the <a href="https://www.ti.com/lit/ds/symlink/iso1212.pdf?ts=1642864419119">ISO121x datasheet</a></figcaption></figure><p>The problem was that they were out of stock and the lead time was about a year(!). So, I thought, what the hell let's do it old-school with discrete components.</p><h3 id="about-iec-61131-2">About IEC 61131-2</h3><p>In an industrial environment there is electromagnetic noise. A lot of it. And you don't want your digital inputs activating without a reason. So the digital inputs of industrial devices are low impedance. In other words the amount of power needed to activate an input is well above the levels that could be introduced by random noise.</p><p>For a more detailed explanation of the standard I suggest you read the application note. It is very informative. The following table (taken from <a href="https://download.beckhoff.com/download/document/Application_Notes/DK9222-0909-0008.pdf">Beckhoff Application Note DK9222-0909-0008</a>) sums up the the IEC 61131-2 levels. </p><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2022/01/Beckhoff-logic-levels.png" class="kg-image" alt="24VDC IEC 61131-2 compliant digital inputs with jelly bean parts" srcset="https://btbm.ch/content/images/size/w600/2022/01/Beckhoff-logic-levels.png 600w, https://btbm.ch/content/images/size/w1000/2022/01/Beckhoff-logic-levels.png 1000w, https://btbm.ch/content/images/2022/01/Beckhoff-logic-levels.png 1522w" sizes="(min-width: 720px) 720px"></figure><p>And here are current curves of various types of Beckhoff digital input modules.</p><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2022/01/Beckhoff-characteristics.png" class="kg-image" alt="24VDC IEC 61131-2 compliant digital inputs with jelly bean parts" srcset="https://btbm.ch/content/images/size/w600/2022/01/Beckhoff-characteristics.png 600w, https://btbm.ch/content/images/size/w1000/2022/01/Beckhoff-characteristics.png 1000w, https://btbm.ch/content/images/2022/01/Beckhoff-characteristics.png 1539w" sizes="(min-width: 720px) 720px"></figure><h3 id="my-solution">My solution</h3><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2022/01/IEC61131-2-digital-inputs-1.png" class="kg-image" alt="24VDC IEC 61131-2 compliant digital inputs with jelly bean parts" srcset="https://btbm.ch/content/images/size/w600/2022/01/IEC61131-2-digital-inputs-1.png 600w, https://btbm.ch/content/images/size/w1000/2022/01/IEC61131-2-digital-inputs-1.png 1000w, https://btbm.ch/content/images/2022/01/IEC61131-2-digital-inputs-1.png 1144w" sizes="(min-width: 720px) 720px"><figcaption>The circuit I came up with.</figcaption></figure><h3 id="circuit-description">Circuit description</h3><ul><li>$U_1$ gives us a regulated 5V supply for the LM393 comparator and the TL431 voltage reference.</li><li>$R_1$ sets the cathode current of the reference: $$I_{R_1} = \frac{5V - V_{ref}}{R_1}$$ to about 2.5mA. The minimum cathode current for the correct operation of the TL431 is 1mA.</li><li>$T_1$ and $R_2$ form a constant current sink. $T_1$ is connected as an emitter follower. The voltage of point $D$ ($V_D$) remains constant at about: $$V_D = V_{ref} - 0.7V$$ $R_2$ is setting the current: $$I_{R_2} = \frac{V_D}{R_2}$$</li><li>$R_3$ lowers the voltage at the collector of $T_1$ and shares some of the thermal load. Since the current remains constant the total power dissipation is: $$P_{tot} = Vin \cdot I$$ and for each component: $$P_{R_3} = I_{R_2}^2 \cdot R_3$$ $$P_{R_2} = I_{R_2}^2 \cdot R_2$$ $$P_{T_1} = P_{tot} - P_{R_2} - P_{R_3}$$ As you can see the current that flows through $R_4$ and $R_5$ is excluded from the calculations. Since we are not concerned with accuracy, a few tens of μA here and there do not matter. </li><li>$R_4$ and $R_5$ form a voltage divider to feed the signal to the comparator. The voltage of point $B$ ($V_B$) is: $$V_B = V_A \cdot \frac{R_5}{R_4+R_5}$$ and $$V_A = V_{in} - I \cdot R_3$$</li><li>Finally $D_1$ is a reverse current protection diode to comply with the -3V limits of the standard.</li><li>The comparator circuit is a classic inverting input comparator with hysteresis. Since the LM393 has an open collector output, it needs a pull-up resistor ($R_8$). The calculation of the thresholds is not difficult but I am trying to cut down on my masochism so I used <a href="http://sim.okawa-denshi.jp/en/rercal.php">this</a> calculator to calculate the values.</li></ul><h3 id="optional-components">Optional components</h3><p>If you are stressed for PCB space, budget or circuit complexity all components marked with an asterisk (*) can be removed and the circuit will work just fine.</p><p>$C_3$ is a buffer capacitor for the TL431 reference. Since the load is just the base current of the transistor and it remains stable, removing it will not make a difference.</p><p>$R_3$ shares the thermal load with the transistor and lowers the voltage of point A. The circuit will work fine with input voltages up to 30VDC even if you remove it. You can also use a higher voltage/power transistor according to your needs.</p><p>Finally you can do away with the comparator if you connect point $B$ to a microcontroller digital input. If you adjust the $R_4 / R_5$ ratio to the schmitt trigger thresholds of the input, it should be possible to match them to the IEC 61131-2 thresholds of your choosing.</p><p>Alternately you can connect point $B$ to an ADC input too. Of course you will have to poll the analog input continuously. The speed will be considerably reduced. The voltage thresholds will have to be set in software.</p><h3 id="testing-the-circuit">Testing the circuit</h3><p>To test my idea I constructed the circuit bellow on a breadboard. Since the sensors I plan to connect are 3-wire 24VDC sensors I am going to focus on Type 1 inputs. The input current ($I_{IN}$)  is measured by $A_2$. $A_3$ is used to measure $V_{IN}$ but only because my DP832 is out of calibration.</p><p>The Python script that records the measurements and plots them can be found <a href="https://gist.github.com/greasemonkey-btbm/75df0855565f91c9f119aadf29df0c78">here</a>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2022/01/IEC61131-2-digital-inputs-test-circuit.png" class="kg-image" alt="24VDC IEC 61131-2 compliant digital inputs with jelly bean parts" srcset="https://btbm.ch/content/images/size/w600/2022/01/IEC61131-2-digital-inputs-test-circuit.png 600w, https://btbm.ch/content/images/size/w1000/2022/01/IEC61131-2-digital-inputs-test-circuit.png 1000w, https://btbm.ch/content/images/2022/01/IEC61131-2-digital-inputs-test-circuit.png 1142w" sizes="(min-width: 720px) 720px"><figcaption>Test setup</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2022/01/IEC61131-2-digital-inputs-test-circuit-current.png" class="kg-image" alt="24VDC IEC 61131-2 compliant digital inputs with jelly bean parts" srcset="https://btbm.ch/content/images/size/w600/2022/01/IEC61131-2-digital-inputs-test-circuit-current.png 600w, https://btbm.ch/content/images/2022/01/IEC61131-2-digital-inputs-test-circuit-current.png 960w" sizes="(min-width: 720px) 720px"><figcaption>Test results</figcaption></figure><p>As you can see the power dissipation at 24VDC is just 0.05W. This means that you can cram many digital inputs without worrying about overheating. The switching voltages $V_{IN (ON)}$ and $V_{IN (OFF)}$ will be tested when I construct the final circuit for my project.</p><h3 id="how-are-the-others-doing-it">How are the others doing it?</h3><p>I have some PLCs laying around my lab so I thought it would be interesting to run the same test on them. Most of the PLC input cards I took apart use a variation of the following circuit:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2022/01/Omron-digital-input.png" class="kg-image" alt="24VDC IEC 61131-2 compliant digital inputs with jelly bean parts" srcset="https://btbm.ch/content/images/size/w600/2022/01/Omron-digital-input.png 600w, https://btbm.ch/content/images/2022/01/Omron-digital-input.png 875w" sizes="(min-width: 720px) 720px"><figcaption>OMRON CP1W-20EDT/20EDT1 digital input circuit</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2022/01/Omron-digital-input-current.png" class="kg-image" alt="24VDC IEC 61131-2 compliant digital inputs with jelly bean parts" srcset="https://btbm.ch/content/images/size/w600/2022/01/Omron-digital-input-current.png 600w, https://btbm.ch/content/images/2022/01/Omron-digital-input-current.png 960w" sizes="(min-width: 720px) 720px"><figcaption>Test results for the OMRON CP1W-20EDT I/O extension card</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2022/01/Mitsubishi-digital-input-current.png" class="kg-image" alt="24VDC IEC 61131-2 compliant digital inputs with jelly bean parts" srcset="https://btbm.ch/content/images/size/w600/2022/01/Mitsubishi-digital-input-current.png 600w, https://btbm.ch/content/images/2022/01/Mitsubishi-digital-input-current.png 960w" sizes="(min-width: 720px) 720px"><figcaption>Test results for the Mitsubishi FX1S-20MT-ESS/UL PLC</figcaption></figure>]]></content:encoded></item><item><title><![CDATA[Notes on using the new ATtiny chips with the Arduino IDE]]></title><description><![CDATA[Programming the ATtiny824 with the Arduino IDE]]></description><link>https://btbm.ch/notes-on-using-the-new-attiny/</link><guid isPermaLink="false">61e2bf8fe038c703f2d69b30</guid><category><![CDATA[Digital]]></category><dc:creator><![CDATA[Grease monkey]]></dc:creator><pubDate>Sat, 15 Jan 2022 23:59:03 GMT</pubDate><media:content url="https://btbm.ch/content/images/2022/01/ATTINY824.png" medium="image"/><content:encoded><![CDATA[<h3 id="references-links-">References/links:</h3><ul><li><a href="https://github.com/SpenceKonde/megaTinyCore">The megaTinyCore by Spence Konde</a></li><li><a href="https://ww1.microchip.com/downloads/en/DeviceDoc/ATtiny424-426-427-824-826-827-DataSheet-DS40002311A.pdf">ATtiny824 datasheet</a></li></ul><img src="https://btbm.ch/content/images/2022/01/ATTINY824.png" alt="Notes on using the new ATtiny chips with the Arduino IDE"><p>This post contains notes on the use of the ATtiny824 micro-controller with the Arduino IDE. I do not go deep in to the inner workings of the micro-controller. It is more like a quick reference guide.</p><p>I am using the megaTinyCore by Spence Konde and most of the pictures and code are from there. A big thanks to Spence Konde. Great work!</p><h2 id="pinout">Pinout</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2022/01/ATtiny_x24.gif" class="kg-image" alt="Notes on using the new ATtiny chips with the Arduino IDE"><figcaption>The ATtinyX24 pinout (<a href="https://btbm.ch/content/images/2022/01/ATtiny_x24.gif">enlarge</a>)</figcaption></figure><h2 id="programming">Programming</h2><p>To program the chip you need to make a UPDI programmer. I used the instructions <a href="https://create.arduino.cc/projecthub/john-bradnam/create-your-own-updi-programmer-1e55f1">here</a> to make one with an Arduino nano.</p><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2022/01/UPDI-programmer.jpg" class="kg-image" alt="Notes on using the new ATtiny chips with the Arduino IDE" srcset="https://btbm.ch/content/images/size/w600/2022/01/UPDI-programmer.jpg 600w, https://btbm.ch/content/images/size/w1000/2022/01/UPDI-programmer.jpg 1000w, https://btbm.ch/content/images/size/w1600/2022/01/UPDI-programmer.jpg 1600w, https://btbm.ch/content/images/2022/01/UPDI-programmer.jpg 1634w" sizes="(min-width: 720px) 720px"></figure><p>Once you have installed megaTinyCore to the Arduino IDE use these settings and you are good to go:</p><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2022/01/ATtiny824-download-settings.png" class="kg-image" alt="Notes on using the new ATtiny chips with the Arduino IDE" srcset="https://btbm.ch/content/images/size/w600/2022/01/ATtiny824-download-settings.png 600w, https://btbm.ch/content/images/2022/01/ATtiny824-download-settings.png 650w"></figure><h2 id="code-examples">Code examples</h2><h2 id="blink">Blink</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2022/01/ATtiny824-blink.png" class="kg-image" alt="Notes on using the new ATtiny chips with the Arduino IDE" srcset="https://btbm.ch/content/images/size/w600/2022/01/ATtiny824-blink.png 600w, https://btbm.ch/content/images/size/w1000/2022/01/ATtiny824-blink.png 1000w, https://btbm.ch/content/images/2022/01/ATtiny824-blink.png 1161w" sizes="(min-width: 720px) 720px"><figcaption>Test circuit for the blink sketch</figcaption></figure><p>Note: The pins can be address as PIN_Pxn, where x is the port (A or B) and n is the bit number (0-7). E.g. pin 4 (PA6) is PIN_PA6.</p><!--kg-card-begin: html--><script src="https://gist.github.com/greasemonkey-btbm/ad4290615198d4f131dd026e97f78684.js"></script><!--kg-card-end: html--><h2 id="serial-port">Serial port</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2022/01/ATtiny824-serial.png" class="kg-image" alt="Notes on using the new ATtiny chips with the Arduino IDE" srcset="https://btbm.ch/content/images/size/w600/2022/01/ATtiny824-serial.png 600w, https://btbm.ch/content/images/size/w1000/2022/01/ATtiny824-serial.png 1000w, https://btbm.ch/content/images/2022/01/ATtiny824-serial.png 1148w" sizes="(min-width: 720px) 720px"><figcaption>Test circuit for the serial port sketch</figcaption></figure><p>Note: R1 and R2 make a simple level translator (5V to 3.3V).</p><!--kg-card-begin: html--><script src="https://gist.github.com/greasemonkey-btbm/cdd6bc1d317cf336cf8c05f2b22bc3fc.js"></script><!--kg-card-end: html--><h2 id="adc">ADC</h2><p>Note: More details <a href="https://github.com/SpenceKonde/megaTinyCore/blob/master/megaavr/extras/Ref_Analog.md">here</a>:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2022/01/ATtiny824-analog-1.png" class="kg-image" alt="Notes on using the new ATtiny chips with the Arduino IDE" srcset="https://btbm.ch/content/images/size/w600/2022/01/ATtiny824-analog-1.png 600w, https://btbm.ch/content/images/size/w1000/2022/01/ATtiny824-analog-1.png 1000w, https://btbm.ch/content/images/2022/01/ATtiny824-analog-1.png 1147w" sizes="(min-width: 720px) 720px"><figcaption>Test circuit for the ADC sketches</figcaption></figure><h3 id="1-reading-at-various-resolutions-with-vdd-as-analog-reference-">1. Reading at various resolutions with VDD as analog reference:</h3><!--kg-card-begin: html--><script src="https://gist.github.com/greasemonkey-btbm/72c8dfa3cb77373cc35a85c043542723.js"></script><!--kg-card-end: html--><h3 id="2-differential-reading-between-pa4-and-pa5-using-the-internal-2-048v-analog-reference-">2. Differential reading between PA4 and PA5 using the internal 2.048V analog reference:</h3><!--kg-card-begin: html--><script src="https://gist.github.com/greasemonkey-btbm/57dea4b2005d89a089bb9ed50decf013.js"></script><!--kg-card-end: html--><h3 id="3-reading-vdd">3. Reading VDD</h3><!--kg-card-begin: html--><script src="https://gist.github.com/greasemonkey-btbm/76251270748851ded045d9c25596b4ee.js"></script><!--kg-card-end: html--><h3 id="4-reading-the-internal-temperature">4. Reading the internal temperature</h3><p>Reading the internal temperature sensor of the ATtiny824. Page 415 of the <a href="https://ww1.microchip.com/downloads/en/DeviceDoc/ATtiny424-426-427-824-826-827-DataSheet-DS40002311A.pdf">datasheet</a>. The typical accuracy of the sensor is ±3 °C (page 490 of the datasheet).</p><!--kg-card-begin: html--><script src="https://gist.github.com/greasemonkey-btbm/190ffec9884e512712ba2ba9e4c1473e.js"></script><!--kg-card-end: html--><h2 id="watchdog-timer">Watchdog timer</h2><p>Note: Read more <a href="https://github.com/SpenceKonde/megaTinyCore/blob/master/megaavr/extras/Ref_Reset.md">here</a>.</p><p>Just enabling the WDT and resetting it.</p><!--kg-card-begin: html--><script src="https://gist.github.com/greasemonkey-btbm/53f081719fa538f132670bd62b578756.js"></script><!--kg-card-end: html--><h2 id="pin-interrupts">Pin interrupts</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2022/01/ATtiny824-interrupts.png" class="kg-image" alt="Notes on using the new ATtiny chips with the Arduino IDE" srcset="https://btbm.ch/content/images/size/w600/2022/01/ATtiny824-interrupts.png 600w, https://btbm.ch/content/images/size/w1000/2022/01/ATtiny824-interrupts.png 1000w, https://btbm.ch/content/images/2022/01/ATtiny824-interrupts.png 1143w" sizes="(min-width: 720px) 720px"><figcaption>Test circuit for the pin interrupt sketch</figcaption></figure><p>Note: Read more <a href="https://github.com/SpenceKonde/megaTinyCore/blob/master/megaavr/extras/PinInterrupts.md">here</a>.</p><!--kg-card-begin: html--><script src="https://gist.github.com/greasemonkey-btbm/0a9103d93c6269287545de033e3ad776.js"></script><!--kg-card-end: html--><h2 id="i2c">I2C</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2022/01/ATtiny824-I2C.png" class="kg-image" alt="Notes on using the new ATtiny chips with the Arduino IDE" srcset="https://btbm.ch/content/images/size/w600/2022/01/ATtiny824-I2C.png 600w, https://btbm.ch/content/images/size/w1000/2022/01/ATtiny824-I2C.png 1000w, https://btbm.ch/content/images/2022/01/ATtiny824-I2C.png 1147w" sizes="(min-width: 720px) 720px"><figcaption>Test circuit for the I2C sketch</figcaption></figure><p>Note: The test sketch is the <a href="https://github.com/jlesech/Eeprom24C01_02/blob/master/examples/WriteReadByte/WriteReadByte.ino">WriteReadByte.ino</a> from <a href="https://github.com/jlesech/Eeprom24C01_02">this</a> library. (Copyright © 2012  Julien Le Sech)</p><h2 id="1-wire-kind-of-dht11-temperature-and-humidity-sensor">1-Wire (kind of...) DHT11 temperature and humidity sensor</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2022/01/ATtiny824-DHT11.png" class="kg-image" alt="Notes on using the new ATtiny chips with the Arduino IDE" srcset="https://btbm.ch/content/images/size/w600/2022/01/ATtiny824-DHT11.png 600w, https://btbm.ch/content/images/size/w1000/2022/01/ATtiny824-DHT11.png 1000w, https://btbm.ch/content/images/2022/01/ATtiny824-DHT11.png 1144w" sizes="(min-width: 720px) 720px"><figcaption>Test circuit for the DHT11 sketch</figcaption></figure><p>NOTE: Library and example downloaded from <a href="https://www.microbot.it/en/product/153/DHT11-Humidity-and-Temperature-Digital-Sensor.html">microbot.it</a>. Change the pin allocation to PIN_PA4.</p><p>To be continued...</p>]]></content:encoded></item><item><title><![CDATA[Keithley 224 - Electrolytic capacitor replacement and EPROM backup]]></title><description><![CDATA[Ready to keep pumping electrons for the next 30 years]]></description><link>https://btbm.ch/keithley-224-electrolytic-capacitor-replacement-and-eprom-backup/</link><guid isPermaLink="false">61897e22e038c703f2d69a7e</guid><category><![CDATA[Test Equipment]]></category><category><![CDATA[Repair]]></category><dc:creator><![CDATA[Grease monkey]]></dc:creator><pubDate>Mon, 08 Nov 2021 21:00:26 GMT</pubDate><media:content url="https://btbm.ch/content/images/2021/11/Keithley-224-recap.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://btbm.ch/content/images/2021/11/Keithley-224-recap.jpg" alt="Keithley 224 - Electrolytic capacitor replacement and EPROM backup"><p>Judging from the date codes on the chips my 224 current source is a 1986 model. That makes it 35 years old. And although the Richey capacitors did not fail yet it is high time for a replacement.</p><p>Here is the list of capacitors to be replaced:</p><!--kg-card-begin: markdown--><table>
<thead>
<tr>
<th style="text-align:left">Designator</th>
<th style="text-align:left">Description</th>
<th style="text-align:right">Digi-Key part no.</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><strong>Display Board</strong></td>
<td style="text-align:left"></td>
<td style="text-align:right"></td>
</tr>
<tr>
<td style="text-align:left">C201</td>
<td style="text-align:left">10μF, 25V</td>
<td style="text-align:right"><a href="https://www.digikey.ch/product-detail/en/nichicon/UVY1E103MHD/493-12467-ND/2539646">493-12467-ND</a></td>
</tr>
<tr>
<td style="text-align:left"><strong>Mother Board</strong></td>
<td style="text-align:left"></td>
<td style="text-align:right"></td>
</tr>
<tr>
<td style="text-align:left">C101</td>
<td style="text-align:left">10000μF, 25V</td>
<td style="text-align:right"><a href="https://www.digikey.ch/products/en?keywords=493-7297-ND">493-7297-ND</a></td>
</tr>
<tr>
<td style="text-align:left">C103, C119, C120</td>
<td style="text-align:left">10μF, 25V</td>
<td style="text-align:right"><a href="https://www.digikey.ch/products/en?keywords=493-13463-1-ND">493-13463-1-ND</a></td>
</tr>
<tr>
<td style="text-align:left">C117</td>
<td style="text-align:left">330μF, 160V</td>
<td style="text-align:right"><a href="https://www.digikey.ch/product-detail/en/nichicon/TVX2D331MDD/493-14440-ND/1859040">493-14440-ND</a></td>
</tr>
<tr>
<td style="text-align:left">C121, C122</td>
<td style="text-align:left">1000μF, 35V</td>
<td style="text-align:right"><a href="https://www.digikey.ch/product-detail/en/nichicon/UVZ1V102MHD/493-1322-ND/589063">493-1322-ND</a></td>
</tr>
<tr>
<td style="text-align:left"><strong>Analog Board</strong></td>
<td style="text-align:left"></td>
<td style="text-align:right"></td>
</tr>
<tr>
<td style="text-align:left">C312, C315, C316, C324, C325, C327</td>
<td style="text-align:left">10μF, 25V</td>
<td style="text-align:right"><a href="https://www.digikey.ch/products/en?keywords=493-13463-1-ND">493-13463-1-ND</a></td>
</tr>
<tr>
<td style="text-align:left">C317, C323</td>
<td style="text-align:left">4.7μF, 350V</td>
<td style="text-align:right"><a href="https://www.digikey.ch/product-detail/en/nichicon/UVZ2V4R7MPD/493-1437-ND/589178">493-1437-ND</a></td>
</tr>
<tr>
<td style="text-align:left">C330</td>
<td style="text-align:left">1.5μF, 25V</td>
<td style="text-align:right"><a href="https://www.digikey.ch/product-detail/en/nichicon/UPJ1H1R5MDD1TD/493-11328-1-ND/4319456">493-11328-1-ND</a></td>
</tr>
</tbody>
</table>
<!--kg-card-end: markdown--><p>The lead spacing of some capacitors are not a perfect fit so if you want to be a stickler for neatness you may need to check each type.</p><h3 id="eprom-backup">EPROM backup</h3><p>The two EPROMs are easy to spot. They are socketed and have a sticker with the firmware version on them. Try to extract them gently.</p><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2021/11/Keithley-224-eprom.jpg" class="kg-image" alt="Keithley 224 - Electrolytic capacitor replacement and EPROM backup" srcset="https://btbm.ch/content/images/size/w600/2021/11/Keithley-224-eprom.jpg 600w, https://btbm.ch/content/images/size/w1000/2021/11/Keithley-224-eprom.jpg 1000w, https://btbm.ch/content/images/size/w1600/2021/11/Keithley-224-eprom.jpg 1600w, https://btbm.ch/content/images/2021/11/Keithley-224-eprom.jpg 2312w" sizes="(min-width: 720px) 720px"></figure><p>To read the contents I used my TL866II. The chip is the following. If you need the files send me a message. My firmware version is B1.</p><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2021/11/Xgpro.png" class="kg-image" alt="Keithley 224 - Electrolytic capacitor replacement and EPROM backup" srcset="https://btbm.ch/content/images/size/w600/2021/11/Xgpro.png 600w, https://btbm.ch/content/images/2021/11/Xgpro.png 763w" sizes="(min-width: 720px) 720px"></figure>]]></content:encoded></item><item><title><![CDATA[HP 35665A power supply repair No 2 (TRW P/N 095-10097, HP P/N 35672-67501)]]></title><description><![CDATA[The third time I repair it. I'm a pro now...]]></description><link>https://btbm.ch/hp-35665a-power-supply-repair-no-2-trw-p-n-095-10097-hp-p-n-35672-67501/</link><guid isPermaLink="false">612d390be038c703f2d6990a</guid><category><![CDATA[HP 35665A]]></category><category><![CDATA[Power Supplies]]></category><category><![CDATA[Repair]]></category><dc:creator><![CDATA[Grease monkey]]></dc:creator><pubDate>Tue, 31 Aug 2021 20:12:53 GMT</pubDate><media:content url="https://btbm.ch/content/images/2021/08/main-cap-blown.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://btbm.ch/content/images/2021/08/main-cap-blown.jpg" alt="HP 35665A power supply repair No 2 (TRW P/N 095-10097, HP P/N 35672-67501)"><p>A few days ago I was sitting in my lab, minding my own business, when I heard a faint low keyed buzz. It lasted for about 2-3 seconds and repeated itself every half a minute or so. I could not locate the source of the noise and sounded almost normal so I didn't pay much attention.</p><p>The next day I wanted to use my 35665A. I turned it on and then something blew. I immediately knew it was the power supply. I have already repaired it twice so no worries. There are no schematics for this PSU but it is not that difficult to troubleshoot. All components are through-hole and the traces are clearly visible.</p><h3 id="some-warnings-before-we-begin">Some warnings before we begin</h3><!--kg-card-begin: html--> <center><img src="https://btbm.ch/content/images/2021/08/ISO_7010_W012_SMALL-1.png" alt="HP 35665A power supply repair No 2 (TRW P/N 095-10097, HP P/N 35672-67501)"></center><!--kg-card-end: html--><blockquote>High voltage <strong>will kill you</strong> (mainly because it can stop your heart). If you mess around with mains voltages <strong>without knowing what you're doing</strong> you are eligible for a <a href="https://darwinawards.com/">Darwin Award</a> (Congratulations?).</blockquote><blockquote>If available use an <a href="https://www.peaktech.de/productdetail/kategorie/trenntransformator/produkt/p-2240.html">isolation transformer</a>. At minimum work behind a <a href="https://en.wikipedia.org/wiki/Earth_leakage_circuit_breaker">residual current circuit breaker</a>.</blockquote><blockquote>Do not connect your oscilloscope directly to this circuit. You will burn it. Use a high voltage differential probe instead.</blockquote><h3 id="the-repair">The repair</h3><p>I opened the PSU and immediately noticed the one of the main capacitors was swollen. But I knew that was not going to be the end of it. So I started measuring components and sure enough I found a bunch of burned diodes and transistors.</p><p>Q4 is an NTE2324 high voltage NPN but is hard to find. The replacement I used is the FJL6920. Due to the different package the original screw and nut will not fit. I used an M3x16.</p><p>I am not sure if Q5 was burned too but I changed it anyway (I had it in my lab from a previous repair). Here is a list of the components I used and their location.</p><!--kg-card-begin: markdown--><table>
<thead>
<tr>
<th>Designator</th>
<th>Type</th>
<th>Digikey ref</th>
</tr>
</thead>
<tbody>
<tr>
<td>Q4</td>
<td>FJL6920TU</td>
<td><a href="https://www.digikey.ch/product-detail/en/onsemi/FJL6920TU/FJL6920TU-ND/1057757">FJL6920TU-ND</a></td>
</tr>
<tr>
<td>Q5</td>
<td>STP16NF06</td>
<td><a href="https://www.digikey.ch/product-detail/en/stmicroelectronics/STP16NF06/497-2766-5-ND/603791"> 497-2766-5-ND</a></td>
</tr>
<tr>
<td>D13, D14, D15</td>
<td>1N5339BG</td>
<td><a href="https://www.digikey.ch/products/en?keywords=1n5339bg">1N5339BGOS-ND</a></td>
</tr>
<tr>
<td>D24, D25, D26</td>
<td>1N4004-T</td>
<td><a href="https://www.digikey.ch/product-detail/en/diodes-incorporated/1N4004-T/1N4004DICT-ND/160593">1N4004DICT-ND</a></td>
</tr>
<tr>
<td>C9, C10</td>
<td>200VXH1000MEFCSN25X45</td>
<td><a href="https://www.digikey.ch/product-detail/en/rubycon/200VXH1000MEFCSN25X45/1189-2836-ND/5057718">1189-2836-ND</a></td>
</tr>
<tr>
<td>Fuse</td>
<td>3AB 6-R</td>
<td><a href="https://www.digikey.ch/product-detail/en/bel-fuse-inc/3AB-6-R/507-2312-ND/1009960">507-2312-ND</a></td>
</tr>
</tbody>
</table>
<!--kg-card-end: markdown--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/08/components.jpg" class="kg-image" alt="HP 35665A power supply repair No 2 (TRW P/N 095-10097, HP P/N 35672-67501)" srcset="https://btbm.ch/content/images/size/w600/2021/08/components.jpg 600w, https://btbm.ch/content/images/size/w1000/2021/08/components.jpg 1000w, https://btbm.ch/content/images/size/w1600/2021/08/components.jpg 1600w, https://btbm.ch/content/images/2021/08/components.jpg 2309w" sizes="(min-width: 720px) 720px"><figcaption>The affected components</figcaption></figure><p>The lesson I learned is that you should not keep old equipment plugged unless you have recaped them.</p><h3 id="some-more-advice-on-repairing-the-trw-p-n-095-10097">Some more advice on repairing the TRW P/N 095-10097</h3><p>1) It helps a lot to you connect the PSU to an outlet with a switch that is easily accessible. This way you can quickly turn it off when the magic smoke escapes.</p><p>2) Even without the covers this PSU is hard to probe. To be have access to both boards you need to desolder the earth wire of the transformer's shield. I crimped on it a barrel connector (<a href="https://www.digikey.ch/product-detail/en/3m/MVU14-156DMK/920050-02-ND/31320">like this one</a>).</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/08/grounding-2-1.jpg" class="kg-image" alt="HP 35665A power supply repair No 2 (TRW P/N 095-10097, HP P/N 35672-67501)" srcset="https://btbm.ch/content/images/size/w600/2021/08/grounding-2-1.jpg 600w, https://btbm.ch/content/images/size/w1000/2021/08/grounding-2-1.jpg 1000w, https://btbm.ch/content/images/size/w1600/2021/08/grounding-2-1.jpg 1600w, https://btbm.ch/content/images/2021/08/grounding-2-1.jpg 2312w" sizes="(min-width: 720px) 720px"><figcaption>Cut this wire if you want to test the PSU opened</figcaption></figure><p>3) It is also practical to make a switch like the one in the picture.</p><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2021/08/switch.jpg" class="kg-image" alt="HP 35665A power supply repair No 2 (TRW P/N 095-10097, HP P/N 35672-67501)" srcset="https://btbm.ch/content/images/size/w600/2021/08/switch.jpg 600w, https://btbm.ch/content/images/2021/08/switch.jpg 756w" sizes="(min-width: 720px) 720px"></figure><p>Every time I open this PSU I swear that this will be the time that I make the schematic but till now I keep finding the faults in the first 10 minutes of probing. Maybe next time...</p>]]></content:encoded></item><item><title><![CDATA[HP 35665A Plot to PC directly from GPIB]]></title><description><![CDATA[I can finally save screenshots from my HP 35665A directly to my PC]]></description><link>https://btbm.ch/hp-35665a-plot-to-pc-directly-from-gpib/</link><guid isPermaLink="false">60ccfcb9e038c703f2d69762</guid><category><![CDATA[HP 35665A]]></category><category><![CDATA[Test Equipment]]></category><dc:creator><![CDATA[Grease monkey]]></dc:creator><pubDate>Fri, 18 Jun 2021 21:51:54 GMT</pubDate><media:content url="https://btbm.ch/content/images/2021/06/HP35665A-noise-floor-zoomed-1.gif" medium="image"/><content:encoded><![CDATA[<h3 id="references-links-">References/links:</h3><ul><li>Software: HP 7470A emulator from the <a href="http://www.ke5fx.com/gpib/readme.htm">KE5FX GPIB Toolkit</a></li><li>Hardware: NI <a href="https://www.ni.com/en-us/support/model.gpib-usb-hs.html">USB-GPIB-HS</a></li><li>A collection of <a href="http://ftb.ko4bb.com/getsimple/index.php?id=manuals&amp;dir=HP_Agilent/HP_35665A_Dynamic_Signal_Analyzer">manuals and utilities</a> for the 35665A from <a href="http://www.ko4bb.com/getsimple/">KO4BB</a></li></ul><img src="https://btbm.ch/content/images/2021/06/HP35665A-noise-floor-zoomed-1.gif" alt="HP 35665A Plot to PC directly from GPIB"><p>Until now in order to transfer a screenshot from my 35665A I needed to save it in a floppy and open it with the HP7470A emulator software as described <a href="https://btbm.ch/hp-35665a-plot-print-to-pc/">here</a>. The HP7470A emulator can work as a GPIB plotter only with NI's 488.2 drivers and the adapter needs to be device GPIB0. I tried to make it work with my Keysight 82357B with no success.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/USB-GPIB-HS.jpg" class="kg-image" alt="HP 35665A Plot to PC directly from GPIB" srcset="https://btbm.ch/content/images/size/w600/2021/06/USB-GPIB-HS.jpg 600w, https://btbm.ch/content/images/2021/06/USB-GPIB-HS.jpg 1000w" sizes="(min-width: 720px) 720px"><figcaption><a href="https://www.ni.com/en-us/support/model.gpib-usb-hs.html">USB-GPIB-HS</a></figcaption></figure><p>Both of my USB-to-GIPB devices are bought from eBay for less than 100 USD each. The Keysight one is definitely a copy but works just fine. The NI one looks original. Even the included CD is pressed (i.e. silver, not green at the bottom) and with a high quality print-job. Anyway it looks and feels original.</p><p>It took me some time so set everything up so I am writing this is a step-by-step guide hoping to save you some.</p><h3 id="preparing-your-computer">Preparing your computer</h3><p>First install the 488.2 driver. I used version 16.0 included in the CD. Connect the <a href="https://www.ni.com/en-us/support/model.gpib-usb-hs.html">USB-GPIB-HS</a> adapter and launch NI MAX.</p><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2021/06/NI-MAX.png" class="kg-image" alt="HP 35665A Plot to PC directly from GPIB" srcset="https://btbm.ch/content/images/size/w600/2021/06/NI-MAX.png 600w, https://btbm.ch/content/images/2021/06/NI-MAX.png 783w" sizes="(min-width: 720px) 720px"></figure><p>You should be able to see it under "Devices and Interfaces". If the GPIB interface ID is not GPIB0 change it. If you have a GPIB device connected to it click on "Scan for Instruments" to find it. This way you can also check if it is actually working.</p><p>You also need to install the amazing <a href="http://www.ke5fx.com/gpib/readme.htm">KE5FX GPIB Toolkit</a>. This collection of programs makes you wonder why big companies can't make great software like this one.</p><h3 id="preparing-the-35665a">Preparing the 35665A</h3><blockquote>Keeping with the tradition of HP manuals this is a <code><strong>[Hardkey]</strong></code>, this is a <code>[SOFTKEY]</code> (the buttons at the right of the screen) and this is a <code>[SOFTKEY WITH AN <strong>OPTION</strong>]</code> selected.</blockquote><p>To setup the GPIB do the following:<br><code><strong>[Local/HP-IB]</strong></code><strong> </strong>brinks up the GPIB menu<br><code>[PLOTTER ADDRESS]</code> <code><strong>[7]</strong></code><strong> </strong><code>[ENTER]</code> set the plotter address (7 is arbitrary)<br><code>[SYSTEM CONTROLLR]</code> puts the 35665A in controller mode</p><p>To setup the plot do the following:<br><code><strong>[Plot/Print]</strong></code><strong> </strong>brinks up the plot menu<br><code>[MORE SETUP]</code> <br><code>[OUTPUT TO <strong>HPIB</strong> FILE]</code> make sure you have FILE selected <br><code>[DEVICE IS <strong>PLOT</strong> PRNT]</code> print is a screen dump and plot outputs the data<br><code>[TITLE LINE 1]</code> write a title for your plot if you wish (line 2 is also available) <br><code>[RETURN]</code></p><h3 id="plotting">Plotting</h3><p>Launch the HP 7470A emulator and select the plotter address as shown in the image:</p><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2021/06/7074A-select-address.png" class="kg-image" alt="HP 35665A Plot to PC directly from GPIB" srcset="https://btbm.ch/content/images/size/w600/2021/06/7074A-select-address.png 600w, https://btbm.ch/content/images/size/w1000/2021/06/7074A-select-address.png 1000w, https://btbm.ch/content/images/2021/06/7074A-select-address.png 1282w" sizes="(min-width: 720px) 720px"></figure><p>Now press <code>w</code> or click on <code>Acquire &gt; Wait for device-initiated plot</code> </p><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2021/06/7074A-waiting.png" class="kg-image" alt="HP 35665A Plot to PC directly from GPIB" srcset="https://btbm.ch/content/images/size/w600/2021/06/7074A-waiting.png 600w, https://btbm.ch/content/images/size/w1000/2021/06/7074A-waiting.png 1000w, https://btbm.ch/content/images/2021/06/7074A-waiting.png 1282w" sizes="(min-width: 720px) 720px"></figure><p>To send a plot from the 35665A press <code><strong>[Plot/Print]</strong></code><strong> </strong>and<strong> </strong><code>[START PLOT/PRNT]</code></p><p>Your plot should arrive promptly.</p><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2021/06/7074A-plot.png" class="kg-image" alt="HP 35665A Plot to PC directly from GPIB" srcset="https://btbm.ch/content/images/size/w600/2021/06/7074A-plot.png 600w, https://btbm.ch/content/images/size/w1000/2021/06/7074A-plot.png 1000w, https://btbm.ch/content/images/2021/06/7074A-plot.png 1282w" sizes="(min-width: 720px) 720px"></figure><p>Now press any key to exit the wait mode and press <code>s</code> or click on <code>File &gt; Save image or HP GL/2 data...</code> to save it.</p>]]></content:encoded></item><item><title><![CDATA[Rigol DG1022 - How to create waveforms with python]]></title><description><![CDATA[Another useful python script]]></description><link>https://btbm.ch/rigol-dg1022-how-to-create-waveforms-with-python/</link><guid isPermaLink="false">60c3ce24e038c703f2d696e3</guid><category><![CDATA[Test Equipment]]></category><dc:creator><![CDATA[Grease monkey]]></dc:creator><pubDate>Fri, 11 Jun 2021 22:04:04 GMT</pubDate><media:content url="https://btbm.ch/content/images/2021/06/header.png" medium="image"/><content:encoded><![CDATA[<img src="https://btbm.ch/content/images/2021/06/header.png" alt="Rigol DG1022 - How to create waveforms with python"><p>Have you ever tried using Rigol's Ultrawave software for the DG1022 function generator? Well... How can I put it mildly? It sucks.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/Ultrawave.png" class="kg-image" alt="Rigol DG1022 - How to create waveforms with python" srcset="https://btbm.ch/content/images/size/w600/2021/06/Ultrawave.png 600w, https://btbm.ch/content/images/2021/06/Ultrawave.png 805w" sizes="(min-width: 720px) 720px"><figcaption>CAUTION! Mental health hazzard. Consult your doctor before using this software.</figcaption></figure><p>The DG1022 is a great waveform generator though. It has served me well for many years. I recently needed it to output some custom waveforms. One option would have been to write the waveforms in txt files and load them with a USB stick. Rigol's formatting is really simple. But moving the stick back and forth didn't seem like a good idea.</p><p>So I decided to write a Python script that saves waveforms to the non-volatile memory of the DG1022. Since I have no idea what kind of non-volatile memory it uses and in order not to stress it with multiple writes I also included a function that writes the waveform directly to the volatile memory and outputs it on channel 1.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/image.png" class="kg-image" alt="Rigol DG1022 - How to create waveforms with python" srcset="https://btbm.ch/content/images/size/w600/2021/06/image.png 600w, https://btbm.ch/content/images/2021/06/image.png 640w"><figcaption>A sample waveform plotted from the script</figcaption></figure><h3 id="the-script">The script</h3><!--kg-card-begin: html--><script src="https://gist.github.com/greasemonkey-btbm/69f99bf143f76cac364469778ccfd940.js"></script><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[Testing the precision clipper circuit]]></title><description><![CDATA[Testing my theory]]></description><link>https://btbm.ch/testing-the-op-amp-clipper-circuit/</link><guid isPermaLink="false">60bd27b7e038c703f2d69617</guid><category><![CDATA[Pointless]]></category><category><![CDATA[Analog computing]]></category><dc:creator><![CDATA[Grease monkey]]></dc:creator><pubDate>Sun, 06 Jun 2021 20:33:49 GMT</pubDate><media:content url="https://btbm.ch/content/images/2021/06/title.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://btbm.ch/content/images/2021/06/title.jpg" alt="Testing the precision clipper circuit"><p>To test my clipper design I have built the following circuit:</p><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2021/06/positive-and-negative-circuit.png" class="kg-image" alt="Testing the precision clipper circuit" srcset="https://btbm.ch/content/images/size/w600/2021/06/positive-and-negative-circuit.png 600w, https://btbm.ch/content/images/size/w1000/2021/06/positive-and-negative-circuit.png 1000w, https://btbm.ch/content/images/size/w1600/2021/06/positive-and-negative-circuit.png 1600w, https://btbm.ch/content/images/2021/06/positive-and-negative-circuit.png 1795w" sizes="(min-width: 720px) 720px"></figure><p>As you can see it a positive clipper followed by a negative clipper. The op amp used is the MAX44252 from TI. It was the fastest 4-ply op amp in my lab. I wish I had some LT6015s that Analog Devices used in their circuit. This is my test setup:</p><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2021/06/test-setup.jpg" class="kg-image" alt="Testing the precision clipper circuit" srcset="https://btbm.ch/content/images/size/w600/2021/06/test-setup.jpg 600w, https://btbm.ch/content/images/size/w1000/2021/06/test-setup.jpg 1000w, https://btbm.ch/content/images/size/w1600/2021/06/test-setup.jpg 1600w, https://btbm.ch/content/images/2021/06/test-setup.jpg 2312w" sizes="(min-width: 720px) 720px"></figure><p>Let's go for the jugular first. How does it compare to AD's circuit at 30kH?</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/clampingspeedlt6105-2.png" class="kg-image" alt="Testing the precision clipper circuit" srcset="https://btbm.ch/content/images/size/w600/2021/06/clampingspeedlt6105-2.png 600w, https://btbm.ch/content/images/2021/06/clampingspeedlt6105-2.png 900w" sizes="(min-width: 720px) 720px"><figcaption>Analog Devices circuit @30kHz 7Vpp</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/30kHz.png" class="kg-image" alt="Testing the precision clipper circuit" srcset="https://btbm.ch/content/images/size/w600/2021/06/30kHz.png 600w, https://btbm.ch/content/images/size/w1000/2021/06/30kHz.png 1000w, https://btbm.ch/content/images/2021/06/30kHz.png 1024w" sizes="(min-width: 720px) 720px"><figcaption>Grease monkey's circuit @30kHz 8Vpp</figcaption></figure><p>I think it is doing better :). Let me zoom the clipping in to be more legible.</p><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2021/06/30kHz-zoom1.png" class="kg-image" alt="Testing the precision clipper circuit" srcset="https://btbm.ch/content/images/size/w600/2021/06/30kHz-zoom1.png 600w, https://btbm.ch/content/images/size/w1000/2021/06/30kHz-zoom1.png 1000w, https://btbm.ch/content/images/2021/06/30kHz-zoom1.png 1024w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2021/06/30kHz-zoom2.png" class="kg-image" alt="Testing the precision clipper circuit" srcset="https://btbm.ch/content/images/size/w600/2021/06/30kHz-zoom2.png 600w, https://btbm.ch/content/images/size/w1000/2021/06/30kHz-zoom2.png 1000w, https://btbm.ch/content/images/2021/06/30kHz-zoom2.png 1024w" sizes="(min-width: 720px) 720px"></figure><p>Now let's test it on different frequencies. The input signal is 8Vpp and the clipping happens at +2V and -2V.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/1kHz.png" class="kg-image" alt="Testing the precision clipper circuit" srcset="https://btbm.ch/content/images/size/w600/2021/06/1kHz.png 600w, https://btbm.ch/content/images/size/w1000/2021/06/1kHz.png 1000w, https://btbm.ch/content/images/2021/06/1kHz.png 1024w" sizes="(min-width: 720px) 720px"><figcaption>1 kHz. Perfect.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/20kHz.png" class="kg-image" alt="Testing the precision clipper circuit" srcset="https://btbm.ch/content/images/size/w600/2021/06/20kHz.png 600w, https://btbm.ch/content/images/size/w1000/2021/06/20kHz.png 1000w, https://btbm.ch/content/images/2021/06/20kHz.png 1024w" sizes="(min-width: 720px) 720px"><figcaption>20kHz. OK...</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/40kHz.png" class="kg-image" alt="Testing the precision clipper circuit" srcset="https://btbm.ch/content/images/size/w600/2021/06/40kHz.png 600w, https://btbm.ch/content/images/size/w1000/2021/06/40kHz.png 1000w, https://btbm.ch/content/images/2021/06/40kHz.png 1024w" sizes="(min-width: 720px) 720px"><figcaption>40kHz. Kind of OK.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/75kHz.png" class="kg-image" alt="Testing the precision clipper circuit" srcset="https://btbm.ch/content/images/size/w600/2021/06/75kHz.png 600w, https://btbm.ch/content/images/size/w1000/2021/06/75kHz.png 1000w, https://btbm.ch/content/images/2021/06/75kHz.png 1024w" sizes="(min-width: 720px) 720px"><figcaption>75kHz. Still better than AD :)</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/150kHz.png" class="kg-image" alt="Testing the precision clipper circuit" srcset="https://btbm.ch/content/images/size/w600/2021/06/150kHz.png 600w, https://btbm.ch/content/images/size/w1000/2021/06/150kHz.png 1000w, https://btbm.ch/content/images/2021/06/150kHz.png 1024w" sizes="(min-width: 720px) 720px"><figcaption>150kHz. The op amp is trying hard to keep up...&nbsp;</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/300kHz.png" class="kg-image" alt="Testing the precision clipper circuit" srcset="https://btbm.ch/content/images/size/w600/2021/06/300kHz.png 600w, https://btbm.ch/content/images/size/w1000/2021/06/300kHz.png 1000w, https://btbm.ch/content/images/2021/06/300kHz.png 1024w" sizes="(min-width: 720px) 720px"><figcaption>300kHz. I call it quits.</figcaption></figure><p>Just for fun I changed the op amp with a really slow LM324.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/LM324-3kHz.png" class="kg-image" alt="Testing the precision clipper circuit" srcset="https://btbm.ch/content/images/size/w600/2021/06/LM324-3kHz.png 600w, https://btbm.ch/content/images/size/w1000/2021/06/LM324-3kHz.png 1000w, https://btbm.ch/content/images/2021/06/LM324-3kHz.png 1024w" sizes="(min-width: 720px) 720px"><figcaption>LM324 @ 3kHz. Terrible.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/LM324-0.5kHz.png" class="kg-image" alt="Testing the precision clipper circuit" srcset="https://btbm.ch/content/images/size/w600/2021/06/LM324-0.5kHz.png 600w, https://btbm.ch/content/images/size/w1000/2021/06/LM324-0.5kHz.png 1000w, https://btbm.ch/content/images/2021/06/LM324-0.5kHz.png 1024w" sizes="(min-width: 720px) 720px"><figcaption>LM324 @ 500Hz.</figcaption></figure>]]></content:encoded></item><item><title><![CDATA[Precision Positive & Negative Clipper using any op amp]]></title><description><![CDATA[A different approach to the classic op amp clipper circuits]]></description><link>https://btbm.ch/precision-positive-negative-clipper-using-any-op-amp/</link><guid isPermaLink="false">60bb4a4ae038c703f2d693e8</guid><category><![CDATA[Pointless]]></category><category><![CDATA[Analog computing]]></category><dc:creator><![CDATA[Grease monkey]]></dc:creator><pubDate>Sun, 06 Jun 2021 10:27:26 GMT</pubDate><media:content url="https://btbm.ch/content/images/2021/06/clipper-breadboard.jpg" medium="image"/><content:encoded><![CDATA[<h3 id="references-links-">References/links:</h3><ul><li><a href="https://github.com/greasemonkey-btbm/Precision-Positive-and-Negative-Clipper-op-amp-circuit">LTSpice files</a> (github)</li></ul><img src="https://btbm.ch/content/images/2021/06/clipper-breadboard.jpg" alt="Precision Positive & Negative Clipper using any op amp"><p>For no particular reason I was looking at clipper circuits. If you search google for "clipper circuit op amp" you get variations of this circuit:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/positive_clipper.jpg" class="kg-image" alt="Precision Positive & Negative Clipper using any op amp" srcset="https://btbm.ch/content/images/2021/06/positive_clipper.jpg 600w"><figcaption>Image taken from tutorialspoint.com</figcaption></figure><p>This circuit works like a voltage follower when D1 conducts (i.e. Vi &lt; Vref) and outputs Vref when not (i.e. Vi &gt; Vref). For any practical application it needs an output buffer too.</p><p>Even Analog Devices had <a href="https://www.analog.com/en/technical-articles/op-amp-precision-positive-negative-clipper-using-lt6015-lt6016-lt6017.html">this circuit</a> to offer:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/positivenegativeclipper.png" class="kg-image" alt="Precision Positive & Negative Clipper using any op amp" srcset="https://btbm.ch/content/images/size/w600/2021/06/positivenegativeclipper.png 600w, https://btbm.ch/content/images/2021/06/positivenegativeclipper.png 765w" sizes="(min-width: 720px) 720px"><figcaption>LT6015 Precision Positive &amp; Negative Clipper</figcaption></figure><p>Which cannot hold its own at 30kHz and also needs a special kind of op amp (when the diodes are not conducting the inverting and non inverting inputs are not at the same potential. The op amp should be able to tolerate this. See Analog Device's <a href="https://www.analog.com/en/technical-articles/op-amp-precision-positive-negative-clipper-using-lt6015-lt6016-lt6017.html">article</a> for more details.).</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/clampingspeedlt6105.png" class="kg-image" alt="Precision Positive & Negative Clipper using any op amp" srcset="https://btbm.ch/content/images/size/w600/2021/06/clampingspeedlt6105.png 600w, https://btbm.ch/content/images/2021/06/clampingspeedlt6105.png 900w" sizes="(min-width: 720px) 720px"><figcaption>LT6105 Clamping Speed</figcaption></figure><p>I mean WTF? Are we so far gone that we call this precision? What has this world come to? Sunk deep into depression about humanity's prospects I turned to one of my prayer books for solace. And, lo and behold, the answer was revealed to me on page 359 of the treasure trove of arcane wisdom called <a href="https://www.analog.com/en/education/education-library/nonlinear-circuits-handbook.html">nonlinear circuits handbook</a>. Quite ironically by Analog Devices.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/prayer-book.jpg" class="kg-image" alt="Precision Positive & Negative Clipper using any op amp" srcset="https://btbm.ch/content/images/size/w600/2021/06/prayer-book.jpg 600w, https://btbm.ch/content/images/size/w1000/2021/06/prayer-book.jpg 1000w, https://btbm.ch/content/images/size/w1600/2021/06/prayer-book.jpg 1600w, https://btbm.ch/content/images/2021/06/prayer-book.jpg 2312w" sizes="(min-width: 720px) 720px"><figcaption>Revelations on page 359</figcaption></figure><h3 id="a-better-solution">A better solution</h3><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2021/06/p359.png" class="kg-image" alt="Precision Positive & Negative Clipper using any op amp" srcset="https://btbm.ch/content/images/size/w600/2021/06/p359.png 600w, https://btbm.ch/content/images/2021/06/p359.png 834w" sizes="(min-width: 720px) 720px"></figure><p>This circuit can be easily modified to either a positive or a negative clipper. If we set R3 to 0Ω and all other resistors to the same value the break point's X and Y coordinates become (-VR, -VR), the slope before -VR 1 and after -VR 0 (X-axis is VIN and Y-axis EO). That is a positive clipper. For a negative one we set R2 to 0Ω and all others the same.</p><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2021/06/Positive-clipper.png" class="kg-image" alt="Precision Positive & Negative Clipper using any op amp" srcset="https://btbm.ch/content/images/size/w600/2021/06/Positive-clipper.png 600w, https://btbm.ch/content/images/size/w1000/2021/06/Positive-clipper.png 1000w, https://btbm.ch/content/images/2021/06/Positive-clipper.png 1418w" sizes="(min-width: 720px) 720px"></figure><p>I will now attempt to explain the circuit:</p><ul><li>Since all resistors have the same value U1 and U2 work as unity gain inverting amplifiers.</li><li>When the sum \(Vin+Vr &lt; 0\) then D1 conducts and: $$Ed1 = -(Vin+Vr)$$ $$Ed2 = 0$$</li><li>When the sum \(Vin+Vr &gt; 0\) then D2 conducts and: $$Ed1 = 0$$ $$Ed2 = 0$$</li><li>Op amp U2 sums Ed1, Ed2 and Vr and inverts them: $$Eo = -(Ed1+Ed2+Vr)$$</li><li>So when \(Vin &gt; -Vr\) $$Eo = - (0+0-0.6) = 0.6V$$</li><li>And when \(Vin &lt; -Vr\) $$Eo = - ( -(Vin-0.6)+0-0.6) = Vin$$</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/sim1.png" class="kg-image" alt="Precision Positive & Negative Clipper using any op amp" srcset="https://btbm.ch/content/images/size/w600/2021/06/sim1.png 600w, https://btbm.ch/content/images/2021/06/sim1.png 995w" sizes="(min-width: 720px) 720px"><figcaption>Vin and Eo</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/sim2.png" class="kg-image" alt="Precision Positive & Negative Clipper using any op amp" srcset="https://btbm.ch/content/images/size/w600/2021/06/sim2.png 600w, https://btbm.ch/content/images/2021/06/sim2.png 995w" sizes="(min-width: 720px) 720px"><figcaption>Ed1 and Ed2</figcaption></figure><p>One drawback of this circuit is that you need to allow enough headroom for Ed1 or else it will clip at the op amp's positive rail and distort the output signal. Here's what happens when Er = -3V (the voltage rails of the op amp are +6V and -6V):</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/sim3.png" class="kg-image" alt="Precision Positive & Negative Clipper using any op amp" srcset="https://btbm.ch/content/images/size/w600/2021/06/sim3.png 600w, https://btbm.ch/content/images/2021/06/sim3.png 995w" sizes="(min-width: 720px) 720px"><figcaption>Clipping when Ed1 reaches the limits of the op amp</figcaption></figure><p>A negative clipper would look like this:</p><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2021/06/Negative-clipper.png" class="kg-image" alt="Precision Positive & Negative Clipper using any op amp" srcset="https://btbm.ch/content/images/size/w600/2021/06/Negative-clipper.png 600w, https://btbm.ch/content/images/size/w1000/2021/06/Negative-clipper.png 1000w, https://btbm.ch/content/images/2021/06/Negative-clipper.png 1489w" sizes="(min-width: 720px) 720px"></figure>]]></content:encoded></item><item><title><![CDATA[A USB power supply for the tekprobe interface]]></title><description><![CDATA[A compact power supply for the tekprobe interface]]></description><link>https://btbm.ch/a-usb-power-supply-for-the-tekprobe-interface/</link><guid isPermaLink="false">60b23371e038c703f2d69196</guid><category><![CDATA[Power Supplies]]></category><category><![CDATA[Test Equipment]]></category><dc:creator><![CDATA[Grease monkey]]></dc:creator><pubDate>Fri, 04 Jun 2021 15:50:26 GMT</pubDate><media:content url="https://btbm.ch/content/images/2021/05/tekprobe-psu.png" medium="image"/><content:encoded><![CDATA[<h3 id="references-links-">References/links:</h3><ul><li><a href="https://github.com/greasemonkey-btbm/Tekprobe-USB-power-supply">Project files</a> (github)</li><li>The <a href="https://www.eevblog.com/forum/projects/tektronix-tekprobe-power-supply-for-agilent-rigol-and-other-oscilloscopes/">original circuit</a> on the EEVBlog forum post by <a href="https://www.eevblog.com/forum/profile/?u=31556">Jay_Diddy_B</a></li><li>Analog devices <a href="https://www.analog.com/en/products/lt3580.html">LT3580</a></li><li>Analog devices <a href="https://www.analog.com/en/products/lt3032.html">LT3032</a></li></ul><img src="https://btbm.ch/content/images/2021/05/tekprobe-psu.png" alt="A USB power supply for the tekprobe interface"><p>Some time ago I wrote a post about <a href="https://btbm.ch/powering-the-tektronix-ada400a-differential-preamplifier/">powering my ADA400A Differential Preamplifier from an external source</a>. Although this solution works fine it is not practical. Every time I need to use <a href="https://btbm.ch/powering-the-tektronix-ada400a-differential-preamplifier/">my ADA400A</a> I need wire and setup my DP832 using all it's channels (which I may need for something else).</p><p>The other option for powering a TEKPROBE device is the Tektronix 1103 power supply which costs about USD3500 new or around USD250 used from ebay. It is also quite bulky. So I thought a small USB power supply would be perfect. Fortunately other people had the same idea too. I found a project in the EEVBlog forum designed by the user Jay_Diddy_B.</p><p>The circuit is very straightforward. The LT3580E creates through the transformer 4 power rails (±16V, ±6V) which feed the LT3032 regulators. The regulators make the final (±15V, ±5V) rails that supply the probe.</p><p>The circuit in my design is exactly the same but I made some changes to make the device smaller and the assembly easier. First I designed it around a smaller aluminum enclosure (55x60mm). The pcb screws on the enclosure and the lid is not used. The BNC jack is directly soldered to an RG-58 cable which exits the enclosure through a metal cable gland. The only mechanical work required is a 12mm hole for the cable gland. I also added a terminal for easy access to the tekprobe lines.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/tekprobe-siglent.jpg" class="kg-image" alt="A USB power supply for the tekprobe interface" srcset="https://btbm.ch/content/images/size/w600/2021/06/tekprobe-siglent.jpg 600w, https://btbm.ch/content/images/size/w1000/2021/06/tekprobe-siglent.jpg 1000w, https://btbm.ch/content/images/size/w1600/2021/06/tekprobe-siglent.jpg 1600w, https://btbm.ch/content/images/2021/06/tekprobe-siglent.jpg 2312w" sizes="(min-width: 720px) 720px"><figcaption>Connected to an oscilloscope</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/tekprobe-psu-pcb.jpg" class="kg-image" alt="A USB power supply for the tekprobe interface" srcset="https://btbm.ch/content/images/size/w600/2021/06/tekprobe-psu-pcb.jpg 600w, https://btbm.ch/content/images/size/w1000/2021/06/tekprobe-psu-pcb.jpg 1000w, https://btbm.ch/content/images/size/w1600/2021/06/tekprobe-psu-pcb.jpg 1600w, https://btbm.ch/content/images/2021/06/tekprobe-psu-pcb.jpg 2309w" sizes="(min-width: 720px) 720px"><figcaption>Back side</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/tekprobe-fluke87V.jpg" class="kg-image" alt="A USB power supply for the tekprobe interface" srcset="https://btbm.ch/content/images/size/w600/2021/06/tekprobe-fluke87V.jpg 600w, https://btbm.ch/content/images/size/w1000/2021/06/tekprobe-fluke87V.jpg 1000w, https://btbm.ch/content/images/size/w1600/2021/06/tekprobe-fluke87V.jpg 1600w, https://btbm.ch/content/images/2021/06/tekprobe-fluke87V.jpg 2312w" sizes="(min-width: 720px) 720px"><figcaption>Compared to a Fluke 87V</figcaption></figure><p>A bummer is that it cannot be powered from the USB ports of my SIGLENT SDS2104X Plus. Apparently they cannot provide enough current. Or perhaps it needs a USB IC to negotiate the power of the port? I had success from the the USB ports of my RIGOL DP832 and DG1022 though. Normally I power it from a phone charger.</p><p>The <a href="https://github.com/greasemonkey-btbm/Tekprobe-USB-power-supply">design files</a> contain the whole Altium Designer project, gerbers, bill of materials, notes etc. Finally if you decide to build it let me know and make sure you read the assembly instructions first.</p><h2 id="noise-measurements">Noise Measurements</h2><p>The TEKPROBE USB power supply is sure to introduce some noise to the measurement due to the fact that it is a switching power supply. Hopefully the LT3032 regulators and the internal power supply rejection of the ADA400A will be enough to not make a difference. Let's see.</p><h3 id="0-100khz">0-100kHz</h3><p>To see how much noise the switching power supply introduces to the ADA400A I compare the spectral noise density when it is powered by a linear power supply (RIGOL DP832) with that of when it powered by the USB power supply. The measurements are made with my HP 35665A dynamic signal analyzer. The ADA400A settings are gain:100x, Upper Bandwidth: Full.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/HP35665A-noise-floor-1.gif" class="kg-image" alt="A USB power supply for the tekprobe interface"><figcaption>Spectral noise density full scale. Not much to see here.</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/HP35665A-noise-floor-zoomed.gif" class="kg-image" alt="A USB power supply for the tekprobe interface"><figcaption>Spectral noise density zoomed in</figcaption></figure><p>It is obvious that the difference is negligible. Now to test some signals. The lowest level that the function generator of the HP 35665A is 0.176mVrms. I feed this signal (at 50kHz) to the ADA400A at gains 0.1x and 100x. The diagrams clearly show that this very small signal can be distinguished from the noise in both cases.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/179uVrms-50kHz-0.1x.gif" class="kg-image" alt="A USB power supply for the tekprobe interface"><figcaption>Source: 0.176mVrms ADA400A gain: 0.1x</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/179uVrms-50kHz-100x.gif" class="kg-image" alt="A USB power supply for the tekprobe interface"><figcaption>Source: 0.176mVrms ADA400A gain: 100x</figcaption></figure><h3 id="higher-frequencies">Higher frequencies</h3><p>Just out of curiosity I wanted to see what happened to higher frequencies so I connected the ADA400A to my HP 8568A spectrum analyzer. Unfortunately the input impedance of the instrument  is 50Ω and the ADA400A's has a high impedance output (1MΩ) so the measurements are more qualitative than quantitative. The ADA400A settings are gain:100x, Upper Bandwidth: Full.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/HP8568A-Noise-floor.gif" class="kg-image" alt="A USB power supply for the tekprobe interface"><figcaption>Green: Powered by USB, Pink: Powered by DP832</figcaption></figure><p>It seems that something interesting seems to be happening at around 219kHz although the switching frequency should be around 1MHz. If I set the Upper Bandwidth of the ADA400A to 100Hz you can see it (945kHz).</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/06/HP8568A-100x-100Hz-BW-1.gif" class="kg-image" alt="A USB power supply for the tekprobe interface"><figcaption>Green: Powered by USB, Pink: Powered by DP832</figcaption></figure><p>Who knows? I will leave it for the future historians to decide what went wrong. For the time being I will call the TEKPROBE USB power supply "good enough".</p>]]></content:encoded></item><item><title><![CDATA[Keithley 196 - EPROM and EEPROM backup]]></title><description><![CDATA[Backing up the non-volatile memory of my Keithley 196]]></description><link>https://btbm.ch/keithley-196-eprom-and-eeprom-backup/</link><guid isPermaLink="false">607ff3b9e038c703f2d69109</guid><category><![CDATA[Test Equipment]]></category><dc:creator><![CDATA[Grease monkey]]></dc:creator><pubDate>Wed, 21 Apr 2021 10:38:21 GMT</pubDate><media:content url="https://btbm.ch/content/images/2021/04/main2.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://btbm.ch/content/images/2021/04/main2.jpg" alt="Keithley 196 - EPROM and EEPROM backup"><p>Memory chips eventually fail. So one of the things you must do when you buy an old piece of equipment is back it up. The only tool required is a programmer  like the <a href="http://www.xgecu.com/en/TL866_main.html">TL866II Plus</a> I am using. The procedure is pretty much straightforward. Remove the ICs from their sockets, read their contents with the programmer and put them back in.</p><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2021/04/lifter.jpg" class="kg-image" alt="Keithley 196 - EPROM and EEPROM backup" srcset="https://btbm.ch/content/images/size/w600/2021/04/lifter.jpg 600w, https://btbm.ch/content/images/size/w1000/2021/04/lifter.jpg 1000w, https://btbm.ch/content/images/size/w1600/2021/04/lifter.jpg 1600w, https://btbm.ch/content/images/2021/04/lifter.jpg 2312w" sizes="(min-width: 720px) 720px"></figure><p>Be sure to be gentle when you are prying them out because you can bend or break their legs. An IC lifter like <a href="https://www.wiha.com/int/en/tools/screwdrivers/picofinish-esd/chip-lifter/1166/lifter-picofinish-esd">this</a> helps a lot. Also don't forget to take ESD precautions.</p><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2021/04/main-board.jpg" class="kg-image" alt="Keithley 196 - EPROM and EEPROM backup" srcset="https://btbm.ch/content/images/size/w600/2021/04/main-board.jpg 600w, https://btbm.ch/content/images/size/w1000/2021/04/main-board.jpg 1000w, https://btbm.ch/content/images/size/w1600/2021/04/main-board.jpg 1600w, https://btbm.ch/content/images/2021/04/main-board.jpg 2312w" sizes="(min-width: 720px) 720px"></figure><h3 id="eprom">EPROM</h3><p>The EPROMs are ICs U105 and U106. They hold the firmware of the multimeter. I read them by selecting this IC:</p><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2021/04/eprom.png" class="kg-image" alt="Keithley 196 - EPROM and EEPROM backup" srcset="https://btbm.ch/content/images/size/w600/2021/04/eprom.png 600w, https://btbm.ch/content/images/2021/04/eprom.png 763w" sizes="(min-width: 720px) 720px"></figure><h3 id="eeprom">EEPROM</h3><p>The EEPROM (U108) holds the calibration data and the settings of the instrument. It is the most likely memory to fail. I read it by selecting this IC:</p><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2021/04/eeprom.png" class="kg-image" alt="Keithley 196 - EPROM and EEPROM backup" srcset="https://btbm.ch/content/images/size/w600/2021/04/eeprom.png 600w, https://btbm.ch/content/images/2021/04/eeprom.png 763w" sizes="(min-width: 720px) 720px"></figure>]]></content:encoded></item><item><title><![CDATA[Keithley 196 - Electrolytic capacitor replacement]]></title><description><![CDATA[Replacing the electrolytic capacitors in a Keithley 196 system dmm]]></description><link>https://btbm.ch/keithley-196-electrolytic-capacitor-replacement/</link><guid isPermaLink="false">60773720e038c703f2d69040</guid><category><![CDATA[Repair]]></category><category><![CDATA[Test Equipment]]></category><dc:creator><![CDATA[Grease monkey]]></dc:creator><pubDate>Sat, 17 Apr 2021 19:48:01 GMT</pubDate><media:content url="https://btbm.ch/content/images/2021/04/main-3.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://btbm.ch/content/images/2021/04/main-3.jpg" alt="Keithley 196 - Electrolytic capacitor replacement"><p>It is time to replace the electrolytic capacitors on my Keithley 196 multimeter. One capacitor has already failed (-15V rail). Judging from the date codes on the chips my unit is a late 1986 model (35 years old at the time of writing!).</p><p>Here is the list of capacitors to be replaced:</p><!--kg-card-begin: markdown--><table>
<thead>
<tr>
<th style="text-align:left">Designator</th>
<th style="text-align:left">Description</th>
<th style="text-align:right">Digi-Key part no.</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><strong>Display Board</strong></td>
<td style="text-align:left"></td>
<td style="text-align:right"></td>
</tr>
<tr>
<td style="text-align:left">C1</td>
<td style="text-align:left">10μF, 25V</td>
<td style="text-align:right"><a href="https://www.digikey.ch/products/en?keywords=493-13463-1-ND">493-13463-1-ND</a></td>
</tr>
<tr>
<td style="text-align:left"><strong>Main Board</strong></td>
<td style="text-align:left"></td>
<td style="text-align:right"></td>
</tr>
<tr>
<td style="text-align:left">C101</td>
<td style="text-align:left">10000μF, 25V</td>
<td style="text-align:right"><a href="https://www.digikey.ch/products/en?keywords=493-7297-ND">493-7297-ND</a></td>
</tr>
<tr>
<td style="text-align:left">C102, C104, C107, C108, C127, C140, C147</td>
<td style="text-align:left">10μF, 25V</td>
<td style="text-align:right"><a href="https://www.digikey.ch/products/en?keywords=493-13463-1-ND">493-13463-1-ND</a></td>
</tr>
<tr>
<td style="text-align:left">C103</td>
<td style="text-align:left">1500μF, 25V</td>
<td style="text-align:right"><a href="https://www.digikey.ch/products/en?keywords=493-15301-ND">493-15301-ND</a></td>
</tr>
<tr>
<td style="text-align:left">C105, C106</td>
<td style="text-align:left">620μF, 35V</td>
<td style="text-align:right"><a href="https://www.digikey.ch/products/en?keywords=P14940-ND">P14940-ND</a></td>
</tr>
<tr>
<td style="text-align:left"><strong>Analog Board</strong></td>
<td style="text-align:left"></td>
<td style="text-align:right"></td>
</tr>
<tr>
<td style="text-align:left">C33</td>
<td style="text-align:left">10μF, 25V</td>
<td style="text-align:right"><a href="https://www.digikey.ch/products/en?keywords=493-13463-1-ND">493-13463-1-ND</a></td>
</tr>
</tbody>
</table>
<!--kg-card-end: markdown--><p>Some of the capacitors I chose are overrated but since I had other instruments that needed capacitor replacement I grouped them together. The dimensions are OK though. It is now ready to work for at least 20 years more.</p><p>There is also a 15μF tantalum capacitor (C44) in the analog board that may eventually fail. It is used as the input filter capacitor for the AD637 RMS converter. But I'm going to leave it be.</p><p>Here's a long boring video of the replacement. Enjoy!</p><figure class="kg-card kg-embed-card"><iframe width="356" height="200" src="https://www.youtube.com/embed/uIO7attB2tA?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure>]]></content:encoded></item><item><title><![CDATA[HP 8568A monitor repair]]></title><description><![CDATA[A quick repair on my HP 8568A spectrum analyzer]]></description><link>https://btbm.ch/hp-8568a-monitor-repair/</link><guid isPermaLink="false">6071cbc9e038c703f2d68f57</guid><category><![CDATA[Repair]]></category><category><![CDATA[Test Equipment]]></category><dc:creator><![CDATA[Grease monkey]]></dc:creator><pubDate>Sat, 10 Apr 2021 22:59:52 GMT</pubDate><media:content url="https://btbm.ch/content/images/2021/04/main-2.jpg" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/04/price-1.png" class="kg-image" alt="HP 8568A monitor repair" srcset="https://btbm.ch/content/images/size/w600/2021/04/price-1.png 600w, https://btbm.ch/content/images/size/w1000/2021/04/price-1.png 1000w, https://btbm.ch/content/images/2021/04/price-1.png 1370w" sizes="(min-width: 720px) 720px"><figcaption>The price of HP 8568A in 1978 US$ (HEWLETT-PACKARD JOURNAL, June 1978)</figcaption></figure><img src="https://btbm.ch/content/images/2021/04/main-2.jpg" alt="HP 8568A monitor repair"><p>When the 8568A was introduced in the late '70s, its price tag was USD27800. But that was in 1978 dollars. You have probably heard of this thing called inflation. It eats the worth of your money away. So in today's dollars that would be something close to USD116000. I got mine for $142 (Swiss franks really but they worth more or less the same as USD).</p><p>According to the previous owner one day the monitor just stopped working. The rest seemed to be OK. As far as I know the service manual for this unit is not available. A repair is just more fun this way.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/04/monitor-top.jpg" class="kg-image" alt="HP 8568A monitor repair" srcset="https://btbm.ch/content/images/size/w600/2021/04/monitor-top.jpg 600w, https://btbm.ch/content/images/size/w1000/2021/04/monitor-top.jpg 1000w, https://btbm.ch/content/images/size/w1600/2021/04/monitor-top.jpg 1600w, https://btbm.ch/content/images/2021/04/monitor-top.jpg 2312w" sizes="(min-width: 720px) 720px"><figcaption>The HP 8568A Display unit</figcaption></figure><p>So I opened the hood and started looking. Fortunately the craftsmen of the Old World that designed this device built into it many test points. Long story short the -15V rail was off and F2 was burned. So I took the pcb out and stated checking components. In another bout of good luck I noticed the part number of the pcb (85662-60101) and googled it. This pcb is shared with the HP 85662A whose service manual is available.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/04/-15V-regulator.png" class="kg-image" alt="HP 8568A monitor repair" srcset="https://btbm.ch/content/images/size/w600/2021/04/-15V-regulator.png 600w, https://btbm.ch/content/images/size/w1000/2021/04/-15V-regulator.png 1000w, https://btbm.ch/content/images/2021/04/-15V-regulator.png 1371w" sizes="(min-width: 720px) 720px"><figcaption>HP 85662-60101 -15V Regulator</figcaption></figure><p>The problem was Q9. It was short-circuited. Q9 is a 2N6055 NPN darlington transitor. The closest transistor I had in my lab was a 2N3055. I changed it and it works!</p><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2021/04/15V-regulator.jpg" class="kg-image" alt="HP 8568A monitor repair" srcset="https://btbm.ch/content/images/size/w600/2021/04/15V-regulator.jpg 600w, https://btbm.ch/content/images/size/w1000/2021/04/15V-regulator.jpg 1000w, https://btbm.ch/content/images/size/w1600/2021/04/15V-regulator.jpg 1600w, https://btbm.ch/content/images/2021/04/15V-regulator.jpg 2312w" sizes="(min-width: 720px) 720px"></figure>]]></content:encoded></item><item><title><![CDATA[Programming Cypress FM24C04B FRAM with arduino]]></title><description><![CDATA[A program to read the contents of an HP 34970A FRAMs]]></description><link>https://btbm.ch/programming-cypress/</link><guid isPermaLink="false">5fa7ed188adf7f05bb37ba30</guid><category><![CDATA[Digital]]></category><dc:creator><![CDATA[Grease monkey]]></dc:creator><pubDate>Sat, 10 Apr 2021 15:12:20 GMT</pubDate><media:content url="https://btbm.ch/content/images/2020/08/Fram.JPG" medium="image"/><content:encoded><![CDATA[<h3 id="references-links-">References/links:</h3><ul><li><a href="https://github.com/battosai30/FRAM">FRAM library</a></li><li><a href="https://btbm.ch/8-pin-i2c-memory-programmer-with-arduino-uno/">I2C Memory Programmer</a></li></ul><img src="https://btbm.ch/content/images/2020/08/Fram.JPG" alt="Programming Cypress FM24C04B FRAM with arduino"><p>Unfortunately the TL866II Plus programmer can read but cannot write to the FM24C04B FRAM. For more details see <a href="https://www.eevblog.com/forum/repair/tl866-wont-program-fram/">this thread</a> on the EEVBLOG forum. An HP 34970A I bought some time ago had the classic 74x calibration errors caused by the FRAMs.</p><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2021/04/TL866II-Plus.jpg" class="kg-image" alt="Programming Cypress FM24C04B FRAM with arduino" srcset="https://btbm.ch/content/images/size/w600/2021/04/TL866II-Plus.jpg 600w, https://btbm.ch/content/images/size/w1000/2021/04/TL866II-Plus.jpg 1000w, https://btbm.ch/content/images/size/w1600/2021/04/TL866II-Plus.jpg 1600w, https://btbm.ch/content/images/2021/04/TL866II-Plus.jpg 2312w" sizes="(min-width: 720px) 720px"></figure><p>So I though the fastest way to program the FRAMs would be to write some arduino code for my <a href="https://btbm.ch/8-pin-i2c-memory-programmer-with-arduino-uno/">I2C Memory Programmer</a>. The program needs a table called <em>pages</em> which hold all the data from the FRAM. It can then program the FRAM with the contents of the table or verify them against it. If you need to create a <em>pages</em> table you can read the contents and copy the output to the code. You will have to reload the program to the arduino.</p><!--kg-card-begin: html--><script src="https://gist.github.com/greasemonkey-btbm/0577011288397c8edde42adf54b29ae9.js"></script><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[Keithley 224 Programmable Current Source - Compliance voltage limit repair]]></title><description><![CDATA[A couple of repairs on my 224 current source]]></description><link>https://btbm.ch/keithley-224-programmable-current-source-compliance-voltage-limit-repair/</link><guid isPermaLink="false">606b4606e038c703f2d68d3f</guid><category><![CDATA[Test Equipment]]></category><category><![CDATA[Repair]]></category><dc:creator><![CDATA[Grease monkey]]></dc:creator><pubDate>Tue, 06 Apr 2021 15:22:35 GMT</pubDate><media:content url="https://btbm.ch/content/images/2021/04/K224.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://btbm.ch/content/images/2021/04/K224.jpg" alt="Keithley 224 Programmable Current Source - Compliance voltage limit repair"><p>If everything goes according to plan and I become the Supreme Leader of Earth I will oblige all TE manufacturers to produce manuals in the style of old Keithleys and HPs. I don't care if it takes 5000 pages, they will have to do it. My propaganda slogan will be: "Make TE great again".</p><p>I recently bought a used Keithley 224 with no output and the V-limit LED always blinking. Otherwise the instrument seemed to work fine.</p><h2 id="the-repair">The repair</h2><p>The first thing one should always check is the voltage rails. ±125V, ±15V and +5V were good and stable.</p><p>Next I checked the output. There was no voltage present between HI and LO but there was between LO and GUARD. Going backwards there was voltage before K306. That means that K306 was not activated.</p><figure class="kg-card kg-image-card"><img src="https://btbm.ch/content/images/2021/04/Analog-board-output.png" class="kg-image" alt="Keithley 224 Programmable Current Source - Compliance voltage limit repair" srcset="https://btbm.ch/content/images/size/w600/2021/04/Analog-board-output.png 600w, https://btbm.ch/content/images/size/w1000/2021/04/Analog-board-output.png 1000w, https://btbm.ch/content/images/2021/04/Analog-board-output.png 1064w" sizes="(min-width: 720px) 720px"></figure><p>K306 and K307 are activated together and there were 5V on the coil of K307. This means that either the coil or the contact of K306 is faulty. K306 is a Coto 240-0197 reed relay (Keithley part no. RL-70). I tried to activate it externally with a magnet and BINGO! The contact was OK. These relays are hard to find and cost about US$60 at ebay (excluding postage). So I found a semi-permanent solution.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/04/coto-with-magnet.jpg" class="kg-image" alt="Keithley 224 Programmable Current Source - Compliance voltage limit repair" srcset="https://btbm.ch/content/images/size/w600/2021/04/coto-with-magnet.jpg 600w, https://btbm.ch/content/images/size/w1000/2021/04/coto-with-magnet.jpg 1000w, https://btbm.ch/content/images/size/w1600/2021/04/coto-with-magnet.jpg 1600w, https://btbm.ch/content/images/2021/04/coto-with-magnet.jpg 2312w" sizes="(min-width: 720px) 720px"><figcaption>“Nothing is so permanent as a temporary government program.” ― Milton Friedman</figcaption></figure><h2 id="more-problems">More problems</h2><p>All current ranges seemed to be fine but the compliance voltage limits were way off. I first tried to adjust the limits from R319 but it was not possible.</p><h3 id="short-explanation-of-the-circuit">Short explanation of the circuit</h3><p>U308 is an 8-bit DAC that controls the compliance voltage limits. The output of the DAC is buffered by U309B (Vc). It is then amplified 21 times by U307B or inverted (U309A) and amplified by U307A. This way the output of U319 is kept within these limits.</p><p>U308 is an AD7523 R-2R ladder DAC. U310 is inverting the voltage reference (Vref) from U311 (the 10-bit DAC for the current setting). This voltage (-Vref) is then converted to current by R319.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/04/AD7523.png" class="kg-image" alt="Keithley 224 Programmable Current Source - Compliance voltage limit repair" srcset="https://btbm.ch/content/images/size/w600/2021/04/AD7523.png 600w, https://btbm.ch/content/images/2021/04/AD7523.png 776w" sizes="(min-width: 720px) 720px"><figcaption>AD7523 R-2R ladder DAC</figcaption></figure><p>For more information RTFM. It containd a nice "theory of operation" section. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/04/DAC.png" class="kg-image" alt="Keithley 224 Programmable Current Source - Compliance voltage limit repair" srcset="https://btbm.ch/content/images/size/w600/2021/04/DAC.png 600w, https://btbm.ch/content/images/size/w1000/2021/04/DAC.png 1000w, https://btbm.ch/content/images/2021/04/DAC.png 1550w" sizes="(min-width: 720px) 720px"><figcaption>U308 - The 8-bit DAC&nbsp;</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/04/Analog-board.png" class="kg-image" alt="Keithley 224 Programmable Current Source - Compliance voltage limit repair" srcset="https://btbm.ch/content/images/size/w600/2021/04/Analog-board.png 600w, https://btbm.ch/content/images/size/w1000/2021/04/Analog-board.png 1000w, https://btbm.ch/content/images/2021/04/Analog-board.png 1472w" sizes="(min-width: 720px) 720px"><figcaption>The analog part of the compliance voltage circuit</figcaption></figure><h3 id="troubleshooting">Troubleshooting</h3><p>I first checked Vc and the inversion/amplification stages. Everything looked OK. Then the reference. Here the absolute values of Vref and -Vref were not the same. Also the voltage between pins 2 and 3 of U310 was 0.7V. This means that probably U310 is toast.</p><p>According to the manual U310 is an AD3247 (Keithley Part No. IC-77). I could not find any information on this operational amplifier. So let's find a replacement. Here's my train of thought:</p><p>1) U310 essentially buffers Vref so bandwidth is not important.</p><p>2) Offset voltage is also not important (as long as it is stable) because the reference is trimmed by R319.</p><p>3) It should be able to handle the ±15V of the supply and fit the pin-out of U310.</p><p>I decided to replace it with my favorite op amp. OP07. I now need to replace all electrolytic caps, backup the firmware and my 224 is ready to work for another 20 years.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://btbm.ch/content/images/2021/04/U310.jpg" class="kg-image" alt="Keithley 224 Programmable Current Source - Compliance voltage limit repair" srcset="https://btbm.ch/content/images/size/w600/2021/04/U310.jpg 600w, https://btbm.ch/content/images/size/w1000/2021/04/U310.jpg 1000w, https://btbm.ch/content/images/size/w1600/2021/04/U310.jpg 1600w, https://btbm.ch/content/images/2021/04/U310.jpg 2312w" sizes="(min-width: 720px) 720px"><figcaption>U310 replacement (OP07)</figcaption></figure>]]></content:encoded></item></channel></rss>