### Instruments for the GSXR

Since the GSXR is now a street fighter the factory gauges won’t do, and I wanted something I could log air/fuel ratios with so I can jet the bike. I went a little overboard making a new dash.

I had a Planar 160×80 EL graphic display that’s been in my parts bin for years that I’ve always wanted to use, and this was perfect. Unfortunately it doesn’t have a controller so I had to interface it to the CPU with an Epson S1D13700 graphic controller. The display indicates speed from a GPS module, air/fuel ratios from the wideband O2 sensor, engine temp, battery voltage, time from GPS, and RPM. I used a light sensor to sense ambient brightness levels and dim the display by changing TC/R in the graphics controller. The refresh of the display is high enough to allow a large dimming range without flickering. The EL display can be refreshed at up to 240Hz. The light sensor also controls the brightness of the bar graph and indicator LEDs. A BC127 bluetooth module allows datalogging via SPP, and I might eventually get around to displaying SMS messages from my phone on the display which was one of the design goals but isn’t done yet.

An IR optoisolator senses RPM pulses from the magnetic pickup and protects the system from ignition noise. Addressable LEDs function as indicator lights as well as forming the bar graph at the top of the display. The bar graph can display RPM, battery voltage, engine temp, or A/F ratios depending on the current mode which is selected by a button on the side of the housing. The bar graph is also a two stage shift light which overrides any display mode and goes to full brightness with two different colors to indicate high RPM for shifting. A highlight box on the graphics layer shows which mode is currently active and the graphic and text layers are XOR’ed. I also made a custom bitmapped font I thought went well with the display size and the amount of characters.

Sunday, October 25th, 2015 11 Comments

### Light pipe tail light for the GSXR

I wanted the new subframe and tail of my GSXR to be really different, I wanted a kind of rough raw look but still really clean. I used unfinished stainless steel and some really angular sections to achieve this. One of the most important parts about how I built the tail was being able to add a light pipe around the outside perimeter for a taillight.

I made the light pipe from 1/4″ acrylic, cut out three sections and used acrylic cement to join them. I added LEDs and coupled them to the light guide with LOCA glue. However the amount of LEDs I had to use to achieve good brightness meant I would need to build a boost power supply for the LED driver. Here is a simple boost power supply I made with three LED drivers and an ATtiny2313 for controlling flashing the side segments as turn signals.

Tuesday, May 26th, 2015 Uncategorized No Comments

### M17x 6990m / 6970m overheating

How to fix AMD 6900 series cards overheating in the Alienware M17x.  › Continue reading

Tags:

Monday, March 31st, 2014 Uncategorized 1 Comment

### PAR / Spectrum analyzer

I’ve been working on an off for a while on a project to measure photosynthetically active radiation (PAR) as well as analyze electromagnetic spectrum with the same sensor, at the same time. The spectrum in question is approximately 350-750nm. I mainly envisioned this tool for use with marine aquariums, and if things were going better I probably would have built a prototype.

The sensor is a TAOS TSL3301CL. It is a 102-pixel photodiode array with a serial interface. The sensor contains analog stages for gain and offset as well as ADCs that sample the values and read the results to the serial port. It’s a nice device, but I haven’t been able to get what I want out of it. The response for me has been very non-linear. It’s also a very tiny leadless package so it’s not easy to work with.

For reference, that is a 0.1″ header

My plan was to enclose the sensor in a housing with a series of lenses designed to introduce chromatic aberration or a prism to refract the captured ambient light, and then direct the spectral components of the light towards the sensor. The sensor’s response to wavelength is non-linear, but that can be corrected with a function in software for each pixel.

I had a uOLED 128×128 pixel display that I used to display the intensity of light for each pixel. This worked well, and I would have used an averaging function to estimate PAR from that data.

However, I haven’t been able to get the sensor to respond in what I consider a linear fashion. It is mostly on or off. Moving the light source back and forth from the sensor doesn’t result in any gradient that could be considered measurable. I’ve tried various gain and offset levels, as well as long and short integration times but with no success.

I originally tested it with an mbed, but I had trouble with the sensor’s synchronous clock. So I ported the code to the mega2560 on my STK600. About that time the display started to die and I don’t have another graphic display at the moment without messing around with an Epson S1D1335 and another graphics library… As such I’m stashing this project for now. If anyone has worked with these sensors before and knows what I’m doing wrong, I’d like to hear from you.

Tags: , ,

Saturday, March 22nd, 2014 Electronics No Comments

### Acrylic polishing and scratch removal

I recently acquired a 46 gallon ZeroEdge aquarium that was in pretty rough shape. There were a lot of scratches as well as marks from calcareous algae. Here is what I did to repair it.  › Continue reading

Wednesday, December 11th, 2013 Uncategorized No Comments

### 330W power supply for M17x update

So everyone that has done the 330W power supply mod that I posted earlier has experienced the power supply shutting down at 240 watts of power draw. That is pretty counterproductive since the M17x ships with a 240W power supply. I did some reverse engineering and some load testing and figured out what the problem is.

