Tag Archives: opamp

Everyone plays guitar, but more people watch TV

Guitar pedals are harder than they look – at least this one has been. I’ve learnt some valuable lessons that I’ve never had to worry too much about before. The most valuable lesson is that noise is not fun. Living in the digital domain is brilliant because is it far less affected by noise. Analogue is the complete opposite.

If you remember from last time, I had to bias my guitar input at Vcc/2, so that I could feed it into my first op-amp. This meant that any noise present on the voltage rail was put straight on my input, and amplified – not a good start. Thankfully, all is not lost as I just need to convert the input stage to an inverting op-amp with the reference set on the non-inverting input. It should just be a case of moving a few components around as I has enough forsite to scatter passives around the op-amp.

In the meantime I want to talk about my TV. It is a low-end 32inch LCD Hitachi with IO that fits the price tag – no USB, only 2 HDMI, Component, Composite, and VGA. It’s pretty basic, but it fulfils MOST requirements of it, and was a bargain when we bought it. However, over the last two years my needs have changed, but I cant justify buying a new TV. I’m sure modern TV’s are extremely complicated, but like all good hackers/engineers, I needed to know just how complicated. More than a few years ago I would have just taken the back off and gone oscilloscope crazy, but I’ve learnt my lesson by poking around inside said oscilloscope so instead started with the service manual.

In fact I started by searching for spares for my TV (Hitachi 32LD30UA). That gave me a part number of my main control board – the Vestel 17MB35. I can only assume it is a popular control board, purely based on the amount of information I can find about it. Amazingly I found a service manual on the ArgosSpares website. I don’t know why I say that’s amazing, as Argos is where I bought the TV, but I didn’t expect to find a service manual there. Anyway, hunting through the manual I found out that my control board should have footprints for 4 (not just 2) HDMI connectors, 2 USB connectors, and even a “Ye Olde” DSub9 connector. Thinks were looking up, as I needed a USB port just to power my Raspberry Pi. I have been tempted to open the back of the TV and piggy-back off of a voltage regular, but not all I need to do it fit a USB socket instead – a nice and clean modification.

At this point, I still haven’t actually opened up the TV, but I have ordered and received a spare control board. I figured when I eventually open the TV I can copy the contents of my TV’s EEPROM into this board, and see what happens when I switch them over.

My aim is to have the Raspberry Pi powered from a USB port on my TV, have a third HDMI channel, and enable HDMI-CEC. I am pretty confident in the USB power, but who knows about the rest – wish me luck.

Everyone plays guitar…

It has dawned on me that whilst I don’t pay a lot a month for hosting, I do actually pay something and so not keeping this blog up-to-date could be construed as a waste of money.

With that in mind I have an update – hooray.

I built my first guitar more than 10 years ago, whilst still at secondary school. I had only been playing for a few years, and I wanted something that would stand out both visually and aurally.

I started with a strat body, and a random neck I bought off eBay. I cut the scratch plate out of some clear acrylic, and mounted combination of a P-90, humbucker and single coil pickups. These were all wired together through a vast array of switches to enable me to switch any combination of pickups in both parallel or series, and either in or out of phase. Looking back it was a hideous rats nest of wiring, but that was nothing compared to the paint job.

I sat in the garage with my sister, who was 5 at the time, and we painted it with all the paints I could find. It was gloss, matte, and metallic, with a crackled finish in areas.

Since then I’ve bought 2 more guitars, and modified the wiring each time, but now I am more selective over the components. I try to select parts that match the current hardware, or add functionality without adding to the part count. All of this is leading to the real point of this post. I am designing a guitar pedal.

I have been meaning to design a pedal for a number of years, and I had no real reason to not do it. Every time I would sit down and work out what it needed, but I would always be put off by one aspect or another. There are hundreds of questions that stop me from progressing. What do I want the pedal to do? How do I control the modification to the sound? Is a 12bit ADC and DAC going to be enough? Do I have an analogue front end to mix the effect in, or deal with it in digital? Do I want a “true bypass” pedal, or is all the signal going into the processor at all times? Do I stick with what I know and use Microchip’s PIC32, go for a multi-core Parallax Propeller, or try my hand at one of Freescale’s DSP chips? Instead of letting the questions buzz around, I took the plunge and started the design of my pedal.

The signal is first passed through a capacitor, effectively removing the DC component. The signal is the biased at Vcc/2, and pass through an op-amp – TI’s LMV321. This will apply some gain to the signal, before feeding into the ADC – Microchip’s MCP3202; a 12bit ADC. It’s not the best ADC on the market, but it’s pretty cheap and will do the job for now. The digital data is then read in by Microchip’s PIC32MX764F128H. With a core frequency of 80MHz, this should be more than enough to perform some basic effects. Following manipulation, the data is then sent to the DAC – Microchip’s MCP4822; a 12bit DAC. Again, it’s not the best DAC around, but I am not aiming for that yet. Finally, I used a unity gain buffer to match any impedances, remove any DC component, and allow the next device in the chain to handle the signal. The parts selected were spares left over from previous projects. The only new purchases were the 6.35mm jacks and metal 1590A enclosure. It should be obvious that this is not going to be the best pedal in the world. I’m sure that any analogue aficionado will berate me for my choice of op-amp, and any audiophile will say that the minimum number of bits to consider would be 24. But they would be missing the point.

