PID control loops are everywhere, found in flight controllers for drones and the temperature control code for 3D printers. How do you teach PID control loops? [Tim] has a great demonstration for this, and it’s also a semifinalist for the Hackaday Prize.
[Tim]’s Sab3t is an educational tool designed to illustrate how PID control loops work. It’s a robotic table on which a large ball bearing sits perfectly balanced. On this table is a resistive touch screen from a display providing feedback for the location of the ball bearing. By adjusting PID values, the ball bearing either sits stationary on the table or flails wildly around, depending on the values in the PID algorithm being used.
As a teaching tool, it’s great; with a python script displaying a log of the PID values and the position of the ball on the plate, anyone can easily visualize how oscillations happen, what a well-tuned control loop looks like, and have some fun moving the ball bearing around to different locations.
Continue reading “Hackaday Prize Semifinalist: Playing With PIDs”
There are a handful of companies trying to build the first autonomous car, but this project makes us think that they all might be heading in the wrong direction. [Thorstin] wanted to use a quadcopter to transport people, and built a working prototype of an autonomous quadcopter-esque vehicle that is actually capable of lifting a person.
The device isn’t actually a quadcopter anymore; that wouldn’t be able to generate enough lift. It has sixteen rotors in total, making it a sexdecacopter (we suppose). This setup generates 282 pounds of static thrust, which as the video below shows, is enough to lift an average person off of the ground along with the aluminum alloy frame and all of the lithium ion batteries used to provide power to all of those motors.
With the PID control system in place, the device is ready for takeoff! We like hobby projects that suddenly become life-sized and rideable, and we hope to see this one fully autonomous at some point too. Maybe soon we’ll see people ferried from waypoint to waypoint instead of being driven around in their ground-bound autonomous cars.
Continue reading “Autonomous Drones Now Carry People”
Kerbal Space Program, the game that teaches engineers at JPL and SpaceX the basics of rocket design and orbital mechanics, recently had a giant update. There are now science contracts that require you to fly Kerbals all over their tiny globe, collect data, and transmit it back to the Kerbal Space Center. As would be expected, this is a grind for XP, and the contracts sometimes don’t make sense – you need to collect data from cliff faces and mountain tops. Landing a Kerbal jet at these places is hard.
[Matt Thiffault] wanted to do these science contracts more efficiently. The best way to get to a remote location without a landing strip would be a helicopter, but a harrier jump jet would do just as well. This isn’t supported in the stock game, so [Matt] wrote a complete control system for four engines to control a hovering Kerbal jet.
[Matt]’s work is built on kOS, a scriptable autopilot mod for Kerbal that was originally intended to be something like the Apollo Guidance Computer. People have been using it to make computerized skycranes and automated rendezvous and docking programs, but these are actually relatively simple examples; there’s far more math involved in flying a quadcopter than there is getting into orbit.
To build his automated hovering harrier, [Matt] needed an aircraft. His Kerrier has parts from the Kerbal Aircraft Expansion, B9, and Infernal Robotics mods for KSP, but this is only half the problem. Anyone can put four tilt jets on an airplane, and it takes a real wizard to force a control system to hover. Hover control of the Kerbal harrier is accomplished with a complete control system for a four-engined aircraft, with proper PID control loops and code updating at 20Hz.
With kOS, the proper plane, and the right software running on this emulated guidance computer, [Matt] is able to park his plane in mid-air, have a Kerbal descend the ladder, perform some science, and return to base. It’s an impressive amount of work for a video game. A good thing, too: [Matt] is looking to get into controls engineering professionally. Whether this will go on his resume is another question entirely.
A while ago, [Kyle] built an automated mushroom cultivator. This build featured a sealed room to keep contaminants out and enough air filtering and environmental controls to produce a larger yield of legal, edible mushrooms than would otherwise normally be possible.
Now, he’s at it again. He’s expanded the hardware of his build with a proper, grounded electrical box for his rig, added more relays, implemented PID for his temperature and humidity controller, and greatly expanded the web interface for his fungiculture setup.
Like the previous versions of his setup, this grow chamber is controlled by a Raspberry Pi with a camera and WiFi module. Instead of the old plastic enclosure, [Kyle] is stepping things up with a proper electrical enclosure, more relays, more humidity and temperature sensors, and a vastly improved software stack. Inside the enclosure are eight relays for heaters and humidifiers. The DHT22 sensors around the enclosure are read by the Pi, and with a proper PID control scheme, controlling both the temperature and humidity is simply a matter of setting a number and letting the machine do all the work.
The fungi of [Kyle]’s labor include some beautiful pink and white oyster mushrooms, although with a setup like this there’s not much fungiculture he can’t do.
The USB Implementers’ Forum doesn’t make things easy for anyone building a product with a USB port. To sell anything with USB and have it work like USB should, you need to buy a USB Vendor ID, a $5000 license that grants you exclusive use of 65,536 USB Product IDs. Very few companies will ever release 65,000 products, and there are a lot of unused PIDs sitting around out there.
Now, someone has finally done the sensible thing and put an unused USB VID to work. pid.codes obtained the rights to a single VID – 0x1209 – and now they’re parceling off all the PIDs that remain to open source hardware projects.
This is not a project supported by the USB Implementers’ Forum, and is more of a legal game of chicken on the part of pid.codes. The only thing the USB-IF could do to stop this is revoke the original VID; useless, because they can’t reassign it to anyone else. The original owners of the VID, InterBiometrics, licensed their VID before transferring or sublicensing VIDs and PIDs was prohibited by the USB-IF.
You can get a PID by forking the pid.codes repo, claiming a PID, and sending a pull request. Once that’s accepted, that PID is yours forever.
Go to any control systems class, and you’ll see a final project that demonstrates loops, integration, and everything else that can be learned in a semester or two of control theory. This project is not from one of those classes. It is, however, very cool: it balances a 40mm steel ball on the rim of a lasercut wood wheel using nothing more than a solar cell as a sensor.
[Manuel] was inspired to build this ball-balancing device after seeing a similar project at CCC about six years ago. He doesn’t remember who made it, and eschewed the PC/Matlab architecture of the original, but this build retains one interesting feature of its muse. The input to the control system is just a high intensity light bulb and a solar cell. The 40mm steel ball blocks the light reaching the solar cell most of the time. Slight variations in voltage go through the control system to keep this ball balanced on top of the wheel.
The only hardware for this build is a motor, a motor driver, and an ATMega644P. The first revision of the hardware was just a few breakout boards stuffed into a rat’s nest of wiring in the base of the build, but this has been fixed in version two with a new PCB. Video below.
Continue reading “Balancing A Ball With A Solar Cell”
[Ed] owns a 3-zone reflow oven (which he coincidently uses to manufacture reflow oven controllers), but its performance has gotten worse and worse over time. The speed of the conveyer belt became so inconsistent that most boards run through the oven weren’t completely reflowed. [Ed] decided to rip out the guts of the oven and replace it with an Arduino, solving the belt problem and replacing the oven’s user-unfriendly interface
When [Ed] was looking into his belt speed problem, he discovered that the belt motor was controlled by an adjustable linear regulator with no feedback. Although this seems a bit sketchy by itself, the motor also had some mechanical issues and [Ed] ended up replacing it entirely. After realizing that closed-loop speed control would really help make the oven more consistent, [Ed] decided to overhaul all of the electronics in the oven.
[Ed] wanted to make as little custom hardware as possible, so he started out with an Arduino Mega and some MAX31855’s that measure multiple thermocouples in the oven. The Arduino controls the belt speed and runs PID loops which control heating elements in each of the oven’s 3 zones. The Arduino can be programmed with different profiles (stored in EEPROM) which are made up of 3 zone temperatures and a conveyor speed. Don’t have a 3-zone oven of your own to hack? Check out some DIY reflow oven builds we’ve featured before.