I built a simple dynamic load from a few resistors, two op-amps, and an IGBT that I salvaged from an old motor drive. I attached the schematic at the bottom for anyone that wants to build a similar device. I didn’t have a small enough current sense shunt resistor to handle the current, so I used feedback from the gate-emitter voltage since it is roughly proportional to collector-emitter current after about 10 volts. I also used an MC34072 op-amp since it’s what I had laying around. It’s a bit crude but it works.
The dynamic load let me test the power supply and confirm that it was shutting down at 240W. It did, with the highest power I could get at the output being 19.6V @ 12.5A, roughly 245 watts. I also noticed quite a bit of buzzing.
It is pretty unlikely that Dell would make a power supply that badly, and it successfully powers the M18x so I took a closer look at the only thing that could have any effect on the power supply: the ID wire. When I figured out how to put the 240W 1-wire ID chip in place of the 330W ID chip, I found out that the M17x couldn’t drive the 1-wire bus. Something was loading it down farther down the line. Cutting the ID trace after the 1-wire PROM fixed the issue and allowed the M17x to drive the bus high and charge the PROM so it would work (the PROM is parasitically powered). The only thing that could have an effect was whatever was behind that trace. › Continue reading

Wednesday, July 10th, 2013 Electronics 15 Comments

### Continuous vs. batch water changes

I have been wondering lately about the effectiveness of building a continuous or automatic daily water change system for my reef aquarium. I really hate batch water changes, but they seem like they would be more effective. I decided to do the math and find out if that was true. A continuous water change can be modeled as a differential equation:

$y'(t) = (f_1)(\frac{y(t)}{V}) - (f_2)(\frac{y(t)}{V})$

where $y(t)$ is the amount of some dissolved substance at time $t$, $f$ is the flow rate in and out of the system, and $V$ is the volume of the tank. We can simplify the model by making some assumptions: a continuous water change will consist of a small volume over a long period of time, thus the flow rate will be low enough to assume complete mixing in the high water flows of a reef aquarium. Flow rates should be chosen to provide an equivalent reduction of dissolved material as a weekly batch water change, however the rate is not of interest here since we are purely interested in comparing the amount of dissolved material reduction with a batch water change, not how long it will take. It will be easiest to calculate volume with a flow rate of 1 liter per hour. We can also assume an input concentration of 0, since the water coming in should be from an RO/DI system. This gives:

$y'(t) = - \frac{y(t)}{284}$

noting that my aquarium $V$ is 75 gallons, or 284 liters. We will also set this up as an initial value problem, with $y(0)$ being an initial concentration of 50 mg/L of nitrate. The goal is reduction to 45 mg/L which we will compare to a batch water change later. For my 284L aquarium, the total concentration of nitrate would be $50 mg/L * 284L = 14200 mg$. This gives:

$y'(t) = - \frac{y(t)}{284}, y(0) = 14200$

The particular solution for this IVP is:

$y(t) = 14200\ e^{\frac{-t}{284}}$
Sunday, November 18th, 2012 Uncategorized 1 Comment

### 330 Watt power supply for Alienware M17x

I successfully managed to modify the M18x 330W power supply to work in the M17x, which allows for running the M17x with a fast processor and SLI / crossfire. [Update: some people are having issues with the 330W PS running a 920XM processor with 7970m CrossfireX. This combination draws more than than 330W in the M17xR2 for some reason. I have an 840QM and 6990m CrossfireX with no issues, about 200W average] The modification is easier if you already have a 240W power supply, since you will already have the DS2502 1-wire EPROM that is required for the mod. If you don’t have a 240W supply you can also order a DS2502 and program it manually with the 1-wire programmer I posted here.  › Continue reading

Tags: , ,

Saturday, October 13th, 2012 Electronics 29 Comments

### mbed 1-wire EPROM driver (DS2502)

I wrote some code for my mbed to read and program the memory contents of 1-wire EPROMs like the DS2502. It should work with any device that responds to the same commands. The code can read ROM, status registers and memory pages, and write to the status register and memory pages. I also incorporated support for cyclical redundancy checks since the devices aren’t erasable. I had to build an external circuit for the 12 volt programming pulse to protect the mbed signal pin. If you only need to read you don’t need this, but it is required if you want to program data. Download link to the project source files is below.

Tags: , , ,

Friday, October 5th, 2012 Electronics 10 Comments

### M17x inverter brightness fix

After I killed my original motherboard modifying stuff in my 6970m quest, the brightness of my LCD was stuck at low with both the new R1 and R2 motherboards. The function keys couldn’t adjust brightness and neither could windows. Here’s how I fixed it. This is probably only valid for a CCFL backlit display.

The inverter that drives the fluorescent lamps in my display is based on a MAX8759. This chip has an SMBus interface as well as an ambient light sensor interface and a PWM input. The motherboard uses the SMBus interface to control the inverter. You can directly write values to a brightness register, from 0x00 to 0xFF for minimum to maximum brightness. The function keys send incrementally smaller or larger values to the controller. I pulled out my logic analyzer, mbed, and realterm to watch the bus communication and communicate with the inverter controller.

The communication from the EC to the inverter controller is correct, and you can read the brightness register and see the values change based on the function keys. However the brightness continues to stay low. You can also read the fault register, but no faults were present in my case.

What I figured out was the controller by default uses a mode called “SMBus with DPST”, which takes the SMBus brightness value and multiplies it by the PWM duty cycle. This apparently allows another interface to use the PWM input and dim the display without needing to access the bus. The problem was the PWM duty cycle from the EC was 0%, so the controller kept the brightness at 0 regardless of the SMBus setting. › Continue reading

Tags: , ,

Thursday, October 4th, 2012 Electronics 1 Comment