manual control of a victor?

Couldn’t agree more with this. I think an important aspect of being an engineer is being able to evaluate lots of different solutions to a problem and pick the one that best meets all the requirements (including things like cost, time to implement, robustness, how easy it is to understand for future engineers who may need to modify it, etc.). And hopefully you don’t feel that all computer engineering people are zealots :wink: .

Shouldn’t it be the burden of the engineer designing the solution to know where to draw the line? He/she should understand the risks/rewards of such a solution and should be able to understand where to draw the line given the needs of the project/product (which are not constant from one project to another - as Joe pointed out, sometimes the tradeoffs are acceptable given the project requirements).

Hard and fast rules such as “absolutely no gotos” can sometimes do as much damage as using gotos all over the place. While rare, there ARE times when the use of a well-placed goto (or break, or continue, or early return, etc.) can greatly simplify code and therefore increase readability and maintainability, or be necessitated for performance reasons in small embedded systems, etc. Enforcing the “no gotos” rule in college might make sense such that the students don’t develop a bad habit of using them, but in my opinion it should be explained like this: “Sometimes, using a goto may be necessary or appropriate. This will be your job as an engineer to make that determination. However, the assignments for this class are not sufficiently complex to justify the use of a goto statement. Hence, use of goto is not acceptable in your solutions.”

A goto statement in a subroutine is kinda like the hyperspace button on a video game - you have coded yourself into a deadend, and there is no other way out

thats not good. The golden rules that each discipline of engineering have come up with over the years are the result of many painfull and expensive blunders and mistakes.

When you find yourself tempted to break one, its a red flag that you didnt think things through before you started writing code, or drawing schematics, or designing your logic.

On military projects they have many of the same rules. If you dont follow them your project will be rejected at your next design review, and they dont grant exceptions either :^)

We prefer to call them waivers. :wink:

You can’t possibly understand all the different situations that come up so I don’t understand how you can make blanket statements such as “it’s a red flag that you didn’t think things through”. I would agree that any time you think you need to use a goto it should be a red flag to reevaluate the problem to make sure there isn’t a better way of doing things, but I can’t claim that there is never a situation where it would be appropriate. And besides, if the person writing the software hasn’t thought through the program before starting, “golden rules” such as no gotos won’t save him - it’ll be a spaghetti-code mess either way.

I personally have never encountered a good reason to use a goto in my own work. I have, however, seen enough cases where even the best, most well-thought out designs will run into certain practical limitations that sometimes cause us to have to do things in a way that is less than ideal. This can often be the case, for example, when writing code that interacts directly with hardware. Tight timing constraints or poorly-done hardware interfaces (on external chips) can put you in a corner where a nice elegant software design just won’t work. This tells me that there most likely are cases that I have not seen yet where the use of a goto might be justified.

(Sorry to original poster for continuing to take this tread off topic… :o )

thats what drives the need for golden rules, and thats why they are instituted very carefully (and thats why they are golden). When the situation comes up, there it is!

It has amazed me that engineers from all over the world somehow know the golden rules that apply to their profession, and they are not afraid to point out to you (during a design review) that ‘this is a problem, you should never do this’. Seriously, I though Dr Eric Schmidt at Suny Buffalo came up with “Dr Schmidts Golden rules of digital design”, because he shared them with us as if they were his own children, in a hushed tone, almost as if they were sacred.

but somehow, everyone seems to know them :^)


You are just plain wrong. According the the Wikipedia’s entry on the 555,

“Still today, Samsung in Korea manufactures over 1 billion units per year (2003).”

Ken that is BILLION with a B.

You don’t get to a Billion units with yahoos and hobbyists.

Can you mis-use the 555? **Yes, of course. **

Would it be unacceptable to use a 555 in a billion dollar satellite project? Yes, of course.

Can they be put to great use by hobbyist, toy manufacturers, and others who are willing to live with their inherent limitations? Yes, of course.

Is a blanket condemnation of using 555s anywhere under any circumstances just plain silly? Yes, of course.

This is not to say that “golden rules” are not useful. But if I have the choice between understanding the reasons for rules and blind adherance, I am going to advocate understanding the rules.

I am going to go even further. In answer the the question that started this this thread, it is hard to argue that the best solution for the problem as presented is anything other than heading down to the local Radio Shack with $10*, buying a 555 and a few extra goodies and building a circuit that works as desired within 15 minutes of arriving home.

I am getting my undies all in a bunch because I believe with every fiber of my being that Engineering is an Art. It is a beautiful, wonderful, delightful art.

There are laws of physics, useful rules of thumb, and cold hard economics that come into play to be sure but at its core Engineering is Art. For these artists, there is no substute for sound engineering judgement.

