Posts with «tool hacks» label

Simulate PIC and Arduino/AVR Designs with no Cloud

I’ve always appreciated simulation tools. Sure, there’s no substitute for actually building a circuit but it sure is handy if you can fix a lot of easy problems before you start soldering and making PCBs. I’ve done quite a few posts on LTSpice and I’m also a big fan of the Falstad simulator in the browser. However, both of those don’t do a lot for you if a microcontroller is a major part of your design. I recently found an open source project called Simulide that has a few issues but does a credible job of mixed simulation. It allows you to simulate analog circuits, LCDs, stepper and servo motors and can include programmable PIC or AVR (including Arduino) processors in your simulation.

The software is available for Windows or Linux and the AVR/Arduino emulation is built in. For the PIC on Linux, you need an external software simulator that you can easily install. This is provided with the Windows version. You can see one of several videos available about an older release of the tool below. There is also a window that can compile your Arduino code and even debug it, although that almost always crashed for me after a few minutes of working. As you can see in the image above, though, it is capable of running some pretty serious Arduino code as long as you aren’t debugging.

Looks and sounds exciting, right? It is, but be sure to save often. Under Linux, it seems to crash pretty frequently even if you aren’t debugging. It also suffers from other minor issues like sometimes forgetting how to move components. Saving, closing the application, and reopening it seems to fix that. Plus, we assume they will squash bugs as they are reported. One of my major hangs was solved by removing the default (old) Arduino IDE and making sure the most recent was on the path. But the crashing was frequent and seemed more or less random. It seemed that I most often had crashes on Linux with occasional freezes but on Windows it would freeze but not totally crash.

Basic Operation

The basic operation is pretty much what you’d expect. The window is broadly divided into three panes. The leftmost pane shows, by default, a palette of components. You can use the vertical tab strip on the left to also pick a memory viewer, a property inspector, or a file explorer.

The central pane is where you can draw your circuit and it looks like a yellow piece of engineering paper with a grid. Along the top are file buttons that do things like save and load files.

You’ll see a similar row of buttons above the rightmost pane. This is a code editor and debugging window that can interface with the Arduino IDE. It looks like it can also interface with GCBasic for the PIC, although I didn’t try that.

You drag components from the left onto the circuit. Wiring isn’t a distinct operation. You just let the mouse float over the connection until the cursor makes a cross. Click and then drag to the connection point and click again. Sometimes the program forgets to make the cross cursor and then I’ve had to save and restart.

Most of the components are just what you think they are. There are some fun ones including a keypad, an LED matrix, text and graphic LCDs, and even stepper and servo motors. You’ll also find several logic functions, 7400-series ICs, and there are annotation tools like text and boxes at the very bottom. You can right click on a category and hide components you never want to see.

At the top, you can add a voltmeter, an ammeter, or an oscilloscope to your circuit. The oscilloscope isn’t that useful because it is small. What you really want to do is use a probe. This just shows the voltage at some point but you can right click on it and add the probe to the plotter which appears at the bottom of the screen. This is a much more useful scope option.

There are a few quirks with the components. The voltage source has a push button that defaults to off. You have to remember to turn it on or things won’t work well. The potentiometers were particularly frustrating. The videos of older versions show a nice little potentiometer knob and that appears on my Windows laptop, too. On Linux the potentiometer (and the oscilloscope controls) look like a little tiny joystick and it is very difficult to set a value. It is easier to right click and select properties and adjust the value there. Just note that the value won’t change until you leave the field.

Microcontroller Features

If that’s all there was to it, you’d be better off using any of a number of simulators that we’ve talked about before. But the big draw here is being able to plop a microcontroller down in your circuit. The system provides PIC and AVR CPUs that are supported by the simulator code it uses. There’s also four variants of Arduinos: the Uno, Nano, Duemilanove, and the Leonardo.

You can use the built-in Arduino IDE — just make sure you have the real Arduino software on your path and it is a recent version. Also, unlike the real IDE, it appears you must save your file before a download or debug will notice the changes. In other words, if you make a change and download, you’ll compile the code before the change if you didn’t save the file first. You don’t have to use the built-in IDE. You can simply right click on the processor and upload a hex file. Recent Arduino IDEs have an option to export a hex file, and that works with no problem.

