Artesyn (Dell) Hot-Plug PSU Manipulation Through PMBus Phase I

For a while now I’ve wanted to create a PSU backplane and ATX rail generation for my computer using modular power supplies. Used server supplies are cheap and efficient.

Step one would be able to control them and read data from them with a microcontroller. So, I soldered the necessary wires directly to one of the PSUs I have laying around and plugged into a proto board.

I decided to use an ESP32 here since power usage isn’t an issue and I have a bunch of boards laying around. I was going to use an STM32, and my choice of a controller may still change as there’s no need for WiFi.

https://github.com/fdimitri/ESPPSUControl

As it stands I was able to find datasheets for the power supply, and get some communication going. I’m able to read all the documented registers, mostly properly.. though it doesn’t let me write to many of them when it should. There’s still a lot of work to do, but the basic PMBus interface is there and written from scratch. Refactor of initial code is incoming.

I need to add a few external transistors to pull some lines off the PSU low to power it on, right now it’s just jumper wires since I wasn’t too worried about the physical.

Next up is a PCB design using a CE connector that takes two of these things, then it’s back to work on software. I think I’m going to go standard 1oz copper and just make some bus bars to handle the current.

I’ll also need to design a pluggable card that provides ATX voltages since the PSU only does +12v and +12vsb. I’d like to have some digital control there (PMBus VRMs), but I may use cheap switching regulators in the first POC.

Should the blog go all Oracle Free Tier or stay on GCP..? Part 1!

I do want to try out Oracle Free Tier, which I just signed up for. Apparently on ARM Ampere instances you get 4 CPUs and 24GB of RAM, considerably more resources than either AWS or GCP gives you.

The blog would be a good practical use case for it, however it’s a bit light in its requirements. I could just make it general web and also host some services, including some Ruby stuff.

I think I’m going to have to start the migration and using Oracle Linux, then try to make a use for all that extra RAM and what I think is probably some more actual available processing power. Maybe compare page load times, among other things. It also appears to be easier to get an IPv6 Prefix through Oracle’s interface.. and on top of that, I also get two “micro” AMD-based instances to run as well.

Please, Cloud Providers, keep throwing free stuff around and at me so I don’t have to co-lo my own server somewhere. It would also help to have at least a passing familiarity with all of the major offering’s user interfaces.

I think I’ve convinced myself! The Blog is the first thing that shall go! It’s not very important, and it’s not particularly well written — and certainly not read, so it seems like it would be great test fodder to me.

IoT Sensors, Arduino, and ESP32s

This is now an on-going project, however I didn’t have a blog when I started it. So I get to play with WordPress now, and write a middling post about what I started!

One night I had an itch to write something in C since I haven’t done so in quite a while and wanted to do something. I ordered some ESP8266s and ESP32s knowing that they were supported in Arduino which would make my life a little easier staying away from platform-specific things as much as possible. I went to MicroCenter and picked up a few sensors since I’d need some kind of input, and I had some OLED SPI screens laying around.

Now that I had some hardware, I wasn’t sure exactly what I wanted to do. I spent a day working with a BME280 Temp/Humidity/Barometric Pressure sensor and an ePaper display. Not having used ePaper before or realizing exactly how annoyingly and excruciatingly slow it was, I decided to switch over to the much smaller monochrome OLEDs I had.

ESP32 wired through SPI to an OLED 64×64 screen, BME280 sensor and HTU31D sensor

So I had working WiFi, sensor readings that displayed on a screen, all wired up to a prototyping board. Not very useful as it was. Years ago I probably would’ve written something custom to move data from A to B, but since I worked with Solace at my last job I decided to go in a similar direction; I’d use MQTT to transmit the data.

It’s a simple formula and apparently a very common one. It makes sense. I fired up my Solace VM, wrote the little bit of code I needed to use the Arduino MQTT library I’d found and used a web browser to see that I was in fact sending the messages.

My messaging protocol built on top of MQTT is extremely simple, text-based and human readable. JSON was an option, but I didn’t want to waste the ESP8266’s meager RAM resources on anything I didn’t actually need. Aside from that JSON isn’t easy to WRITE, so I would’ve had to spend effort on writing a tool to send messages TO the microcontroller.

Source is available at https://github.com/fdimitri/ESPMQTTSensor. I don’t believe there’s anything particularly clever in there, or particularly bad. It took about 5 days to get this far, but it’s about to go further!

In addition to that, there is an extremely small Ruby program which receives the MQTT messages and pops them into MySQL, which I then took a few minutes in Grafana to make a dashboard:

