Introduction top
"A digitally controlled electric guitar, enabling instant tone, volume, and pickup setting changes."
Project Soundbyte
Our final project motivation came from a desire to enhance the performance capabilities of a guitar. Given the scale of the guitar industry, innovation in any aspect of guitar performance could be a highly marketable and profitable venture. More than 15 billion electric guitars are sold annually, making our device a potentially pursuable idea with a prototype cost of less than seventy dollars.
The fundamental internal pre-amp circuitry for most electric guitars can be modeled in a general manner, independent of the guitar manufacturer. Electric guitars have several "knobs" and "switches" that enable the guitarist to control the tone and volume of the guitar. Fundamentally, the electrical components of electric guitars are comprised of sound-pick-ups, tone knobs, volume knob(s), and the pick-up-switch. Knobs normally function by adjusting variable resistances within the guitar to change volume and tone, while switches electromechanically mix and connect different pickups to the output.
Often times, the guitarist will need to adjust the pick-up configuration and the tone-knobs to get the desired sound during a performance. Any single song may warrant the use of a variety of tones, and to quickly switch settings during a performance is nearly impossible. With our product, different tones can be saved into presets before the performance, enabling the guitarist to instantly change pick-up and tone configurations during the performance with the push of a button. To build this device, we used a standard Fender-Squire Stratocaster which has a 5-lever switch, two tone-knobs, and a volume knob. In any preset, the user has the option to change any of the following: Volume, Tone 1, Tone 2, and five different pick-up configurations controlled by the 5-lever switch. The device automatically saves these settings for that preset. This device has eight presets such that the user can scroll through with the up and down push buttons.
Our project allows the user to control the settings of the guitar swiftly and automatically. By replacing the analog interface such as tone-knobs and switch, to digital components, we enter the domain of digital electronics; ergo, we recreate a smarter and friendlier guitar. We employed a combination of digital components to replace the current tone-adjusting technology of a standard guitar as a proof of concept. Our project uses rotary encoders integrated with the microcontroller to control the programmable digital potentiometers. We also added push-buttons, which enable the change between user-created presets. We digitalized the 5-lever switch to communicate with the microcontroller, so that it could control which pick-ups to output. This was made possible by using an analog multiplexor. A small 2x16 character LCD displays the tone and pre-set configuration. One component of the project concept was to ensure that the signal is still allowed to pass through the circuitry in analog form, with minimal effects in the final tone. Because the components used were digitally-controlled analog components, the signal is never converted to a digital signal, an aspect of our product which is very desirable and valuable to musicians.
In the development of our project, we reverse engineered the circuitry within a Fender Stratocaster. The purpose of reverse engineering this circuitry was to discover how to incorporate our product into a pre-existing electric-guitar circuitry. While some of the project may be specific to the Fender guitar, our product could be modified easily to operate with any electric guitar, independent of the manufacturer.
Hardware top
The user interface is a single 2x16 LCD display, a single 5-Lever Switch, two tone-knobs, and one volume knob. These are the interface to the user and the I/O to the Microcontroller.
The Base, Middle, Treble pick-ups of the guitar are rewired to an analog MUX and digital potentiometers such that the microcontroller can select the pick-up configurations and make the tone-adjustments digitally.
Tone Knobs, Volume Knob, Push Buttons
To develop our device prototype, we needed to replace the tone-knob-potentiometers with digital components: a digital potentiometer to replace resistance and a rotary encoder to replace rotating knob. A rotary encoder is similar to a potentiometer; however, it is used to sense rotational position and spins infinitely in both directions and outputs a digital signal. (The concept of the rotary encoders that we used is explained below in the hardware design section.) A digital potentiometer is similar to a regular potentiometer; however, it utilizes a digital signals to set a resistance value and has a resolution proportional to its rated resistance divided by the "TAP" value-this value is divisible by 2^n. Utilizing the signals from the rotary encoders and programing the digital potentiometers, we can effectively replace the tone-knob potentiometers.
Two push buttons are also required to enable the user to scroll through the user-presets.
Rotary Encoders
Rotary encoders are used to sense rotational position. We used the common Quadrature Encoder which is a type of incremental encoder that gives two of the same output signals that are 90° out of phase. With this type of encoder, we can extrapolate the direction, position, velocity, and acceleration. For our application, all we needed to extrapolate was the direction and position
Ideally, the quadrature encoder will have the following output. The direction of rotation can be extrapolated by which signal leads the other. For example, if Signal A leads signal B, one can note clockwise rotation and if Signal B leads signal A, one can note counter-clockwise rotation.
Mechanical Encoder:
The mechanical rotary encoders that we tested were donated by Panasonic: Part number (EVESBBFE516B). We also ordered optical encoders because of their higher quality and reviewed feedback. Optical encoders, while more accurate devices, are more expensive. The mechanical rotary encoders are fundamentally similar to mechanical switches; ergo, they require to be denounced in order to be digitally interfaced. We created a bias and denouncing circuit for both of the Mechanical and Optical encoders for a quality test comparison.
Shown above is the recommended biasing circuit from the data-sheet, which effectively de-bounces the encoder. To bias the rotary encoder, pull-up resistors are required to be placed at those nodes. The rotary encoder would "qaudrature" signals.
Theoretically, an unfiltered or un-debounced rotary encoder can have switching bounce somewhere between 5-30 milliseconds.
We placed the mechanical encoder to the test. The mechanical encoder sometimes had error spikes (bounce) that were not filtered by the capacitor. The bounce may be due to the physical nature of this particular mechanical rotary encoder; as the contact pad inside the encoder spins, it connects to the output connection-pad which then gives outputs a signal. During the transient location where it isn't connected to the conducting-pads, there is a potential possibility of erroneous connection to either pad. It is possible that we were not careful enough in our test; however, this particular mechanical encoder did not meet our specific application requirements. The potential solution that we did not explore could have been additional filtering as well as integrating a Schmitt trigger signal conditioning.
Note that at ~60 RPM, the encoder has a clean signal; however, often there was a sudden erroneous spike from signal output B. This is not desirable and we later found that it was not compatible with our quadrature decoder.
Optical Encoder:
The optical encoder we used was purchased from Digikey and manufactured by Greyhill,Part number: 62P22-L6. We utilized the 62P Series Greyhill Optical Encoder datasheet to bias our circuit.
The output signal of the quadrature optical encoder was much less noisy than the output signals of the mechanical encoder. The optical encoders had minor fluctuations in voltage; however, this was not problematic and worked perfectly with our quadrature decoder.
Quadrature decoding interface:
To extrapolate position and direction, we needed to interface the selected quadrature rotary encoder to the MCU. The quadrature rotary encoders output two signals that are out of phase from each other, Signal A and Signal B. If the rotary encoder is spun clockwise, then Signal A leads Signal B (Signal B exhibits a 90 degrees phase delay); on the other hand, if it is spun counterclockwise, then Signal B leads Signal A (Signal A exhibits the delay). This two bit binary output gives us four states, which could be decoded in the MCU; however, we decided it was best to decode the signal in hardware rather than to use the MCU processing power. The simplest circuit was realized after spending some time looking at the output signals of the quadrature encoder.
From the figures of the output signals on the next page: Note, when the encoder is spun in clockwise rotation, the value of Output_A is always high at the rising edge of the Output_B signal; this is always true because Output_B always follows Output_A. Similarly, when the encoder is spun in a counter-clockwise rotation, the value of Output_A is always low at the rising edge of the Output_B signal. Instead of using a series of D-Flip Flops and an external clock, we can use a single D-flip flop to achieve direction in a single bit binary value. By connecting one of the output signals of the rotary encoder to the CLK input of the flip-flop, and connecting the other output signals of the rotary encoder to the "D" input of the flip-flop, the Q-output of the D-flip-flop will be a direction. We essentially have a custom clock that samples the D-input and always returns the direction of rotation, either a high or low value {1, 0}. To extrapolate the position, we can make use of the same clock pulse-the pulse signal from the rotary encoder. In our project, we used these pulses to interrupt the MCU and count up or down depending on the direction of rotation. We considered adding a binary counter that would do the counting, however we decided against it because it would have used too many port pins of the MCU.
Digital Potentiometer Hardware
The digital potentiometer chips we used (AD8402) each contain two programmable 10kOhm digital potentiometers. These chips were sampled from Analog Devices and were a great selection for our conceptual prototype. The chips are programmable via use of the SPI protocol, and each have a number of features which we did not need in our project. For example, we determined that we did not need to connect the AGND or the DGND to different grounds, and therefore they were both connected to the same MCU ground. The shutdown pin (SHDN) was also not necessary, as this low-current option also changes the resistor to a set value, and this therefore is not useful to us. We therefore hold it at Vcc. This was also the case for the reset pin (RS). The specifics of the SPI programming for our digital potentiometers are discussed in the software section of the lab.
5-Position Switch
In the original Fender guitar we purchased, the switch given acted to select five different combinations of pickup outputs from the guitar. To reverse engineer the switch, we used a voltmeter to determine which connections had been shorted to the output given each switch position. At the bottom of the switch, there were six separate pins, some of which were connected for each given position, and some of which were not.
Originally, the pins were connected to the potentiometers, the output, and the pickups. The connections were as follows: Neck In, Middle In, Bridge In, Output, Bottom Knob, Middle Knob. In the first, third, and fifth states, a single pickup (neck, middle, bridge, respectively) is connected to the output. Additionally, the appropriate tone knobs are connected for the bridge and middle inputs. For the second and fourth switch positions, multiple pickups are selected. This allows for combinations of input tones to be achieved.
In our design, we made a simplification which allowed for easier prototyping and proof-of-design. Our simplification involved using the switch to simulate the circuit below.
In this simplification, it can be seen that a simple 4-port analog multiplexor could choose which input is connected to the master volume potentiometer. The pickups in this image are shown as "Neck," "Middle," and "Bridge," and the digital potentiometers are shown as "Master Volume," "Neck Tone," and "Middle Tone." It can be more easily understood from this diagram how the tone knobs affect each pickup; the bridge is not connected to a tone knob, and the neck and middle pickups each have their own knob.
Instead of using the switch in its original form, we were able to determine what state it was in by attaching Vcc to the pin which previously was used for the output. Using this method, we could sense the state of the switch from the microcontroller, and then control which pickup is output via the analog multiplexor.
Software top
User Interface Design and Concepts
The goal of the interface design was to provide the best possible user experience, ensuring simple and intuitive user operation, as well as extremely fast response times for user inputs. After multiple stages of interface design, we believe that our final design was one of the best possible choices in order to successfully implement the intended functionality.
With the goal of being able to instantly change all internal guitar settings mid-performance with a single button press, our final design included three knobs, two push buttons, and a small LCD for a display.
There are 8 available presets for the user to change, where the two push-buttons can be used to switch forward and backward between the presets. At all times, the LCD displays all of the settings for the current preset. These settings are the volume, tone, and guitar pickup used. The volume and tone can be adjusted using the knobs (optical encoders) between 0 and 255, because the digital potentiometers have 256 possible positions. These settings appear on the LCD as "progress bars" which fill in pixels from left to right in the same space of three LCD characters. By using progress bars instead of numbers, it is easier for a user to see the settings at a glance, and it also maintains a more analog feel to the guitar controls. A five-position switch is used to change the pickup output setting. Any changes the user makes to the settings while a given preset is selected are saved automatically, further simplifying usability.
We can see above that the user has chosen the following settings: Preset 2, Pickup 2, Volume 100%, Tone1 100%, and Tone2 50%.
We determined that there are a few tradeoffs of having the simplicity of the UI we chose. Since the settings the user changes are saved automatically, there are no temporary presets in which the musician can use. For example, if he or she has carefully set up all 8 presets for a performance, there is no temporary preset to use to explore additional possibilities. Another negative is that the user must remember which presets are set up for a given song, such as 1-3 for the first song, and 4-8 for the second. The reasoning behind not programming this feature was simply that the additional set of buttons required would add a new level of complexity to the experience.
The final design choice we made which has drawbacks involves the inclusion of a 5-position switch to change the guitar pickup. We felt that having the switch, as there is in most electric guitars, gives the user a positive control experience. However, given that the goal of the design was to allow for the user to change all of the settings of the guitar with the push of a button, the inclusion of the switch would increase the number of motions the musician would need to make to change the settings appropriately. Therefore, we set up the guitar such that the switch position could also be saved as part of a given preset. If the user moves the switch while on a preset, it changes the pickup choice for that preset. However, if the user does not move the switch, it will remain as it had been selected previously. For example, if the user moves the switch to position/pickup 3 while on preset 1, then changes to preset 2, moves the switch to position/pickup 4, and then changes back to preset 1, the pickup choice for preset 1 will remain as pickup 3, even though the switch is still set to position/pickup 4. This complication could potentially cause initial confusion, until the user understands the disconnect between the switch and the actual pickup choice, but we found that this decision is also understandable and enables the final design we intended.
Software Design
Our software utilizes the mega644 pin change ISR, the timer0 compare-match ISR, as well as the mega644's SPI communication methods. The code we used to operate the LCD was created by Ruibing Wang (rw98@cornell.edu) and mods were done by Bruce Land (brl4@cornell.edu). The LCD library, lcd_lib.c and lcd_lib.h are both from www.Scienceprog.com.
Timer0
Timer0 is used for two purposes; it creates a 1 millisecond time base for the LCD task to run, and it also checks the state of the 5-position switch every 20 milliseconds. Because of the mechanical properties of the switch, the output to the microcontroller must be de-bounced such that the switch position can smoothly change the pickup choice without the microcontroller swapping back and forth with a given change in the setting. Timer0 changes the selected guitar pickup only if the current setting matches the previous setting for a period of 20 milliseconds. This ensures that changing the position of the switch only changes the pickup output one time. There are currently five possible switch positions. These positions select which output is chosen of the three pickups via an analog multiplexor. Given the position of the switch, the analog MUX bits are set accordingly to choose the appropriate pickup to be output.
Main
The code in main sets up timer0 for a one millisecond time base. It also sets up the SPI parameters, the data directions for all of the ports, enables interrupts for the appropriate pins in PORTA, and enables the pin-change ISR for PORTA. Finally, it initializes the LCD, writes the appropriate strings to the LCD for the UI, and enables interrupts.
taskLCD
Since the LCD task is a very slow task, which takes approximately one millisecond per character to write to the LCD, it is important that the task is not placed in an ISR. The LCD task, which runs every 200 milliseconds, writes all settings of the current preset to the LCD. Placing the task in an ISR would cause the microcontroller to miss interrupts as it writes to the LCD and all other processes wait. By not placing the LCD task in an interrupt, the LCD task essentially becomes the lowest priority task, running in the background in between all other ISR operations that occur. This is done by scheduling the LCD task to run directly from main, in an infinite loop. Timer0 is set to count down the time1 variable from 200 to 0 so that every 200 milliseconds, main will schedule the task. This way, interrupts can still occur during the task.
Pin Change ISR
A pin change ISR is entered every time any of the PORTA pins change state. This is used exclusively for changing preset settings based on changes in the position of the optical encoder knobs. Each optical encoder was set up with hardware flip flops such that the output to the microcontroller consists of a pulse each time the position is changed, as well as an output that determines direction (clockwise rotation is 0V and counterclockwise is 5V). Each time the pulse goes high, the ISR increases or decreases the appropriate setting based on the related direction input pin.
Digital Potentiometer Programming
The method to set the digital potentiometer resistor values was one of the more difficult methods to set up, as we had to pay careful attention to the datasheets of the digital potentiometers. The SPI specification in the datasheet called for 10 bits of data to be transferred in order to set the appropriate resistor in each dual-resistor potentiometer. The first two bits of data to send are the resistor selection bits (00 or 01), and the next 8 bits choose the position of the resistor, between 0 and 255. Two bits are used to select the resistor because other varieties are available in which the chip contains four resistors. Additionally, in order to enable data to be sent, the chip select pin needs to be set low for the appropriate digital resistor chip to be programmed. To easily send the 10 bits of data, writing to the SPDR register two times (16 total bits) was a simple solution for programming the digital potentiometer, as they use a 10-bit shift register. Therefore, 6 zeroes are transmitted first, followed by the resistor selection bits in the first transfer, then followed by the 8 bits choosing the resistor position. The first 6 zeroes sent in the first data transfer end up shifted out.
Above, we can see the first set of 8 bits sent. The first six on the rising edges of the clock cycles are zero, which will eventually be shifted out. The next two bits are the address bits, which here are 01.
Finally, the resistor value is programmed. The resistor in this image is programmed to be in position 53 (0b00110101) which sets the wiper to be at about 2 kOhms from A to the wiper, and 7.8 kOhms from B to the wiper. Towards the left end of the scope display is the tail end of the previous write. The frequency of the clock used is 8 Mhz, as the specified maximum programming rate for the AD8402 is 10 Mhz.
Upon setting the chip select bit back high, the digital potentiometer becomes programmed. All SCLK coordination for the SPI protocol is handled automatically by the mega644. It may also be useful to note that the digital resistors used did not employ a MISO pin.
Results top
Latencies and Execution Speeds
In music performance, the rapidity in which the microcontroller can change the settings of the guitar is crucial to the end-user functionality. With the de-bouncing of the switch and push buttons, the processor changes the preset and the pickup settings after no more than 20 milliseconds. This delay is small enough that it should not be perceivable to the user. Additionally, because the optical encoders are de-bounced and decoded, their state changes are delayed by less than .1 milliseconds before the microcontroller takes a pin-change interrupt and immediately changes the settings. The LCD, which operates very slowly, only changes its display every 200 milliseconds, which is a very noticeable time delay. This delay may imply to the user that his or her actions are also delayed by this amount, lowering the consumer value of the product. However, the user may be comforted by the rapidity with which changes occur in the output sound given user inputs, despite the slow LCD.
Effects of Digital Circuitry on Tone
One component of the project concept was to ensure that the signal is still allowed to pass through the circuitry in analog form, with minimal effects in the final tone. We determined, by testing the digital potentiometers and analog multiplexor, that the frequencies output by the circuitry are highly similar to the appropriate frequencies as they would sound in a fully-analog guitar.
As we can see above, the guitar is strum and a complex set of frequencies are output to the amplifier. Channel 1 shows the input signal from the currently selected guitar pickup, and channel 2 shows the output. The effects of the circuitry on the frequencies appear (and sound) very minimal.
Above, the B string is played, showing both the input and the output of the circuitry. Again, the digital circuitry does not appear to affect the sound. The frequency above is approximately 250 Hz.
The cutoff frequencies for both the multiplexor and digital potentiometers were both much higher than audio frequencies; both have very flat pass-bands for these low audio frequencies. Because of these properties of the circuitry, we believe that we succeeded in our design goal of enabling digital control of the analog internals of an electric guitar. The most notable effect on the signal is the high-pass attenuation of the signal. It appears that some very high-frequency components are attenuated. These frequencies are much higher than those which the human ear can detect, and therefore these "low-pass" circuitry effects may be considered negligible.
We do find that, especially with headphones attached to the guitar amp, we can hear a small amount of interference which is created by the microcontroller. The interference appears to be related to the LCD programming. We found that moving the guitar's pickup wires closer to the LCD programming wires can cause the hum to become quite loud, and comparable to the volume of the actual guitar output when placed in direct contact. However, with the wires approximately 10-20 centimeters away this interference becomes small enough that it is acceptable. If we were to put our product in a real guitar, however, requirements on the placement of the LCD could be less than this 10 centimeter amount. We would most likely need to do further research on the LCD writing process, including exploring possible solutions such as slowing down the programming of the LCD, using shielding and/or shielding wires, and adding capacitors to decrease spikes in applied LCD voltages.
Safety and Usability Concerns
The device is completely safe; all electrical power considerations have been met. The current device that uses the ATMEGA644 is rated at 12 Volt supply and provides no electrical shock or harm. Whether a novice or a professional, any guitar player can employ the device as it is simple to learn and use.
Lessons Learned
The rotary encoders are very delicate devices. As previously mentioned, the mechanical encoders we tested were not 100% accurate. These devices could not be decoded with a single D-Flip Flop. The output signals would often either miss a pulse or have erroneous pulses which caused inaccurate decoded output.
The optical encoders that we received were either previously broken or broke during testing. Because the optical encoders are LED driven, one must be careful in biasing the circuit and not blowing the LED. We chose to power the LED at a lower current by using a 170 Ohm resistor rather than the 150 Ohm and there were no results of broken encoders.
The D-Flip Flops worked perfectly when they were independent from the rest of the circuit. As mentioned in the conclusions section, one of the D-Flip Flops had output errors near the end of our project. Luckily we tested our product very often and were able to debug at the right time.
Conclusions top
Meeting Expectations
The results we obtained exceeded our expectations in terms of the capabilities of digitally controlled circuitry. We could consider much more complex circuitry in the future for audio filters or effects because we found that the effect of the circuitry on the sound was incredibly low. The device we created functioned as we had hoped it would, where the effects of the microcontroller on the sound are generally unnoticeable to the human ear. Potential extensions to the product include a more complex UI with more features for the performer, or additional filters incorporated into the design.
A lot of time was spent finding what devices we needed and ones with matching specifications. A good amount of time was spent designing and debugging the hardware. We worked in a very sequential manner on this project-meaning that first we ensured that all of the rotary encoders were working, and then we designed the quadrature decoders and tested them. It would have been more efficient to get a single rotary encoder working and then test it with the decoder. While we had much faith in the theoretical performance of the components, practically, the mechanical encoders were not compatible with our decoder circuitry. The D-Flip Flops had several preset/clear options that we had left floating, although they passed our original performance test with a single rotary encoder; however, they stopped operating properly when they were integrated to the rest of the circuit which was quite noisy. One of the D-flip flops stopped working-the "Direction" Q-output was a constant low value. This was solved by connecting the NOT_CLR and NOT_PRE to a 5 Volt supply.
In conclusion to hardware design: one must take caution in learning the electrical properties of all components and IC's. Do not only rely on data sheets-test each component for their accuracy. We used the optical encoder because of its accuracy and reliability; however, we would have preferred to use a mechanical encoder because they are ten times cheaper than the inexpensive optical encoder, which were priced at $6.42 per unit on Digikey. Even though the mechanical encoders would require additional denouncing and error-correction decoding circuitry, we would have liked to explore solutions to its problems. We did not find the product performance reviews for the mechanical encoder-it may be important to find and use products that have been tested and used previously. This would have saved us a lot of building and debugging time.
Standards
Our project conformed to the Serial Port Interface (SPI) standard in communication with the digital potentiometer (AD8402) chip.
Intellectual Property Considerations: Code
The code we used to operate the LCD was created by Ruibing Wang (rw98@cornell.edu) and mods to it were made by Bruce Land (brl4@cornell.edu). The LCD library, lcd_lib.c and lcd_lib.h are both from www.Scienceprog.com. Additionally, a basis for the SPI code used was provided by National Semiconductors for programming of the ADC0832 chip. The defined methods SET and CLR given by National Semi were also used elsewhere in the project. All borrowed code is clearly marked in the commented program listing which can be found in the appendix. No code from the public domain was used intentionally.
Intellectual Property Considerations: Reverse Engineering
In development of our project, we reverse-engineered the circuitry within a Fender Stratocaster. The purpose of reverse engineering this circuitry was to discover how to incorporate our digitally controlled potentiometers and multiplexors into an already-existing guitar circuit. The circuitry used could have been from any guitar, as the purpose was to control pickup selection as well as vary the digital potentiometers, which appear in almost all consumer electric guitars available.
We did not sign non-disclosure agreements for any obtained sample parts.
Intellectual Property Considerations: Patent Considerations
The market for electric guitars is a multibillion dollar pool which has been continuously growing while other instruments like the keyboard are not. With the potential marketability of this product, we may be able to gain rights of intellectual property and a patent for this project. Although there are no patents identical or similar to our product, there are several patents that hold right to a particular guitar design.
If we were to bring our design idea to the market, we would ensure that no patents are violated in the related attached guitar circuitry; however, there are several patents relating to the switching and guitar pickups configurations. Even though our product is an add-on and can be modified to be employed in any electric guitar, it is possible that our product may infringe on a number of different guitar pickup switching patents, and therefore we would need to do further research to avoid patent infringement in any product brought to market.
Ethical Considerations
As electrical and computer engineering student of Cornell University, we stood by the moral of an Ivy League member and executed the IEEE code of ethics in our engineering endeavor. We tackled each day's work with a positive attitude and engaged in a synergetic working environment along with our classmates. In researching, designing, and developing our project, we took careful time considering simplicity and safety of device. We worked hard to improve our understanding of the technology available to us and our capabilities in the creation of a product. Although we faced many issues and normal frustrations in the design process, we worked together in determining the best methods for finding solutions to issues.
Consistent with the IEEE code of ethics, the actions we took in creating the product were not intended to harm others, as the endeavor of creating the product was one with the primary intention of expanding our knowledge in the field of Electrical Engineering. We had no intent in any report or display to be dishonest with claims we make on what we have learned and what we have done from the product which we created.
Legal Considerations
The product we created utilizes the Fender Stratocaster circuitry in achieving the final functionality. Because of trademark law, we cannot market the product we created using any of the Fender logos unless we are given consent by Fender. We would need to be careful to ensure that if we were to advertise the product, it would not display any of the fender names, logos, or trademarks, as that would also violate trademark law. In terms of liabilities we assume, if a part we created were injure someone (which is highly unlikely given the operation voltage), we would most likely be the responsible party, as opposed to Fender.
Appendices top
Code Listing
ECE4760_FinalProject.c
lcd_lib.c
lcd_lib.h
Parts List
Part | Source | Unit Price | Quantity | Total Price |
---|---|---|---|---|
STK500 | Lab | $15.00 | 1 | $15.00 |
AD8402 Digital Pot | Sampled | $1.70 | 2 | $0.00 |
74SN74 | Lab | $0.40 | 2 | $0.00 |
White Board | Lab | $6.00 | 1 | $6.00 |
CD4051B Analog MUX | Lab | $0.40 | 1 | $0.40 |
62P22-L6 | DigiKey | $6.42 | 3 | $19.26 |
Jumper Wires | Lab | $1.00 | 5 | $5.00 |
Resistors | Lab | $0.20 | 10 | $0.00 |
.2 uF Capacitor | Lab | $1.00 | 2 | $0.00 |
Guitar | Home | $100.00 | 1 | $0.00 |
Wires | Lab | $0.00 | Many | $0.00 |
Ribbon Cable | Lab | $1.00 | 5 | $5.00 |
LCD | Lab | $8.00 | 1 | $8.00 |
Solder Board | Lab | $1.00 | 2 | $2.00 |
Power Supply | Lab | $5.00 | 1 | $5.00 |
Total | $65.66 |
Distribution of Tasks
Pouria Pezeshkian
- Rotary Encoder Hardware
- High Level Software Design
- Switch Circuitry
- LCD Circuitry
- Component Search
Adam Jackman
- Software
- High Level Software Design
- Digital Potentiometers, SPI
- Analog MUX Circuitry
- Switch Circuitry
References
Datasheets
Atmel ATMega 644 Microcontroller
Digital Potentiometer (AD8402)
Analog Multiplexer (CD4051B)
Mechanical Rotary Encoder
Mechanical Rotary Encoder
Optical Rotary Encoder
Quadrature Rotary Encoder
Vendors
Utilized Libraries/Code Borrowed
Background Sites/Paper
ECE 4760 Homepage
Supplementary SPI Information
Guitar Circuitry Discussion
Google Patent Search
Acknowledgements
We would like to give a special thanks to the professionals at Panasonic Inc for assisting us in our donation requests. Panasonic professionals were eager to work with us and donated the Mechanical encoders, which we received within two days of request.
We owe sincere gratitude to our instructor, Bruce Land, for his contributions and the imperative knowledge that he provided to us; without the assistance and patients of our TA's, Rick Wong, Rohan Sharma, Jeff Yates, Thomas Gowing, and our grader Jaehyun Kim, this project would not have come to fruition.
We also received donations from Bourne Inc. Although they build high quality acoustic components including rotary encoders, we were not able to test their product as we were already too far into our prototype stage.