When you have a CPU in your design, you can right click it and open a serial monitor port which shows virtual serial output at the bottom of the screen and lets you provide input.

The debugging mode is simple but works until it crashes. Even without debugging, there is an option to the left of the screen to watch memory locations and registers inside the CPU.

Overall, the Arduino simulation seemed to work quite well. Connecting to the Uno pins was a little challenging at certain scales and I accidentally wired to the wrong pin on more than one occasion. One thing I found odd is that you don’t need to wire the voltage to the Arduino. It is powered on even if you don’t connect it.

Besides the crashing, the other issue I had was with the simulation speed which was rather slow. There’s a meter at the top of the screen that shows how slow the simulation is compared to real-time and mine was very low (10% or so) most of the time. There is a help topic explaining that this depends if you have certain circuit elements and ways to improve the run time, but it wasn’t bad enough that I bothered to explore it.

My first thought was that it would be difficult to handle a circuit with multiple CPUs in it since the debugging and serial monitors are all set up for a single CPU. However, as the video below shows, you can run multiple instances of the program and connect them via a serial port connection. The only issue would be if you had a circuit where both CPUs were interfacing with interrelated circuitry (for example, an op amp summing two signals, one from each CPU).

A Simple Example

As an experiment, I created a simple circuit that uses an Uno. It generates two PWM signals, integrates them with an RC circuit and then either drives a load or drives a load through a bipolar emitter follower. A pot lets you set the PWM percentages which are compliments of each other (that is, when one is at 10% the other is at 90%). Here’s the circuit:

Along with the very simple code:

int v;

const int potpin=0;
const int led0=5;
const int led1=6;

void setup() {
Serial.begin(9600);
Serial.println("Here we go!");
}

void loop() {
int v=analogRead(potpin)/4;
Serial.println(v);
analogWrite(led0,v);
analogWrite(led1,255-v);
delay(250);
}

Note that if the PWM output driving the transistor drops below 0.7V or so, the transistor will shut off. I deliberately didn’t design around that because I wanted to see how the simulator would react. It correctly models this behavior.

There’s really no point to this other than I wanted something that would work out the analog circuit simulation as well as the Arduino. You can download all the files from GitHub, including the hex file if you want to skip the compile step.

If you use the built-in IDE on the right side of the screen, then things are very simple. You just download your code. If you build your own hex file, just right click on the Arduino and you’ll find an option to load a hex file. It appears to remember the hex file, so if you run a simulation again later, you don’t have to repeat that step unless you moved the hex file.

However, the IDE doesn’t remember settings for the plotter, the voltage switches, or the serial terminal. You’ll especially want to be sure the 5V power switch above the transistor is on or that part of the circuit won’t operate correctly. You can right click on the Arduino to open the serial monitor and right click on the probes to bring back the plotter pane.

The red power switch at the top of the window will start your simulation. The screenshots above show close-ups of the plot pane and serial monitor.

Lessons Learned

This could be a really great tool if it would not crash so much. In all fairness, that could have something to do with my PC, but I don’t think that fully accounts for all of them. However, the software is still in pretty early development, so perhaps it will get better. There are a lot of fit and finish problems, too. For example, on my large monitor, many of the fonts were too large for their containers, which isn’t all that unusual.

The user interface seemed a little clunky, especially when you had to manipulate potentiometers and switches. Also, remember you can’t right-click on the controls but must click on the underlying component. In other words, the pot looks like a knob on top of a resistor. Right clicks need to go on the resistor part, not the knob. I also was a little put off that you can’t enter multiplier suffixes directly in component values. That is, you can’t enter a resistor value as 1K. You can enter 1000 or you can enter 1 and then change the units in a separate field to Kohms. But that’s not a big deal. You can get used to all of that if it would quit crashing.

I really wanted the debugging feature to work. While you can debug directly with simuavr or other tools, you can’t easily simulate all your I/O devices like you can with this tool. I’m hoping that becomes more robust in the future. Under Linux it would work for a bit and crash. On Windows, I never got it to work.

