Repairing and Reverse Engineering the Anatek Wind Machine

Send me an email at my contact page.

I really like the Anatek Wind Machine Breath Controller-to-MIDI interface, which is no longer manufactured. Mine stopped working a couple years ago and I decided to cut open the sealed enclosure, fix it, and reverse engineer the design for the benefit of whomever wants to know!

Yamaha BC2 Breath Controller pictures and description.

Disclaimer

I never worked for Anatek nor do I have any relationship with anyone that did. I make no claims to the accuracy of this information and it is not my intention to violate any intellectual property of Anatek. I am just providing information on an obsolete and unique product.

Getting Inside

I used a Dremel tool to cut around the upper edge of the case and after some careful prying with a screwdriver, was able to remove the top of the case. It took some doing to get the printed circuit board (PCB) out of the case. You have to bend the left side of the case out to get it around the breath controller (BC) input jack, and I pried it out from the right side of the PCB by the power supply and MIDI OUT jacks. Here’s what it looked like after I removed the top. The ceramic cutter on the Dremel melted the case as much as cut through!

I cleaned up the edges of the case with a file and used hot melt glue to reassemble the top. It doesn’t look pretty, but it works.

IMG 1503

Below is a picture of the board outside the case. U4 was shadowed by the big power supply filter cap C4 so I pointed to it. You should be able to read most of the other reference designators. The board is marked as “Rev 2 Pocket Breath” which must have been an internal project name for the unit.

MIDI IN and BC jacks are on the left and the MIDI OUT and power supply jacks are on the right.

If you have any questions, please Email Me and I will try to help.

Internals

Here is a parts list of the ICs and crystal:

U1 - MC68HC05C8FN 8 Bit Microcontroller

U2 - 74HC4538 Dual retriggerable precision monostable multivibrator

U3 - 78L05 5 Volt Regulator

U4 - 78L05 5 Volt Regulator

U5 - 1741C XNBR 741 Op Amp

X1 - 4.00MHz Fox040A CRYSTAL; 4.000000 MHZ; + 30 PPM @ 25 DEGC; 150 OHMS; -20 DEGC; DEGC

There are links to the datasheets at the bottom of this page.

Circuit Description

To convert the voltage output of the breath controller to a digital signal the microcontroller can understand, the Wind Machine uses a voltage to pulse width converter consisting of one half of U2, functioning as a variable pulse width one-shot. U2 is a 74HC4538 Dual retriggerable precision monostable multivibrator whose output is connected to the the timer/counter subsection of the microcontroller.

Microcontroller U1 triggers section 1 of U2 on input 1B (pin 4) at ~6ms intervals using the TCMP output (pin 38 of U1). The resistance between pin 2 and +5v of U2 sets the pulse width of each pulse, along with C3. The resistance in this case is Q3, which is likely a N-Channel FET. The gate of the FET is connected to the output of U5, a 741 type opamp. The non-inverting input of the opamp (pin 3) is connected to the breath controller input jack (the output of the breath controller). R19 and R20 biases the signal up to a nominal 9.5v. As the breath pressure increases, the voltage out of the breath controller, and therefore the voltage on U5 pin 3 decreases and the output follows it. This decreases the resistance of Q3 which decreases the length of the output pulse of the Q output of U2.

The scope capture below shows the output of U5 as the breath pressure increases on the upper trace, and the positive going pulse output on U2. Initially the pulse is about 2ms wide but as the pressure increases the pulse narrows to ~500us. I didn’t measure the actual voltage versus pulse width relationship.

Breath to Pulse Width

Pin 6, the Q1 output of U2 is connected to pin 41 of U1, the TCAP (Timer Capture) microcontroller input which allows the firmware to use the internal timer system to measure the pulse width. The timer system in the microcontroller measures the time between the TCMP output (U1 pin 38) and the falling edge of the TCAP input (U1 pin 41). The firmware then reads this value and converts that to a MIDI continuous controller (CC) message based on the settings of switches 5-7 which sets the continuous controller type as shown on the side panel of the Wind Machine.  

MIDI IN/OUT

The MIDI input is connected to pin 32 of the microcontroller. This is the PDO/RDI pin which is connected to the Serial Communications Interface (SCI) of the microcontroller. The output of the SCI TDO, on pin 33. The crystal runs at 4 MHz which allows the SCI to run at the 31.25 kHz baud rate of MIDI.

The microcontroller must buffer the MIDI data path and insert the appropriate CC message when a significant enough change occurs on the breath controller input. The unit does not continuously send out the CC message assigned to the breath controller but only when a change occurs on the breath controller input. To prevent noise from sending out incorrect messages, there must be a minimum difference in the input set in the firmware before a CC message is sent. 

