WMD Geiger Counter - [gut shots]

General documentation, gut shot, schematic links, ongoing circuit tracing, deep thoughts ... all about boutique stompboxes.
User avatar
andrej
Solder Soldier
Information
Posts: 159
Joined: 28 Dec 2008, 00:23
my favorite amplifier: Vox AC30
Completed builds: Zvex Woolly Mammoth
Boss DS-2 mod
Vox AC4
Crowther Hotcake (and own variations)
TS-808
Big Muff Russian
Big Muff IC
Superfuzz
Superfuzz
Big Muff
Mixer/Blend
various other stuff
Location: montenegro
Has thanked: 6 times
Been thanked: 51 times
Contact:

Post by andrej »

devastator wrote: Yep, I read that right after I posted. I usually write C++ program to create waves into files and stuff. Java, python could be even quicker for that kind of work. I should give it a look.
I use Python for developing quick devtools, mostly. But I need to practice JS canvas manipulation for a test, so I did it that way. My true affection lies with python-generated C and C++.
devastator wrote: no need for that, there's a complete hardware solution in the AVR.
Yep, at first I thought about using an external ADC, but then I changed my mind. AVR ADC is alright, and I've written a very nice library for it (which I won't use here).
devastator wrote: why three digit ? to avoid the hexadecimal notation ?
Guitarists don't care about hex. I can read it almost just as well as binary, but it's not about me.
devastator wrote: maybe they didn't bother with the anti-aliasing filter and output the signal as it.
They're relying on the assumption that the input signal doesn't contain higher frequencies (above 20KHz or so). That's kinda true: apart from HF noise, regular guitar signal doesn't contain it. But when you clip that signal, it sure as hell does. The GC can clip the signal itself with the gain control, not to mention other pedals in chain... But it does have that adjustable and defeatable tone control. And that can be used as an AA filter.

We'll rely on that, too. At least in the first design iteration. I'll also filter the output slightly.

User avatar
andrej
Solder Soldier
Information
Posts: 159
Joined: 28 Dec 2008, 00:23
my favorite amplifier: Vox AC30
Completed builds: Zvex Woolly Mammoth
Boss DS-2 mod
Vox AC4
Crowther Hotcake (and own variations)
TS-808
Big Muff Russian
Big Muff IC
Superfuzz
Superfuzz
Big Muff
Mixer/Blend
various other stuff
Location: montenegro
Has thanked: 6 times
Been thanked: 51 times
Contact:

Post by andrej »

i predict the pedal has at least one single-supply, rail-to-rail opamp (just before the adc) which clips before 5v. i designed our version with a tlc2272. what was used originally? the other opamps are tl072s.

is there a crystal onboard?

i drew the input, power supply and the filter, as well as Microcontroller connections. I'll test everything in the following week, but it should work just fine. the tone control is AMZ Presence Control.

here's what I got so far:
https://dl.dropboxusercontent.com/u/239 ... ffleV1.pdf

oh, don't let my power supply design confuse you: i put both precision voltage references AND resistor voltage dividers on the schematic, but when you build it, you'll use either - not both.

User avatar
Space Jm
Breadboard Brother
Information
Posts: 111
Joined: 21 Oct 2007, 13:44
Location: FRANCE
Been thanked: 4 times

Post by Space Jm »

Very good strat Andrej !

I will post today some pictures and drawings about the Geiger.

I have tried to re-do the schematic but it was too complex.

Nevertheless I have few informations such as partial schematic that could help you, wait please...

The AOP is a TL071.

The input buffer is done with a transistor 2N3904, not with the AOP.

The AOP is placed just after the 2N3904.

After the TONE control, you have the TLC 5615 then the µC.

The crystal is a MTT resonator 16Mhz, no capacitor.

The regulator is a LM2931 alone, nothing else.

The display is a Kingbright DA03-11SRWA

http://nl.mouser.com/ProductDetail/King ... ITiw%3d%3d

These are the pots values :

GAIN 500kA
TONE 25KB
SAMPLE 10KB
BIT 10KB
VOL 50KA
Together we stand, divided we fall

User avatar
andrej
Solder Soldier
Information
Posts: 159
Joined: 28 Dec 2008, 00:23
my favorite amplifier: Vox AC30
Completed builds: Zvex Woolly Mammoth
Boss DS-2 mod
Vox AC4
Crowther Hotcake (and own variations)
TS-808
Big Muff Russian
Big Muff IC
Superfuzz
Superfuzz
Big Muff
Mixer/Blend
various other stuff
Location: montenegro
Has thanked: 6 times
Been thanked: 51 times
Contact:

Post by andrej »

Hah, I realized they don't have to move the digital voltage reference to 2.5V. We do, because AVR ADC works in the 0-5V range. I used a TLC2272 for the input buffer and gainstage, with virtual ground set to 2.5V by TLE2425 precision reference generator.

Fixed everyting with the input, now onto output stuff!

User avatar
Space Jm
Breadboard Brother
Information
Posts: 111
Joined: 21 Oct 2007, 13:44
Location: FRANCE
Been thanked: 4 times

Post by Space Jm »

I assumed you do no want to use an external ADC such as the TLC 5615 and only use the ADC of the µC?

By the way, for information, the "Bit rate pot" is directly connected to the TLC 5615
Together we stand, divided we fall

User avatar
devastator
Cap Cooler
Information
Posts: 675
Joined: 19 Jul 2008, 16:00
Location: France
Has thanked: 8 times
Been thanked: 22 times

Post by devastator »

I had a similar idea. Although I simply used a low pass filter for the tone control and some shift register via SPI to reduce pincount. I made mistakes in the op-amp input orientation but the idea remains.

https://smokingtip.files.wordpress.com/ ... rushed.png (too big for direct image into the forum)

User avatar
Space Jm
Breadboard Brother
Information
Posts: 111
Joined: 21 Oct 2007, 13:44
Location: FRANCE
Been thanked: 4 times

Post by Space Jm »

As promised find a partial reverse engineering of the Geiger :

Image

Andrej, sorry I did a mistake in previous email, I was talking about the ADC ADS7816, not the TLC 5615 which is a DAC
Together we stand, divided we fall

User avatar
devastator
Cap Cooler
Information
Posts: 675
Joined: 19 Jul 2008, 16:00
Location: France
Has thanked: 8 times
Been thanked: 22 times

Post by devastator »

the ads should be clocked by an external (and may be variable) clock. So tthe sampling rate reducer isn't done into the atmega but directly at the ADC which save clock cycles for the µC.

http://www.ti.com/lit/ds/symlink/ads7816.pdf

User avatar
andrej
Solder Soldier
Information
Posts: 159
Joined: 28 Dec 2008, 00:23
my favorite amplifier: Vox AC30
Completed builds: Zvex Woolly Mammoth
Boss DS-2 mod
Vox AC4
Crowther Hotcake (and own variations)
TS-808
Big Muff Russian
Big Muff IC
Superfuzz
Superfuzz
Big Muff
Mixer/Blend
various other stuff
Location: montenegro
Has thanked: 6 times
Been thanked: 51 times
Contact:

Post by andrej »

I believe we have enough uC speed to do it all in-box. I also believe they're using the ADC to sample the potentiometer, not to alter the poll rate outside of uC. Also, I remember the time people used external oscillators to trigger sampling - my Boss DSD-3 has that kind of setup.

Here's the current progress:
https://dl.dropboxusercontent.com/u/239 ... leV1.1.pdf

I've drawn everything except for the rotary encoder, which I will do relatively shortly. I've also simulated both sine output and passing signal through uC successfully. It's not even noisy!

User avatar
Space Jm
Breadboard Brother
Information
Posts: 111
Joined: 21 Oct 2007, 13:44
Location: FRANCE
Been thanked: 4 times

Post by Space Jm »

Very good work Andrej ! I am very impressed ! :applause:

I believe that the GEIGER is using external ADC / DAC is to get a better sound.

Usual internal ADC/DAC are not so good for sound in a µC.

Why did you choose that resistor ladder network at the output ?
Together we stand, divided we fall

User avatar
andrej
Solder Soldier
Information
Posts: 159
Joined: 28 Dec 2008, 00:23
my favorite amplifier: Vox AC30
Completed builds: Zvex Woolly Mammoth
Boss DS-2 mod
Vox AC4
Crowther Hotcake (and own variations)
TS-808
Big Muff Russian
Big Muff IC
Superfuzz
Superfuzz
Big Muff
Mixer/Blend
various other stuff
Location: montenegro
Has thanked: 6 times
Been thanked: 51 times
Contact:

Post by andrej »