As I always say, though, simulation is great, but the real world often leads to surprises that don’t show up in simulation. Still, a simulation can help you clear up a host of problems before you commit to heating up the soldering iron or pulling out the breadboard. Simuide has the potential to be a great tool for simulating the kind of designs we see most on Hackaday.

If you want to explore other simulation options, we’ve talked a lot about LTSpice, including our Circuit VR series. There’s also the excellent browser-based Falstad simulator.

Build Your Own Portable Arduino Soldering Iron

At this point you’ve almost certainly seen one of these low-cost portable soldering irons, perhaps best exemplified by the TS100, a pocket-sized temperature controlled iron that can be had for as little as $50 USD from the usual overseas suppliers. Whether or not you’re personally a fan of the portable irons compared to a soldering station, the fact remains that these small irons are becoming increasingly popular with hackers and makers that are operating on a budget or in a small workspace.

Believing that imitation is the most sincere form of flattery, [Electronoobs] has come up with a DIY portable soldering iron that the adventurous hacker can build themselves. Powered by an ATMega328p pulled out of an Arduino Nano, if offers the same software customization options of the TS100 but at a considerably lower price. Depending on where you source your components, you should be able to build one of these irons for as little as $15.

The iron features a custom PCB and MAX6675 thermocouple amplifier to measure tip temperature. A basic user interface is provided by two tactile buttons on the PCB as well as an 128×32 I2C OLED display. In a future version, [Electronoobs] says he will look into adding some kind of sensor to detect when the iron is actually being used and put it to sleep when inactive.

The tip is sourced from a cheap soldering station replacement iron, and according to [Electronoobs], is probably the weakest element of the entire build. He’s looking into using replacement TS100 tips, but says he’ll need to redesign his electronics to make it compatible. The case is a simple 3D printed affair, which looks solid enough, but seems likely to be streamlined in later versions.

We’ve seen a number of attempts at DIY soldering irons over the years, but we have to say, this one is probably the most professional we’ve ever seen. It will be interesting to see how future revisions improve on this already strong initial showing.

Learn Six Oscilloscope Measurements with One Arduino

We won’t mention names, but we are always dismayed to see people twist knobs randomly on a scope until it shows a good picture. These days, there’s the dreaded auto button, too, which is nearly as bad. If you haven’t spent the time to learn how to properly use a scope [Bald Engineer] has a great introduction to making six measurements with an Arduino as a test device.

To follow along you’ll need an Arduino UNO and a two-channel (or better) scope. Actually, most of the measurements would probably work on any Arduino, but there are some that require the separate USB to serial chip like that found on the UNO and similar boards.

The six measurements are:

  1. The auto reset programming pulse
  2. Capture and decode serial data
  3. Noise on the power rail
  4. Observe probe loading effects
  5. PWM duty cycle
  6. The timing of pin manipulation code

Some of these measurements use a bit of Arduino code, while others just make use of the circuitry on the board no matter what software is running.

Not only does the post show you where to make the measurements and what the result should look like, there’s also a discussion of what the measurement means and some suggested things to try on your own.

If you go through this post, you might also enjoy learning more about probes. If you are feeling adventurous, you can even build your own current probe.

Card Reader Lockout Keeps Unauthorized Tool Users at Bay

It’s a problem common to every hackerspace, university machine shop, or even the home shops of parents with serious control issues: how do you make sure that only trained personnel are running the machines? There are all kinds of ways to tackle the problem, but why not throw a little tech at it with something like this magnetic card-reader machine lockout?

[OnyxEpoch] does not reveal which of the above categories he falls into, if any, but we’ll go out on a limb and guess that it’s a hackerspace because it would work really well in such an environment. Built into a sturdy steel enclosure, the guts are pretty simple — an Arduino Uno with shields for USB, an SD card, and a data logger, along with an LCD display and various buttons and switches. The heart of the thing is a USB magnetic card reader, mounted to the front of the enclosure.

To unlock the machine, a user swipes his or her card, and if an administrator has previously added them to the list, a relay powers the tool up. There’s a key switch for local override, of course, and an administrative mode for programming at the point of use. Tool use is logged by date, time, and user, which should make it easy to identify mess-makers and other scofflaws.