Grafana Dash

Now that there are sensors, I’ll be able to make a thermostat module with adjustable hysteresis.

Cellular backup (again) via Google’s Project Fi, a Cisco 3825 and an HWIC-3G-GSM

I get really poor signal with TMo and Sprint in my area, but I am using Project Fi for my cellular service. I figured I’d grab one of their free SIMs and put my HWIC-3G-GSM back in service. Unfortunately.. I get really poor signal. Like -102dB RSSI! I’m going to have to see if I can get a cheap TNC antenna with a cord long enough to put it outside; for some reason I can get good signal according to my Nexus 5X — even getting LTE just by stepping outside.

For now I figured I’d get the basic configuration done. Even with little to go by it was fairly easy to setup — especially as most cell carriers don’t have PAP/CHAP authentication.


router(config)#
chat-script gsm "" "ATDT*99#" TIMEOUT 30 CONNECT
!
interface Cellular0/0/0
 description Project Fi - TMobile
 ip address negotiated
 ip nat outside
 ip virtual-reassembly in
 encapsulation ppp
 dialer in-band
 dialer idle-timeout 360 either
 dialer string GSM
 dialer-group 1
 async mode interactive
 ppp chap hostname h2g2
 ppp chap password 0 ""
 ppp ipcp dns request
!
ip nat inside source list 1 interface Cellular0/0/0 overload
ip route 0.0.0.0 0.0.0.0 Cellular0/0/0
!
access-list 1 permit any
dialer-list 1 protocol ip list 1
!
line 0/0/0
 script dialer GSM
 modem InOut
 no exec
 rxspeed 3600000
 txspeed 384000
!
^Z


router#cellular 0/0/0 gsm profile create 1 h2g2 

Note that you can also pass authentication information in the GSM profile creation; however that isn’t needed for Project Fi.

This was a basic test just to see if I could get connectivity, I’m going to use it as an alternate route to the big cloud that is the internet in the event that I really need access and Time Warner Cable has let me down by abusing maintenance windows daily — as seems to be the case lately!

So far I’ve run into issues; I’d disconnect from the network and not be able to reconnect. Sometimes a modem power-cycle fixes this. I decided to upgrade the crusty old firmware to something slightly less crusty (note: I hate Sierra Wireless modems) — Cisco says “not for use in the US,” however it IS listed for the MC8775 modem on my HWIC and I know people have used it for the same modem in ThinkPads (trusty T61/T61p!) in the US. I couldn’t get it through Cisco as you need a support contract for Sierra Wireless firmware, oddly enough. I was able to find it online, you’d be looking for version 2.0.8.19 — generally named 8775_h2_0_8_19.tar. This of course will depend on the modem in your HWIC as they didn’t all come with MC8775s.

Check your hardware! It’s easy enough to see what modem is on your HWIC even if you don’t want to physically pull it to check it:

cell.wan#sh controllers cellular 0/0/0
Interface Cellular0/0/0
HSDPA/UMTS/EDGE/GPRS-850/900/1800/1900/2100MHz unit 0, 
HWIC cellular modem configuration:
---------------------------
Modem is recognized as valid for this HWIC
manufacture id: 0x00001199 product id: 0x00006812
Sierra Wireless MC8775 UMTS modem.
GPS State: GPS disabled

Pre-upgrade:

cell.wan#sh cell 0/0/0 hardware
Modem Firmware Version = H1_1_8_3MCAP C:/WS/F
Modem Firmware built = 03/08/07
Hardware Version = 1.0
International Mobile Subscriber Identity (IMSI) = NUMBERSHERE
International Mobile Equipment Identity (IMEI) = NUMBERSHERE
Integrated Circuit Card ID (ICCID) = NUMBERSHERE
Mobile Subscriber International Subscriber
IDentity Number (MSISDN) = NUMBERSHERE
Factory Serial Number (FSN) = NUMBERSHERE
Modem Status = Low Power Mode
Current Modem Temperature = 23 deg C, State = Normal
PRI SKU ID = 0, SKU Rev. = 20.0

Upgrade process:

cell.wan#microcode reload cellular 0 0 gsm modem-provision
Reload microcode? [confirm]
Log status of firmware download in router flash?[confirm]
Firmware download status will be logged in flash:fwlogfile
Microcode Reload Process launched for hwic slot=0; hw type=0x51E
cell.wan#
*****************************************************
 The interface will be Shut Down for Firmware Upgrade 
 This will terminate any active data connections.
 Do not make any config changes related to the interface.