When I was a kid, I remember disassembling all kinds of electronic devices that had DACs and loads of them had these r-2r networks (yellow slim integrated ones). Serious audio devices, too!

There is nothing inherently bad about either the AVR integrated ADCs or R-2R ladders (if they're implemented correctly, with precise resistors). I assure you you'll notice absolutely no difference in this circuit, especially after filtering. An external DAC is a complete waste of time, money and speed in this circuit. I guess they used it because it's easy to design around and solder - same goes for ADC. It's a canned, no-brainer solution.

User avatar
Space Jm
Breadboard Brother
Information
Posts: 111
Joined: 21 Oct 2007, 13:44
Location: FRANCE
Been thanked: 4 times

Post by Space Jm »

ok I 've got it :)

Regarding the code, how will you manage the reading and the writing of the guitar signals ?

guitarin = analogRead (A0);

guitarout = guitarin*functiongenerator;

analogWrite (A1,guitarout);

I am confused with the writing of output signal with your dac0 to dac7...What kind of function will you use to split the output in 8 dac ?
Together we stand, divided we fall

User avatar
andrej
Solder Soldier
Information
Posts: 159
Joined: 28 Dec 2008, 00:23
my favorite amplifier: Vox AC30
Completed builds: Zvex Woolly Mammoth
Boss DS-2 mod
Vox AC4
Crowther Hotcake (and own variations)
TS-808
Big Muff Russian
Big Muff IC
Superfuzz
Superfuzz
Big Muff
Mixer/Blend
various other stuff
Location: montenegro
Has thanked: 6 times
Been thanked: 51 times
Contact:

Post by andrej »

I won't be using Arduino code, only pure AVR C code.

I will set the ADC subsystem to trigger at 50 (or 60-70Hz). I will then set the ADC-conversion-complete interrupt handling function to read the most significant 8 bits from the ADCH register (that's where ADC reads to) and pretty much do this:

Code: Select all

PORTC = wavetable[ADCH]; 
of course, we have to implement that period counter for lowering the frequency. it will be very clear when I write it.

PORTC is an 8-bit register that controls the output of PC0-PC7 pins at the same time. The least significant bit controls PC0, the next one controls PC1, etc.

example:

Code: Select all

PORTC = 0b01100001; // 0b01100001 = 193 dec if we're looking at unsigned values
//this code sets the pins accordingly:
//PC0 : high
//PC1 : low
//PC2 : low
//PC3 : low
//PC4 : low
//PC5 : high
//PC6 : high
//PC7 : low
that's the beauty of pure uC C code. all port manipulation is done with bitwise operations, bitvectors and these 8bit port registers.
you have a library that simplifies that on my blog

User avatar
andrej
Solder Soldier
Information
Posts: 159
Joined: 28 Dec 2008, 00:23
my favorite amplifier: Vox AC30
Completed builds: Zvex Woolly Mammoth
Boss DS-2 mod
Vox AC4
Crowther Hotcake (and own variations)
TS-808
Big Muff Russian
Big Muff IC
Superfuzz
Superfuzz
Big Muff
Mixer/Blend
various other stuff
Location: montenegro
Has thanked: 6 times
Been thanked: 51 times
Contact:

Post by andrej »

I meant kHz.

Oh, and I have some exams now, i won't be doing any progress till mid-next week

User avatar
Space Jm
Breadboard Brother
Information
Posts: 111
Joined: 21 Oct 2007, 13:44
Location: FRANCE
Been thanked: 4 times

Post by Space Jm »

All right Andrej, good luck :)

We all know what exam means
Together we stand, divided we fall

User avatar
andrej
Solder Soldier
Information
Posts: 159
Joined: 28 Dec 2008, 00:23
my favorite amplifier: Vox AC30
Completed builds: Zvex Woolly Mammoth
Boss DS-2 mod
Vox AC4
Crowther Hotcake (and own variations)
TS-808
Big Muff Russian
Big Muff IC
Superfuzz
Superfuzz
Big Muff
Mixer/Blend
various other stuff
Location: montenegro
Has thanked: 6 times
Been thanked: 51 times
Contact:

Post by andrej »

I found some time to do another design iteration.

The schematic is pretty much final. I had to use an external ADC (SPI based), because I couldn't get the uC to sample audio at a rate above 35KHz when I added input multiplexing (for pots and cv). Multiplexing takes up a lot of cycles, and an external ADC is a quick, easy and cheap solution.

I managed to simulate passthrough, waveshaping, bitmasking, bitreduction and samplerate variation. Now, I need to implement the interface, add waveforms and it's done.

There's a thing I'd like to ask you guys: could someone make a ready-to-order partslist (a list of links) from a single European supplier? That would save me at least 2 days of work, so I could dedicate that time to coding.

Schematic:
https://dl.dropboxusercontent.com/u/239 ... V1.8fc.pdf

BOM:
https://dl.dropboxusercontent.com/u/239 ... V1.8fc.pdf

Further details:
  • all components should be through-hole
  • pots like these
  • a cheap rotary encoder with a switch, like this one. maybe with a longer shaft, must have a nut for affixing to enclosure.
  • ISP is 2x3 pin DIL male pin header
  • PT_OUT_VOL and PT_GAIN are log. all others are lin.
  • all resistors are 1/4w or 1/2w 1% metal film
  • smallest possible 7seg, 2digit, common cathode display
  • knobs for pots and encoder. slim ones, like these and these
  • 3mm bi-colour leds
  • these little 100n caps must be ceramic
  • you can replace r-2r resistor with a 10pin, 8-bit SIL r-2r network by, for example, Bourns. I'll draw the PCB in such a way, that both a network and single resistors fit
  • 125B Enclosure
  • regular pedal stuff (jacks, led, 3pdt)
  • appropriately sized spst/spdt lever switches (check out the pic below)
  • sockets for all chips
everything that goes through holes must be equally tall (or adjustable). if you have doubts, check this pic:
Image

that's about it.

User avatar
andrej
Solder Soldier
Information
Posts: 159
Joined: 28 Dec 2008, 00:23
my favorite amplifier: Vox AC30
Completed builds: Zvex Woolly Mammoth
Boss DS-2 mod
Vox AC4
Crowther Hotcake (and own variations)
TS-808
Big Muff Russian
Big Muff IC
Superfuzz
Superfuzz
Big Muff
Mixer/Blend
various other stuff
Location: montenegro
Has thanked: 6 times
Been thanked: 51 times
Contact:

Post by andrej »

git, as promised.

https://github.com/randrej/BlueWaffle

waveforms-in-a-json parsing completed.
almost done. just the modes/menus remaining!

User avatar
kroaton
Information
Posts: 19
Joined: 24 Jul 2014, 16:57
Has thanked: 3 times
Been thanked: 1 time

Post by kroaton »

BlueWaffle
You nasty, nasty man.

Phenomenal work, mate. I've been trying to justify buying one of these beasts for a long time but I'm building this as I get some free time.

Can't help with the BOM now, maybe in a few days.

Cheers.

User avatar
andrej
Solder Soldier
Information
Posts: 159
Joined: 28 Dec 2008, 00:23
my favorite amplifier: Vox AC30
Completed builds: Zvex Woolly Mammoth
Boss DS-2 mod
Vox AC4
Crowther Hotcake (and own variations)
TS-808
Big Muff Russian
Big Muff IC
Superfuzz
Superfuzz
Big Muff
Mixer/Blend
various other stuff
Location: montenegro
Has thanked: 6 times
Been thanked: 51 times
Contact:

Post by andrej »

Project went gold. It's done - the first working version, at least.

You can try it now. It may have bugs I can't simulate, but we won't know until someone makes a buylist and I build a prototype. I hate sourcing parts myself, it's the bane of my existence.

It's missing just one feature, and that's recalling previous modes on startup. I'll add that in an update these days - I wanna make it EEPROM-preserving. EEPROM bytes have limited lifespan (10s or 100s of thousands writes), and you could reach that with much use. I'll spread the load across all 4K of ram, so that's gonna last us a LONG time.
I'll fix git up a bit, delete extraneous files, refactor... And then be more rigorous about commits.

User avatar
andrej
Solder Soldier
Information
Posts: 159
Joined: 28 Dec 2008, 00:23
my favorite amplifier: Vox AC30
Completed builds: Zvex Woolly Mammoth
Boss DS-2 mod
Vox AC4
Crowther Hotcake (and own variations)
TS-808
Big Muff Russian
Big Muff IC
Superfuzz
Superfuzz
Big Muff
Mixer/Blend
various other stuff
Location: montenegro
Has thanked: 6 times
Been thanked: 51 times
Contact:

Post by andrej »

yep, it's refactored now. readable and organized.

Post Reply