Luxman System Bus I Interface

I decided to study the System Bus I protocol and interface each Hi-Fi component to the main Luxman A383 Amplifier, which had a remote with lots of functions for other devices. I would build a module with a PIC to decode the commands. Each module would have a pair of input jacks for daisy-chaining all of them to the System bus coming from the amplifier, which is the one that receives the IR codes and transmits commands through the bus. This commands are different from the ones sent from the IR remote. Each command consists of 15 bits with the following format:

The bus is a simple 5v/0v TTL signal. The modules have the input and output connected internally, with high impedance imputs and open colector outputs. As you can see on the picture, the easiest way to receive a command is just skip the header, look for a falling edge of the signal and when found, wait 1.2ms. Those 1.2ms are the optimum delay for getting the status of the bit, since we get the widest safety space at both sides. The voltage on the bus line after the delay is the binary status of that particular bit. If you look at the PIC16F84 code I wrote, you can see how easily the receiving routine is implemented. After receiving the command, the PIC in each module has to decide if it has to respond to that command or it was sent to someone else.

Here is the list of the available commands:   Luxman System Bus Codes.txt

In order to take advantage of the timer and sleep function of the T-235 tuner, this particular unit should also be capable of sending signals via the bus, not only to 'listen' to it. This resulted in a more complex programming in the PIC for the tuner, because it should listen to the commands and also be capable of sending a shutdown, or power-on, command to the system when the sleep, timer, or it's ON/OFF button was pressed. At any given time, the program running on the tuner should know if the system was on or off, and 'press' it's own power button when a shutdown command from the amp was received. This way, the system could be turned on/off via the power button on the amplifier, the power button, on the tuner, power button on the remote controller, or via the timer/sleep function from the tuner. That was the kind of flexibility I was looking for.

I decided to plug the AC cords from the EQ, MD and MC to the relay-controlled AC output of the tuner so I could free one pin of the pic for 'pressing' other buttons and also use the TIMER switch on the MD and MC. This way, they would not respond to the SYSTEM-POWER-ON or SYSTEM-POWER-OFF commands, but they would start playing/recording whenever the system was switched on.

The other interfaces would have a 1Mohm resistor at the line bus input, so they would not degradate the signals on the bus. The 'pressing' of each button in the module is done with the aid of one 4N35 optocoupler included in the interface. This way, we don't have to worry about the particular design of the button-matrix built on the modules, and the PIC is protected from the signals that could be there. It also allows the buttons to work as usual although connected at the same time to the inteface.

This is the commented code for the PIC 16F84 placed inside the tuner:   t-235.asm

I've only included the file for that particular module here because is the one that performs all the functions I've implemented. You will only need to study it a bit (that's what I commented it for !!) to understand how it works and make the changes you need. I've included an additional signal (and LED) that flashes when the interface is powered and after a valid command is received. It is too fast to be seen, but if you capture the signal with a DSS or logic analyzer, you can see the code extracted from the signal on the bus, assuming it was valid according to the expected scheme.

Here is the PCB silk view of the board for the interface that goes into the tuner, as viewed from the components side:

I've built one of the interfaces for each one of the modules. The only thing that needs to be modified to suit your personal needs is the code running inside the 16F84. If there are components on the PCB that you don't need, don't install them !!.

Roberto Barrios, EB4EQA