Joe J.

*For an additional few buck he could have put in all in a nice pretty box to boot!

However, I have used them to test billion dollar satellite projects…

In particular, I needed a PWM stream with two specific pulse widths, and used two 555’s as one shots, fired by logic that picked which one based on if I needed a “1” or a “0”. The logic was driven by clocked logic that followed all the “golden rules”, but the 555 was far and away the easiest way to get the two pulse widths. Took 10 minutes to put it all together, which was far less time than I spent listening to various design engineers tell me I needed a PIC, or a FPGA, or … (all of which, in addition to having the added time of writing the software, in the spaceflight test world have the added burden of having to place all of the code used into configuration management, so the <$1 PIC now costs considerably more to use once in a test fixture).

There is almost always more than one solution to any engineering problem. One part of elegant design is picking the one that makes the most sense for a particular design problem, even if that means “breaking” some normally established “rules”.

your examples of being able to put together a one shot circuit quickly and easily assumes you already have experience with 555 timers, or similar devices, and you dont have to consult a data sheet to look up the equations, figure out whether to use ceramic or electolytic or tantilum caps, variable resistors, carbon, wire, precision resisitors, to get the performace you need under all conditions

I could equally argue that with my 10 years of experience using PIC chips I can pull a PWM or timer subroutine out of my existing libraries, compile the SW in a minute or two, and all I need is power and gnd to the 8 pin PIC chip, and it will be producing a very accurate, very precise waveform in a matter of minutes

and with the in-circuit programablilty of PIC chips, I can change any of the parameters faster than you can unsolder and solder caps and resistors.

I dont know where those 1 billion one shot chips are going each year. I can honestly say that in my 20 years of electrical and computer design experience, on both military and commercial products, I have never used one, and I have never seen any product at any of the companies Ive worked for use one either.

And there in lies the rub!

I can say in my 20+ years working for one major medical imaging company, among the dozens of other thing GE is into, that I have seen multiple systems and circuits, from various vendors and corporations, that do use 555’s.

I guess my point is: Until you have seen everything, every situation, every design, every possibility, making blanket statements and setting hard and fast rules, with no room to bend, is just not a good idea.

BTW, I did a quick Google search and found a great little 555 circuit that will suffice perfectly to generate a 1 to 2 ms pulse at a period of 17ms. One 555, one cap, one pot and a resistor. It even had charts on the site for the mathematically impaired to help decide what component values to use.

Don’t get me wrong, I understand the Prof.'s reasoning for doing things his way. He has every right and privilege as a Prof. to do so in his class room. But unless he meets the “Until you have seen everything, every situation, every design, every possibility….” rule, his ways outside the class room aren’t always the best ways.

taking a step back from this discussion, Dr Schmidt taught the senior level Digital Design class

the focus of my career has been digital design and programming

and the 555 timer and other one-shot chips are analog devices

so this is really a discussion of the merits of digital systems vs analog systems - and the merits of hybrid digital/analog systems

so from Dr Schmidts persepective, he was correct. Analog timers have no place in a digital design class, and they have no place in a digital system (ie, you would never plop down a 555 timer to generate the CAS and RAS signals to an SDRAM bank on a pentium motherboard, you would use digital counters and state machines

I concede that if you are designing an analog system, then things like one shot timers are acceptable

and Im certain that analog designers have their own set of golden rules

but back to the original question of this thread, I think the debate that has been raging here is really a question of which approach is better, a digital or an analog solution?

BTW, part of the problem is that the PWM control of the victors is a carry over of the PWM of radio control model servos. Originally all RC systems were analog, but now here we are with these digital FIRST controllers interfaced to Victor speed controllers, with a legacy-analog PWM signal format. :^)

Ken and Joe,
Let us not forget that no matter what the individual benefits or pitfalls, I can go down to the local Radio Shack and pick up a 555 usually with a schematic on the back and have something useful, albeit inaccurate, within an hour or so. I would love to use a PIC, but don’t have any at a local store or my junkbox or even at work. And the fishing timer I built for my wife’s aunt, works great and no one cares if it times out at 15 minutes or even at sixteen minutes. As long as it times out and reminds us to move on to a new spot, everyone is happy.
BTW, I used a dual 555 to make a really annoying alarm output for my Heathkit digital clock. It has lot’s of distortion, dual frequencies and darn near knocks me out of bed at 4:44 AM each morning. (for an audio guy, the distortion does the trick) My wife likes that better than having 220 volts hooked up to the bedsprings.

15 minute fishing timer? thats an interesting idea. How does it let the fish know its time to move to a new spot? :^)

