Showing posts with label hardware. Show all posts
Showing posts with label hardware. Show all posts

Thursday, 29 December 2011

Success at last!

Finally! The hihat started working five minutes ago :-)

I did a lot of debugging on the circuit itself:
- touching up on all solder joints in the HH circuit
- checking every single path in the HH circuit (measuring conductivity)
- checking every solder joint through a magnifying lense
- measuring every resistor value
- checking that no electrolytic capacitor legs had broken off

Through all this I found a few suspicious solder joints, as well as created (and later discovered) a short circut. I also found three errors in the 9090 Hihat schematics, two of which does not matter and one that certainly do - however, the PCB is the correct one...

Anyway - I am not sure of any of this actually had much to do with the error. After taking a very close look at the various connectors involved in the HH, I discovered that a crimp in the HH tune connector was bent out of shape. It makes sense if this was the error, as it would affect both the closed and open hat. After replacing the crimp, I put the PCB back in the box and hooked up all cables - and whaddaya know, it works! :) Now, this was the last known HARDWARE error (excluding the rotation encoders that are just anoying, not really an error).

I also tried moving the headphone amp away from the circuit board to remove the noise (after all the previous supply line tricks failed to do so), however, this did NOT work. The noise in the stereo mix main out is not that bad though.

Now all I have to do is put everything back together again, and pray for everything to work once that is done :)


The bent crimp is seen through the right hole.

Wednesday, 28 December 2011

New output mixer tested

Instead of unmounting the entire circuit board from the machinebeats, I decided to make a new output mixer on a prototype board. The output mixer consists of 7 components - four capacitors, two resistors and an TL072 opamp (+ the necessary connectors), which means that I only need to check a very limited amount of circuitry on the original board if the new one works.

Well, after 1 1/2 hours of building, and 10 seconds of testing, I conclude that it is indeed one of these 7 components or attached solder points that don't work as intended. I still have to remove the circuit board, but at least now I know where to look :-)





Tuesday, 27 December 2011

Cymbals fixed

The cymbals and hihat have never been loud enough, rather, they've been much quieter than the rest of the voices.

Today I searched through the archives at yahoo groups, and discovered that this is a well known problem that has a known fix. After replacing three resistors, the cymbals are much louder :)

However - the stupid silent hihat is back. Earlier this year I had problems with the hihat not triggering (or not making any sound at least). When I put a probe from my oscilloscope to either the collector of Q73 or pin 2 of U42, it worked, but when removing the probe it stopped working again. Somehow I managed to make it stay working, but now it is broken again. No idea why, this really frustrates me!

Also, the main output is way too low and the main output pot is working the wrong way, turning DOWN the sound when moving to the right. Strange.

Wednesday, 20 July 2011

Progression

So, I got several things fixed friday.

One led had actually broken (though only the red part, the green was still working), one had been short circuited by solder (very strange!) and one was simply working but since the key didn't work it was not possible to activate the step.

As for the keys, after unsoldering the left-key I discovered that one of the pins had been bent on assembly. Bending this back out and resoldering the key fixed the problem. I also remembered that, since this key has always been broken, I did a work-around in software to be able to complete the code - I remapped the first step key to work as the left-key. This, however, means that I have to build a new version of the firmware to fix this.

Now, the sampled sounds are another strange case. As no sound could be heard, and it has been working previously, I tried swapping in the old sample ROMs for the new ones (Crash cymbal only). This worked! But even stranger, when the crash started working, the ride cymbal also seems to work. Hi hat is still broken though. I will try swapping in all the old chips to see if they work. If they do, my conclusion is that there's something fishy with the new chips.

When it comes to the output mix, I did some testing with a stand alone headphone amp circuit, and could clearly hear the sound playing - but at a very low volume. I tried swapping the mixing OP-AMP, but this didn't do the trick. However, at the same time I noticed that the separate outputs are very clean and free from digital/powersupply noise! This means that the noise heard when using the headphone output is either introduced in the mixing stage or in the headphone amp itself. I have to investigate this further.

Yesterday I also managed to put together the front panel inner/outer assembly for the first time. After trying several ways to get things together, I came to the conclusion that the parts have to be put together in the following order:

- First, insert the upper part with the display and pots.
- Then insert the lower aluminium plate, but without the circuit boards.
- The keypad then has to be wiggled into place from the right, between the top plate and the spacers extending from the lower plate.
- Now, screw the two plates together using two countersunk screws.
- Connect the keypad to the main keyboard and the main keyboard to the controller
- Slide the keyboard under the front 'lip' of the box and screw it to the bottom plate.

