Talking Hands: American Sign Language Gesture Recognition Glove

Roberto developed a glove that enables communication between the user and those
around him. While the design is intended for use by people communicating in American Sign Language, you can apply what you learn in this article to a variety of communications applications.Capture
PHOTO 1-Here you see the finished product with all of the sensors sewn in. The use of string as opposed to adhesive for the sensors allowed the components to smoothly slide back and forth as the hand was articulated.

By Roberto Villalba

While studying at Cornell University in 2014, my lab partner Monica Lin and I designed and built a glove to be worn on the right hand that uses a machine learning (ML) algorithm to translate sign language into spoken English (see Photo 1). Our goal was to create a way for the speech impaired to be able to communicate with the general public more easily. Since every person’s hand is a unique size and shape, we aimed to create a device that could provide reliable translations regardless of those differences. Our device relies on a variety of sensors, such as flex sensors, a gyroscope, an accelerometer, and touch sensors to quantify the state of the user’s hand. These sensors allow us to capture the flex on each of the fingers, the hand’s orientation, rotation, and points of contact. By collecting a moderate amount of this data for each sign and feeding it into a ML algorithm, we are able to learn the association between sensor readings and their corresponding signs. We make use of a microcontroller to read, filter and send the data from the glove to a PC. Initially, some data is gathered from the users and the information is used to train a classifier that learns to differentiate between signs. Once the training is done, the user is able to put on the glove and make gestures which the computer then turns into audible output.

After performing some calculation and characterizing our flex sensors, we decided to use a 10-kΩ resistor. Note that the rightmost point goes into one of the microcontroller’s ADC.

FIGURE 1-After performing some calculation and characterizing our flex sensors, we decided to use a 10-kΩ resistor. Note that the rightmost point goes into one of the microcontroller’s ADC.

We use the microcontroller’s analog-to digital converter (ADC) to read the voltage drop across each of the flex sensors. We then move on to reading the linear acceleration and rotation values from the accelerometer and gyro sensor using I 2C. And finally, we get binary readings from each of the touch sensors regarding if there exists contact or not. We perform as many readings as possible within a given window of time and use all of this data to do some smoothing. This information is then sent through serial to the PC where it is gathered and processed. Python must listen to information coming in from the microprocessor and either store data or predict based on already learned information. Our code includes scripts for gathering data, loading stored data, classifying the data that is being streamed live, and some additional scripts to help with visualization of sensor readings and so on.

The design comprises an Atmel ATmega1284P microcontroller and a glove onto which the various sensors and necessary wires were sewn. Each finger has one Spectra Symbol flex sensor stitched on the backside of the glove. The accelerometer and gyro sensors are attached to the center of the back of the glove. The two contact sensors were made out of copper tape and wire that was affixed to four key locations.

Since each flex sensor has a resistance that varies depending on how much the finger is bent, we attached each flex sensor as part of a voltage divider circuit in order to obtain a corresponding voltage that can then be input into the microcontroller.


We determined a good value for R1 by analyzing expected values from the flex sensor. Each one has a flat resistance of 10 k and a maximum expected resistance (obtained by measuring its resistance on a clenched fist) of about 27 k. In order to obtain the maximum range of possible output voltages from the divider circuit given an input voltage of 5 V, we plotted the expected ranges using the above equation and values of R1 in the range of 10 to 22 k. We found that the differences between the ranges were negligible and opted to use 10 k for R1 (see Figure 1).

Our resulting voltage divider has an output range of about 1 V. We were initially concerned that the resulting values from the microcontroller’s ADC converter would be too close together for the learning algorithm to discern between different values sufficiently. We planned to address this by increasing the input voltage to the voltage divider if necessary, but we found that the range of voltages described earlier was sufficient and performed extremely well.

The InvenSense MPU-6050 accelerometer and gyro sensor packet operates on a lower VCC (3.3 V) compared to the microcontroller’s 5 V. So as not to burn out the chip, we created a voltage regulator using an NPN transistor and a trimpot, connected as shown. The trimpot was adjusted so that the output of the regulator reads 3.3 V. This voltage also serves as the source for the pull-up resistors on the SDA and SCL wires to the microcontroller. Since the I 2C devices are capable only of driving the input voltages low, we connect them to VCC via two 4.7-k pull-up resistors (see Figure 2).

As described later, we found that we needed to add contact sensors to several key spots on the glove (see Figure 3). These would essentially function as switches that would pull the microcontroller input pins to ground to signal contact (be sure to set up the microcontroller pins to use the internal pull up resistors).

Figure 2: Here we see the schematic of the voltage regulator circuit that we created in order to obtain 3.3 V. The bottom of the schematic shows how this same regulator was used to pull up the signals at SCL and SDA. Figure 3: The contact sensor circuitry was quite simple. The input pins of the microcontroller are set to the internal pull-up resistors and whenever the two corresponding copper ends on the fingers touch the input is pulled low.

Figure 2: Here we see the schematic of the voltage regulator circuit that we created in order to obtain 3.3 V. The bottom of the schematic shows how this same regulator was used to pull up the signals at SCL and SDA.

Figure 3: The contact sensor circuitry was quite simple. The input pins of the microcontroller are set to the internal pull-up resistors and whenever the two corresponding copper ends on the fingers touch the input is pulled low.

Interfacing with the MPU-6050 required I 2C communication, for which we chose to use Peter Fleury’s public I 2C library for AVR microcontrollers. I 2C is designed to support multiple devices using a single dedicated data (SDA) bus and a single clock (SCL) bus. Even though we were only using the interface for the microcontroller to regularly poll the MPU6050, we had to adhere to the I 2C protocol. Fleury’s library provided us with macros for issuing start and stop conditions from the microcontroller (which represent different signals that the microcontroller is requesting data from the MPU-6050 or is releasing control of the bus). These provided macros allowed for us to easily initialize the I 2C interface, set up the MPU-6050, and request and receive the accelerometer and gyroscope data (described later).

Figure 4: The image is the visual output received from plotting sequences of sensor readings. The clear divisions across the horizontal signal the different signs A, B, C, and D, respectively.

Figure 4: The image is the visual output received from plotting sequences of sensor readings. The clear divisions across the horizontal signal the different signs A, B, C, and D, respectively.

While testing our I2C communication with the MPU-6050, we found that the microcontroller would on rare occasions hang while waiting for data from the I2C bus. To prevent this from stalling our program, we enabled a watchdog timer that would reset the system every 0.5 seconds, unless our program continued to progress to regular checkpoint intervals, at which time we would reset the watchdog timer to prevent it from unnecessarily resetting the system. We were able to leverage the fact that our microcontroller’s work consists primarily of continuously collecting sensor data and sending packets to a separate PC.

Photo 2: In this image we see the hand gestures for R, U, and V. As you can tell, there is not much difference in the hand’s orientation or the amount of flex on the fingers. However, note that the copper pieces make different kinds of contact for each of the signs.

Photo 2: In this image we see the hand gestures for R, U, and V. As you can tell, there is not much difference in the hand’s orientation or the amount of flex on the fingers. However, note that the copper pieces make different kinds of contact for each of the signs.

