Donnerstag, 2. Juni 2016

The second life of a Casio DH-100

More than a year ago I have got a casio DH-100 on Ebay. Unfortunately it was totally disappointing after getting it.

  • Soldering joints were made unprofessionally.
  • The cover of the battery slot was missing.
  • Flex cables had to be replaced.
  • And the worst thing was, someone has removed the pressure sensor.

Technically the description on ebay was correct, saying "it's just working with breath mode turned off". But I am sure the seller wanted to make buyers believe it's just a small problem that's fixed by replacing a capacitor. However, after some emails I have got the cover for the battery slot.

In the next step I did some general clean up of bad soldering like this one and replacing a flex cable with the cable of a floppy disc drive.


I shorted the legs as much as I could and fixed some dry soldering joints.

The Pressure sonsor

Now there was the biggest problem left, the missing pressure sensor. I found a technical manual that explains the sensor quite well. It's a moving iron core in a coil but it doesn't say anything about the number of loops, length or diameter of the coil or the core. The breath is moving the core which is changing the inpedance of the coil. This change is converted into an analog signal for the CPU.

I tried to contact some service center for those devices to get photos or any information they can provide but I didn't get anything. For the next year the casio was laying around and nothing happened.

Last week I felt it was time for a plan b. I thought I could start playing round with some coils, but this seemed very unprofessional to me and didn't look very promising. So I checked my bench for helping stuff and found a picaxe m20 and a mpx5010. I knew the impedance of the coil is converted into a directed current and the CPU is reading it with an ADC. So my plan was to use the pressure sensor and the picaxe to simulate this analog signal. Of course the m20 didn't have an DAC to create the analog signal. But I remembered an old friend of mine. He created an DAC on the LPT-Port of his 386. This was in the in the early 90s, where sound cards were not the standard. There goes a waving hand to albert for showing off ;-) On Google I found the covox speech thing. The m20 offered enough output pins to build an 8 bit DAC and so I had everything what I needed. Find the schematic at the end of the post.

sensor electronic for EWI


Writing the software took 2 days. It was my first picaxe project and for this I had to learn how to code it. The tricky part was to scale the air pressure to values that are understood by the original CPU.

There are some points to be considered:

  1. The sensor has a pressure range from 0 to 10 kpa.
  2. The actual pressure in the instrument never goes that high. I guess it ends at 3-4 kpa. The instrument isn't a closed chamber, the player is blowing thru it. So there is just a small rise in pressure inside the air channel.
  3. The ADC of the original CPU takes 0 to 5 volts.
  4. The Software in the original CPU just processes values from about 0.5 volts to 1.5 volts.

Sheme of pressure conversion for orig. CPU

On the output side of my module there are two key parameters. The minimum and the maximum output level. The more critical one is the minimum level. If it is too high the horn blows constantly. To be able to adjust this value I added two keys to increase or decrease it. The maximum output level is hard coded and has to be adjusted in the source code(config file). The next key parameter is the relation between the max output level and the max input level. This relation is auto adjusting. The software takes the maximum measured input pressure for the maximum possible value. That means after turning the device on it has to be blown once to adjust your pressure sensor. On the other hand if it is blown too hard the full volume is hardly reached in normal play. So there needs to be a way to reset the auto adjusting mechanism. This is done by pressing both buttons at the same time. To distinguish no breath and normal air pressure there is a minimum sensor pressure that has to be reached to generate any output, otherwise the horn would blow because normal air pressure pushes the sensor.

These are all config values for the software:
  • minimum output level
  • maximum output level
  • minimum sensor data

Connecing the main board

The main board is connected at 3 points. On one hand to get VCC and GRND. On the other hand to feed the original CPU with the pressure signal.

connection points to the main board
analog input pins on the original cpu
The analog signal from the sensor goes to 2 analog input pins of the original CPU. First I disconnected them from the main board(I am not sure if this is necassary) and connected both to the output pin of my DAC.

That's it - on the bread board it was working like a charm!


The last task was to put everything back into the case.
Luckily there is enough space in the case

In the case of the instrument there is enough space to add the pressure sensor and the chip.
The pressure sensor sits next to the speaker
The board sits next to the main board

Userinterface

Userinterface of the device

To the user panel I added two buttons and a 3-Pin-Connector to be able to upload a new firmware to my picaxe.

Schematics

Please excuse the quality, I had to draw it with Illustrator :-)

For the DAC I used 10 and 20 KOhm resistors
The capacitor has 100 microFarad
SIN = serial in
SOUT = serial out
The MPX5010 is not connected directly. There are some elements used. Please see the manual of your exact chip. On google I found projects connecting them directly, but the manual shows a very small circuit that is recomended.

I made one Failure in this project

I connected the resistors in the wrong order to the output pins of the m20. For this I had to add an option to reverse the bit order of the output data. The schematics below shows my wrong version.

Finally, it's working

Here you can see the output signal on the oscilloscope

Final thoughts

I designed everything to be independent from the casio device. So I made a general module that could be interesting for other projects too.
The original device is working with moving mass. This replacement is working with a pressure sensitive chip. I can't compare them, but I guess the replacement is reacting faster and better to pressure changes.
Firstly using the picaxe looked a bit over engineered to me, but there are some parameters to adjust. And doing this in software is much easier than in analog circuits.
Having the picaxe and the software opens a door to effects that can be build into it.

Success

Finally,  yes my casio DH-100 is now working again and now it's time to learn to play it :-)



Downloads:
PICEWI on GitHub

PROJECT UPDATE 2016-08-27 - Picaxe - Floating serial in

In this project i had serial in of the picaxe floating. This made it stop working randomly.
Please check page 31 of the picaxe-PDF get serial in grounded.
http://www.picaxe.com/docs/picaxe_manual1.pdf

Update 2017-07-22 original pressure sensor

I have got a second DH-100 on ebay for some bugs. It just had a death capacitor, so rapairing it was a question of minutes :-) Now I can compare the original sensor to my own build. I tried both and I can say my rebuild with a modern sensor is much more sensitive and easier to play.