Posts by David
You are currently viewing a selection of posts from the Pololu Blog. You can also view all the posts.
I am excited to announce our new product, the Tic T825 USB Multi-Interface Stepper Motor Controller. The Tic makes basic speed or position control of a stepper motor easy, with support for six high-level control interfaces:
- USB for direct connection to a computer
- TTL serial operating at 5 V for use with a microcontroller
- I²C for use with a microcontroller
- RC hobby servo pulses for use in an RC system
- Analog voltage for use with a potentiometer or analog joystick
- Quadrature encoder input for use with a rotary encoder dial, allowing full rotation without limits (not for position feedback)
You can select which of these interfaces you want to use and configure the other settings of the Tic over USB using our free software.
The Status tab of the Pololu Tic Control Center.
The Input and Motor Settings tab of the Pololu Tic Control Center.
The Tic T825 can operate from 8.5 V to 45 V and deliver up to approximately 1.5 A per phase continuously without a heat sink or forced air flow. With a digitally adjustable current limit that can be set over USB, serial, or I²C, you can save power while holding position or increase the motor’s torque while it is moving. The Tic offers six different step resolutions, from full step through 1/32-step (32 microsteps per full step). We designed the Tic’s firmware to be capable of taking up to 50,000 microsteps per second, which lets you use those finer microstepping modes while still keeping a high motor speed. The Tic also supports acceleration and deceleration limiting for smooth movements, and very slow speeds down to 1 step every 200 seconds (or 1 step every 1428 seconds with reduced resolution). The Tic T825 is based on the DRV8825 stepper motor driver IC from Texas Instruments (for which we also have a basic carrier board), and we plan to make other versions of the Tic that are based on different drivers with different performance characteristics.
Tic T825 USB Multi-Interface Stepper Motor Controller, bottom view with dimensions.
We’re excited to offer a series of addressable LED strips and addressable LED panels based on the new SK9822 integrated circuit. Like the APA102C, the SK9822 combines an RGB LED and driver into a single 5050-size package, allowing each pixel to be individually controlled using a simple two-wire SPI protocol.
The SK9822 is almost (see the notes below) a drop-in replacement for the APA102C and is better than it in a few ways, most importantly its built-in constant current control. If you’ve ever tried to power a long chain of LED strips and only connected power at one end, you might have noticed that the far end of the LED strip has a lower voltage across its power rails because of resistance in the long power connections. For LED strips based on the APA102C and WS2812B, the lower voltage makes the light dimmer and redder. With the SK9822, voltage drops like that are less likely to have a visible effect as long as the voltage stays above 3.5 V.
The SK9822’s protocol is very similar to that of the APA102C, but it updates the color that is being shown at a different time. If you replace APA102C LEDs with SK9822 LEDs in a low frame-rate application, you might have to update the code you are using to control the LEDs. The latest version of our APA102 Arduino library works with the SK9822 so you can either use it directly or use it as a reference when writing your own code. The colors generated by the SK9822 look different from the colors generated by the APA102C, so we would not recommend mixing the APA102C and the SK9822 in a single project.
We offer six different kinds of SK9822 LED strip with different LED densities and lengths:
- 1 meter, 30 LEDs (30 LEDs/m)
- 2 meters, 60 LEDs (30 LEDs/m)
- 5 meters, 150 LEDs (30 LEDs/m)
- 1 meter, 60 LEDs (60 LEDs/m)
- 2 meters, 120 LEDs (60 LEDs/m)
- 0.5 meters, 72 LEDs (144 LEDs/m)
We offer SK9822 LED panels in three different sizes:
These new SK9822-based products will replace our older APA102C-based products.
We continue to offer SK6812-based LED strips which also have constant current control but are controlled with a one-wire protocol.
Close up of an SK9822, with the red, green, and blue LEDs on at a low brightness.
An addressable RGB LED strip (APA102C or SK9822) displaying a rainbow animation.
One of the main features of the kit is that it provides a backlit 2×20 character LCD to replace the receiver’s original 5-digit 7-segment display, allowing much more information to be shown. The kit includes a clear plastic window to replace the receiver’s original smoked dark plastic window, and a black plastic display mask. Edward gets both of these pieces made using our custom laser-cutting service.
Two laser-cut pieces, a clear window and black display mask, shown on top of the Ten-Tec 1254 receiver’s original face plate.
Ten-Tec 1254 receiver with Edward Cholakian’s display upgrade kit installed.
The display/control board in the kit uses the P-Star 25K50 Micro as its processor. Edward, a consulting engineer who designs embedded hardware and firmware, told us that he chose the P-Star because he was already using a Microchip processor similar to the P-Star’s PIC18F25K50 in one of his previous designs, and it was more economical to buy the P-Star than to hand-assemble his own board. He said the P-Star’s cross-platform USB firmware upgrade software was also a plus since his own bootloading software does not support Linux and macOS.
The kit comes with software for Windows that can control the receiver over USB. The software provides a graphical user interface and uses WinUSB to talk to the P-Star’s native USB interface.
USB control program for the Ten-Tec 1254 Receiver Display Upgrade Kit
For more information, see the Ten-Tec 1254 Receiver Display Upgrade Kit page.
We are now selling new addressable RGB LED strips based on the SK6812. These LED strips replace our older WS2812B LED strips. Like the WS2812B, the SK6812 is an RGB LED with an integrated driver that allows independent control over a chain of LEDs using just one I/O line. The main difference between the two drivers is that the SK6812 has constant current control capabilities that let it have a voltage-independent color and brightness over a wide range of voltages, so any voltage drop due to long power lines is less of a concern.
LED side of the SK6812-based addressable LED strips, showing 30 LEDs/m (top), 60 LEDs/m (middle), and 144 LEDs/m (bottom).
We offer six different kinds of SK6812 LED strip with different LED densities and lengths. Our strips with 30 LEDs per meter are available in three lengths:
We also offer denser SK6812 LED strips that have 60 LEDs per meter:
Our highest density strip has 144 LEDs per meter:
We provide LED strip example code for the Arduino, AVR, and mbed microcontroller platforms. More information about the LED strips and how to use them can be found on the LED strip product page.
Controlling an addressable RGB LED strip with an Arduino and powering it from a 5V wall power adapter.
We’re excited to offer a series of APA102C-based addressable RGB LED panels, which make it easy to add colorful images, text, or lighting effects to your project. These panels use the same integrated APA102C LED driver as our APA102C-based addressable RGB LED strips, which means that you can control the LEDs using a standard SPI interface that works over a wide range of communication rates.
We offer APA102C LED panels in three different sizes:
For more information about our APA102C-based LED panels, including links to example code, see their product pages.
Addressable RGB 8×32-LED Flexible Panel, 5V, 10mm Grid (APA102C or SK9822) showing an animated rainbow.
An addressable RGB 16×16-LED panel with a plastic diffuser (not included) showing the Pololu logo.
I am excited to announce the release of the Pololu USB AVR Programmer v2, a programmer for the popular AVR microcontrollers from Atmel.
Here at Pololu, we have been making AVR programmers for over eight years in order to support products like our Orangutan robot controllers and the 3pi robot. These programmers are used to transfer a compiled AVR program from your computer to the target AVR’s flash memory, allowing it to run the program.
From left to right: the original Orangutan USB Programmer, the Pololu USB AVR Programmer, and the Pololu USB AVR Programmer v2.
To support programming AVR microcontrollers running at 3.3 V, we added an adjustable voltage regulator that allows the programmer to set its own power voltage to either 3.3 V or 5 V. By default, the programmer will operate at 3.3 V, but it measures the voltage on its VCC pin and will automatically switch to 5 V if it detects a high-enough voltage on VCC. You can also disable the automatic switching and just set the programmer to always be 3.3 V or always be 5 V using our configuration software.
With the Pololu USB AVR Programmer v2, we made an effort to increase the programming speed for commonly-used types of AVRs, such as the ATmega328P. With the older Pololu USB AVR Programmer, if you wanted to program all 32 KB of the AVR’s flash memory, it would take about 6.8 s using the maximum ISP frequency of 2 MHz. With the Pololu USB AVR Programmer v2, it takes only about 4.8 s to do the same thing. Also, if your ATmega328P has a high-enough clock speed, you can increase the ISP frequency to 3 MHz and then it would only take 4.3 s. (These numbers are from tests done using AVRDUDE 6.2 in Windows.)
The Pololu USB AVR Programmer v2 has 470 Ω resistors on all of its I/O lines, which will help protect the programmer and your target system from damage in case there is a voltage mismatch or a short circuit.
Programming the fuse bits on an AVR has always been scary because you can accidentally program the wrong clock settings and brick your AVR. With the new Pololu USB AVR Programmer v2, it is a little less scary: the programmer provides a 100 kHz clock output that can be used to send a clock signal to your AVR, which can help you revive it when it has the wrong clock settings. We tested this on the ATmega328P and it probably works on many other AVRs as well. You should still be careful when setting the fuse bits though!
Like its predecessor, the Pololu USB AVR Programmer v2 can act as a USB-to-TTL serial adapter, so you can use it to debug or communicate with your projects over serial. We arranged the serial pins in a more standard arrangement that is similar to commonly-available FTDI USB-to-serial cables and breakout boards. The pins also come with a female header soldered in, so you can plug the programmer directly into a variety of Arduino boards and use it upload sketches via a serial bootloader.
The Pololu USB AVR Programmer v2 is compatible with commonly-used AVR programming software such as Atmel Studio, AVRDUDE, and the Arduino software (IDE).
You can use our open source configuration software for Windows, Linux, and Mac OS X, to change the configuration of your programmer and see useful information about it. We provide both a graphical user interface (GUI) and a command-line interface (CLI). Here is a screenshot of the GUI in Windows:
The Pololu USB AVR Programmer v2 Configuration Utility in Windows 10.
The Pololu USB AVR Programmer v2 uses a relatively new PIC microcontroller, the PIC1825K50. We sell a user-programmable break-out board for this microcontroller called the P-Star 25K50 Micro. One of the exciting features of this microcontroller is that it can do full-speed USB without needing an external crystal or resonator. The USB specification requires devices to have a clock that is accurate to within ±0.25%. On previous products, we usually had to add an external resonator or crystal to the board to meet this requirement. However, the PIC18F25K50 has a neat feature called Active Clock Tuning, which means that it can automatically tune its internal oscillator by monitoring the timing of the USB signals from the computer. This allows the internal oscillator, which is normally not very accurate, to achieve the accuracy needed for USB. This feature allowed us to make the programmer a little smaller and a little less expensive.
For more information, see the Pololu USB AVR Programmer v2 product page.
To make this possible, we updated the Windows installers for the Pololu AVR C/C++ Library to support Atmel Studio 7.0. This means that when you install the library on Windows, it will automatically copy its files into the AVR GCC toolchain inside Atmel Studio 7.0 and install project templates for the supported devices. Adding support for Atmel Studio 7.0 required us to add some code to detect its location and fix two unexpected problems. You can see the changes that were made in the libpololu-avr commit history on GitHub.
The second screen of the Pololu AVR C/C++ Library installer for Windows.
Importing an Arduino sketch in Atmel Studio 7.0
Atmel Studio 7.0 is the latest version of Atmel Studio, an integrated development environment (IDE) for AVRs from Atmel. It has an interesting new feature that allows you to create a new project from an Arduino sketch. The idea is that you could import an Arduino sketch, compile it with Atmel Studio, and then load it onto an Arduino-compatible board using a debugger from Atmel. This would allow you to step through the program one line at a time as it runs on real hardware and see what the program does at each step. It would also allow you to use the advanced code editing features of Atmel Studio. When you import a sketch into Atmel Studio 7.0, the source code of your sketch, along with the Arduino core source code and the code for any libraries you are using, gets copied into the directory for the new project.
However, the new feature only supports a certain small set of boards from Arduino and Adafruit, which means that you would have to select a board similar to your Orangutan, 3pi robot, or A-Star and then adjust the project settings (such as the F_CPU clock speed macro) to make it work. Atmel Studio does not support Arduino bootloaders, so it will not be easy to program an A-Star without getting an external programmer. Our Pololu USB AVR Programmer does not support debugging, so if that is the only programmer you have, then there is relatively little value in using Atmel Studio to program your device instead of just using the Arduino IDE. The feature does not appear to be very polished and still has bugs, which I encountered when I tried to import a sketch that has multiple .h and .cpp files.
If you want to try out the new feature, just open Atmel Studio 7.0, select File > New > Project…, and then select “Create Project from Arduino sketch”, which is a template that can be found in the “C/C++” category.
We have released a new build of the software for our Wixel Programmable USB Wireless Module that works on ARM Linux systems like the Raspberry Pi. This means that you can now upload apps to a Wixel from a Raspberry Pi, without needing a typical desktop computer. You can find the software download in the Wixel User’s Guide.
We have seen people use Wixels to help monitor blood glucose levels, create wireless quiz buttons, or wirelessly control servos. For a complete list of all the Wixel apps we know about, see the Wixel Apps list on our forum. We hope that the expanded software support for the Wixel will help people create new applications in the future.
Wixel programmable USB wireless module.
Several people here made robots to compete in the recent LVBots line following competition. The goal of the competition is to make an autonomous robot that follows a line on the ground as fast as possible. I made a robot called LearnBot for the competition. LearnBot is able to learn the line course on the first lap and then use that information to its advantage on the second and third laps. Continued…