This pedal is my start line. It will allow me to see the weak points in the design. I should have mapped the control rotary encoders to an “Interrupt-On-Change” pin as the are a bit slow to respond, or sometimes appear to run in reverse. I should have use a codec IC with build-in 24bit ADC/DAC. I should have used analogue switches to bypass the circuit when disabled. By this time next week, I will have some answers.

After antagonising over this pedal for years, I have finally started. I spent around 2 days drawing a schematic and laying out a PCB. There’s some code still to be done, but a lot of it was written in the 2 weeks waiting for PCB’s to arrive. I’ve got PCBs from iTeadStudio for $27.59 (under £20), and all my components for around £25. For under £50, I have designed a programmable multi-fx guitar pedal. And I have no doubt that I’ll be doing the same next week.

Stereotypical beginners electronics project pt3

The LCM7215’s arrived as I was writing the last post, so I need to get the PCB’s cut. As I have access to a LPKF ProtoMat C60 PCB cutting machine I have designed a number of boards that fit together to give the case.

The idea is that the first board sits on the underside of the battery back with the electronics on the bottom side. Then two lots of the third PCB sit underneath, with the second PCB being the bottom of the case. These will be glued together, and M3 nuts will be glued in place to receive some M3 bolts mounting the battery case securely. There are two 5mm holes to accept a suitably sized screw.

To finish it off I’ve embedded a video.

[youtube ]UeT_E9ZLQX4[/youtube]

Stereotypical beginners electronics project pt2

I’ve got some LCM7215’s on order for a work project so I’ve got some downtime until they are due to arrive. I’m going to run through the LTSpice simulation process, and look at the alternative solutions available.

Assuming you haven’t already, you will need to download LTSpice. This is a free Spice simulator provided by Linear Technology. It’s pretty basic, but it has almost everything I needed to get off the ground. By using the following equations I managed to select starting values for my oscillator.

 

 

 

Using R = 255k, R1 = 1M, R2 = 255k, and C = 10u, we have a T of just over 11 seconds. Interestingly, when I simulated the circuit, my T was around 4.4 seconds. I am using fairly large values as I want to limit the current. The output is fairly constant, but there are a number of problems with my current circuit.

Firstly, I want  to use a single supply op-amp. This means I need to create a virtual ground or else the op-amp will be driven into an undefined state. The simplest way of acheiving this is my tying the inverting input to Vdd through a resistor equal to R1. Next, my output has a duty cycle of 50%. This is a problem as I want my device to be as low powered as possible. A reduction from 50% to 2% duty cycle would reduce my current consumption by a factor of 12. That is the battery would last 12 times longer. To adjust the duty cycle you need to include a diode in parallel withthe negative feedback loop. The idea is that the diode will all the capacitor to either charge or discharge quicker, depending on the polarity of the diode. As we want the capacitor to charge quicker we need to allow the current to flow to the capacitor quicker. Lastly, I have specced out the op-amp that I want to use. The LMC7215 is a low power single supply rail-to-rail comparitor that ticks all of my boxes. The only problem was that it is a National Semiconductor part, and LTSpice is Linear Technologies. This means that the part won’t already be contained in one of the built-in libraries.

To overcome this, National Semiconductor have released the SPICE definition for that part, and LTSpice allows you to include a SPICE directive. There are a number of options when it comes to using custom SPICE definitions, but I will only cover the one I used. I had already built up the circuit around a different op-amp, so to continue I needed to change the model. There isn’t a way to change the model, so instead you have to delete the current one and drop in the replacement. My replacement was based on the “opamp2” model. Once the base model is inserted you need to insert the SPICE directive. This is a button on the toolbar that opens a text box. Take your downloaded SPICE definition and copy the tesxt directly into the text box. Select “SPICE directive” from the radio buttons, and click OK. Next, right-click “opamp2” and type “LMC7215/NS” into the Value field. This is based on the SPICE line starting with “.SUBCKT” comment. Next, we need to tie together pin names and definitions. This is done by editing the “opamp2” symbol. When you right-click on a pin, a box opens allowing you to change the “Label” and the “Netlist order”. The “Label” is the pins name and the “Netlist order” is the order at which they are mentioned in the SPICE file. In this example we have

“.SUBCKT LMC7215/NS     3  2  6  4  5”

That means the non-inverting pin is called “3” and its netlist order is 1. The inverting pin is called “2” and its netlist order is 2, etc.  Once that is set up, you can run the simulation.

With the circuit designed and simulated it is time to lay out the PCB. Unfortunately for you, I use EasyPC at work, and as that’s what I will be using to lay the PCB out in. I have given you the tools to create your own flashing light project using an op-amp as the starting point. Next article I will be laying out the PCB, and designing an enclosure for it.

