As I mentioned in a previous post, I volunteer at a non-profit recycling center. Mostly we fix computers and LCD monitors but lately I’ve taken on the task of getting some older Dell 5650 subwoofer systems running. Initially the hard part was figuring out how to even turn the things on because we never get the center speaker/control panel for them. After some research and reverse engineering I figured out how to wire up a simple adapter so that I could at least test them. That information is contained in my post “Rescue an Orphan Dell Subwoofer”. I then decided that I might as well go whole hog and build a remote control receiver/controller for the 5650 so I adapted the design I detailed in a previous post.
Unlike the previous subwoofer project, the goal here was to not have to open up the box to make modifications. I had already opened up a box so that I could do some reverse engineering which made it easier to understand what was needed for controls. The missing control panel really only has an on/off switch, a volume control potentiometer, and a mono (center) speaker. What I discovered from opening up the box was that the on/off switch actually routes an internal voltage to the base of a power switching transistor. That voltage is a current limited 12 volts so I needed to use a small relay instead of a transistor for the on/off switch. The relay shown in the diagram happens to be one that I had salvaged from another board but you can use one of the little blue ones commonly available online. If you do use one of those, keep in mind that you need a reverse biased diode (like a 1N400x) across the relay coil pins. The relay I show in the diagram has that diode built in.
Normally, volume control potentiometers have separate sections for the left and right channels. In this case, however, there is only a single linear potentiometer. The reason is that internal to the box are Voltage Controlled Attenuator (VCA) chips. Each chip has separate audio paths but the control voltage inputs are wired together – thus allowing for a single control. The control really just acts like a voltage divider connected between ground and a reference 5 volts. For our remote circuit we just vary an output voltage and send it into the box on the connection that would normally come from the wiper of the volume control. We do that by using the Pulse Width Modulation (PWM) capability of the PIC and then add a simple RC filter to smooth the pulses into a DC voltage.
The design shown here combines the PWM capability that was detailed in Episode 9 with the IR control detailed in Episodes 2 and 10. We only need two other I/O lines so it seemed like the 8-pin 12F683 we have used previously would be perfect. Unfortunately, the IR circuit requires the use of the External Interrupt pin which happens to be the same pin needed for the PWM output. That’s why the diagram shows the 16F627A/16F628A instead. The only difference between the 627A and the 628A is that the 627A has less flash memory so either one will work.
In the Train Controller post we didn’t want to filter the PWM pulses because we were using them to switch the motor driver board enable input on/off and actually wanted the pulses to go to the motor. In this application we need to filter the pulses into a DC voltage for input to the VCA chips. The filtering doesn’t have to be perfect for this application and the tradeoff is between voltage ripple, response time, and filter component values. I found a very useful online tool that shows a graph of the expected output given your input values. I arbitrarily chose 1000 hertz and then plugged in some RC values. The values shown in the schematic (10k ohm and 1uf) are what I settled on. Here’s a link to the website: http://sim.okawa-denshi.jp/en/PWMtool.php
If you read the post where I detail the DB9 connector pin outs for the Dell Subwoofer you will see that there is 5 volts on one pin. Hopefully you didn’t miss the part where I said that the 5 volts and 12 volts from the box cannot be used to power other circuits. That means that our IR control unit must have a separate 5 volt supply.
The software link is listed below. While it is targeted for the 16F627A, it is easily ported to other versions of the PIC. You will need to change the line that identifies the PIC version (LIST=) and the INCLUDE file but those are intuitive changes. The __CONFIG line may also need tweaking just because one or two of the labels used are spelled differently in some of the INCLUDE files. Just make sure that the PIC you use has a pin that allows an External Interrupt input (usually labeled EXT or INT) and the capability to do PWM.
The baseline software was copied directly from what was used in the previous subwoofer IR interface project with changes made for the 16F627A to replace the 16F688. Also, the 16F627A only has a 4-Mhz internal oscillator so that affected the delay routines and the timer counts for recognizing the IR bits. The PWM software from the Train Controller project was also added. The PWM calculator detailed in the Train Controller project was used to set the register values for the 1000 Hertz output that was selected in the hardware section. When the IR controller turns the 5650 on the software sets the PWM output to 50%. That can be easily changed if you want a higher or lower default setting. The PWM output is set to 0% when power is turned off. That’s it for this post. Check out my other electronics projects.