I don’t know but it works really well. I haven’t caught a fish on their lake yet. As a matter of fact I was presented with a plaque two years ago with the words “Fish laugh at the mention of your name”.

You may want to change your fishing tactics. May I suggest Dynamite! :smiley:
Worst case, the fish won’t laugh any longer. They’ll be deaf and never hear your name mentioned again. :stuck_out_tongue:

the focus of my career has been digital design and programming

and the 555 timer and other one-shot chips are analog devices

Does it affect anything that the motor is an analog device and needs an analog signal (PWM)??

BTW, part of the problem is that the PWM control of the victors is a carry over of the PWM of radio control model servos. Originally all RC systems were analog, but now here we are with these digital FIRST controllers interfaced to Victor speed controllers, with a legacy-analog PWM signal format. :^)
It’s pulse position modulation for the incoming signal not pulse width modulation. Pulse width modulation is the signal that controsl the motor.

After all of the interesting discussion of 555s I’m not exactly sure if you are more interested in building a PWM controller from a 555 or if you are more interested in a PWM controller just to test your Victors.

If it is the latter and you just want to buy something off the shelf, may I suggest the FMA Direct Servo Lab. You can get it from Tower Hobbies ( or other hobby places for less than $35. It is really useful for testing Victors and test driving motors connected to a Victor (and power) without having to have the whole IFI control system hooked up. It also will “read” the PWM signal from the IFI Robot Controller which can be very useful to see how the joystick and code are responding. You can even hook it up in line between the RC and the Victor. Works great, I highly recommend one. If you get one you will need to get a cheap RC battery as well if you don’t have one.

Another COTS option that is a little less expensive (~$20) is the Astro Flight Servo Tester ( I don’t personally have one of these but it should do what you want (manually control the Victor) but it will not “read” the PWM signal from the RC like the FMA Direct Servo Lab.

Now everyone can get back to discussing the pros and cons of a 555…

That’s kind of the beautiful things about this control. It is a digital signal, running from +12 to ground, that is converted to an average mechanical power with no real active circuitry. The motor does all the conversion with a little help from physics (conservation of momentum) and a little from electrical (inductance) etc.
The control signal and the output of the controller are both PWM. Pulse position signal uses the same size pulse but varies it’s position in relation to a reference. In PWM the pulse width varies over the time of a single cycle but the cycle length doesn’t vary. That makes it sort of self clocking in that for the most part there is a start and end to the pulse cycle. (about 2 kHz) The output PWM is not an amplified version of the input. The input pulse width varies over 255 steps where the value (width) of 127 represents no motor current at all. A “0” will make the output turn on to full 12 volts (no PWM) and a 255 will do the same but reverse the leads (+12 becomes common and common becomes +12 to the motor) which reverses the direction of the motor.

That is correct for an R/C servo, but incorrect for a Victor or similar PWM motor control.

For a PWM motor control, the duty cycle of the signal varies from 0% to 100%, corresponding to full reverse and full forward, respectively, with 50% being neutral.

[EDIT:] I stand corrected, the Victor uses standard R/C type PWM control, which operates as described in the quote above. The circuit I have won’t work here, but there was a circuit in SERVO (or maybe Nuts & Volts?) earlier this year that had such a circuit using a 556. When I find that I will post a reference to it. [/EDIT:]

I have a circuit somewhere that does exactly what he wants, uses a single 555 and a few passive components, and varies from about 3% ro 97% duty cycle. I’ll post it when I find it.


You’re thinking of the output of said motor controller. The original poster was looking for a device to connect to the Victor input. This uses the same signal as R/C servos.

However, I recently finished a PIC based motor controller (for true motor control PWM). If anyone wants it, I’ll send them the code. As for hardware, you just need a 12F683 (or similar) and the appropriate “glue” components to connect it to an h-bridge. I’ve got code to read a pot and the R/C PWM signal.

As promised, here is the circuit that produces variable width pulses (1 to 2 uSec) at about 60 Hz. This is fairly simple to build, components are not very critical, Radio Shack sells all of the parts. All of the resistors are 1/4 watt 10% or 5% tolerance, the capacitors 1 uF and above are electrolytic or tantalum, the small caps are ceramic monolithic (ar whatever is on hand).

I have included a way of converting some higher voltage (e.g. 12 volts) down to 5 volts using a 7805 regulator, along with the pinout of the Victor PWM signal inputs. Remember, black is ground and white (or yellow) is the PWM signal.

This will drive a Victor or any R/C servo from nearly full reverse to full forward, depending on the setting of the 1 k Ohm potentiometer. Note that there are some PWM motor controllers that do NOT use R/C type PWM inputs; this will not work with those.

Have fun