Posts | Comments

Planet Arduino

Archive for the ‘rotary encoder’ Category

We’ve all been there. You’re manning the battle station, deep in the sim-racing or some other n00b-pwning zone and suddenly some loudmouth blows out your eardrums over Discord. It’s insulting to have to stop what you’re doing to find the right Windows volume slider. So why do that? Build [T3knomanzer]’s simple yet elegant multi-volume knob and stay zen in the zone.

It’s easy, just turn the knob to cycle through your programs until Discord comes up on the little screen, and then push down to change it into a volume knob. If you need to change another volume, just click it again. Since there’s no Alt+Tabbing out to the desktop, no checkered flags should ever slip through your fingers.

Inside the well-designed case you’ll find the usual suspects — Arduino Nano, rotary encoder, an OLED display, and an LED ring, each with their own place carved out.

This completely open-source knob looks great, and we love that it’s been made incredibly easy to replicate by standing up a site with foolproof, well-depicted, step-by-step instructions. Watch them take it for a spin after the break.

Want more than volume at your fingertips? Here’s a DIY USB knob that does shortcuts, too.

[FabroLabs Technologies] is an industrial designer who uses several creative-type software programs in a given day. Unfortunately, they all have slightly different shortcut schemes, and trying to remember all the different modifiers is a waste of time better spent elsewhere.

This lovely little macro keyboard is every bit as useful as it is cool looking. Spinning the rotary encoder cycles through a menu of programs on the 16×2 LCD, and the key map just updates automatically for the chosen program. At the heart of this build is an Arduino Pro Micro and 20 of the loudest key switches ever made — Cherry MX blues. We like that it manages to look like toy cash register and a serious peripheral all at once — it probably has something to do with those way-cool circular keycaps that were made on a resin printer.

We’re glad that [FabroLabs] laid down such a comprehensive and open build guide during the process of making this macro keyboard. The average hacker can learn a lot from industrial designers who show their work. Remember the time [Eric Strebel] showed us all how to improve our foam board design game?

It isn’t hard to imagine a scenario where you are stuck at home all day with nothing to do and certain items are in short supply. Sure, bathroom tissue gets all the press, but try buying some flour or a freezer and see how far you get. Plus online shopping has given up on next day delivery for the duration. Not hard to imagine at all. Now suppose your latest self-quarantine project needs a rotary shaft encoder. Not having one, what do you do? If you are [Tech Build] you go all MacGyver on an old printer and pull out a stepper motor.

How does a stepper motor turn into an encoder? Well, that’s the MacGyver part. We are not big fans of the physical circuit diagrams, but it looks like [Tech Build] borrowed (with credit) from an earlier post and that one has a proper schematic.

Looking at [Andriyf1’s] schematic, you can see each coil connects to an op-amp wired as a positive feedback comparator. The result should be a fairly clean square wave from a noisy input. The real trick is how to connect the coils, which depends on how the stepper is wired. If you have a stepper motor of unknown providence, grab your ohmmeter and read how to sort the wires out.

The initial version was on a breadboard, but the final was on a prototyping board. Of course, an Arduino reads the pulses. We love using things for unintended purposes. Speakers and microphones are often interchangeable. Generators and motors, too. Then there’s the paperclip.

Just when we think we’ve peeped all the cool baby keebs out there, another think comes along. This bad boy built by [andyclymer] can be configured three different ways, depending on what kind of control you’re after.

As designed, the PCB can be used as a six-switch macro keyboard, or a rotary encoder with two switches, or a pair of rotary encoders. It’s meant to be controlled with Trinket M0, which means it can be programmed with Arduino or CircuitPython.

This could really only be cooler if the key switch PCB holes had sockets for hot-swapping the switches, because then you could use this thing as a functional switch tester. But hey, you can always add those yourself.

If you’re in the market for purpose-built add-on input device, but either don’t have the purpose nailed down just yet, or aren’t sure you want to design the thing yourself, this board would be a great place to start. Usually, all it takes is using someone else’s design to get used to using such a thing, at which point it’s natural to start thinking of ways to customize it. [andyclymer] is selling these boards over on Tindie, or you can roll your own from the repo.

Need just a few more inputs? We’ve got you covered.

