Mad Coding & Housekeeping!

Posted on
Coding
I’ve been working on getting the Development Environment setup and coding over the last week. Doing things setting up the new file structure and weeding out coding errors with the old libraries. I’m about to fire up the ReactorForge and flash over the old code with the new! Then I will start moving the old chunks of commented code out of main.c and get the induction heater up and running with ReactorGraph to begin optimization and clean up of the working code.

Coding is Important but so is Hardware

Also in the photo is a seven wire DIN connection I’m considering. For simplicity, I initially chose a standard power barrel connector like this one from DigiKey, to connect the foot pedal. On the final model, I want one port to cover all the possible accessories, not just the foot pedal. One I’m most excited about is a DIY optical pyrometer to measure the temperature of your near molten chunks of metal. But that’s for after we tackle CriticalMass.

BTW, Audible Rocks!

On my way back from the break I listened to this book and wanted to share it. If you ACTUALLY WANT to work smarter, not harder doing things like coding for example, then I highly recommended you read or listen to this book. It is packed full of insight and detailed information on how to use your brain to it’s fullest capacity.
 
That link above is using my affiliate link. Audible is a great way to support the creators you enjoy following, and you get two free books! I signed up under Destin over at Smarter Every Day and never looked back! I love listening to a new book on every long drive I make or when I’m doing something that doesn’t require my full attention. I especially like the speed feature. I find 1.5x to be the perfect speed to absorb information at a pace that doesn’t leave me tapping my foot saying ok ok get on with it. 🙂
If you love using Amazon as much as I do, or just use it every once and a while, consider changing your Amazon shortcut to use my affiliate link. https://www.amazon.com/?tag=reactorforge-20 When you do this, everything works the same as usual on your end, and a small portion of everything you do on Amazon goes to help support this project! Awesome and Thank You! 😀

 

Bluetooth Telemetry Link

Posted on
Bluetooth Telemetry

This Bluetooth serial link is nothing new. I had it working on the existing setup to send data from the ReactorForge control board to the Processing visualization program. The HC-06 Bluetooth module enabled me to see the live telemetry coming from the ReactorForge. That helps you to understand what is going on and tweak parameters such as the PID settings.

Consolidation of Development Process

I’m excited to get the entire development process in one operating system. Before, I was bouncing between macOS, Windows in VMWare Fusion on the Mac, and a separate Windows machine. It’s a long story, but this was partly due to the Windows-only compiler I used at the time. Other shortcuts I made early in the process just to get things working enough to get the induction heater to Daniel’s shop also helped put me in that spot.

Problems Connecting to the HC-06 Bluetooth Module on Mac

Getting the HC-06 Bluetooth to Serial module working on macOS wasn’t hard, but I did have one issue. The HC-06 seemed to just disconnect randomly after a minute or two of being connected. Then when I would try to reconnect to it, the port would be busy. I knew it wasn’t busy or open using lsof | grep HC-06 or whatever your’s is named, Reactor-Link in my case.

I fired up Windows in VMware Fusion and paired the HC-06 Bluetooth module. Then I opened a connection to it using a terminal program. I also began a screen session (terminal) on the Mac side with a USB to serial adapter. The USB serial adapter was connected to the HC-06 Bluetooth module to monitor it (and send data from it).

Anyway, this worked fine, and the HC-06 Bluetooth module never lost connection on the Windows side. I did notice that on the Windows side, the HC-06 Bluetooth module asked me for asked me for the pin number during the pairing process, but it did not ask on the Mac side. I removed the device from on the Mac side in the Bluetooth manager and re-Paired it. To my annoyance and relief, this fixed the disconnecting issue. Maybe I changed the pin in the past since the last time it had been connected to the Mac.

Bluetooth on macOS

So this is the simple test setup. The photos say it all I think.

Bluetooth Telemetry

Bluetooth Telemetry

Bluetooth HC-06.pdf

Libraries, Drivers, Etc.