*****************************************************
Modem radio has been turned off
*****************************************************
 Modem will be upgraded!
 Upgrade process will take up to 15 minutes. During 
 this time the modem will be unusable.
 Please do not remove power or reload the router during 
 the upgrade process.
*****************************************************
backing up NV data..Could take up to 3 minutes
*Aug 23 10:18:06.423: %LINK-5-CHANGED: Interface Cellular0/0/0, changed state to administratively down++++++++++++++++++++++++++++++
Prepare modem for downloading boot image.
Begin boot image download
Firmware [size:234279 bytes] will be downloaded in 228 segments
Sync indication Successful
Sync indication Successful
***** Boot File Upgrade OK *****
******************************************
The firmware file will be copied in blocks 
from Compact Flash. Please DO NOT remove 
Compact Flash during Upgrade Process. Doing 
so will cause download failure and leave 
modem in unusable state
*******************************************
Begin application image download
Firmware [size:13393280 bytes] will be downloaded in 13129 segments
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Sync indication Successful
Sync indication Successful
***** Application Firmware Upgrade OK *****
Modem Upgrade OK
*Aug 23 10:25:30.179: %CELLWAN-2-MODEM_DOWN: Modem in HWIC slot 0/0 is DOWN
*Aug 23 10:25:46.963: %CELLWAN-2-MODEM_UP: Modem in HWIC slot 0/0 is now UP
*Aug 23 10:25:46.963: %CELLWAN-2-MODEM_DOWN: Modem in HWIC slot 0/0 is DOWN
*Aug 23 10:26:00.191: %CELLWAN-2-MODEM_UP: Modem in HWIC slot 0/0 is now UP
Modem radio has been turned on
*Aug 23 10:26:44.587: %LINK-3-UPDOWN: Interface Cellular0/0/0, changed state to down

Post-upgrade:

cell.wan#sh cellular 0/0/0 hardware
Modem Firmware Version = H2_0_8_19MCAP G:/WS/
Modem Firmware built = 08/29/08
Hardware Version = 1.0
International Mobile Subscriber Identity (IMSI) = NUMBERSHERE
International Mobile Equipment Identity (IMEI) = NUMBERSHERE
Integrated Circuit Card ID (ICCID) = NUMBERSHERE
Mobile Subscriber International Subscriber
IDentity Number (MSISDN) = NUMBERSHERE
Factory Serial Number (FSN) = NUMBERSHERE
Modem Status = Online
Current Modem Temperature = 27 deg C, State = Normal
PRI SKU ID = 9991803, SKU Rev. = 1.3

The 2.0.8 line increases the HSDPA downlink speed from 3.6mbit/s to 7.2mbit/s (assuming your signal is acceptable, of course). I’m just hoping it stabilizes my connection and I don’t have to do any actual debugging! After installing the firmware update I had no problems bringing a connection up. So far it seems “more stable,” but only time will tell if it randomly drops. It also gives more information from “show cellular 0/0/0” ..

Once I get an antenna and (hopefully) better signal so I can maintain “usable,” speeds for basic browsing I’ll throw it in the routing table. For now, it can sit to the side as a novelty.

µC Prototype JFET Vp/Idss Tester Part 5: Designing a slightly better tester

So I decided a few things since etching the last PCB:

  1. I’d design a new board that used a high quality ADC (16+ bits), preferably Sigma-Delta and not SAR
  2. Since the ADC was on the board, may as well throw an AVR on there too!
  3. SMT was necessary
  4. Some type of USB connectivity was necessary (RS-232 wouldn’t be so bad since I have plenty of RS-232<->USB adapter cables for my networking stuff)

So I came up with my board layouts (I should really do schematics first, very bad practice), and it looked pretty good. I tried to etch it and each side came out fine, but I was about 0.004″ off on my alignment which made my vias unusable. Also I couldn’t do a via for through-hole stuff (but I could solder each side). I quickly decided I was going to have boards printed up.

In design I chose an ATTiny1634 as it was fairly small and had more than 512b of RAM.

