Skip to content
mxmxmx edited this page Mar 15, 2017 · 49 revisions

wm8731 version, hardware basics:

output stage:

  • simple inverting amplifier with ~ 4.75x gain; outputs are DC blocked:

input stage:

  • simple inverting amplifier with ~ 0.2x gain; inputs are DC blocked. + offset (1.65v)
  • V_bias at the + terminal / after the divider is ~ 1.361v (ideally); this results in ~ 1.65v offset at the output (1.361v * (10k/47k)+1)).

  • (not shown: right input is normalled to left input)

CV inputs 1-6

  • basic inverting op-amp configuration. Specifically, incoming CVs are mixed with the pots (referenced to 2v5) and a fixed negative voltage (-10V). note: the results thus need to be inverted in the software. (the external resp. C programme is taking care of that).
  • the mcp6002, running off a/the 3v3 rail, is taking care of the clamping. the ADC (MCP3208) is referenced to AREF = 2v5. it's a SPI device, and it's wired to the SPI port (chip select = CE1).

  • in an ideal world, one probably would have used a mcu for sampling the CVs. apart from the added complexity (not that much, admittedly), the pay-off (in terms of bandwidth) likely would have been nil though, as getting the data into pd (or comparable non-custom software) is limited by a number of factors. as it stands, regarding puredata the limit for both the SPI external and C programme is (mainly) the pd 'control rate' (1ms max)

digital inputs 1-4:

  • wired as transistor switches, directly to the respective GPIO pins: collector tied to 3V3 via a series resistor; emitter to ground; the trigger signals go into the base via a 100k series resistor and 33k to ground.
  • at the software end of things, these inputs can be treated as interrupts (see commented out sections in ADC2FUDI.c) -- or be polled, as is done with the pd externals. in any case, for these to work, the internal pullups need to be activated. ditto for the 3 tact switches. the pd externals take care of that. if you don't use them, you'll need to pull them up by some other means, for instance by using a script such as this; it will typically be run at start-up.

digital outputs 1-2:

  • standard non-inverting op amp configuration (TL072). As per the BOM / following the resistor values on the PCB (100k, 49k9), this will yield 3x gain, or ~ 10V pulses.

power:

  • regarding power, there's basically two options: supply the whole thing from your eurorack psu or supply the raspberry with 5V externally via the micro usb power inlet. the former will be ok when using say a model A+ (we're talking < 150ma in my experience) or model zero; those models will typically be preferred over pi 2 (more like ~ 200ma) or pi 3 (still more). similar considerations apply if you intend to use, say, a usb WiFi dongle in regular use (ie, other than or getting patches or files onto or off the device).

  • basically (omitting decoupling caps, series diodes, etc):

  • to choose between the two options, there's a jumper (5V_pwr) right next to the 2x20 header: you want to connect this in order to supply everything, including the raspberry pi, from the psu. disconnect it, if you want to power the raspberry from usb or external 5v DC supply. using a 7805 will do to power a model A+, B+ or zero; more efficient (and more $) is to use the RECOM equivalent. the 0.5A version probably is sufficient (ie R-785.0-0.5). in terms of power draw, pi 2 is more demanding, to be on the safe side, better to use R-785.0-1.0 (viz, the 1.0A version). the codec itself is powered from the ADP150 'ultralow noise' linear regulator (as is the ADC).

pin usage:

Clone this wiki locally