Media keyboards are nice in theory. But in practice they never have all the keys you want, and they almost always have a few you don’t. Sure, you could maybe reassign the ones you don’t use, but then the caps are wrong, and it’s a whole thing. So really, the only winning move is to make a micro macro keyboard as [littleSilvr] did to make all your shortcuts one-button accessible.

This lovely input has an Arduino Pro Micro for a brain, and Gateron browns for brawn. That knob there is a rotary encoder, not a potentiometer, because endless volume knob twiddling is just so much nicer. In case you’re wondering, those shortcuts open Fusion 360 and Cura, but we’re still not sure what the hyphen does.

Can we talk about those keycaps, though? [littleSilvr] used [Make Anything]’s process of of printing in multi-color with a single extruder. The technique involves building a vector for each color, each of which gets its own STL file. Then you add retraction as you go up through the layers, slow the print speed, change filament colors while the nozzle and bed are still warm, and voila, a vibrant canvas of colors.

If you don’t have a printer and you don’t mind a bit of compromise on the number of inputs, try basing your build on an existing input, like an old rotary telephone dialer.

Via r/duino

Sometimes it’s necessary to make do with whatever parts one has on hand, but the results of squashing a square peg into a round hole are not always as elegant as [Juan Gg]’s programmable DC load with rotary encoder. [Juan] took a design for a programmable DC load and made it his own in quite a few different ways, including a slick 3D-printed enclosure and color faceplate.

The first thing to catch one’s eye might be that leftmost seven-segment digit. There is a simple reason it doesn’t match its neighbors: [Juan] had to use what he had available, and that meant a mismatched digit. Fortunately, 3D printing one’s own enclosure meant it could be gracefully worked into the design, instead of getting a Dremel or utility knife involved. The next is a bit less obvious: the display lacked a decimal point in the second digit position, so an LED tucked in underneath does the job. Finally, the knob on the right could reasonably be thought to be a rotary encoder, but it’s actually connected to a small DC motor. By biasing the motor with a small DC voltage applied to one lead and reading the resulting voltage from the other, the knob’s speed and direction can be detected, doing a serviceable job as rotary encoder substitute.

The project’s GitHub repository contains the Arduino code for [Juan]’s project, which has its roots in a design EEVblog detailed for an electronic load. For those of you who prefer your DIY rotary encoders to send discrete clicks and pulses instead of an analog voltage, a 3D printed wheel and two microswitches will do the job.

We’ve been told that standing at a desk is good for you, but unless you’re some kind of highly advanced automaton you’re going to have to sit down eventually no matter what all those lifestyle magazines say. That’s where desks like the IKEA SKARSTA come in; they use a crank on the front to raise and lower the desk to whatever height your rapidly aging corporeal form is still capable of maintaining. All the health benefits of a standing desk, without that stinging sense of defeat when you later discover you hate it.

But who wants to turn a crank with their hand in 2019? Certainly not [iLLiac4], who’s spent the last few months working in conjunction with [Martin Mihálek] to add some very impressive features to IKEA’s adjustable table. Replacing the hand crank with a motorized system which can do the raising and lifting was only part of it, the project also includes a slick control panel with a digital display that shows the current table height and even allows the user to set and recall specific positions. The project is still in active development and has a few kinks to work out, but it looks exceptionally promising if you’re looking to get a very capable adjustable desk without breaking the bank.

The heart of the project is a 3D printable device which uses a low-RPM DC gear motor to turn the hex shaft where the crank would normally go. A rotary encoder is linked to the shaft of the motor by way of printed GT2 pulleys and a short length of belt, which gives the system positional information and avoids the complexity of adding limit switches to the table itself.

For controlling the motor the user is given the option between using relays or an H-Bridge PWM driver board, but in either event an Arduino Nano will be running the show. In addition to controlling the motor and reading the output of the rotary encoder, the Arduino also handles the front panel controls. This consists of a TM1637 four digit LED display originally intended for clocks, as well as six momentary contact tactile switches complete with 3D printed caps. The front panel’s simple user interface not only allows for setting and recalling three preset desk heights, but can even be used to perform the calibration routine without having to go in and hack the source code to change minimum and maximum positions.

We’ve seen all manner of hacks and modifications dealing with IKEA products, from a shelving unit converted into a vivarium to a table doing double duty as a cheap plate reverb. Whether you’re looking for meatballs or some hacking inspiration, IKEA seems to be the place to go.