I use ExpressPCB. It’s pretty lame, but it was doing the job for me with single sided stuff.. and I’m used to it, I’ve done layouts in it before although I’ve never etched a board from those layouts until recently. They offer a proto-board service at 3 boards for $59 with exactly 3.8″x2.5″ dimensions. That’s just over $6 per square inch, which isn’t bad — but then they don’t include soldermasks or silkscreens and they charge you like $25 to ship the things. I found some software that could actually read ExpressPCB files so I didn’t have to do my layout over again and could work with a simple tool in familiarity (even if I loathe it). It’s called Copper Connection and has a free version which properly translates the printed images (ExpressPCB does not) so you could theoretically do double sided boards — and your single side bottoms don’t come out flipped. Oh hey, it’s picture time so you don’t get too bored!

As you can see, the bottom transfer failed in one spot, but it’s not critical. The small traces all came out great, and it looks kind of pretty.

It can ALSO export Gerbers if you pay for it, perfect! It even has some settings for OSHPark exports, among a couple other PCB houses. OSHPark does 3 boards @ $5/in^2 of your board dimensions and a more reasonable ~$5 in shipping. So I paid under $46 for 3 boards. Score. I also paid for the most expensive version of Copper Connection so I could have the freely readable text version which can be stored along with the code in Git.

I know I wrote a wall of text. I apologize! But I digress.. getting back to the board, it was pretty great. It was going to be awesome to do things this way. I ordered a USB to TTL cable with an FTDI chip in it so I just had to bring out the USART pins and grab power from USB.

I used one of my LTC2439 chips (pin compatible with LTC2418), which is 16 bit.. just in case there was something wrong with the board layout. And god was there. But it looked a hell of a lot better than my etches, everything lined up, it had vias, a soldermask, a silk screen (where I didn’t bother with component labeling), and I made a few revisions to the board before it went out:

As you can see I have a few components already soldered — and there’s a solder bridge. You’ll find out why after the next picture which has the towering totally uncalled for MOSFET and some headers in. This is my first attempt at SMD soldering, so don’t be too harsh!

Total board errata (I did some of the tracing late at night..):

  • ATTiny1634 is SOIC-20, board has SOIC-24!
  • ICSP header holes are too small (drill size)
  • FTDI header holes are too small (drill size)
  • J1 AREF holes are too small (drill size)
  • Increase distance between resistors and JFET receptacles
  • MOSFET Silk is reversed
  • MOSFET Drain grounded — WTF?
  • No decoupling caps are on the uC/ADC
  • Minor trace issues to ADC (not lining up perfectly — clearance could be increased)
  • Missing pull-up resistor for !CS on ADC
  • MOSFET for Idss/Vp mode (SOT23-6) incorrect (pins 5/6 swapped & connected to G instead of S on DUT)

Some of these were easily overcome. The SOIC-24 pads I was able to just bridge the last few pins since I used very few pins on the ATTiny1634 as I counted pins from each end of the chip, so I just laid it down where most of the pins already lined up.

The incorrectly sized vias for through-hole stuff was rectified with a dremel and a sanding drum so I could get my headers on the board. The MOSFET that the uC was going to switch was just a complete disaster, I had to cut traces with a razor and just let the uC directly switch the MOSFET on each JFET.

No decoupling caps is pretty much inexcusable, but doesn’t seem to be an issue thus far. My Fluke 175 agrees with the ADC insofar as the resolution that the Fluke has.

The missing pull up resistor was a problem as I was using the same SPI lines that ICSP (In Circuit System Programming) uses, the second I soldered the ADC on (which being TSSOP-28 you’d think would be the hardest chip on the board.. nope, easily the easiest) I could no longer program the ATTiny. So I soldered a resistor right on top of the chip between Vdd and the uC pin connected to !CS on the ADC. With !CS being (weakly) high during reset, the ADC no longer interfered with programming the device.

Ultimately I didn’t like the way the USI module of the ATTiny did SPI so I just decided to bit bang it anyway, making all of these issues moot as in the future I can just connect it to any pins I want.

Speaking of, you know how I did a poor job of soldering SMD before? Here’s where I makeup for that with perfect alignment and a good solder finish. 0.5mm pitch is fun!

I also should’ve put some LEDs on the board to use as status indicators, and pulled up spare IO pins onto a header.

Nearly un-correctable errata: The SOT23-6 MOSFET (I’m just using the N-side for now, it’s an N/P pair) was traced to the JFET completely incorrectly making it useless, I can’t measure Vp and Idss since it can’t switch what it needs to. I might overcome this before the next board revision/print by cutting the traces and wiring the Source and Drain where they need to go, but that’s a huge pain and I kind of just want new boards.

In the future I’m going to keep the uC board separate from the JFET/ADC board, for the next couple of revisions I’m keeping the same basic hardware layout, correcting errata and cleaning up the layout a bit.

