Okay, let's try to rewrite the program of the FXL-8 using my old prototype's code :)
I made a little looper simulator interface under MacOSX using XCode, the code also compiles with the Arduino IDE, so it can be uploaded to an Arduino board, that will replace the original "brain" of the looper.
The code is still highly unoptimized, the LEDs are updated at every cycle, that's crappy.
Here : https://www.dropbox.com/s/m0r3zjau2i71ama/looper.zip
On the simulator, everything works just as on the real thing, but you have twice the saving slots :)
I've also successfully tested the code on a real breadboard, but just the bank switch / patch select so far.
I guess I could reflash the looper's microcontroller (there are solder pads for the programming pins on the PCB !) but I don't know how to do that, and the Arduino libraries may not be available.
Next step : test all, and embed the new "brain" into the looper (that will require a LOT of wire soldering :-)
Yet Another Geek Blog...
lundi 10 juin 2013
mardi 4 juin 2013
Retro-engineering the FXL8 switcher : footswitch board
Okay, I had some time ahead so I looked into the FXL8 switcher to try to guess how it works.
It is driven by a STC 89C52RC micro controller (8051 core) in a PQFP-44 package.
Its datasheet (in Chinese) is here : http://pdf1.alldatasheet.com/datasheet-pdf/view/139744/ETC1/STC89C52RC.html
The main footswitches are linked to the main board by a 6 cable connector. Pins are :
- Pin 0 : ground (it's bit odd since the ground is not used anywhere on the footswitch board)
- Pin 1 : connected to SW_B, SW_C, SW_D
- Pin 2 : connected to SW_MINUS, SW_PLUS, SW_A
- Pin 3 : connected to the other end of SW_A, SW_D
- Pin 4 : connected to the other end of SW_PLUS, SW_C
- Pin 5 : connected to the other end of SW_MINUS, SW_B
Two strange this (IMHO) :
- The switches look like Alpha DPDT momentary switches. a simple SPST momentary switch would have been enough (reminds me of 3PDT footswiches in some of non-true bypass EHX pedals :-)
- Why use a ground pin (pin 0) ? It isn't connected to anything on the board.
- As a beginner, I would have use one pin per switch instead of making a complex multiplexed system...
It is driven by a STC 89C52RC micro controller (8051 core) in a PQFP-44 package.
Its datasheet (in Chinese) is here : http://pdf1.alldatasheet.com/datasheet-pdf/view/139744/ETC1/STC89C52RC.html
The main footswitches are linked to the main board by a 6 cable connector. Pins are :
| From top to bottom : pin 0...5 |
- Pin 0 : ground (it's bit odd since the ground is not used anywhere on the footswitch board)
- Pin 1 : connected to SW_B, SW_C, SW_D
- Pin 2 : connected to SW_MINUS, SW_PLUS, SW_A
- Pin 3 : connected to the other end of SW_A, SW_D
- Pin 4 : connected to the other end of SW_PLUS, SW_C
- Pin 5 : connected to the other end of SW_MINUS, SW_B
| Footswitch board schematic |
Two strange this (IMHO) :
- The switches look like Alpha DPDT momentary switches. a simple SPST momentary switch would have been enough (reminds me of 3PDT footswiches in some of non-true bypass EHX pedals :-)
- Why use a ground pin (pin 0) ? It isn't connected to anything on the board.
- As a beginner, I would have use one pin per switch instead of making a complex multiplexed system...
| Quality footswitch :) |
FXL8 Switching system gutshots
As I thought, it's quite close to my looper prototype :)
Here are some gutshots :
| Main PCB and Stomp switches PCB - as guessed, Wave-X / Vitoos / Joyo are all the same. |
| Solder quality can be bad... |
| Why leave so much LED pin metal ? |
| The relay switches, just like my prototype :) This means real true-bypass. |
| The brain. Notice the ULN2803, same as my prototype again :) The uC seems to be clocked at 6MHz, and seems to be an STC89C52. |
| Full main board. |
Think I'll change the LED colors to start first :)
More later, there are some components I haven't guessed yet.
lundi 6 août 2012
The Relay Board
This is the board in which the audio signal goes through.
This board includes 8 DPDT 5v relays, each will switch on or bypass an effect pedal. The board is directly connected to the output of the ULN2803 power driver, on the Output Board.
I bought several relays here. They work but I haven't tested them with an audio signal, I'll update the blog with the results. Hope there won't be any parasite noise !
Each relay should be wired like this :
I soldered all the eight relays on the same board, in order to make the shorter audio patch possible. Not sure that's a good idea, I may design 8 separate PCBs (including the FX In/Out audio jacks + LED) to make a cleaner build.
As you can see, the current prototype shown here does not include any LED, resistor or FX wire to the audio jacks :
This board includes 8 DPDT 5v relays, each will switch on or bypass an effect pedal. The board is directly connected to the output of the ULN2803 power driver, on the Output Board.
I bought several relays here. They work but I haven't tested them with an audio signal, I'll update the blog with the results. Hope there won't be any parasite noise !
Each relay should be wired like this :
I soldered all the eight relays on the same board, in order to make the shorter audio patch possible. Not sure that's a good idea, I may design 8 separate PCBs (including the FX In/Out audio jacks + LED) to make a cleaner build.
As you can see, the current prototype shown here does not include any LED, resistor or FX wire to the audio jacks :
The Output Board
This board includes :
- two 74HC595 chips for controlling the outputs
- a ULN2803 chip for driving the relays
- a huge mess of wires !
The two 74HC595 are used in the opposite way as the CD4021 : they'll convert the serial signals sent by the ATMega chip into two 8-channel outputs.
I've made two huge mistakes when wiring the relay outputs on this board :
- two 74HC595 chips for controlling the outputs
- a ULN2803 chip for driving the relays
- a huge mess of wires !
The two 74HC595 are used in the opposite way as the CD4021 : they'll convert the serial signals sent by the ATMega chip into two 8-channel outputs.
The first 74HC595 is used to connect 8 LEDs used to notify the user of the current loaded patch. These LEDs will be found on top of each footswitch.
The second 74HC595 is connected to a ULN2803 power driver that will toggle the 8 relays (and also 8 LEDs that will notify the user if the corresponding effect pedal is bypassed or not).
Note that the ULN2803 chip inverts the value given in input, this behavior will be bypassed using a little trick in the software.
Note that the ULN2803 chip inverts the value given in input, this behavior will be bypassed using a little trick in the software.
Once everything soldered, the controller board looks like this :
I've made two huge mistakes when wiring the relay outputs on this board :
- wiring the (8 - n)th pin of the 74HC595 with the nth pin of the ULN2803 was stupid : intead of using a bunch of yellow wires (see below) to reverse the pins, I should have wired those pins front to front, then reverse the order of the relays !
- I forgot to include eight 220 ohm resistors between the ULN2803 output and the effect-control LEDs. I'll have to solder them directly on the LEDs (and boy, I hate doing that).
The Controller Board
My prototype is made on perfboards bought here. I don't really recommend using these, they're of very low quality and I had several issues with them.
This board includes :
- the ATMega chip wired in standalone mode
- a CD4021 chip for footswitch input
- a voltage regulator
The eight momentary footswitches are directly linked to a CD4021 chip, that will read the current input and transmit it to the ATMega with a serial signal.
The footswitches could be directly connected the the ATMega I/O pins, but I wanted to reduce the number of pins needed, thus the CD4021 chip.
Here's a great tutorial about this.
The 7805 5V regulator is wired this way :
This board includes :
- the ATMega chip wired in standalone mode
- a CD4021 chip for footswitch input
- a voltage regulator
The eight momentary footswitches are directly linked to a CD4021 chip, that will read the current input and transmit it to the ATMega with a serial signal.
The footswitches could be directly connected the the ATMega I/O pins, but I wanted to reduce the number of pins needed, thus the CD4021 chip.
Here's a great tutorial about this.
The 7805 5V regulator is wired this way :
Once everything soldered, the controller board looks like this :
Burning a vanilla ATMega328P chip
Since I'm more confident with software than with hardware, I decided to use an Arduino platform to control the looper.
Debugging was done using a standard Duemilanove board, but the final product will embed a ATMega328P chip in Standalone Mode for cost effectiveness.
However, before updating a vanilla ATMega328P chip (you've bought it somewhere where it's cheap) with code written in the Arduino IDE, you have to burn the Arduino Bootloader to the chip first. I had some trouble doing this (using MacOS and my Duemilanove board as the programmer) but I found the solution eventually. Here's the summary of how it's done :
Configure the programmer
Debugging was done using a standard Duemilanove board, but the final product will embed a ATMega328P chip in Standalone Mode for cost effectiveness.
However, before updating a vanilla ATMega328P chip (you've bought it somewhere where it's cheap) with code written in the Arduino IDE, you have to burn the Arduino Bootloader to the chip first. I had some trouble doing this (using MacOS and my Duemilanove board as the programmer) but I found the solution eventually. Here's the summary of how it's done :
Configure the programmer
Open Arduino IDE, in the menu, choose File > Sketchbook > ArduinoISP
In the heartbeat()function, change the line :
delay(20)
to
delay(40)
In the menu, choose Tools > Programmer > Arduino as ISP
In the menu, choose Tools > Board > Arduino Duemilanove (or your own board)
Wire the Vanilla ATMega chip
Pin 01 >>> Arduino I/O 10
Pin 01 >>> 120 ohm reistor >>> +5v (*)
Pin 07 >>> +5v
Pin 08 >>> Ground
Pin 09 >>> 22pF capacitor >>> Ground
Pin 09 >>> 16MHz quartz >>> Pin 10
Pin 10 >>> 22pF capacitor >>> Ground
Pin 17 >>> Arduino I/O 11
Pin 18 >>> Arduino I/O 12
Pin 19 >>> Arduino I/O 13
Pin 20 >>> +5v
Pin 22 >>> Ground
(*) You have to wire a 120 ohm resistor between the RESET pin (pin 1) of your chip and the +5v source. You must be as close as this value as possible. I used 100 ohm + 15 ohm resistors in series, it worked fine.
| Wiring in progress... |
| Ready to burn ! |
Burn the bootloader !
In the menu, choose Tools > Burn Bootloader
Done, you now have a cheap-o Arduino compatible chip :)
Inscription à :
Articles (Atom)


