Replacing the encoder on a JV-2080

Part I: Context

I recently purchased a Roland JV-2080 synthesizer locally, and found its "value" knob had lost its precision. This knob is the primary tool one uses when programming new sounds or editing existing sounds, so it's important that it works properly. When turning the knob one increment to the right, the synthesizer would think the knob had been turned six or ten increments to the right. When turning the knob one increment to the left, the synthesizer would think the knob had been turned two or three increments to the left.

an animation showing the action of the original encoder on my JV-2080

Figure 1. An animation showing the poor precision of the original encoder on my JV-2080.

This of course was a problem, and I took it upon myself to solve it.

I started by doing some research into the JV-2080 to see if there were other people complaining about this problem online, and if those people had found a solution. There were some promising solutions that involved opening the encoder behind the knob and cleaning it, but I was most intrigued and impressed with what I found on the "mitxela" website here [link retrieved on 2022-04-18].

Part II: My work

There was no reason that I could see to reinvent the wheel with this, so to speak. The replacement project on the mitxela site is already very elegant. What I thought was - "how can I improve on it?" To that end I decided to create a small custom PCBA in lieu of the protoboard assembly documented in the link above. The schematic of the PCBA I designed is virtually identical to what mitxela used, but with some places to put resistors in case the encoder replacement siphoned too much current from the JV-2080 electronics.

a schematic of the JV-2080 encoder replacement PCBA

Figure 2. A schematic of the encoder replacement PCBA

The physical layout is fairly simple, with most traces fitting on one side:

The layout of the replacement encoder PCBA. Note that the copper ground fills are not shown here to so that the traces are more visible.

Figure 3. The layout of the replacement encoder PCBA. Note that the copper ground fills are hidden here to so that the traces are more visible.

Having finished the design, I ordered the PCBs from a prototyping shop (like OshPark) as well as the parts to be soldered to the PCB. Everything showed up at my doorstep a few weeks later and I then soldered it all together. The next step was to flash mitxela's code onto the microcontroller...

Part III: Flashing the ATTiny13A

I initially ran into some difficulties running the makefile provided by mitxela for their github project. The code would not compile on my computer, but mitxela added a pre-compiled hex binary that worked fine with the proper avrdude command:

avrdude -P /dev/tty.usbmodem14201 -c avrisp -b19200 -p t13a -U hfuse:w:0xFF:m -U lfuse:w:0x73:m -U flash:w:sc.hex:i -B50

Note that your avrdude command may look slightly different depending on what programmer you use. In my case, I used an Arduino Uno board with the in-system programmer sketch loaded. After flashing the microcontroller, all that was left was the physical installation and testing!

Part IV: Physical installation and test

The installation of the replacement encoder board was straightforward; the only difficult was relocating the connector from the original encoder PCBA onto my new one. The original connector uses a simple direct wire-to-board scheme, but with very thin plastic in the connector body and the wire retention clips. In the end, patience and persistence won out and I was able to relocate the connector successfully. Truthfully, it was not necessary to "save" the original connector in this way - it would have been completely fine to simply solder the original encoder board's cable directly to my replacement PCBA.

All that was left was to close the thing up and give it a test!

an animation showing the action of the new encoder assembly on my JV-2080

Figure 4. An animation showing the action of the new encoder assembly on my JV-2080.

Part V: Closing and disclaimer

The good news here is not just that I have a much happier old piece of technology, but that anyone with a similarly old Roland synthesizer could build and install this themselves with a free afternoon, a steady hand, a soldering iron, and the means to flash an ATTiny13A microcontroller. If this describes someone like yourself, then you can get all of the documentation needed for the PCBA via this github link and the pre-compiled binary for the ATTiny13A from this github link.

As a quick disclaimer, this project has only been tested on Roland's JV-1080 and JV-2080 synthesizers. It's possible that the project will work to replace other encoders in Roland instruments of the same series, but these applications are untested. That all said, enjoy!