And finally.. here’s the semi-functional board with the ICSP and USB cable hooked up and actually reading Vp for each JFET (the MOSFET is actually removed now, traces cut, and a solder bridge is there between two of the vias)

Code is up on GitHub for all to see. Make your own, I dare you.. because it’s totally not worth it unless you’re really into JFETs or you’re a masochist.  I actually might make the ADC board card-edge and have a base board with the uC, hmm!

Me vs my 2006 Audi A4 Quattro 2.0T Part III: The S3 K04 Installed!

So the S3 K04 needed some modifications to fit on my 2006 A4, including:

  • Diverter valve relocation since the turbo was not machined for it
  • Drilling and tapping the turbo for the diverter valve to have a place to inject air into when active
  • A custom charge tube, which now connects to the top of the intercooler instead of the bottom
  • The bottom intercooler transfer line being clocked at a different angle so it can now connect to the bottom of the intercooler
  • K04 exhaust flange is larger than the K04, so weld holes and drill+tap new ones (in stainless!)

This is the mostly finished product, you can see the custom diverter valve mount with a rubber tube that hits a 3/4″ NPT nipple that was added to the turbo before the compressor wheel.

DV Relocate Body

The diverter valve relocate was made entirely from Schedule-80 tube, from the 1″ tube connecting at the bottom flange and and side flange (for the re-circulation tube) to the 2.5″ tube that brings it all together. Everything has been opened up mildly on the lathe, you can see the lip left over from the original thickness.

DV Relocate Body 2

The top view shows the lip a little better, along with a slight angle cut to make welding the top flange for the diverter valve easier. The 1″ pipe entering this pipe was cut on a ~$45 end tubing cutter from Harbor Freight which worked better than expected.

DV Relocate Assembly

Here’s a quick mockup of the assembly. I did mockups in PVC before machining anything.. partially because I was bored, partially to make sure my ideas would work correctly. The plate on the “top” of the relocate will have the small hole drilled out to 1″ to fit a coupling into the intake charge tube. The other long 1″ pipe actually seen in the picture will be cut short to allow for the recirculation hose to connect to the turbo.

K04 Modified Flange

The flange, modified. The outer bolt hole you can see in the lower left is the original K04 size. The other side needed to be cut off to avoid hitting the motor mount. Unfortunately I had some issues drilling the new top two holes after welding it, probably due to the type of rod used. The studs wound up getting welded in, but the important part was we now have a flange that fits the stock catalytic converter or 2006 A4 downpipe!

The car runs, at first it ran FAST and would pick up >15psi of boost with spikes above 20psi. It was pretty great, even if it was running lean. APR K04 tune incoming along with bigger injectors.

Keep in mind lots of stock parts needed tweaking, some of the oil/water lines needed to be bent slightly although they happily bolted up to the turbo.

K04 Installed in the B7 A4

The charge tube is a tight fit, it just about touches the radiator, AC lines, and the frame. I should’ve used 2″ pipe here instead of 2.5″ and tried to find some with tighter radii, but it worked out. Not the 2.5″->2.0″ reducer on the intercooler. I just welded some exhaust pipe on the core support to point it as well as I could at the intercooler, the silicone hose I used isn’t kinked so it appears everything turned out pretty good.

So my water pump replacement turned into a water pump, timing belt, thermostat, and a bigger turbo. It also made me buy shiny new tools, like an Ingersoll Rand 2235Ti Max 1/2″ impact gun (WHICH KICKS ASS! 1350ft lbs of reverse torque — really?!), and of course “triple square,” tools and a few sets of security bit sets for Torx bits which I’d constantly drop and find later — and smaller triple square bits (like M5).

So Audi A4, I win today. Though I’m sure you’ll break some other way. But for now I don’t have a noisy turbo, and hopefully I’ll have lots of horsepower soon.

µC Prototype JFET Vpp/Idss Tester Part 4: 20 JFETs, 10 TL072s and a bunch of drilling later..

So after the previous failure with using a lower value sense resistor (which was probably not the real issue), I decided to keep the 100 ohm resistor in place and just buffer the reading with an opamp. I tested it on a breadboard first to empirically verify it wasn’t a really dumb idea.

I mean, it may be a really dumb idea, but it worked as I hoped.