Voila! Everything should be in place :-D

Today I will hopefully start attaching the new wires for the potmeters. I will use a technique called wire lacing to keep the wires together, instead of using plastic strips. This will make the bundle less rigid and saves a lot of room since the thread used (waxed linen cord) toes not protude from the cable bundle :-D (Thanks dad, for learning me how to do this back in the early nineties :-D)

Still pushing for a July deadline, but some issues may have to be worked out in September. Here is a shortlist of what I think is missing:

- Rewire pots
- Change the power for the backlight and side lights
- Recompile the code
- Fix the samples
- Fix the output stage, check introspectiv groups to see what they wrote about the output level being too low
- Get a stereo 1k pot for the Bass drum attach, solder the channels together to make a mono 500Ohm pot.


Also, it would be nice to do the following:
- Figure out where all the noise comes from. Will be a bit hard though.

Friday, 15 July 2011

Yesterday was a great day...

So, what's the news?

Well, assembly is going great, and yesterday I powered up the machine for the first time after wiring it up. At first nothing happened. After a few scary minutes I figured I forgot to put the fuses in the power entry connector :-)

Next problem - nothing showed up on the screen, and something smelled funny... The keyboard and sequencer seemed to work though, but no sound could be heard.

After a bit more debugging, and an hour of work, the following was fixed:
- New cable for the display - six of the wires had snapped!
- The smell came from the display backlight overheating, I have to switch to a less powerful current source or something
- The missing sound was due to the two midi wires going from the controller to the analogue parts being swapped.

So, after working for a couple of hours the machine actually works!

It does however have some errors:
- The sampled sounds (Hi hat, cymbals) don't work
- The main output doesn't work (though the headphone amp works very well)
- The first step key and the left-arrow key are mixed up somehow
- Four leds are either broken or a data line is not working as intended.
- The software is slightly buggy, it crashes sometimes. No idea what causes this.

Also, the wires from the pots have to be replaced as they are too big, and the spacers between the keyboard and the aluminium back plate are too short, making it impossible to mount the display and keyboard at the same time.

All in all I'm quite satisfied with the result. I brought the machine to work today for a little demo, and my colleague rocked away ;-)

Friday, 23 October 2009

Parts list

This post will be updated regularly with part numbers etc.











PartPart numberPriceSupplierAddl. info
4.8mm adhesive spacer48-843-00kr. 6,58MouserFor fastening PCBs to box

Reduce the number of holes in the box

To reduce the number of holes in the box, and to possibly reuse the design for a TR-808 later, I could use tape-on spacers instead of through-hole ones.

Tuesday, 27 January 2009

Silk screen printing

Here is a store that supplies everything one needs to do screen printing on metal:

http://www.silkscreeningsupplies.com/site

This seems like a good starter's kit:

http://www.silkscreeningsupplies.com/site/799934/product/gpkit1

Saturday, 17 January 2009

Profiler up and running

Last weekend I finally got around to calibrate my profiler 'CNC' machine. This means that I am now much closer to milling my own PCBs and other parts. The motor for the cutting tools is not really very good, and my first try at cutting turned out totally unusable because the tools bent and overshot their positions. Even so, I'm optimistic. Now I have to order some cutting tools for PCBs and try cutting some REAL stuff :-D

Digitally controlled modular synth

I recently started thinking seriously about building a modular synthesizer. I do, however, want it to be different from the rest of the modulars out there. At the moment, I plan to built it as a full keyboard-equipped synth, but one where almost all parts are modules.

The frame itself will contain the keyboard, a midi controller and a bus controller. The modules will be interconnected, not with jacks and cords, but through a digitally switched 16 or 32 channel analogue bus. This will make it possible to store and recall patches.

All pots and switches will be digitally controllable through a control bus, and I will use rotary encoders and keyboard buttons to control the sound modules. This means that I can save audio settings as well.

I intend to use the same size standard for the sound modules as the ones used by Doepfer, Cwejman and others, but instead of having them upright in an euro rack case, I will have six "wells", about 10 cm high and 13 cm wide, side by side, with access from the back of the synthesizer. All controlls will be on top of the synth, but on interchangable panels, making the synth a "platform" for all sorts of sound machines.

