A speculative DIY register booster project to even out the temps around my home.
To make the experience fit your profile, pick a username and tell us what interests you.
We found and based on your interests.
I said earlier that the 7805 got warm but not hot. That was true of my breadboard experiment. When I put one on the actual PCB, it was sometimes warm and sometimes really, really warm. I don't know what temperature it reached, but it was a bit uncomfortable to the touch. It was still possible to keep touching it with my finger indefinitely. I'm not sure how the 3D printed case will feel about that permanent source of heat after a few months.
I'm not sure why there was a difference on the breadboard compared to the PCB (it happens to be exactly the same 7805 device). I'm thinking about ways to reduce the ESP32 power draw (maybe by reducing the clock frequency or whatever other tricks I can come up with while staying in ESPHome), but I will probably add a heatsink to the BOM.
Meanwhile, I have been exploring homebrew heatsink stuff. Here is what I have found so far:
I was able to cobble together a makeshift heat sink using loose nuts and washers from the junk box. The only (tiny) challenge was finding a nut that was small enough in outer diameter to avoid the body of the TO-220. I wanted to insert the screw from the back side of the TO-220 so that any excess would point up and away from the ESP32 if I leaned the voltage regulator backwards to reduce its height, and also because any of the nuts and washers I used would also interfere with that body.
Here's a picture of my Frankenheatsink (M4 screw and nut, loose-fitting junk draw nuts and washers):
So far, it's staying just warm and not getting really, really warm.
Replacing the AMS1117 regulators on the ESP32 modules was a wash-out. I had two board with what I hoped were just burned out AMS1117 regulators. On one board, replacing it made no detectable difference. On the other board, I heard some snap-crackle-pop for a few seconds, and then smoke appeared. So, I'm giving up on that idea. I've got a small quantity of AMS1117 chips for some future project.
My 7805 regulators arrived. I've breadboarded one of them to power an ESP32 through the 5v pin. The ESP32 is running the ventbot firmware. Except for not connecting the BMP280 over I2C, this is exactly what will be running, so the current draw should be pretty close. I've already had it running for 15 minutes or so. With my finger, I can feel some warmth on the 7805, but nobody would reasonably call it "hot". So, I think I won't need to worry about a heatsink for the 7805 for this project. Yay!
I made the decision to revise the PCB again, to correct one definite (non-fatal) mistake and another arguable mistake. At the same time, I made a number of smaller changes in the name of "design for manufacturability" (DFM). In this case, the "manufacturer" is mostly me. If someone else builds some of these, they will also probably be a hobbyist. They'll be sourcing parts in small quantities, maybe taking what they can find or using what they have on hand. They'll be doing assembly in a dungeon-like work area that doesn't want to have computer equipment and lots of paperwork strewn about. OK, I'm really talking about me.
Here are the changes I made:
While putting one of my assembled boards through its paces, smoke started coming out of the grill vents in the case. I quickly opened it up and was able to definitively see that the smoke came out of the ESP32 module's on-board voltage regulator. It's an AMS1117. I've come to the conclusion that asking it to drop 12v input to 3.3v is just too much heat to be dissipated. (I've also since read some unkind words about the part.) I allow for the possibility that the ESP32 modules I have might be tainted by supply chain counterfeiting problems, but I don't know that in any concrete way; it's just generic paranoia.
The voltage regulator is a surface-mounted SOT-223 package (3 terminals plus tab). I've ordered some replacements and will try my hand at repairing the ESP32 module. However, that's more or less a tangent, just to see if I can do it. Who's to say the replacements won't also blow at some point? I don't want that puff of smoke coming out in the middle of the night. Also, I don't know if the blown voltage regulators will have led to catastrophic damage to other things on the module, including possibly the ESP32 itself.
So, what to do about this? I want to continue powering the board with a single power supply. The fans want to run at 12v, so the 12vdc input seems like it must stay.
I'm thinking of adding a 7805 regulator to the board to feed the 5v input of the ESP32 module. That will still have to dissipate the heat in getting from 12v to 3.3v, but:
I'm hoping to get away without a heatsink. The ESP32 will probably run at 250mA or so. The typical application circuit puts capacitors on both the input and output voltages. I hope to be able to avoid that because the 5v output will be feeding into the ESP32 on-board regulator. I'm not worried about power consumption, per se, so the only worry I have is about the need for a heatsink.
Another possibility would be to use a switching regulator, which should reduce the dissipation into heat. There are some that are pretty cheap as standalone modules, but I don't want to end up with a separate board or redesigning my board to be much larger. CUI Devices makes a series of switching regulators in a 3-pin package, and I think there are other manufacturers of similar devices. The idea is that they can be a direct replacement for a 7805 on a PCB. I could either feed that into the ESP32 on-board regulator use a 3.3v regulator to directly feed the Vcc pin of the ESP32. If I did the latter, I would probably have to be more careful about the capacitors. It would also be a design-time decision instead of an assembly-time decision.
OK, I've decided. I'm going to do another revision of the PCB to add a footprint for a 7805 and feed the output of that to the 5v pin of the ESP32 module. No capacitors. If someone wants to feed the 12v directly to the ESP32 on-board regulator, they can just jumper the Vin and Vout pads together. Or, they can use a 7805 or one of the pin-compatible switching regulators to drop the voltage to 5v. They can also make a late-binding decision about whether they need a heatsink for the 7805. (It turned out that I didn't have a 7805 on hand, but I will have some soon. I'll do some breadboard experiments to see how warm it actually gets when powering the ESP32.)
I started fiddling around with OpenSCAD to make a custom enclosure for this project. I did what I thought were some reasonably clever things with the base on which the PCB would rest (3D-printed stand-off with threads and matching nuts ... yummy!) However, when it came time to create the top of the enclosure and figure out a way to fasten it together, I came across mrWheel's YAPP_Box project. It was so far ahead of what I was tinkering with that I set my custom enclosure aside and started working with YAPP_Box.
The way YAPP_Box expects you to work is to start with a template of settings and then reference a generator module to actually create the enclosure based on those settings. You could just measure locations on a board with calipers or even a ruler, but I did my board design in KiCad and was able to get precise footprint numbers from property sheets in KiCad. The only thing I actually had to measure was the Z height of a populated board (both front and back), and those did not need much precision.
Just in case I later revise the PCB, I created a bunch of local variable with numbers expressed in KiCad coordinates, and then I set the parameter values for YAPP_Box mostly in terms of those KiCad variables. For things like text labels and grillwork, which didn't correspond to anything on the PCB, I used a combination of measuring, educated guessing, and trial and error. OpenSCAD is a great tool for that kind of iteration since the preview mode is really, really fast at showing what any changes look like. It was a little challenging to keep translating KiCad's idea of coordinate systems to the multiple different YAPP_Box orientations, but, again, OpenSCAD's rapid previewing was very helpful for keeping things going in the right directions.
In the end, I made cut-outs on two sides for fan connectors, power connector, and I2C connectors (for the temperature sensor). I tried putting text labels for those things on the sides as well, but it came out looking pretty awful when 3D-printed. Instead, I put all of the text on the top and bottom surfaces. I had to go with rather large Arial Black typeface in bold to get reasonable looking text. YAPP_Box text is done an engraving, so you are mostly depending on shadows to make it visible. Lighter colors work better for that, though these things will be shut up inside furnace vents for the long term.
On the top, in addition to some text, I also put some grillwork. I don't think it's needed for ventilation, but it was easy to do and looks pretty nice. I also put a couple of small holes to allow pushing the ESP32 buttons when the enclosure is snapped shut. A thin TORX screwdriver is good for that since the flat nose helps you find and press the buttons. (One of the buttons is the reset button, which obvious behavior. The other button is configured in the firmware to let you temporarily toggle the fans on or off for testing. You can do a similar thing with Home Assistant integration.)
On the bottom of the enclosure, I wrote the URLs for this Hackaday project and the gitlab repo where the design files live. I don't think I am likely to ever lose track of that information, but I know I often lose track of that sort of thing after a couple of years on equipment and components I get from random sources. The URLs on the case are just in case somebody like me builds one and then loses track of me. (The URLs are also silk-screened on the PCB, but that's the kind of thing I might forget to look at after a couple of years.)
There are some "poke holes" in the bottom to help get the PCB back out of the enclosure. I wrecked a couple of trial iterations of the base by prying the board back out with a tool. With the poke holes, you jam that same TORX screwdriver in and push the PCB up from underneath.
I received the shipment of revised PCBs from PCBWay a few days ago. I immediately populated one completely and tested it. I wanted to have one copy of the board that populated everything, including things that I don't plan to actually use myself. I'm pretty pleased with the little tweaks in the revised layout. And, it works! Here's a picture of it resting on a 3D-printed enclosure base. (I'm still fine-tuning the enclosure.)
I noticed one blunder that was also present in the first revision. The JST-SH and JST-PH connectors use the same order for the wires for I2C. I didn't notice that JST-PH connector was flipped over from what I was assuming. This is completely my mistake. Once I noticed it, the Adafruit article was clear enough. I just wasn't paying attention. Consequently, this PCB is not directly compatible with Adafruit STEMMA devices. For myself, that's not a huge deal since I am wiring up generic BMP280 breakout boards and soldering the wires from the JST-PH cable directly to the boards. I just had to ignore the wire colors (which were not applicable anyhow) and pay attention to the signal order from the board. In the generic JST-PH cables that I have, pin 1 is red, pin 2 is black, pin 3 is yellow, and pin 4 is white.
If I ever revise this design, it will be easy to correct this. If you use a "vertical insertion" JST-PH connector, you could just turn it around (notch facing the edge of the PCB), and then it would be directly compatible with STEMMA devices and probably also Grove devices. You could turn around a "horizontal insertion" JST-PH connector, too, but there isn't really enough space to insert the cable connector into it with that orientation.
There were enough annoyances (described here) in my design of the PCB that I decided to do another revision. In addition to those earlier -described annoyances, I thought of a few other improvements.
When I populated one of the boards and fired it up, it actually worked as designed. I'm pretty happy about that. Based on experience, I was prepared for disappointment, but I guess I got a Christmas miracle.
There are a few non-fatal changes I would make to the board if I did another run, but it looks like I won't need to do that. I'm contemplating doing another PCB iteration to clear up some of the physical layout things I described in an earlier project log.
The photo above is a fully populated (well, mostly) board. It's resting on one of the iterations of a 3D printed enclosure I'm working on.
I also need to design some brackets for putting the fans in place inside the vents, but the electronic design is pretty much done, and the firmware is pretty well settled.
I haven't yet had a chance to populate one of my boards and test things. Naturally, I am supremely confident that it will work first time. But if I did, hypothetically, need to make more PCBs, here are a couple of things that I would change. None of these are fatal.
Today is an exciting day because my manufactured PC boards arrived from China. As I expected them to be, they are gorgeous. Don't be fooled by my poor photography. All the silk screen is crisp and clear, and all the plated copper lands are bright and shiny. (The purple posts are a PCB holder of mine and not part of the board.)
This round of PCBs was sponsored by PCBWay.com, by which I mean they contacted me and gave me a coupon to cover the cost of making them and shipping them to me.
It took less than 2 weeks from uploading my design files to getting the boards in my hands. That was with "global standard shipping", which is pretty reasonably priced. They also have DHL shipping, which I know from experience to be significantly faster, but it's quite a bit more expensive. (I live on the US west coast, and many China shipments come in through Los Angeles, so things get to me pretty fast once they are turned over to in-country carriers.)
It takes 1-2 days to actually manufacture the boards, and you can follow the progress as your design moves from stage to stage during the process. If you like to geek out on that stuff, it's pretty fun.
I designed the schematic and board in KiCad. I'll be uploading the KiCad design files in a bit. Here's a screenshot of KiCad's rendering of the layout:
And here is what KiCad's 3D model of the (mostly) populated board looks like.
Due to "day job" priorities, I won't be able to tinker with this too much for a few days, but here is my plan:
Assuming all that works without discovering any design blunders, I'll finish up design of the project case and fan mounting brackets.
Create an account to leave a comment. Already have an account? Log In.
Become a member to follow this project and never miss any updates