We find it impressively complete, but imagine having a session timeout in the middle of a machine operation would be annoying at the least, and potentially dangerous at worst. Maybe the solution is a very visible alert as the timeout approaches — a cherry top would do the trick!

There’s more reading if you’re one seeking good ideas for hackerspace. We’ve covered the basics of hackerspace safety before, as well as insurance for hackerspaces.

A Two-Range OLED Capacitance Meter

If you are just starting out in electronics, you need tools. But it is hard to build all your tools. Even though we see a lot of soldering station builds, you really ought to have a soldering iron to build the station. It is hard to troubleshoot a multimeter you just built if you don’t have a multimeter. However, a capacitance meter is a handy piece of gear, relatively simple to build, and you should be able to get it working without an existing capacitance meter. [gavinlyonsrepo] presents a simple design using an Arduino, an OLED display, and a few components.

The principle of operation is classic. On one range, the Arduino charges the capacitor through one resistor and discharges it through another while timing the operation. The amount of time taken corresponds to the capacitance.

The other range doesn’t use external components but relies on the internal resistance of the Arduino and the stray capacitance in the chip and the board. Because these parameters vary, you’ll need to calibrate the device with a capacitor of known value.

This is one of those projects that would have been more complicated before microcontrollers. With an Arduino or similar device, though, it is pretty straightforward.

We looked at a project that explores the second method in depth quite some time ago. We’ve seen some similar meters in the past you might enjoy.

Soundproofing A CNC Mill Conversion

The Proxxon MF70 is a nice desktop sized milling machine with a lot of useful add-on accessories available for it, making it very desirable for a hacker to have one in his or her home workshop. But its 20000 rpm spindle can cause quite the racket and invite red-faced neighbors. Also, how do you use a milling machine in your home-workshop without covering the whole area in metal chips and sawdust? To solve these issues, [Tim Lebacq] is working on Soundproofing his CNC mill conversion.

To meet his soundproof goal, he obviously had to first convert the manual MF70 to a CNC version. This is fairly straightforward and has been done on this, and similar machines, in many different ways over the years. [Tim] stuck with using the tried-and-tested controller solution consisting of a Raspberry Pi, an Arduino Uno and a grbl shield sandwich, with stepper motor drivers for the three NEMA17 motors. The electronics are housed inside the reclaimed metal box of an old power supply. Since the Proxxon MF70 is already designed to accept a CNC conversion package, mounting the motors and limit switches is pretty straightforward making it easy for [Tim] to make the upgrade.

Soundproofing the box is where he faced unknown territory. The box itself is made from wooden frames lined with particle board. A pair of drawer slides with bolt-action locks is used for the front door which opens vertically up. He’s also thrown in some RGB strips controlled via the Raspberry-Pi for ambient lighting and status indications. But making it soundproof had him experimenting with various materials and techniques. Eventually, he settled on a lining of foam sheets topped up with a layer of — “bubble wrap” ! It seems the uneven surface of the bubble wrap is quite effective in reducing sound – at least to his ears. Time, and neighbours, will tell.

Maybe high density “acoustic foam” sheets would be more effective (the ones similar to “egg crate” style foam sheets, only more dense)? Cleaning the inside of the box could be a big challenge when using such acoustic foam, though. What would be your choice of material for building such a sound proof box? Let us know in the comments below. Going back many years, we’ve posted about this “Portable CNC Mill” and a “Mill to CNC Conversion” for the Proxxon MF70. Seems like a popular machine among hackers.

Reflow Rig Makes SMD Soldering a Wok in The Park

For a DIY reflow setup, most people seem to rely on the trusty thrift store toaster oven as a platform to hack. But there’s something to be said for heating the PCB directly rather than heating the surrounding air, and for that one can cruise the yard sales looking for a hot plate to convert. But an electric wok as a reflow hotplate? Sure, why not?

At the end of the day [ThomasVDD]’s reflow wok is the same as any other reflow build. It has a heat source that can be controlled easily, temperature sensors, and a microcontroller that can run the proportional-integral-derivative (PID) control algorithm needed for precise temperature control. That the heating element he used came from an electric wok was just a happy accident. A laser-cut MDF case complete with kerf-bent joints holds the heating element, the solid-state relay, and the Arduino Nano that runs the show. A MAX6675 thermocouple amp senses the temperature and allows the Nano to cycle the temperature through different profiles for different solders. It’s compact, simple, and [ThomasVDD] now has a spare wok to use on the stove top. What’s not to like?

