Posts Tagged ‘ft232rl’

Serial Investigations 2

Sunday, June 14th, 2009

Connecting the Theremin to a computer for software MIDI sequencing
I bought a (cheap) USB to Serial converter from ebay to test how the Theremin works via USB, and was not successful getting it communicating the first time.

The Theremin requires a Yamaha CBX MIDI serial port driver to read MIDI over a serial port, and the USB converter cable had its own driver that was supposed to allow it to act a virtual serial port (COM1 or COM3 for the MIDI driver to pick up). This was the USB to serial driver I was trying to use: http://www.softwaredriverdownload.com/prolific_usb_to_serial_driver.html

To test the setup I ended up downloading two free MIDI sequencers — Rave (which is the one recommended by the kit and Silicon Chip) http://www.sonicspot.com/rave/rave.html The URL from the article is dead, this is the new location for the Rave sequencer.

And another one called Anvil, which has a good test mode showing all the MIDI commands received. http://www.anvilstudio.com/ The interface on Anvil looks neater, but Rave may have more features — I have not bothered to use either as sequencers yet, I just want something to trigger the MIDI samples.

For some reason, the signal coming from the Theremin was very sporadic — there would be a burst of data that would register as some sort of MIDI signal in Anvil, but none were actually note on signals, so all was silent.

I tried to find and download a free serial comms monitor to check what kind of signal was coming from the RS232 -> USB -> Virtual Serial port.  People seem to want to charge ridiculous amounts for serial monitors, some up around ~$200?, and there are a surprising number of commercial ones out there. The best I found was a trial limited version of something called Bill Serial Monitor that worked for 3 mins before quitting. The full version is $95 USD. After a short time I got sick of dealing with other people’s software the trial limits and spent 2 seconds writing something in Processing to read and output the contents of the serial port… which is what I should have done in the first place. I used Processing because it was convenient on my laptop, almost any language should let you do the same thing… If anyone is interested in what I wrote to do this, leave a comment and I’ll post the code. It’s not very special, but seriously, don’t spend ~$100 on a serial port monitor unless you REALLY know what you are doing and have a need for whatever extra features they offer — I obviously don’t know enough to understand what that might be… For casual debugging, just read the serial port using a couple of lines of code.

The outcome of the monitoring was that data was coming in one burst when the theremin was switched on, then nothing. After too much mucking around, I gave up and decided that going through two drivers, and unknown MIDI software had too many unknowns, so I’d try a direct RS232 serial connection and see if that worked.

This required ordering another cable from ebay — they are so much cheaper than what they cost going into a store in London. Ebay is under £2, a store charges £12-£17 for the same thing. It also required a laptop old enough to actually have a serial port, which I happened to have lying around.

Setting that up worked surprising well, considering my ‘creative’ reworking of the MAX232 chip and serial port (see photos in a previous post).
Here are the steps I took:

  1. In the Control Panel (Win XP) > Sounds and Audio Devices > Audio tab, make sure that MIDI music playback is set to ‘Microsoft GS Wavetable SW Synth’ (which it is by default)
  2. Install the MIDI sequencer, Rave (http://www.sonicspot.com/rave/rave.html) — this one actually supports MIDI bank and instrument changing from the Theremin. Anvil (http://www.anvilstudio.com/) only seems to play whatever instrument is selected in the software and ignores the Theremin selection. This does mean that you can use other MIDI instruments though.
  3. Plug in the MIDI Theremin using a RS232 serial cable, and switch it on.
  4. Download, install, and configure the Yamaha CBX driver, cbx200w.exe, from http://www.global.yamaha.com/download/cbx_midi/index.html
    and select either COM1 or COM3, whichever is a free serial port. I used COM1 as the laptop only had one serial port.
  5. Restart the PC
  6. Run the MIDI sequencer of your choice (if using Rave, make sure the Option ‘MIDI Thru’ is enabled to hear the Theremin’s output)
  7. Wave your hands about, and if your Theremin is tuned according to the kit instructions, you will hear a cacophony of piano key runs …. At least that’s what I heard :)

So, I now have a working MIDI theremin!