I measured a 1.2ms delay between the MIDI input and the MIDI output with no breath controller messages sent.

The MIDI specifications require that the MIDI input of a device drive an opto-isolator but Anatek chose not to follow this. No great harm I’m sure. 

The RESET Circuit

As I said, my unit was not working. The LED never lit and there was no MIDI output. I did some troubleshooting and found that the microcontroller was not being reset. Anatek used a fairly complicated reset circuit (see the schematic) but it has no timing components in it so it was no where close to being the right timing. For the uninitiated, a microprocessor or microcontoller needs to have a stable supply voltage and for the oscillator to be running before it begins executing instructions. The data sheet for the 68HC05 microcontroller (page 33) requires "a 4064 internal processor clock cycle (tCYC) oscillator stabilization delay after the oscillator becomes active. If the RESET pin is low after the end of this 4064-cycle delay, the MCU will remain in the reset condition until RESET goes high.” tcyc is 480ns with a 4MHz clock and 4064 cycles is ~ 1.95 milliseconds.    The scope trace below shows that the /RESET (NOT reset, or in other words reset is active when the input is low) input on the microcontroller (pin 1) actually went high before the oscillator had even started so the microcontoller was clearly not being properly reset so was not running.

Org Reset

The most obvious solution is to add a capacitor in the reset circuit somewhere to hold the /RESET pin lower for at least 2ms. The easiest place to add the capacitor is between the /RESET pin and ground. This is in series with 200k resistor R4 and at the collector of Q2. The entire Q1 ands Q2 circuit could be removed and R4 and the new cap serve as the reset circuit, but there is no harm in leaving the circuit in and just adding the cap. The PC board is layed out to accommodate either surface mount or through-hole parts for Q1 and Q2 so it is very simple to add the capacitor across pins 1 and 3 of Q2 in the through-hole holes. The data sheet says the threshold for the /RESET pin is between 1 and 2 volts. Calculating the capacitor needed along with R4’s 200K value to give a 3ms reset period ( with some safety margin) gives a value of 22nf. I had 222nf ceramic capacitor readily available and installed it. The results are shown in the4 scope capture below, where the /RESET signal does not reach 1 volt until 10.25ms after the crystal has started. Note that the digital scope displays an aliased signal of the crystal frequency at this slow 5ms/division time base.

With the modification, the unit starts up every time and works just fine now.

Mod Reset 222nf

The picture below shows the capacitor soldered in the holes for pins 1 and 3 of Q2, and is circled in red. Any type of non-polarized capacitor will work fine here.

Reset Cap

Power Supply

The unit requires at least 12 volts at the input to operate. The power supply input is connected to a bridge rectifier circuit consisting of D1 and D2 so the polarity of the input is not important, and the input can be AC or DC. The rectifier will create a positive unregulated voltage at R22 and the 1000uf/25v capacitor will filter a 60Hz AC input adequately.

After C4, the unregulated supply voltage goes to the input, Pin 8, or 78L05 5 volt regulator U4. C11 is a bypass capacitor on the input. The output on pin 1 is the 5 volt supply for U1 and U2 and all other digital signals such as the MIDI input and output. 

U3 is also a 78L05 5 volt regulator with its input connected to the unregulated supply, but the ground pins (2, 3, 6 and 7) are connected to the 5 volt output of U4 instead of ground causing this regulator to generate a 10 volt regulated output on its pin 1. The two regulators add together. C5 bypasses the output of U4 and C6 bypasses the output of U3. The 10 volt output of U3 is used in the breath controller circuit to power the breath controller, U5 and the bias resistors R18, R19 and R20.

Miscellaneous

One side of the eight switches are connected to ground and the other sides are connected to pins 5 through 12 of the microcontroller which are the eight bits of Port A. The inputs are pulled to 5 volts by resistors R10 through R17 which are each 220k ohms. 

There are positions for two jumpers,  JP1 and JP2 next to the MIDI out jack. My board has a zero ohm resistor in the JP2 position. I have not idea what these jumpers might do.

Schematic

Here is a link to a hand-drawn partial schematic. My drafting is not very good but hopefully you can understand it.

Selected Data Sheets

I found these data sheets on the web. The manufacturer many not be the same as Anatek used on the board, but the functionality, pin outs and specifications are adequate for troubleshooting purposes.

MC68HC05C8A.pdf

74HC_HCT4538.pdf

78L05.pdf

741.pdf