Reflow doesn’t just mean oven or hotplate, of course. Why not give reflow headlights, a reflow blowtorch, or even a reflow work light a try?

Business On The Outside, Electronics Workstation On The Inside

As an electrical engineering student, [Brandon Rice] had the full suite of electronics tools you’d expect. Cramming them all into a dorm room was doable — but cramped — a labour to square everything away from his desk’s top when he had to work on something else. To make it easier on himself, he built himself a portable electronics workstation inside the dimensions of a briefcase.

Built from scratch, the workstation includes a list of features that should have you salivating by the end. Instead of messing with a bunch of cables, on-board power is supplied by a dismantled 24V, 6A power brick, using a buck converter and ATmega to regulate and display the voltage, with power running directly to  12V and 5V lines of a breadboard in the middle of the workstation. A wealth of components are stored in two dozen 3d printed 1″ capsules setting them in loops pinned to the lid.

If all this was not already enough, there’s more!

Since he’ll be soldering a lot, there’s obviously an included soldering station, but were you expecting a helping hand and a carbon-filtered fume extractor? How about a folding overhead light to boot? Spools of wire are off to the rear to be tugged on when needed, and a drawer tucked into the side keeps circuit boards and jumper wires organized. There’s also a power strip along the other side — [Rice] notes that it was handier than he realized — for any other devices you might need. There’s even a built-in Arduino.

Hungry for more? How about a second serving, or even desert?

Tachometer Uses Light, Arduinos

To measure how fast something spins, most of us will reach for a tachometer without thinking much about how it works. Tachometers are often found in cars to measure engine RPM, but handheld units can be used for measuring the speed of rotation for other things as well. While some have mechanical shafts that must make physical contact with whatever you’re trying to measure, [electronoobs] has created a contactless tachometer that uses infrared light to take RPM measurements instead.

The tool uses an infrared emitter/detector pair along with an op amp to sense revolution speed. The signal from the IR detector is passed through an op amp in order to improve the quality of the signal and then that is fed into an Arduino. The device also features an OLED screen and a fine-tuning potentiometer all within its own self-contained, 3D-printed case and is powered by a 9 V battery, and can measure up to 10,000 RPM.

The only downside to this design is that a piece of white tape needs to be applied to the subject in order to get the IR detector to work properly, but this is an acceptable tradeoff for not having to make physical contact with a high-speed rotating shaft. All of the schematics and G code are available on the project site too if you want to build your own, and if you’re curious as to what other tools Arduinos have been used in be sure to check out the Arduino-based precision jig.

Vintage Sewing Machine to Computerized Embroidery Machine

It is February of 2018. Do you remember what you were doing in December of 2012? If you’re [juppiter], you were starting your CNC Embroidery Machine which would not be completed for more than half of a decade. Results speak for themselves, but this may be the last time we see a first-generation Raspberry Pi without calling it retro.

The heart of the build is a vintage Borletti sewing machine, and if you like machinery porn, you’re going to enjoy the video after the break. The brains of the machine are an Arduino UNO filled with GRBL goodness and the Pi which is running CherryPy. For muscles, there are three Postep25 stepper drivers and corresponding NEMA 17 stepper motors.

The first two axes are for an X-Y table responsible for moving the fabric through the machine. The third axis is the flywheel. The rigidity of the fabric frame comes from its brass construction which may have been soldered at the kitchen table and supervised by a big orange cat. A rigid frame is the first ingredient in reliable results, but belt tension can’t be understated. His belt tensioning trick may not be new to you, but it was new to some of us. Italian translation may be necessary.

The skills brought together for this build were vast. There was structural soldering, part machining, a microcontroller, and motion control. The first time we heard from [juppiter] was December 2012, and it was the result of a Portable CNC Mill which likely had some influence on this creation. Between then, he also shared his quarter-gobbling arcade cabinet with us.