Here you can see the top of the board with poorly drilled holes and a mash-pot of resistors. It’s a prototype and my Mouser order that included an assortment of 1% metal film resistors didn’t arrive yet, so I used what I had available. When I ran out of carbon film 5% I used what was left of the metal films. I even had to resort to 1/8 watt resistors on the attentuator following the opamp. The header has expanded to 8 pins so you can either monitor the original voltage or half voltage. At the least one resistor in the attenuator should be socketed or a trim pot. Ideally we’d be able to measure the value of the resistor network or the trim pot from the micro itself, but that adds a lot of complexity — but perhaps a 4:1 muxer for each ADC would be in order, along with detection for over-voltage before the attenuator so we can just sample the before that.. then we could actually add gain to the opamp instead of operating at unity to measure low Idss/Vpp devices more accurately.

Wouldn’t it be nice if I had real 2×4 headers, cables to plug into them, and better sockets for the JFETs? Ah well, it will do for now! I have yet to test it, I’m working on a new board design with relays (or maybe a muxer with low On resistance), the microcontroller and extra ADCs on board.. Of course that means I’ll need a way to create 2 layer boards of higher quality than what I’ve been producing.. and vias.. oh fun.

Updates to come!

µC Prototype JFET Vpp/Idss Tester — scalable to 20-50+ at a time Phase 3: The 8 Little JFETs That Could, my Second Etched PCB And FAILURE!

So I decided to setup a new PCB with 3 pins to connect to, otherwise I had to hook the ADCs into the relays. Now they can have their own run straight to the board, and the relays can have their NO or NC contact hooked up to the same trace. The JFET gate is COM. This was a pretty good improvement although I didn’t really have female 0.1″ pitch headers — I had some cheap 6 pin “Arduino” headers that are NOT the breakable kind. That left me with a few 2 pin headers until I wised up and heated a razor up with a propane torch in order to split them.

One 3 pin header holds the JFET (rather loosely in these, unfortunately) while the other 3 pin is for the relay/ADC connections. If you look closely you’ll note the toner transfer wasn’t perfect and my freehand quick drilling job is even less so, but I knew this was a prototype and I wasn’t too concerned with it so long as I had enough copper to solder to. I’ll probably try a smaller bit next time and I’ll fill the pads in completely.

I switched from an Arduino Due to an AtMega2560 board since they had them for $10 at MicroCenter. It actually has a 16 channel muxer to the ADC so I can measure 16 JFETs at a time without adding any ADCs. I did order some ADCs as samples, hopefully they’ll be approved and sent to me so I get some freebies. I went with mostly surface mount so I can do a two layer PCB and leave the ADC signal traces on top, I did a couple quick designs of such a PCB and it wound up being extremely easy to get what looks like good routing to me.

The board supports 2 rows of 9, I left an extra one in each row for redundancy in case I had bad traces on any of the cells. Fortunately they all turned out fine. You’ll also note I only filled in one row, as I figured I’d run into a bit of a problem testing the 2N5638 JFETs which can exceed a 50ma Idss and thus exceed 5.0v

JFET Tester Phase II

So I decided to change the sense resistor from 100Ω to 47Ω and did some minor revamping of the Arduino sketch. The program is still pretty poor, but it does its job for the time being. I ran out of 1MΩ resistors so I used 10MΩ, which shouldn’t affect Idss or Vpp readings. Unfortunately it seems like going with the 47/10M combo causes some serious heat in the devices. Almost immediately after I hooked power up (12V) I smelled hot plastic. My initial thought was that I got the polarity incorrect and I even feared that I might have blown the muxer or ADC in the AVR chip.

Now I’m really not that familiar with transistors at all, nevermind JFETs (this is a learning experience for me), but I’m assuming I’m getting too much voltage with the 47Ω sense resistor in place. I didn’t want to use a straight voltage divider, I may have to go back to 100Ω and use a JFET or op-amp buffer with an attenuator after it.

The measurements on the other hand seemed OK (I had 2SK170s in every other socket), but I shouldn’t be nearly melting devices or measuring with die/case temperatures anywhere near that high. Touching one of the devices extremely briefly nearly gave me a burn, at which point I immediately pulled the power.

At this point I’m going to consider my options and re-design, a TL072 (has a JFET LTP on the input, so very high input impedance) might be smaller than TO92 JFETs for a buffer, and would certainly be linear. I’m not sure I want to use any SMD stuff, and I really don’t want to deal with making vias in prototype PCBs.

Update: Also the 1M resistors that were supposed to be in place were apparently 1K. Apparently I’m awesome at reading DMMs and color bands. I redesigned the board for an opamp buffer before discovering that.