One item of electrical testing we seem to be at a real disadvantage with is our ability to test PWM signals.
I’ve been there all too often blindly swapping PWM cables and motor controllers in order to get to the bottom of a problem that all too often is not electrical.
I’ve seen postings here on how to build your own Arduino based PWM generator, but building DIY test equipment is not the route I’d like to go.
What I’m really looking for is a test box that:
can accept any PWM signal and display what it is receiving
generate a PWM signal based on some “hand control” input
Does anyone have any idea if such a thing exists and if so, where to get it?
If you have an old junker laptop (or desktop PC), you can do both.
1 You can use a free program like Audacity as a simple oscilloscope. Connect the PWM signal to the “line in” input of the sound card. Use a simple resistor voltage divider to reduce the signal voltage to 1 volt.
2 Read this paper. It shows how to generate PWM signals with an old computer.
We use the small circuit linked below to generate motor controller PWM signals. At the moment it works with Talons and Victors. The timing would need a tweak to run a Jaguar.
The potentiometer is mounted on a joystick with a spring return to center. We like that arrangement because the motor always returns to OFF when the stick is released.
The code is in PIC assembler and anyone who wants it can have it.
There’s lots of devices that can do 2. In hobby circles, they are called servo testers. If you don’t want to dedicate a computer like Ether’s suggestion, you can buy or easily make one. Here’s one made by a mentor of 987: Robot Logic Home Page. You can also make one using 2 555 timers. Here’s a schematic http://www.seattlerobotics.org/encoder/200210/servoex/ServoExcerciser.htm. You can also easily make one with a microcontroller, like an arduino.
We needed to do this to test our shooter prototype. We had one team start working on an arduino to do it, while another team started working on a 555 timer version. In the end, the Arduino team won, by several hours, but now we have two.
It would not be hard to make a microcontroller read a PWM signal and display the value. I haven’t seen any off the shelf solutions that do it, however. Here’s one example of doing it on an arduino. http://diydrones.com/profiles/blog/show?id=705844:BlogPost:38418
I realize you already mentioned that you’ve seen Arduino samples on how to make a PWM generator, but just for reference, we made one following the example at
and it works splendidly. Having a test harness with something simple like a power gauge indicator for PWM lines would be really worthwhile in on the spot diagnosis, maybe we’ll look into making one this year.
I have an Arduino based tester like what you described in prototype mode right now. When I get further I will try to post something. But I may be wasting some time on one aspect of it by including both powered and un-powered PWM outputs. I know that the digital side car has jumpers to allow you to power the center pins for driving both servo’s motor controllers. Does anyone know what the common motor controllers we use do with that center pin? Can I just provide power to the center pin all the time, or will that create a problem with some motor controllers? Since the motor controllers are powered separately and that pin is not needed, why would it just not get connected inside the motor controllers?
The above method is admittedly clunkier than a nice compact hand-held unit that gives a digital readout or an LED pass/fail indication, but it does have one advantage: You can see the actual waveform, and you can record the waveform over a period of time.
This means that in addition to measuring the pulse width, you can also:
see any noise or improper waveform
see what the period is, and if it is consistent
see if there are intermittent dropouts
Plus it just might inspire a student or two. I still remember how inspiring it was the first time I built a simple RC circuit and saw the waveform on a glowing green oval CRT screen. It made physics come alive for me.
The red wire (center pin) on the 3-wire cable connected to the Victor is an open circuit.
There is no reason to disconnect the red wire in the cable.
The Victor does not source or draw power on the red wire.
My brother manning the scope, me on the probe…circa 1974 (I might have us confused, we look alike). We built the scope, using surplus parts, 4 tubes plus the CRT. Non-linear (and dangerous) as heck, but it made wavy green lines!
Great. That makes it easier to use the standard PWM servo outputs as found on an Arduino development board for the requested capability. The tester I have been working on uses an Arduino Uno for both PWM signal generation and monitoring, along with a few other functions. But I needed to do a lot of extra work to build an interface board for it. If there is no need to have the power pin disconnected, it opens up the possibility of using a development version of the board (with and LCD shield) for the tester. This reduces the amount of custom wiring needed to get to a useful configuration. You would still need to wire a power switch, a few buttons, and one or two potentiometers, but I think it would be a relatively easy tester for most teams to build. As I said, I have a prototype version working, and I will try to provide more information and code after I test it and clean it up a bit more.
I had a “pong” paddle on my green phosphors. Never got a full game going though. Shifted over to turning a B&W Sony portable TV into a TV Typewriter. I think that beast may still be in the cellar somewhere, much to my wife’s justifiable chagrin.
For what do you need to test PWM signals? I have never needed to do that as part of any troubleshooting. Usually, PWM problems can be diagnosed otherways: through the dashboard on the driver station, the lights on the motor controllers, etc.
This is great… but old computers are hard to find that still work properly… It would be nice to rig up a newer interface in lieu of the RS-232 (as much as I loved that). Perhaps Ethernet port or USB (e.g. FTDI driver)… that would make it possible to work for the classmate PC. The classmate is small and should have a powerful enough processor to be quite useful. I’ll bet there are teams out there that have classmate PC’s.
If you put the word out that you’re interested, they’ll come out of the woodwork.
…that still work properly.
Every junker PC that’s been given to me (well over a dozen so far) has had no trouble being used for test equipment like this.
It would be nice to rig up a newer interface in lieu of the RS-232 (as much as I loved that). Perhaps Ethernet port or USB (e.g. FTDI driver)… that would make it possible to work for the classmate PC.
RS232 is easy to work with because it has control pins (outputs) that are independent of the serial data lines, and which are easily turned on or off with one register write (2 machine code instructions).
I’ve not studied the USB or Ethernet* port. Find me a technical document which has detailed instructions how to toggle control pins at the bare-metal level on those and I’ll look at it.
*Decades ago, I wrote a letter the editor of Digital News magazine correcting an error in an article they published about the Ethernet collision avoidance/detection/recovery protocol. I got a phone call from the editor asking me if I was involved in any way in the development of the protocol. Unlike a certain politician whom I will not name here, I said no. They published my letter, but appended to it a note that I was not the inventor of the Ethernet.
The dozens I’ve had mostly all worked when I got them, but time takes it’s toll…I recently got rid of about three or four dozen, and at least half of them were dead, usually having issues with disk drives. I’m down to fewer than 50 computers now.
Sadly, this old stuff is going away. It was so nice to be able to do so much with so little “investment”.