In the era of touch screens and capacitive buttons, we’d be lying if we said we didn’t have the occasional pang of nostalgia for the good old days when interfacing with devices had a bit more heft to it. The physical clunk and snap of switches never seems to get old, and while you can always pick up a mechanical keyboard for your computer if you want to hear that beautiful staccato sound while firing off your angry Tweets, there’s a definite dearth of mechanical interface devices otherwise.

[Jeremy Cook] decided to take matters into his own hands (literally and figuratively) by designing his own multipurpose USB rotary input device. It’s not a replacement for the mouse or keyboard, but a third pillar of the desktop which offers a unique way of controlling software. It’s naturally suited to controlling things like volume or any other variable which would benefit from some fine tuning, but as demonstrated in the video after the break even has some gaming applications. No doubt the good readers of Hackaday could think of even more potential applications for a gadget like this.

The device is built around the diminutive Arduino-compatible PICO board by MellBell, which features a ATmega32u4 and native USB. This allowed him to very rapidly spin up a USB Human Interface Device (HID) with minimal headaches, all he had to do was hang his buttons and rotary encoder on the PICO’s digital pins. To that end, he [Jeremy] used the fantastic I2C rotary encoder designed by [fattore.saimon], which readers may remember as a finalist in the Open Hardware Design Challenge phase of the 2018 Hackaday Prize. He also added a NeoPixel ring around the encoder to use for some visual feedback and because, well, it just looks cool.

Since all of the core components are digital, there’s not a whole lot required in the way of wiring or passive components. This let [Jeremy] put the whole thing together on a piece of perfboard, freeing him up to spend time designing the 3D printed enclosure complete with translucent lid so he can see the NeoPixel blinkenlights. He got the tolerances tight enough that the whole device can be neatly press-fit together, and even thought to add holes in the bottom of the case so he could push the perfboard back out if he needed to down the line.

[Jeremy] spends a good chunk of the video going over the software setup and development of the firmware, and details some of the nuances he had to wrap his head around when working with the I2C encoder. He also explains the math involved in getting his encoder to emulate a mouse cursor moving in a circle, which he thinks could be useful when emulating games that originally used an encoder such as Tempest or Pong.

We’ve seen similar USB “knobs” in the past for controlling volume, but the additional inputs that [Jeremy] built into his version definitely makes it a bit more practical. Of course we’re suckers for interesting USB input devices to begin with.

Stepper motors work by alternating a series of magnets in order to rotate its shaft by a certain angle. When the shaft is manually twisted, these magnets produce an electrical signal in a predictable pattern, which as shown in the video below, can be used as an encoder with the help of an Arduino Uno.

More information, including a circuit diagram and the Arduino code used for the stepper-NeoPixel and stepper-stepper examples can be found here. While the write-up notes that this stepper-encoder won’t work reliably if turned too slowly, it seems to work quite well at the fairly low speed shown in the demonstrations.

I want to tell you how to make incremental encoder from stepper motor. When we turning shaft of stepper motor it works like generator. It generates certain impulses on its coils. After some signal processing, we get same impulses as incremental encoder. This encoder has one problem, it can drop steps if you turning very slowly. But for many applications, it doesn’t matter.

We always think it is interesting that a regular DC motor and a generator are about the same thing. Sure, each is optimized for its purpose, but inefficiencies aside, you can use electricity to rotate a shaft or use a rotating shaft to generate electricity. [Andriyf1] has a slightly different trick. He shows how to use a stepper motor as an encoder. You can see a video of the setup below.

It makes sense. If the coils in the stepper can move the shaft, then moving the shaft should induce a current in the coils. He does note that at slow speeds you can miss pulses, however. Again, the device isn’t really optimized for this type of operation.

The circuit uses an opamp-based differential amplifier to read the pulses from the coil. Two opamps on two coils produce a quadrature signal just like a normal encoder. When the shaft turns in one direction, one pulse will lead the other. In the other direction, the lead pulse will be reversed.

There’s code to let an Arduino read the pulses, but we were disappointed it was behind a Patreon paywall. However, there’s plenty of code that will read quadrature on an Arduino or other processors, and that really isn’t the point of the post, anyway. We’ve seen similar hacks done with hard drive motors which are quite similar, by the way.



  • Newsletter

    Sign up for the PlanetArduino Newsletter, which delivers the most popular articles via e-mail to your inbox every week. Just fill in the information below and submit.

  • Like Us on Facebook