With that working, I’m going to work on the libraries now. I’m looking at whether or not to get the existing libraries working in the new environment or use new libraries.  I’m leaning toward new libraries because there are quite a few compiler warnings and even some errors from the old ones. I’ll have to update function names and setup code, but I’d prefer to start with something cleaner and updated. I’m pushing it all to GitHub as I go!

Addition Terminal Jargon

The astute reader might notice that I am using the /dev/tty.* version of the device rather than the /dev/cu.* version. So, what’s the difference? TTY devices are for calling into UNIX systems, whereas CU (Call-Up) devices are for calling out from them (e.g., modems). We want to call-out, so /dev/cu.* is the correct device to use.

The technical difference is that /dev/tty.* devices will wait (or listen) for DCD (data-carrier-detect) e.g., someone calling in, before responding. /dev/cu.* devices do not assert DCD, so they will always connect (respond or succeed) immediately. Since neither the HC-06 Bluetooth module or the USB to serial adapter support DCD it’s not an issue. Still, following best practice, you should use the correct port.

So why did I use the wrong one in the photos? I switched to /dev/tty.* when I was having the connection issue and just forgot to switch back before documenting it.

Development Environment

Posted on
Development Environment

If you follow the GitHub repository https://github.com/ThingEngineer/ReactorForge by clicking [Watch] you may have noticed work on the firmware. I’ve begun setting up the new development environment. Going forward, I don’t want to deal with switching to Windows to work in AVR Studio. I never liked that environment anyway. I had talked about possibly moving everything into the Arduino environment because of its popularity, however that has its own set of issues. For starters, support for the AT90PWM family of chips isn’t there, and I don’t want to spend the time to add it. Then there’s this:

https://atom.io + https://atom.io/packages/platomformio = frickin awesome

Beginning Development Environment

Arduino is a great prototyping platform and IDE to get started on if you have never worked with microcontrollers. As a beginner, it can get you building projects faster than any other platform out there. But eventually, the features that make it convenient and easy to use can hold you back. It lacks many features which make writing code quicker, easier, and have become quite standard in modern text editors. There are also bits of code that get inserted into your code that can cause some very head-scratching issues.

Moving Beyond Arduino

The next logical step is to leave the Arduino IDE behind. We do that by working in a more fully-featured development environment. Atom + PlatformIO is my new favorite open source cross-platform IDE. It even comes with the Arduino framework among others. That lets you test drive it with a code structure you are familiar. When you are ready, you can remove the training wheels and go full native C++. There is so much more I could brag about with both of these tools. But I’ll let you discover the awesomeness yourself!

Development Environment

Next Steps

What’s next? I’m going to begin porting over the libraries used in the existing project. Then the main code, and start rewriting, optimizing, etc. The photo above is a test rig I used for setting up the new IDE. I will continue to use it throughout the porting process. Once the code is stable in its new environment, I’ll switch over to the ReactorForge!

I had also planned on using this setup to demo and explain the basics behind the AT90PMW software PLL setup. I’ll get to that but for now, it’s back to work in the new development environment!

Mains Power Feed Complete

Posted on
Mains Power

This is the last mains power update for the ReactorForge Induction Heater. It will be the last because it’s complete! Here is how the last couple days of that process went.

Mains Power

I started by connecting the jumpers from the custom splice connector to the 60 Amp 240-volt dual pole breaker and ground bus. The photo shows green hooked to the neutral bus. I later moved this as I did not need to tap 120-volt like I thought I would have to since the ATX power supply runs on 240-volt now. (I just forgot, it’s been a while.)

Mains Power

And here is the 240-volt quick disconnect assembly installed and ready. I will print another version of the slide lock. The slides should be solid so the splice connectors are not accessible while the wires are disconnected.

Mains Power

Next, I prepared the 2 AWG mains power feeder lines. These will connect the splice block directly to the input of the ReactorForge.

Mains PowerMains Power

The splice block side has thick metal tabs that are double layered with heat-shrink tubing. These provide a high current, high durability connection to the screw terminal that will stand up to multiple connect/disconnect cycles.

Mains Power

The Induction Heater side has heavy duty lugs that will accept the terminal post. These are also insulated with double layers heat-shrink.

Mains Power

Bringing It All Together