To begin with, I want to create a polyphonic synthesizer. I am thinking of a concept with 5 voice cards, vertically stacked, taking up 1 well, but using the same bus access connectors as other modules. Each voice card will contain 2 VCO's, a VCF and perhaps some other basic modules.

Now, if I could only find the time and the money to do this...

Sunday, 16 November 2008

First keyboard/sequencer integration

For the first time since I began working on the project, the keyboard and leds now integrate with parts of the sequencer software. I've added the possibility to toggle the step leds, and switch between the 12 internal sequencer tracks. It is extremly fast and works incredibly well. I'm so really satisfied with the result! I should put up a video of this to show how cool it really is :-D

Also, I broke my PICFlash2 In-circuit programmer and had to order a new one from Mikroelektronika. Not sure what happened, but I think I put the power to my circuit on the power out pins instead of the power in ones...

Saturday, 15 November 2008

Encoder/leds circuit v1

I've started work on the led dial. So far I've left it to the users to decide if they want to use i2c or any other way of inter-ic communication, all data transmission pins are available as pin outs.

I've also added a mikroelektronika-compatible programming interface to enable programming of the chip after soldering.

The chosen mcu, pic18F2431, contains both a quadrature decoder and an internal ocillator, making the number of external components very low.

I have not yet tried the programming circuit like this, so it may have to be changed.

The schema:



The PCB. Dimensions 29 x 29 mm:



I still have some work to do on the footprint of the encoder, and of course have to find a way to solder this since the mcu, resistors and capacitor are SMDs

Monday, 27 October 2008

Digital LED brightness control

While working on the encoder-with-led-ring concept I figured it might be cool if I could control the brightness of each LED individually. For example, the led ring brightness could increase while turning a specific encoder, or the leds be brighter the further 'up' the ring they are.

I already intend to time multiplex the diodes to get away with a single resistor between 16 leds, so I thought, why not try using pulse width modulation (is that the correct term?) to control the LED brightness in software?

I just did a proof of concept, and although the picture below doesn't do the result justice, you can clearly see that it works :-D

the code for the test is dirt simple. Each led down the row is turned on twice as long as the previous one, exponentially increasing the time (but not the brightness):

Pseudo code of the program is as follows:

while(true){
PORTD = 1;
delay_us(10);
PORTD = 2;
delay_us(20);
PORTD = 4;
delay_us(40);
PORTD = 8;
delay_us(80);
PORTD = 16;
delay_us(160);
PORTD = 32;
delay_us(320);
PORTD = 64;
delay_us(640);
PORTD = 128;
delay_us(1280);
}


Encoder experiences

The encoders on the drum machine keyboard are working now. The missing leads discovered earlier were not the only obstacles I had to overcome. After fixing the circuit, the encoders still didn't work properly. For some reason, I had not thought about what would happen when the encoders stood still and did not have a connection to +5v. This, of course, would lead to floating inputs on the direction-detection flip flops, and no clear readings from the circuit.

I then added 10k pull down resistors to all the inputs, this fixed most of the problems and made it possible to detect encoder clicks.

However, if the encoder is turned slowly, one click of the dial leads to multiple detected clicks, as the circuit keeps outputting clicks, as the flip flops are not reset.

To fix this, I've added a state check in software. Clicks will only lead to events if a 0 has been read in between two reads of 1. This fixes most issues, but quick turns of the dial will in fact give fewer clicks than slowwe turns. Also, I've experienced a few 'backward' clicks in between the forward clicks, not sure what causes this.

But, all in all, things are looking very bright. The mode selection leds light up and respond to the encoder. Now I'll just have to get the rest of the keyboard up and running againg. And fix the head phone amplifier and get a license file for my compiler...

Wednesday, 8 October 2008

Oh, how I hate hardware bugs...

I must have misplaced my head while designing the keyboard PCB.

The last two days my girlfriend and I have

1) Checked all the ICs involved in the rotary encoder circuit
2) Checked the functions of the rotary encoders
3) Checked the PCB routings for any errors or broken paths.

We didn't find any errors on the ICs, they all performed flawlessly on the bread board.

As for the encoders, they seem to be of different kinds. The tempo encoder seems to stay permanently connected to +5v and send out pulses of 0V (or rather, it varies with the position of the encoder), while the mode encoder stays at 0 and sends out pulses of +5v. Not sure if this is a problem, but it has to be checked.

