Tag Archive for Arduino

Arduino Trick: Using any low gain opto-isolator for MIDI

midi_in arduino uno - low gain opto_schem2

When talking MIDI and Arduino, everybody uses the 6N138 opto-isolator, and for good reason. It has a fairly high gain!

Imagine you’re struck by inspiration and you can’t find a 6N138 in your toolbox. Oh no! but you find another opto-isolator and a NPN transistor. You could still make it work!

That high gain is needed because:

  1. Usually a 470Ω resistor connected to +5V  is used to overcome Arduino’s 1kΩ resistors to the USB-to-Serial chip (held at 5V or 0V), so that pin 0 (RX) reads a digital HIGH.
  2. The MIDI interface needs to sink around 20mA of that resistance to achieve a voltage low enough that Arduino takes as a digital LOW

The problem with “normal” opto-isolators is that their gain, or more datasheet-technical, “Current Transfer Ratio (CTR)” which is usually below 100%. E.g. if an opto has a CTR of 20% it means if you input 15mA you’ll allow around 3mA to pass on the ouput (the case of 6N136 and 4N25). The 6N138, on the other hand, has a CTR of ~2000%, and 15mA would let up to 300mA through! see the difference?

Read more

Arduino UNO MIDI-IN debugging with PuTTY (Windows)

This is gonna be a short article of a method I’m using to debug my Arduino UNO program that implements MIDI-in serially (digital pin 0 “RX”).

If you’re reading this you probably had the same problem I had: You want to transfer debug info trough USB at the same time you receive MIDI messages and you find out the Serial Monitor in Arduino software doesn’t support MIDI baud rates (32150 bauds). I read somewhere that it has to do with Java not allowing this speed.

Read more