And here you can see the feeder lines connected to the input of terminal posts on the back of the ReactorForge. I also ran a USB extension with a small hub for connecting the Atmel ISP programmer. I put the Bluetooth dongle here as well. It communicates with the mainboard to send/receive commands and system telemetry.

Mains PowerMains Power

I then installed a variac between the mains contactor and the inverter input filter.

Mains Power Variac

When software activates the contactor, 240 volts directly feeds the inverter typically. Since I have a decent amount of testing to do, I severed that connection and installed the variac to allow lower power testing.

Mains Power

I taped up the small areas where 240 volts was accessible in the front to avoid accidental contact or tools shorting things out. Getting my fingers across 240-volt mains power is not something I want to experience twice!

Mains Power VariacMains Power

On To The CODE!

That’s it for cooling and mains power connections. The next step is to get the programming environment set back up. I will turn things up as is and do some testing to make sure everything is still good. Once that is done I will get right to the next big task, I’ve decided to port the entire thing to Arduino. This won’t be too difficult since the code is already in C and I will be glad to get away from AVR Studio, to be honest. I made the choice to move to Arduino due to is massive use and rise in popularity over the last few years. Since this is an open source project I want to use a platform that people are familiar with. Let’s put industrial level induction heaters right up there with open source 3D printer firmware!

ReactorForge History – A brief history lesson 01010010

Posted on
ReactorForge History

There were many before it, after it and in-betweens, but these are the milestones! This is a brief ReactorForge History lesson.

ReactorForge History

From left to right.

  • The first MOSFET version on a PCB. It worked great but didn’t couldn’t handle the power level I wanted. I ended up pushing it to failure and moving to brick IGBTs.
  • The first IGBT version on a PCB. This design is based on a CD4046 PLL and uses gate drive transformer to drive the large brick IGBTs (the ReactorForge now uses hybrid drivers). If you are into electronics and you’ve never worked with a PLL, even if just on a breadboard you should. PLL’s are very well documented, fascinating little devices. This circuit works great but its frequency operation range was limited by the external passives for the VCO (voltage controlled oscillator). Due to its reliance on these passive components, it is also affected by temperature.
  • For mainly that and a few other reasons I decided to explore a software PLL solution. After going around the usual suspects and understanding how a PLL worked I thought there must be some way to do it with a low-cost MCU, not a freaking FPGA or high power processor. Maybe some type of PWM/comparator combination I thought. I found my solution in a motor controller, or power stage controller chip made by Atmel, the PSC216,316 microcontroller. That’s what this breadboard is, the early testing for what is now a rock-solid way to find the resonant frequency (Fr) and adjust power levels by offsetting that frequency from the current Fr all while soft switching (i.e. not making heat in the wrong places and exploding electronics). This was the result of those early tests…

ReactorForge History - Current

The Future:

One more board redesign may be in order but we’ll see. I may look into reducing the size of the board down the standard Eurocard PCB size of 100mm x 160mm. Although the current size is still within the free size limit of 160mm^2 for Autodesk Eagle.

That was the ReactorForge History, now let’s forge ahead to the future!

Reactor Forge on the Bench

Posted on
Reactor Forge on the Bench

The Reactor Forge on the Bench and ready to hook up!

Reactor Forge on the Bench

This new rolling stand from SAMs club was perfect for holding the Reactor Forge, Bernard Weldcraft 3 gallon water cooler, extra bricks, and coils. I just need to replace the top plastic insert/mat with a piece of sheet metal. 

High-level action plan:

  • Publish existing mechanical specs, unit wiring schematic, core control board schematic, to Atmel C code to Github.
  • Add my current issues and changes that need to happen to each of the above topics in Github for proper tracking.
  • Work on those issues, changes, and improvements.
  • Make the next version, test, refine, and repeat as needed.
  • Work on BOM supply chain.
  • Kit logistics: work on which parts will be preassembled and which will require user assembly.
  • Create and publish a kit manual.
  • First test kits for users, feedback, etc. etc…

What’s next after getting the Reactor Forge on the Bench?

Hooking up cooling water and power.