The routing, however, is a different story. First of all, although it is not possible to see why when inspecting the PCB, the connection between the tempo encoder and pin 5 on the left flip flop IC is broken! This may have happened when the IC overheated earlier.

More important though, I have not routed +5v and ground to the ICs! This is a mistake made in Gschem, the software I used when designing the circuits, I simply must have forgotten to attach the necessary pins to the power connector :-(

So, right now I have to:
1) swap the tempo encoder for one similar to the mode selector one.
2) connect pin 5 on the left flip flop to pin 1 of the tempo encoder
3) connect pin 14 on the right flip flop to pin 2 of the tempo encoder (5v)
4) connect pin 7 to pin 8 on the right flip flop (ground)

...then we'll see what happens.

Monday, 29 September 2008

Quadrature decoder how-to

I am having some problems with the new controller in terms of power consumption. While investigating this I realised that I've forgotten how the decoder for the digital pulse givers works.

Here is the original article describing the circuit:

"The Encoder Decoder Circuit"
Our task this week is to create a circuit to count pulses coming from the encoder and display the count on a dual 7-segment LED display. The circuit should be smart enough to know whether the knob is rotating clockwise or counterclockwise, and increment or decrement the count appropriately. To determine the direction of rotation requires us to build a special quadrature decoder circuit, and for this we need to learn something about computer memory.

Computers store information in millions (sometimes billions) of small devices called “flip-flops”. The purpose of a flip-flop is to store a single bit (either a 1 or 0) until requested to change. One of the simplest types of flip-flops is called a D-type flip-flop, shown in the figure at right. The functioning of a flip-flop is actually pretty simple: a piece of data is stored at (and can be read from) port Q until a clock pulse is received at the CLK port. When a clock pulse is received, whatever data value exists at the D (for data) port is written to Q. Most D-type flip-flops change state only on the rising edge of a clock pulse, hence the name “edge-triggered flip-flop”.

Our quadrature decoder circuit will make use of the data storage capability of the flip-flop. As shown in the figure above we feed the signal from pin A of the decoder into the D port and the B signal into the CLK port. If the pulses from pin A lead those of pin B, the D port will be in a high state whenever the clock port sees a rising edge – hence Q will remain high. Conversely, if the B pulses lead, Q will remain low. In this way the output at Q provides a means of decoding the direction of rotation. The circuit below shows a practical implementation of the quadrature decoder.



The circuit also makes use of two NAND gates in the CD4011 chip. The NAND gates are used to combine the constant high or low signals from Q with the pulse train from the encoder to provide pulses to the counter inputs. If Q1 is high the CLK UP port will receive the pulse train and if Q2 is high the CLK DN port will receive the pulse train.

Sunday, 28 September 2008

Midi controller 4 v1.0 PCB received

Resent events: turned 30 yesterday... Sigh. I would have hoped to be finished before turning 30, but noooo.

I also received the new PCB for the controller. I've already populated it, testing starts tonight. I have great expectations for this new version. However, I still haven't tried the digital giver circuits, so perhaps I'm in for a version 1.1 of MC4 as well? Only time will tell.


Wednesday, 13 August 2008

Updated design files

I have compiled a selection of up-to-date design files as well as the software created this far. The two archives can be found here:

hardware
software

Tuesday, 5 February 2008

Success!

Everything works like a dream now :) I've implemented all commands and tested the keyboard using the second controller as a loopback. It looks so good I can hardly stop working on it :-D

I may have to simplify the transfer protocol a bit though, to get increased throughput. Hopefully I can skip some error checking if I just make sure that no invalid state leads to a deadlock.

The remaining work on the keyboard is now:
- Glue some of the perspex pieces in place so they don't obstruct the keys
- Drill holes for the rotary givers and implement the necessary code
- Cut and solder the paths for the second row of instrument select buttons
- Fix the keys on the keypad that are not working (two signal paths)
- Fix a problem with S528 - it seems one of the switches does not work very well (a key release is send immediately after key press). I suspect this is a hardware error.

And then - onto coding the controlling software! Can't wait!

Saturday, 2 February 2008

Keyboard PCB problems

I have made a crucial mistake on the keyboard PCB. The second line of instrument buttons is connected to select line 1 instead of 2, meaning both rows map to the same keys :-( This has to be fixed by cutting a line on the keyboard and connecting it manually to select line 2. Bummer.

Also, SEL9 and 10, going to the keypad, are not working properly. This could be just the cable though.