For the majority of the code, we used Dan Henriksson and Anton Cervin’s TinyRealTime kernel. The primary reason for using this kernel is that we wanted to take advantage of the already implemented non-blocking UART library in order to communicate with the PC. While we only had a single thread running, we tried to squeeze in as much computation as possible while the data was being transmitted.

The program first initializes the I 2C, the MPU, and the ADC. After it enters an infinite loop it resets the watchdog timer and gets 16 readings from all of the sensors: accelerometers, gyroscopes, flex-sensors, and touch sensors. We then take all of the sensor values and compute filtered values by summing all of the 16 readings from each sensor. Since summation of the IMU sensors can produce overflow, we make sure to shift all of their values by 8 before summing them up. The data is then wrapped up into byte array packet that is organized in the form of a header (0xA1B2C3D4), the data, and a checksum of the data. Each of the sensors is stored into 2 bytes and the checksum is calculated by summing up the unsigned representation of each of the bytes in the data portion of the packet into a 2-byte integer. Once the packet has been created it is sent through the USB cable into the computer and the process repeats.

Communication with the microcontroller was established through the use of Python’s socket and struct libraries. We created a class called SerialWrapper whose main goal is to receive data from the microcontroller. It does so by opening a port and running a separate thread that waits on new data to be available. The data is then scanned for the header and a packet of the right length is removed when available. The checksum is then calculated and verified, and, if valid, the data is unpacked into the appropriate values and fed into a queue for other processes to extract. Since we know the format of the packet, we can use the struct library to extract all of the data from the packet, which is in a byte array format. We then provide the user with two modes of use. One that continuously captures and labels data in order to make a dataset, and another that continuously tries to classify incoming data. Support Vector Machines (SVM) are a widely used set of ML algorithms that learn to classify by using a kernel. While the kernel can take various forms, the most common kind are the linear SVMs. Simply put, the classification, or sign, for a set of readings is decided by taking the dot product of the readings and the classifier. While this may seem like a simple approach, the results are quite impressive. For more information about SVMs, take a look at scikit-learn’s “Support Vector Machines” (

For the purposes of this project we chose to focus primarily on the alphabet, a-z, and we added two more labels, “nothing” and “relaxed”, to the set. Our rationale for providing the classifier “nothing” was in order to have a class that was made up of mostly noise. This class would not only provide negative instances to help learn our other classes, but it also gave the classifier a way of outputting that the gestured sign is not recognized as one of the ones that we care about. In addition, we didn’t want the classifier to be trying to predict any of the letters when the user was simply standing by, thus we taught it what a “relaxed” state was. This state was simply the position that the user put his/her hand when they were not signing anything. In total there were 28 signs or labels. For our project we made extensive use of Python’s scikit-learn library. Since we were using various kinds of sensors with drastically different ranges of values, it was important to scale all of our data so that the SVM would have an easier time classifying. To do so we made use of the preprocessing tools available from scikit-learn. We chose to take all of our data and scale it so that the mean for each sensor was centered at zero and the readings had unit variance. This approach brought about drastic improvements in our performance and is strongly recommended. The classifier that we ended up using was a SVM that is provided by scikit-learn under the name of SVC.

Figure 5: The confusion matrix demonstrates how many times each label is predicted and how many times that prediction is accurate. We would like to see a perfect diagonal line, but we see that one square does not adhere to this. This square corresponds to “predicted V when it was really U” and it shows about a 66% accuracy.

Figure 5: The confusion matrix demonstrates how many times each label is predicted and how many times that prediction is accurate. We would like to see a perfect diagonal line, but we see that one square does not adhere to this. This square corresponds to “predicted V when it was really U” and it shows about a 66% accuracy.

Another part that was crucial to us as developers was the use of plotting in order to visualize the data and qualify how well a learning algorithm should be able to predict the various signs. The main tool that was developed for this was the plotting of a sequence of sensor readings as an image (see Figure 4). Since each packet contained a value for each of the sensors (13 in total), we could concatenate multiple packets to create a matrix. Each row is thus one of the sensor and we look at a row from left to right we get progressively later sensor readings. In addition, every packet makes up a column. This matrix could then be plotted with instances of the same sign grouped together and the differences between these and the others could then be observed. If the difference is clear to us, then the learning algorithm should have no issue telling them apart. If this is not the case, then it is possible that the algorithm could struggle more and changes to the approach could have been necessary.

The final step to classification is to pass the output of the classifier through a final level of filtering and debouncing before the output reaches the user. To accomplish this, we fill up a buffer with the last 10 predictions and only consider something a valid prediction if it has been predicted for at least nine out of the last 10 predictions. Furthermore, we debounce this output and only notify the user if this is a novel prediction and not just a continuation of the previous. We print this result on the screen and also make use of Peter Parente’s pyttsx text-to-speech x-platform to output the result as audio in the case that it is neither “nothing” or “relaxed.”

Our original glove did not have contact sensors on the index and middle fingers. As a result, it had a hard time predicting “R,” “U,” and “V” properly. These signs are actually quite similar to each other in terms of hand orientation and flex. To mitigate this, we added two contact sensors: one set on the tips of the index and middle fingers to detect “R,” and another pair in between the index and middle fingers to discern between “U” and “V.”

As you might have guessed, the speed of our approach is limited by the rate of communication between the microcontroller and the computer and by the rate at which we are able to poll the ADC on the microprocessor. We determined how quickly we could send data to the PC by sending data serially and increasing the send rate until we noticed a difference between the rate at which data was being received and the rate at which data was being sent. We then reduced the send frequency back to a reasonable value and converted this into a loop interval (about 3 ms).

We then aimed to gather as much data as possible from the sensors in between packet transmission. To accomplish this, we had the microcontroller gather as much data as possible between packets. And in addition to sending a packet, the microcontroller also sent the number of readings that it had performed. We then used this number to come up with a reasonable number of values to poll before aggregating the data and sending it to the PC. We concluded that the microcontroller was capable of reading and averaging each of the sensors 16 times each, which for our purposes would provide enough room to do some averaging.

The Python algorithm is currently limited by the rate at which the microcontroller sends data to the PC and the time that it takes the speech engine to say the word or letter. The rate of transfer is currently about thirty hertz and we wait to fill a buffer with about ten unanimous predictions. This means that the fastest that we could output a prediction would be about three times per second which for our needs was suitable. Of course, one can mess around with the values in order to get faster but slightly less accurate predictions. However, we felt that the glove was responsive enough at three predictions per second.

While we were able to get very accurate predictions, we did see some slight variations in accuracy depending on the size of the person’s hands. The accuracy of each flexsensor is limited beyond a certain point. Smaller hands will result in a larger degree of bend. As a result, the difference between slightly different signs with a lot of flex tends to be smaller for users with more petite hands. For example, consider the signs for “M” and “S.” The only difference between these signs is that “S” will elicit slightly more flex in the fingers. However, for smaller hands, the change in the resistance from the flex-sensor is small, and the algorithm may be unable to discern the difference between these signs.

Figure 6: We can see that even with very small amounts of data the classifier does quite well. After gathering just over 60 readings per sign it achieves an accuracy of over 98%.

Figure 6: We can see that even with very small amounts of data the classifier does quite well. After gathering just over 60 readings per sign it achieves an accuracy of over 98%.

In the end, our current classifier was able to achieve an accuracy of 98% (the error being composed almost solely of u, v sign confusion) on a task of 28 signs, the full alphabet as well as “relaxed” and “nothing” (see Figure 5). A random classifier would guess correctly 4% of the time, clearly indicating that our device is quite accurate. It is however worth noting that the algorithm could greatly benefit from improved touch sensors (seeing as the most common mistake is confusing U for V), being trained on a larger population of users, and especially on larger datasets. With a broad enough data set we could provide the new users with a small test script that only covers difficult letters to predict and relies on the already available data for the rest. The software has currently been trained on the two team members and it has been tested on some users outside of the team. The results were excellent for the team members that trained the glove and mostly satisfying though not perfect for the other volunteers. Since the volunteers did not have a chance to train the glove and were not very familiar with the signs, it is hard to say if their accuracy was a result of overfitting, individual variations in signing, or inexperience with American Sign Language. Regardless, the accuracy of the software on users who trained was near perfect and mostly accurate for users that did not know American Sign Language prior to and did not train the glove.

Lastly it is worth noting that the amount of data necessary for training the classifier was actually surprisingly small. With about 60 instances per label the classifier was able to reach the 98% mark. Given that we receive 30 samples per second and that there are 28 signs, this would mean that gathering data for training could be done in under a minute (see Figure 6).

The project met our expectations. Our initial goal was to create a system capable of recognizing and classifying gestures. We were able to do so with more than 98% average accuracy across all 28 classes. While we did not have a solid time requirement for the rate of prediction, the resulting speed made using the glove comfortable and it did not feel sluggish. Looking ahead, it would make sense to improve our approach for the touch sensors since the majority of the ambiguity in signs come from the difference between U and V. We want to use materials that lend themselves more seamlessly to clothing and provide a more reliable connection. In addition, it will be beneficial to test and train our project on a large group of people since this would provide us with richer data and more consistency. Lastly, we hope to make the glove wireless, which would allow it to easily communicate with phones and other devices and make the system truly portable.

Arduino, “MPU-6050 Accelerometer + Gyro,” Main/MPU-6050.

Atmel Corp., “8-Bit AVR Microcontroller with 128K Bytes In-System Programmable Flash: ATmega1284P,” 8059D­AVR­ 11/09, 2009,
www.atmel. com/images/doc8059.pdf.

Fleury, “AVR-Software,” 2006,

Lund University, “Tiny Real Time,” 2006, www.control.lth. se/~anton/tinyrealtime/.

Parente, “pyttsx – Text-tospeech x-platform,” pyttsx “struct–Interpret Strings as Packed Binary Data,” library/struct.html.

scikit-learn, “Preprocessing Data,”
http:// html.

“Support Vector Machines,”

Spectra Symbol, “Flex Sensor FS,” 2015,

Villalba and M. Lin, “Sign Language Glove,” ECE4760, Cornell University, 2014,

ATmega1284P Microcontroller Atmel |

MPU-6050 MEMS MotionTracking Device InvenSense |

Article originally published in Circuit Cellar June 2016, Issue #311

Electrical Engineering Crossword (Issue 292)

The answers to Circuit Cellar’s November electronics engineering crossword puzzle are now available.292-crossword-(key)


  1. BITS—A nibble is 4 of these
  3. MICRO—Metric Prefix for 0.000001
  4. PATCH—To re-route a signal to a different circuit
  5. TOKEN—Used for authentication
  6. RELAY—A switch that is actuated by another electrical signal
  7. JITTER—The deviation of some aspect of a digital signal’s pulses
  8. RHEOSTAT—A variable resistor
  9. LUX—Lx
  10. VOLTA—Italian physicist who invented the first batteries
  12. CONDUIT—Wire piping
  13. PIGTAIL—Short wire connecting components
  14. RECTIFIER—A diode, used for converting AC into DC


  1. SCHOTTKY—High-speed diode that has very little junction capacitance
  3. INRUSH—A sudden input current surge
  4. CRESTFACTOR—The ratio of the peak value to the RMS value (two words)
  5. MICROFARAD—1,000,000 pF
  6. ANALOG—Constant signal processing



Electrical Engineering Crossword (Issue 291)

The answers to Circuit Cellar’s October electronics engineering crossword puzzle are now available.291crossword (key)


4.     PARAMETRON—Phase-locked oscillator

8.     UNBALANCED—Single-ended

9.     STRAY—Unwanted capacitance

10.   LEYDENJAR—Early capacitor [two words]

12.   ELECTROLYTE—Conducting fluid

14.   CROSSTALK—Caused when one circuit’s signal creates an unwanted effect on another

16.   ANECHOIC—Absorbs sound or electromagnetic wave reflections

17.   BIFILAR—Used in bipolar power-supply transformers to improve output voltage symmetry

18.   CRYSTALRECTIFIER—Semiconductor diode [two words]

19.   DOPPLEREFFECT—Frequency change that occurs when emitter and receiver move in unison [two words]


1.     BLEEDER—A resistor that draws the critical amount of load current

2.     GAUSSMETER—Detects magnetic anomalies

3.     HETERODYNE—Two frequencies combine to produce new ones

5.     SURFACEMOUNT—Place components directly on PCBs [two words]

6.     HASH—Garbage or gibberish

7.     GALVANOMETER—Measures small voltages

11.   RECTIFIER—Passes current in only one direction

13.   CATWHISKER—Sharp, flexible wire that connects to a semiconductor crystal’s surface [two words]

15.   ANOTRON—Cold-cathode-glow discharge diode


Electrical Engineering Crossword (Issue 290)

The answers to Circuit Cellar’s September electronics engineering crossword puzzle are now available.CrosswordEmptyGrid (key)


2.     THREE—Trivalent valence

3.     PHYSICS—Kilby’s Noble Prize in 2000

5.     INVERTER—Converts DC to AC

8.     BATCH—BAT file

9.     MAXIM—Founded ARRL in 1914

10.   KEYBOARD—If you are AFK, what are you away from?

11.   UPENN—University that housed the ENIAC in a 30’ × 40’ room

12.   HERTZ—1 cycle per second

14.   NIBBLE—4 bits

17.   EXPLAINER—Asimov was the great what?


1.     TRACK—PCB path

3.     PATCH—Quick fix

4.     SNIFFER—Used to monitor network traffic

6.     MAXWELL—A Gauss is one of these per square centimeter

7.     IBM—”Big Blue”

8.     BOOLE—“An Investigation of the Laws of Thought” (1854)

13.   TOGGLE—Move from setting A to B

15.   BLUE—Screen of death

16.   NINE—A nonet is a group of what?

17.   EW—Exawatt

Electrical Engineering Crossword (Issue 289)

The answers to Circuit Cellar’s August electronics engineering crossword puzzle are now available.289PuzzleGrid (key)


1.     FAST—Ethernet at 100 Mbps

3.     FAB—IC factory

6.     XOR—Logic gate

7.     VERILOG—HDL created in the early 1980s by Goel and Moorby

9.     MIL—0.001 inches = 25.4 what?

10.   AMPHOUR—Current flow over time [two words]

13.   SANTOS—Greek national soccer team manager with a degree in electrical engineering

14.   NOLEAD—Quad, flat, … [two words]

16.   BUCK—Step-down

17.   FEMTO—0.000000000000001

18.   GND—Ground pin

19.   NULL—Zero


2.     SLICE—Wafer or substrate

3.     FILO—Antonym for FIFO

4.     QUINARY—Base-5

5.     CODERDECODER—CODEC [two words]

7.     VERSORIUM—Gilbert’s static-detection device

8.     DISSIPATION—Release heat

11.   HAPTIC—Relates to touch

12.   JOULE—1 watt second

15.   DOPING—Process of purposely adding impurities

Electrical Engineering Crossword (Issue 288)

The answers to Circuit Cellar’s July electronics engineering crossword puzzle are now available.288Crossword (key)


2.     QUIESCE—Inactive but still available

4.     GLUELOGIC—Used for circuitry interfacing [two words]

7.     AMAYA—Open-source web tool developed by members of the World Wide Web Consortium (W3C)

8.     ROUNDROBIN—A continuous sequence [two words]

9.     FATCLIENT—A tower PC, for example [two words]

11.   LOGICBOMB—Explosive code [two words]

15.   HEISENBUG—A software glitch that changes its conduct when analyzed

16.   STROBOSCOPE—Makes things appear to move slowly or not at all

17.   STATAMPERE—Approximately 0.333 nanoampere

18.   KORNSHELL—Unix command-line interpreter developed by and named after a Bell Labs employee [two words]

19.   VOXEL—Defines a point in 3-D


1.     BEAMFORMING—Signal processing for sensor arrays

3.     SPIBUS—Works in double-duplex mode [two words]

4.     GREP—UNIX-based command-line utility

5.     SUPERHETERODYNE—Used to convert to intermediate frequencies

6.     ENDIAN—Creates data words

10.   PHOTOVOLTAICS—Uses solar power to create energy

12.   BITTORRENT—File sharing protocol

13.   BINARYPREFIX—E.g., gibi [two words]

14.   AUSTRUMI—Linux distribution based on Slackware


The 100% Creative Workspace

Bernard Hiew sure knows how to get the most of his Penang, Malaysia-based “humble” electrical engineering workspace. He turned the third room of his apartment into a complete innovation space that’s used for everything from engineering to 3-D printing to playing music to woodworking.

Hiew's workspace features component storage, a soldering station, power supply, and more

Hiew’s workspace features component storage, a soldering station, power supply, and more

Hiew noted:

I spend my most of my time here, my little humble workspace. This room is not a dedicated workshop at somewhere else but is in my house. Half of the room is my workspace … The other half of the room is the main table where we do most of office work and surfing. Recently my wife is working from home, so she is occupying this table most of the time.


To the right of his main engineering space is a bookcase and additional shelving

Hiew proves that with a little planning and ingenuity, you can create a fully functional workspace complete with essential engineering equipment and tools. His space includes a soldering station, a PCB UV box, multimeter, power station, computer, book shelves, and even a couch for relaxing and playing music. He also makes great use of storage containers for his electrical components.


The other side of the room is for relaxing, as well as playing music

Share your space! Circuit Cellar is interested in finding as many workspaces as possible and sharing them with the world. Click here to submit photos and information about your workspace. Write “workspace” in the subject line of the email, and include info such as where you’re located (city, country), the projects you build in your space, your tech interests, your occupation, and more. If you have an interesting space, we might feature it on!


Advanced Data-Logging Application

Measurement Computing Corp. (MCC) recently announced the release of DAQami, an advanced data-logging application that enables you to acquire, view, and log data from MCC USB DAQ devices.

DAQami currently supports over 40 MCC hardware devices

DAQami currently supports over 40 MCC hardware devices

In less than 5 minutes after installing DAQami and plugging in a DAQ device, you can create an automatic configuration and acquire live data, MCC noted in a release.

Data can be acquired in volts and degrees, as well as custom units with linear scaling. Channels can be viewed on any combination of scalar, strip, and block displays. Once data is acquired and logged, you can use DAQami to review the saved data file.

The DAQami user interface is flexible and provides the ability to customize display size and location, zoom factor, and channel/trace colors. You can configure MCC DAQ hardware within the application, selecting sam­pling rate, start and stop triggers, and sample count.

DAQami currently supports over 40 MCC hardware devices including the $99 100-ksps USB-201 DAQ device.

DAQami costs $49 when purchased with MCC DAQ hardware.

Source: Measurement Computing Corp.

Issue 286: EQ Answers

Question 1—A divider is a logic module that takes two binary numbers and produces their numerical quotient (and optionally, the remainder). The basic structure is a series of subtractions and multiplexers, where the multiplexer uses the result of the subtraciton to select the value that gets passed to the next step. The quotient is formed from the bits used to control the multiplexers, and the remainder is the result of the last subtraction.

If it is implemented purely combinatorially, then the critical path through all of this logic is quite long (even with carry-lookahead in the subtractors) and the clock cycle must be very slow. What could be done to shorten the clock period without losing the ability to get a result on every clock?

Answer 1—Pretty much any large chunk of combinatorial logic can be pipelined in order to reduce the clock period. This allows it to produce more results in a given amount of time, at the expense of increasing the latency for any particular result.

Divider logic is very easy to pipeline, and the number of pipeline stages you can use is fairly arbitrary. You could insert a pipeline register after each subtract-mux pair, or you might choose to do two or more subtract-mux stages per pipeline register You could even go so far as to pipeline the subtracts and the muxes separately (or even pipeline *within* each subtract) in order to get the fastest possible clock speed, but this would be rather extreme.

The more pipeline registers you use, the shorter the critical path (and the clock period) can be, but you use more resources (the registers). Also, the overall latency goes up, since you need to account for the setup and propagation times of the pipeline registers in the clock period (in addition to the subtract-mux logic delays). This gets multiplied by the number of pipeline stages in order to compute the total latency.

Question 2—On the other hand, what could be done to reduce the amount of logic required for the divider, giving up the ability to have a result on every clock?


Answer 2—If you don’t need the level of performance provided by a pipelined divider, you can computes the quotient serially, one bit at a time. You would just need one subtractor and one multiplexer, along with registers to hold the input values, quotient bits and the intermediate result.

You could potentially compute more than one bit per clock period using additional subtract-mux stages. This gives you the flexibility to trade off space and time as needed for a particular application.

Question 3—An engineer wanted to build an 8-MHz filter that had a very narrow bandwidth, so he used a crystal lattice filter like this:


However, when he built and tested his filter, he discovered that while it worked fine around 8 MHz, the attenuation at very high frequencies (e.g., >80 MHz) was very much reduced. What caused this?

Answer 3—The equivalent circuit for a quartz crystal is something like this:EQ-fig2-CC287-June14

The components across the bottom represent the mechanical resonance of the crystal itself, while the capacitor at the top represents the capacitance of the electrodes and holder. Typical values are:

  • Cser: 10s of fF (yes, femtofarads, 10-15F)
  • L: 10s of mH
  • R: 10s of ohms
  • Cpar: 10s of pF

The crystal has a series-resonant frequency based on just Cser and L. It has a relatively low impedance (basically just R) at this frequency.

It also has a parallel-resonant (sometimes called “antiresonant”) frequency when you consider the entire loop, including Cpar. Since Cser and Cpar are essentially in series, together they have a slightly lower capacitance than Cser alone, so the parallel-resonant frequency is slightly higher. The crystal’s impedance is very high at this frequency.

But at frequencies much higher than either of the resonant frequencies, you can see that the impedance of Cparalone dominates, and this just keeps decreasing with increasing frequency. This reduces the crystal lattice filter to a simple capacitive divider, which passes high freqeuncies with little attenuation.

Question 4—Suppose you know that a nominal 10.000 MHz crystal has a series-resonant frequency of 9.996490 MHz and a parallel-resonant frequency of 10.017730 MHz. You also know that its equivalent series capacitance is 27.1 fF. How can you calculate the value of its parallel capacitance?

Answer 4—First, calculate the crystal’s equivalent inductance, based on the series-resonant frequency:EQ-equation1-CC287-June14

Next, calculate the capacitance required to resonate with that inductance at the parallel-resonant frequency:EQ-equation2-CC287-June14

Finally, calculate the value of Cpar required to give that value of capacitance when in series with Cser:EQ-equation3-CC287-June14

Note that all three equations can be combined into one, and this reduces to:EQ-equation4-CC287-June14

Electrical Engineering Crossword (Issue 287)

The answers to Circuit Cellar’s April electronics engineering crossword puzzle are now available.287 crossword (key)


1. BEAMFORMING—Signal processing technique

7. HETERODYNERECEIVER—Converts a signal to an intermediate frequency [two words]

8. AMIGA—A high-resolution PC based on Motorola’s 6800 microprocessor family

9. NAGLING—Creates “Russian doll”-type packets to improve a TCP/IP network’s performance

10. SERVERBLADE—A thin circuit board designed for one specific application [two words]

15. FUZZING—Tests for coding and security errors

17. PHASECHANGE—Nonvolatile RAM [two words]

18. WALLEDGARDEN—Restricts access to Web content and services [two words]

19. SERIALBACKPACK—A PCB interface that goes between a parallel LCD and a microcontroller [two words]

20. SLACKWARE—Open-source, Linux-based OS


2. ROOTMEANSQUARE—Determines an AC wave’s voltage [three words]

3. ROENTGEN—IBM’s active matrix LCD

4. KERNELPANIC—Happens when a fatal error is detected [two words]

5. BIPHASEENCODING—Requires a state transition at the end of every data bit [two words]

6. PERMITTIVITY—Ability to be polarized

11. VOODOO—Helps create realistic 3-D graphics

12. FLANGING—An audio process that combines signals to create a comb filter effect

13. BREADBOARDING—Used for circuit design experimentation

14. STATOHM—Five of these equal approximately 4.5 × 1012

16. TELEDACTYL—Utilizes human speech to code


Electrical Engineering Crossword (Issue 286)

The answers to Circuit Cellar’s April electronics engineering crossword puzzle are now available.



2. SAMBA—This networking protocol enables you to write to an embedded file system from a Windows PC

7. ELECTROMAGNETICFIELD—Used for data transfer [two words]

8. CAPACITOR—These types of microphones were commonly called “condensers” until about 1970

9. HOMODYNE—A receiver with direct amplification

13. BLENDER—Contains several modeling features and an integrated game engine

15. PULSESHAPING—Used to improve wired or wireless communication link performance [two words]

17. BRILLOUINSCATTERING—Occurs when certain types of light change their frequency and route [two words]

18. CLOCKSIGNAL—Used to coordinate circuits’ actions [two words]

19. RASPBERRYPI—Designed to encourage scholastic computer science lessons [two words]


1. NONRETURNTOZERO—Typically 1s are a positive voltage and 0s are a negative voltage [four words]

3. BITARRAY—Provides compact storage for computing and digital communications [two words]

4. DOUBLEDATARATE—Coordinates the rising and falling edges of an [18 Across] to transfer data [three words]

5. ANECHOIC—Absent of sound

6. FIRSTINFIRSTOUT—Oldest requests receive priority [four words]


11. CROSSTALK—Occurs when accidental coupling causes unwanted signals

12. BINISTOR—An electronic oscillator component

14. NANCY—Receiver that intercepts or demodulates IR radiation

16. BEAGLEA good breed of analyzer for I2C and SPI designs


Three Workspaces, Countless Projects

Clive “Max” Maxfield, who received his BSc in Control Engineering from Sheffield Hallam University in England in 1980, began his career designing CPUs for mainframe computers. But he has branched out far beyond that, becoming a prolific writer of engineering books, an EE Times editor, a blogger, and a designer of “interesting stuff,” from silicon chips to Steampunk “Display-O-Meters,” according to his website.

Max, who now lives in Huntsville, AL, recently shared with Circuit Cellar photos and descriptions of some of his ongoing projects and creative workspaces:

I would say that I have three personal workspaces. But before we talk about my workspaces, it might be appropriate to first mention two of my several projects, which vary from artistic to technological.

This is the future home of the Prognostication Engine.

This is the future home of the Prognostication Engine.

One of my projects that is currently in full swing is my Pedagogical and Phantasmagorical Inamorata Prognostication Engine. What do you mean “What’s that when it’s at home?” Isn’t it obvious?

Pedagogical = Educational
Phantasmagorical = It’s pretty darned fantastic
Inamorata = The woman with whom one is in love
Prognostication = Predicting the future
Engine = Machine

The Prognostication Engine is intended to help me predict my wife’s mood. Will the radiance of her smile fall upon me when I return home from work in the evening?

My Prognostication Engine is going to be housed in a beautiful wooden radio cabinet circa 1929. This is going to feature two brass control panels, both of which are going to be festooned with antique knobs and buttons and switches and analog meters (the ones with the black Bakelite bezels). I’m aiming at a Steampunk “look-and-feel” that would not look out of place in a Victorian setting.

One of the tricks I use when working on this type of project is to first create to-scale Visio drawings of all of the knobs, switches, meter, and so forth, and then I create a full-sized card-and-paper mockup as shown below. This makes it much easier to move things around and experiment with different placements so as to decide on the final layout.

The paper and card mockup of the Prognostication Engine's upper and low control panels

The paper and card mockup of the Prognostication Engine’s upper and low control panels

Observe the two small pink dots at the top and bottom of each of the vertically-oriented switches and on either side of the horizontally oriented switches and buttons; also the 16 pink dots around each of the five potentiometers. These are going to be faux mother-of-pearl dots, behind which will be tri-colored LEDs implemented using Adafruit’s individual Flora NeoPixels and NeoPixel Rings, respectively.

Everything is going to be controlled using an Arduino Mega microcontroller development board. Speaking of control, the potentiometers are going to be motorized, so that if an unauthorized operator tries to modify any of the settings, the other potentiometers will automatically change to compensate (later they will all surreptitiously return to their original settings).

Now observe the three black momentary push-buttons located on the lower panel, just under the modestly sized red button (do not press the red button). These equate to gifts of chocolates and flowers and hugs. Judicious use of these buttons increases the chances of happy times; overusing them, however, may trigger the “suspicion of wrongdoing” algorithm. In reality, there’s far too much “stuff” to go into here. Suffice it to say that the large meter in the top right-hand corner of the upper panel will reflect the full range of female emotion, from “Extremely Disgruntled” to “Fully Gruntled” (LOL).

Max has another project, dubbed “BADASS Display,” which was inspired by an item he saw in an electronics boutique-type store—a “really cool 9″ tall, cylindrical Bluetooth loudspeaker, whose outer surface was covered with tri-colored LEDs implementing a sort of spectrum analyzer display.”

While Max wasn’t interested in the $199.95 price, the “seed had been sown,” he says.

Thus was conceived my Bodacious Acoustic Diagnostic Astoundingly Superior Spectromatic (BADASS) display. First of all, I took a look around YouTube to get some ideas. It turns out that there are many different ways to present spectrographic data. For example, check out Gavin Curtis’ “My Big Blue 32 Band Audio Spectrum Analyzer Lady Gaga,”  RGB Styles’s “Coffee Table,” and Techmoan’s “Giant LED Graphic Music Display (DJ Spectrum Analyzer).”

I decided that the first incarnation of my display would boast a 16 x 16 array of tri-colored LEDs. I decided to use Adafruit’s NeoPixel Strips. Once again, I started by creating a cardboard and paper mockup as shown below.

Cardboard and paper mockup of the BADASS Display

Cardboard and paper mockup of the BADASS Display

The NeoPixel strips I’m using have 30 pixels per meter. I’m mounting these vertically, which means the vertical separation between adjacent pixels is 33.33 mm. To provide some visual interest, I decided to make the horizontal spacing between columns 50 mm, which is 1.5 times the vertical spacing.

In the real version, the cardboard will be replaced by plywood stained to look like expensive old wood. Meanwhile, the main display panel and the smaller control panel will be formed from hardboard painted to look like antique brass. In front of each pixel will be a 1″-diameter brass bezel accompanied by a 1/2″-diameter clear Fresnel lens in the center. The hardboard panels are going to be attached to the plywood panel using brass acorn nuts. Once again, the finished unit is intended to have a Steampunk look and feel.

I’m planning on using an Arduino Mega microcontroller development board to drive the display itself. This will be accompanied by a chipKIT Max32 microcontroller board that will be used to process the stereo audio stream and extract the spectrum data.

Max’s three project work areas include his office, his kitchen table, and his garage:

I would say that my first personal workspace is the Pleasure Dome (my office). Why do I think of this as a personal workspace? Theoretically I work out of a home office. In reality, however, I prefer to rent a room in a building belonging to an engineering company called MaxVision (no relation).

When you cross the office threshold, you enter a small corner of “Max’s World” (where the colors are brighter, the butterflies are bigger, the birds sing sweeter, and the beer is plentiful and cold). One of the walls is lined with wooden bookshelves containing an eclectic mix of science books, technical books, comics, and science fiction and fantasy books and graphic novels.

Welcome to the Pleasure Dome (Max's office)

Welcome to the Pleasure Dome (Max’s office)

My office is also the repository for all of the antique knobs and switches and analog meters and large vacuum tubes and such that I collect on my travels for use in my projects. Also, I can store (and present) larger objects in the bay outside my office.

My second personal workspace is the kitchen table in the breakfast nook at our home. This is where I tend to implement the electronics portions of my projects. At the far end of the table in the image below we see the jig I constructed to hold the two brass control panels for my Inamorata Prognostication Engine project. On the floor in the right-hand side of the image is the tool box that contains my electronics tools including screwdrivers, snip, and suchlike. It also contains my test equipment in the form of a cheap-and-cheerful multimeter from Amazon, along with an iPad-based oscilloscope and an iPad-based logic analyzer, both from Oscium.

Max's kitchen table

Max’s kitchen table

Observe the plastic storage box on the nearside of the table. I have a separate storage box for each of my projects. Anything associated with a project that’s currently under construction is stored in that project’s box, including any notes I’ve made, any electronic components and their datasheets, and any mechanical parts such as nuts and bolts.

I tend to gather everything associated with a particular function or sub-unit together into smaller boxes or plastic Ziploc bags. In the case of my motorized potentiometers, for example, I have the potentiometers along with the appropriate nuts, washers, antique knobs and suchlike all gathered together. I cannot tell you how much time and frustration a bit of organization like this saves you in the long run. It also make it much easier to pack everything up when my wife, Gina, informs me that she needs the table cleared.

Below we see another view of the test jig I constructed to hold the two brass panels for the Prognostication Engine. Creating this jig only took an hour or so, but it makes life so much easier with regard to assembling the electronics and accessing everything while I’m in the prototyping and software experimentation phase of the project.

The test jig for the Prognostication Engine on the kitchen table

The test jig for the Prognostication Engine on the kitchen table

Max’s third personal workspace is his garage. When his family’s three vehicles are parked inside, his projects are packed away in a corner, including tools and tiles for a mosaic he is creating that will feature ceramic tiles fired in his recently purchased kiln.

Everything tucked away

Everything tucked away

The shelves covered in plastic sheet to the right are where I place my freshly-rolled clay tiles to gradually dry without cracking. The low-down rolling cabinet in the foreground contains all of my handheld ceramic equipment (shapers and scrapers and rolling pins whatnot) along with general protective gear like face masks and safety goggles. Each of the plastic boxes on top of this cabinet is associated with a currently in-progress project. Behind this cabinet is a red rolling tool cabinet, which contains any smaller power tools, clamps, screwdrivers, wrenches and spanners, and also my soldering station and magnifying lens with helping hands and suchlike. To the right of that tool cabinet is a door (not visible in this picture) to a built-in closet, where I keep my larger power tools such as a diamond saw, desktop grinder, router, and so forth.

On the weekends, Max’s garage space opens up as his stepson drives out in his truck and Max’s wife leaves for her real estate agent’s job. “As soon as she has left, I leap into action,” Max says. “I roll out my tool boxes, set up a folding table and chair, and start work on whatever it is I’m currently working on.”

Another little corner of Max's garage work area

Another little corner of Max’s garage work area

As he works on projects in his garage, Max says he is “happily listening to stuff like Led Zeppelin, Genesis, Pink Floyd, Yes, Supertramp, Gentle Giant, The Moody Blues…”

The image below shows a close-up of the current state-of-play with regard to my BADASS Display. A week ago, I routed out the areas in the big plywood panel that will accommodate the hardboard display and control panels. In this image, I’m poised to mark out the hardboard panels and start drilling the mounting holes along with the 256 holes for the tri-state LEDs.

The BADASS Display

The BADASS Display

What can I say? Working on my hobby projects is a great way to wind down after a hard day at work, and being in any of my three personal workspaces makes me happy.

Max poised to give a presentation at the EELive! Conference in San Jose, CA, earlier this year

Max poised to give a presentation at the EELive! Conference in San Jose, CA, earlier this year

Editor’s Note: To find out more about Clive “Max” Maxfield, read his 2013 interview in Circuit Cellar. You can follow Max on Twitter @MaxMaxfield.

Electronics Workspace: Pure Function, Minimal Form

Engineering consultant Steve Hendrix of Sagamore Hills, OH, says the “corporate headquarters” of Hx Engineering, LLC, pictured below, “is pure function, minimal form, and barely fits.”

This basement workspace reflects Steven's diverse projects and clients.

This basement workspace reflects Steve’s diverse projects and clients.

It’s a home basement workspace that reflects a variety of projects and clients. “I do a range of design work, from transistor-level hardware design through microcontrollers and FPGAs, as well as the embedded firmware and PC-side software to run the products,” Hendrix says. “Most of my clients are small to medium businesses in northeast Ohio, although I’ve done designs for companies as far west as New Mexico, as far south as Florida, and as far east as Cypress.”

Hendrix describes a workspace layout that stresses utility and a certain attention to thriftiness:

As I look through my equipment, probably the central theme is cost-effective solid equipment, without necessarily being the ‘first kid on the block.’ I learned long ago to be the second kid on the block with the newest toy… er… TOOL. The early bird gets the worm, but the second mouse gets the cheese.

He provides the following detailed description of his equipment and desk, which is a very large, solid-core door purchased cheaply from a lumberyard because it had been damaged:

Being natural wood and not plastic, it makes an inherently anti-static workstation. I used a router to round the front edge to be a bit friendlier to elbows, and carefully trimmed it and wedged it between the wall on the right and the utility room wall on the left, supported by vertical plywood against the walls. My PCs are in the adjacent utility room so I don’t have to listen to fans all day and they’re up on custom brackets on the wall so I don’t have to shinny under the desk to get to them. All the wires pass through plumbing fittings in the wall. The main work computer runs the lower dual monitors. The next-older work computer is still used for some specialized hardware, via the monitor above and an extra mouse. Under the left monitor is an all-band receiver that I sometimes use to monitor equipment under development, but also listen to broadcast music.

My late father-in-law was always extremely thrifty, and salvaged the flatbed scanner at the top left from a dumpster. It’s turned out to be the best scanner I’ve seen, and I used it to scan their family pictures. There’s also an HP Photosmart scanner that’s excellent on slides and negatives.

The middle stack has a parts cabinet that I really should retire, holding mainly SN74 series dual in-line packages (DIPs) that I very rarely use these days. Below that is an Ethernet-enabled power switch that controls various equipment. Next down is my trusty old Tektronix TDS-220 oscilloscope

I was pleased to note that past contributors to [Circuit Cellar’s Workspace feature] also use that same scope. It was the first digital scope I ever encountered that wouldn’t fib to me about aliasing, and it’s still a real workhorse. The ability to do screen captures with the free PC software helps a lot in documenting a finished product and in discussing problems remotely. Below that is a very solid bench multimeter. If it just had a capacitance function, I could abandon my Fluke 12! Then there’s a basic analog function generator, and some manual switches for AC.

Over on the far right are some more parts cabinets, several power supplies (including the ±5V/±12V supply my dad helped me build during my very first excursions into the then-new SN74 series of logic), an RF signal generator, and a good old boat-anchor Hewlett-Packard (HP) spectrum analyzer. I got that one off eBay, and spent as much again to get it repaired and calibrated. It’s in many ways better than the newer instruments. If it had a synthesized local oscillator and a computer interface, it would do it all. Actually, I have on occasion faked a computer interface by connecting the video outputs on its front panel to my TDS-220, and then capturing the resulting waveform.

In front of that is my solder station and stereo zoom microscope. Sitting on its stage is a backup prototype identical to the one currently controlling 4,800 W of my total 6,800 W of installed solar capacity. I routinely do prototypes using 0603 parts and recently more 0402 parts, with occasional 0201 parts. Don’t sneeze around those! The cabinets on the right wall are mainly connectors and surface-mount parts.

I needed some more bench space for a project, so I added a “temporary” shelf between the right end of my bench and the bookshelves on the wall to the right. As you can imagine, the “temporary” part of that wasn’t. So now it holds a voltage standard, on which sits my solder station and a ham radio. The latter is powered directly by 12-V solar power. At the extreme right are an inverter connected to the same solar batteries and the side of a breaker panel that allows me to safely connect to those same batteries when I need a heavy-duty 12-V power supply.

The whole office is lighted by strips of white LEDs run directly by 12-V solar power. The self-adhesive strips are just stuck to the drop-ceiling rails on each side of the standard florescent fixture. The standard fixture is still present and functional as a backup, but the solar lights are actually brighter and don’t flicker like a florescent. The 12-V solar is also wired to the rear jacks of the HP multimeter, so I can get an instant reading on the battery charge state. I have future plans to move some or all of my office circuits to the 120 VAC solar power that runs a portion of our home.

To the right and out of the picture is a solid wall of bookshelves that I built to hold databooks when I first set up this office over 20 years ago. The Internet and PDFs have pretty much made that obsolete, so those shelves now hold various supplies, projects in various states of completion, and some archival data. Behind me as I take this picture is a long table, made of another big door sitting atop filing cabinets. My original intent was for the desk to be for software/firmware, and the long table to be for hardware. Indeed, there are still a couple of RS-232 lines up through the ceiling and down to the table. However, now it serves as an assembly area when I have contractors doing assembly, as well as for storage and general workspace. But there’s Ethernet available on both the desk and the bench, for connecting Ethernet-enabled prototypes.

The biggest drawback to this office comes on a clear, cold, sunny day. The upstairs has lots of glass, so it absorbs lots of free solar heat. However, that means the furnace doesn’t run at all (even near zero outside), so the office and the rest of the basement get really cold. But since the furnace blower is on solar power, which is abundant under those conditions, I just force the blower on to share some of that heat!

If you’re interested in learning more about Hendrix’s work, check out our member profile posted last year. Also, be sure to pick up Circuit Cellar‘s upcoming July and August issues, which will include Hendrix’s two-part series on his personal solar-power setup.

These solar panels are mounted on Steve's east-facing roof.

These solar panels are mounted on Steve’s east-facing roof.


Q&A: Robotics Mentor and Champion

Peter Matteson, a Senior Project Engineer at Pratt & Whitney in East Hartford, CT, has a passion for robotics. We recently discussed how he became involved with mentoring a high school robotics team, the types of robots the team designs, and the team’s success.—Nan Price, Associate Editor


NAN: You mentor a FIRST (For Inspiration and Recognition of Science and Technology) robotics team for a local high school. How did you become involved?

Peter Matteson

Peter Matteson

PETER: I became involved in FIRST in late 2002 when one of my fraternity brothers who I worked with at the time mentioned that FIRST was looking for new mentors to help the team the company sponsored. I was working at what was then known as UTC Power (sold off to ClearEdge Power Systems last year) and the company had sponsored Team 177 Bobcat Robotics since 1995.

After my first year mentoring the kids and experiencing the competition, I got hooked. I loved the competition and strategy of solving a new game each year and designing and building a robot. I enjoyed working with the kids, teaching them how to design and build mechanisms and strategize the games.

The FIRST team’s 2010 robot is shown.

The FIRST team’s 2010 robot is shown.

A robot’s articulating drive train is tested  on an obstacle (bump) at the 2010 competition.

A robot’s articulating drive train is tested on an obstacle (bump) at the 2010 competition.

NAN: What types of robots has your team built?

A temporary control board was used to test the drive base at the 2010 competition.

A temporary control board was used to test the drive base at the 2010 competition.

PETER: Every robot we make is purposely built for a specific game the year we build it. The robots have varied from arm robots with a 15’ reach to catapults that launch a 40” diameter ball, to Frisbee throwers, to Nerf ball shooters.

They have varied in drive train from 4 × 4 to 6 × 6 to articulating 8 × 8. Their speeds have varied from 6 to 16 fps.

NAN: What types of products do you use to build the robots? Do you have any favorites?

PETER: We use a variant of the Texas Instruments (TI) cRIO electronics kit for the controller, as is required per the FIRST competition rules. The motors and motor controllers we use are also mandated to a few choices. We prefer VEX Robotics VEXPro Victors, but we also design with the TI Jaguar motor controllers. For the last few years, we used a SparkFun CMUcam webcam for the vision system. We build with Grayhill encoders, various inexpensive limit switches, and gyro chips.

The team designed a prototype minibot.

The team designed a prototype minibot.

For pneumatics we utilize compressors from Thomas and VIAIR. Our cylinders are primarily from Bimba, but we also use Parker and SMC. For valves we use SMC and Festo. We usually design with clipart plastic or stainless accumulator tanks. Our gears and transmissions come from AndyMark, VEX Robotics’s VEXPro, and BaneBots.

The AndyMark shifter transmissions were a mainstay of ours until last year when we tried the VEXPro transmissions for the first time. Over the years, we have utilized many of the planetary transmissions from AndyMark, VEX Robotics, and BaneBots. We have had good experience with all the manufacturers. BaneBots had a shaky start, but it has vastly improved its products.

We have many other odds and ends we’ve discovered over the years for specific needs of the games. Those are a little harder to describe because they tend to be very specific, but urethane belting is useful in many ways.

NAN: Has your team won any competitions?

Peter’s FIRST team is pictured at the 2009 championship at the Georgia Dome in Atlanta, GA. (Peter is standing fourth from the right.)

Peter’s FIRST team is pictured at the 2009 championship at the Georgia Dome in Atlanta, GA. (Peter is standing fourth from the right.)

PETER: My team is considered one of the most successful in FIRST. We have won four regional-level competitions. We have always shined at the competition’s championship level when the 400 teams from the nine-plus countries that qualify vie for the championship.

In my years on the team, we have won the championship twice (2007 and 2010), been the championship finalist once (2011), won our division, made the final four a total of six times (2006–2011), and were division finalists in 2004.

A FIRST team member works on a robot “in the pits” at the 2011 Hartford, CT, regional competition.

A FIRST team member works on a robot “in the pits” at the 2011 Hartford, CT, regional competition.

Team 177 was the only team to make the final four more than three years in a row, setting the bar at six consecutive trips. It was also the only team to make seven trips to the final four, including in 2001.

NAN: What is your current occupation?

PETER: I am a Senior Project Engineer at Pratt & Whitney. I oversee and direct a team of engineers designing components for commercial aircraft propulsion systems.

NAN: How and when did you become interested in robotics?

PETER: I have been interested in robotics for as long as I can remember. The tipping point was probably when I took an industrial robotics course in college. That was when I really developed a curiosity about what I could do with robots.

The industrial robots course started with basic programming robots for tasks. We had a welding robot we taught the weld path and it determined on its own how to get between points.

We also worked with programming a robot to install light bulbs and then determine if the bulbs were working properly.

In addition to practical labs such as those, we also had to design the optimal robot for painting a car and figure out how to program it. We basically had to come up with a proposal for how to design and build the robot from scratch.

This robot from the 2008 competition holds a 40” diameter ball for size reference.

This robot from the 2008 competition holds a 40” diameter ball for size reference.

NAN: What advice do you have for engineers or students who are designing robots or robotic systems?

PETER: My advice is to clearly set your requirements at the beginning of the project and then do some research into how other people have accomplished them. Use that inspiration as a stepping-off point. From there, you need to build a prototype. I like to use wood, cardboard, and other materials to build prototypes. After this you can iterate to improve your design until it performs exactly as expected.

Issue 284: EQ Answers

Can you name all of the signals in the original 25-pin RS-232 connector?

Pins 9, 10, 11, 18, and 25 are unassigned/reserved. The rest are:

Pin Abbreviation Source Description
1 PG Protective ground
2 TD DTE Transmitted data
3 RD DCE Received data
4 RTS DTE Request to send
5 CTS DCE Clear to send
6 DSR DCE Data Set Ready
7 SG Signal ground
8 CD DCE Carrier detect
12 SCD DCE Secondary carrier detect
13 SCTS DCE Secondary clear to send
14 STD DTE Secondary transmitted data
15 TC DCE Transmitter clock
16 SRD DCE Secondary received data
17 RC DCE Receiver clock
19 SRTS DTE Secondary request to send
20 DTR DTE Data terminal ready
21 SQ DCE Signal quality
22 RI DCE Ring indicator
23 DTE Data rate selector
24 ETC DTE External transmitter clock


What is the key difference between a Moore state machine and a Mealy state machine?

The key difference between Moore and Mealy is that in a Moore state machine, the outputs depend only on the current state, while in a Mealy state machine, the outputs can also be affected directly by the inputs.


What are some practical reasons you might choose one state machine over the other?

In practice, the difference between Moore and Mealy in most situations is not very important. However, when you’re trying to optimize the design in certain ways, it sometimes is.

Generally speaking, a Mealy machine can have fewer state variables than the corresponding Moore machine, which will save physical resources on a chip. This can be important in low-power designs.

On the other hand, a Moore machine will typically have shorter logic paths between flip-flops (total combinatorial gate delays), which will enable it to run at a higher clock speed than the corresponding Mealy machine.


What is the key feature that distinguishes a DSP from any other general-purpose CPU?

Usually, the key distinguishing feature of a DSP when compared with a general-purpose CPU is that the DSP can execute certain signal-processing operations with few, if any, CPU cycles wasted on instructions that do not compute results.

One of the most basic operations in many key DSP algorithms is the MAC (multiply-accumulate) operation, which is the fundamental step used in matrix dot and cross products, FIR and IIR filters, and fast Fourier transforms (FFTs). A DSP will typically have a register and/or memory organization and a data path that enables it to do at least 64 MAC operations (and often many more) on unique data pairs in a row without any clocks wasted on loop overhead or data movement. General-purpose CPUs do not generally have enough registers to accomplish this without using additional instructions to move data between registers and memory.