I tried again to get the Prolific drivers working again — after trying a number of versions and third party replacements, I was only able to get the ones that came with the install CD to work without the Code 10 error.
Even with this claiming to work, the serial port was only showing data for short bursts with the Theremin on. It seemed like the data stream was being cut off after a short while once reading started. Every time I started to read, I would get a burst of between 1 and ~100 bytes.

So, still no luck with USB there. Buying a cheap cable may not have been the best idea, but apparently the Prolific chip is commonly used for USB to Serial, and works perfectly for many applications, just obviously not this one. My next option is converting TTL to USB myself.

The chip I plan to use to perform the direct TTL to USB conversion is the FT232RL from FTDI (http://www.ftdichip.com/)

Datasheet: http://www.sparkfun.com/datasheets/IC/FT232R_v104.pdf

The FT232RL is a surface mount component, but it has exposed surface mount pins which could be soldered by hand. This is the chip that handles USB communications on my Freeduino (a Arduino clone kit I purchased from NKC Electronics)

Serial Investigations 1

Sunday, May 24th, 2009

The MIDI-Theremin kit uses a MAX232 chip to handle serial output, via a DB9 connector on the main board.

There is also standard MIDI out, and the old MIDI via gameport, which I am not bothering to install as I don’t have any receiving hardware with a gameport, although I have soldered the opto-isolator (IC3: 6N139) to the board, I’ll remove it and re-use when I find a need for one.

The Theremin’s PIC16F628A microcontroller outputs serial on pin 11, which goes to :

  • pin 5 of the MIDI connector (via 220R)
  • the gameport optocoupler
  • pin 11 of MAX232 (TTL Driver 1 input)

The MAX232 outputs RS-232 on pin 14 (Driver 1 output), which goes directly to pin 2 of the DB9 connector.

The Silicon Chip article states that a serial to USB converter can be used to connect the Theremin to a PC, I am hoping to eventually build in direct USB output.

Using a serial to USB converter cable, or even disassembling one and mounting it in the case, means that the serial signal is converted from TTL (5v) to RS-232 (-10V / 10V) to USB (~+/- 3V/5V?)

Removing the RS-232 chip completely and going directly from TTL to USB is the direct method.

First steps: mounting the MAX232 on a breakout board to test the kit as intended (before I potentially damage it with a mod), this also separates the RS-232 components completely from the main board so that I can swap in and out other serial output circuitry easily.

Breaking out the MAX232:

Three wires are required from the main PC to the breakout board:

  • Ground
  • TTL serial output from the microcontroller pin 11
  • +5V power for the MAX232.

When I first assembled everything, I only had only two wires coming from the main board, I had forgot the +5V supply line. There are a number of tests for the data output in the kit instructions. The voltages I measured without the supply were obviously much lower than they should have been.

The DB9 connector is attached to the breakout board by only two wires. This is a basic transmit only serial implementation. The MIDI-Theremin does not receive anything from the connected PC.
Here are the layout and connection points for the MAX232 breakout. This circuit may be useful for other RS-232 experiments/projects:

MAX232 Breakout layoutconnection points to MIDI Theremin PCB

I have soldered the DB9 pins directly together on the underside of the DB9 PC-mount right angle connector using short lengths of shielded and unshielded wire, being careful to avoid unintended shorts. The whole thing is held together with a rubber band, and shielded with a square of cardboard. It’s a bit messy, but compact, and hopefully only temporary.

With everything assembled (including the +5v supply wire!) and powered on, I am now reading the correct test voltages on the MAX232.

  • +5V at pin 16
  • -8.53V at pin 6 (ideal = -9V, but seems to be acceptable?)
  • 9V at pin 2 (up to 9.6V is acceptable)

breakout_topsidebreakout_underside

MAX232 info and pinout:
http://en.wikibooks.org/wiki/Serial_Programming/MAX232_Driver_Receiver
http://www.datasheetcatalog.org/datasheet/texasinstruments/max232.pdf

RS-232 serial pinout:
http://www.lammertbies.nl/comm/cable/RS-232.html#pins

Next post: TTL to USB plans using the FT232RL chip.