Before I go, I wanted to run through the other two options. The PIC is based around the PIC18LF14K22. This is a low power device, and I happen to have some left over from my electronic dice project (still waiting for PCBs). Not much to say here. I’ve connected up the header pins for the ISCP, and using a 560R resistor I’ve connected both pins of the LED to the PIC (anode to digital pin, cathode to analogue pin – diode “points” to the analogue pin). The 555 circuit used a 560k resistor, 15k resistor, and 10uF capacitor to give a period of around 4 seconds, and duty cycle of 97%. By reversing the diode and connecting to Vdd the LED flashes briefly for 105ms, and stays off for 4 seconds. Again, the 555 is just too power hungry, and the PIC is a bit of a waste of technology. I admit, I could use a PIC10 or PIC12 and get better usage, but I left assembly behind more than a few years ago and I’m not planning on looking back.

As luck would have it the LCM7215’s have just arrived on my desk. And yes, the 5 SOT-23 devices did come packaged in an A4 envelope. 

Stereotypical beginners electronics project

The In-Laws have just moved house. I say move house, but what I mean is sold their old self-build, bought a field in deepest darkest Norfolk and are planning to self-build again. This is great news because it means they’ve got a blank canvas to fill with numerous eco-build projects. The first of which is a criminal deterent. I’m sure the working ip-camera will be used at some point but until then a decoy camera will have to suffice. Decoy cameras work fine so long at they remain believable, and so this decoy camera needs that little extra bit of polish; a flashing LED.

The flashing LED project is the “Hello World” for those whose programming language is solder. Any time you learn a new microcontroller, you will face the flashing LED tutorial. This is designed so that you can set up all the important registers and interface with the outside world. When you talk about flashing LED projects without using a mcu, people will generally offer the 555 timer as a solution. I’m going to look at three options, and hopefully have a working flashing light at the end.

The main design considerations are the need for a long battery life, and a fairly cheap design. I’m going to be using the LPKF Protomat C60 at work to cut the board out, and I’ll be trying to use components I have in my bits box, or can get free samples of. I am aiming for the design to fit on the back of my selected battery solution, and have a suitable mounting fixture integrated into the PCB design.

I know I need to use battery power, and once installed the batteries can’t really be changed. The build should take 2 years, and so I am aiming for more than that. I’m going to overengineer this aspect horendiously as my professional integrety is at stake. Obviously, a car battery would be a rediculous solution, and although space is not at a premium I’d still like to make the package small. My options consist of a single PP3 battery, a single CR2032, or a pair of AA batteries. The CR2032 only has a capacity of around 200mAh, with the PP3 only doubling that. The AA has to be the victor at well over 1000mAh. Thankfully, the AA battery holder is a also almost half the cost of a CR2032 holder. Lastly, is the actual flashing LED. A flashing light project without a flashing light simply isn’t. The minimum current draw I can reasonably expect to look at is 1mA. Any lower and I dont think the LED would be bright enough to see at a distance. The human visual cortex holds onto an image for about 1/15s, or approx 66ms, so I think that 100ms is a reasonable on time for the circuit.

I’ve mentioned the 555 timer as a possible solution so lets examine that a bit closer. Normally, the 555 doesn’t output a duty cycle of less that 50% which is bad for a low power design. The duty cycle issue can be addressed with a 1N4148 in parallel with the resistor between the discharge and trigger pins. Alternatively, you can reverse the LED and connect to Vdd instead of Vss, sinking current through the 555. The ICM7555 is Maxim’s low power derivative of the 555, having a typical supply current of 60uA. Assuming a battery capacity of 1000mAh, the 555 would run for 16666.67 hours (a month less than 2 years) without flashing an LED. The 555 just doesn’t cut it.

The next obvious solution would be a low power microcontroller. This is great as the LED can do more than just flash. It can reverse bias the LED to work as a light detection circuit, and the LED can do a double flash for extra realism. The PIC18LF13K22 has a low power sleep current consumption of only 460nA. This would be 34nA but I need to keep a timer running to wake the thing up. Even a draw of 460nA  gives a run time of 248 years on a 1000mA battery, which is just crazy. Adding the LED gives a battery life of 5 and a half years. With a BOM of only 5 components this ticks every box, but using a microcontroller feels like cheating. I think this will be my backup plan if the next idea falls through.

My final option is an op-amp. The op-amp in question is Linear Technology’s LMC7215. By using positive and negative feedback and a crafty 1N4148, the LMC7215 can be made to oscillate with a definable peroid and duty cycle. I used LTSpice to simulate the actual circuit and can extract the predicted current draw (tutorial to follow), giving a battery life of just over 5 years. Using my parts box, I managed to get a on-time of 92ms, and a period of 4 seconds.

 

 

 

 

 

 

 

 

The op-amp circuit does give a higher parts count, but this still ticks every box, and I think it is more elegant than the PIC solution. Next article, I will be showing how to use LTSpice to come up with the appropriate values, and importing SPICE definitions into the circuit. I will also lay out the PCB in CAD, and start the enclosure design. See you then.