Skip to content
mxmxmx edited this page Apr 18, 2017 · 62 revisions

hardware basics

  • the board is entirely based on the 'ornament+crime' module (ie plus clock outputs, minus the quad 16-bit DAC); it is also somewhat inspired by the 'trigger happy' module. it's probably (certainly) not how i'd design a clock module from ground up; that said, it's not bad at all ... not so much for live action perhaps, but for dialling in complex clock sequences. either way, the board features ...

in brief:

  • Teensy 3.1 / 3.2 dev board (Freescale MK20DX256 / 32-bit ARM Cortex M4).
  • 5x digital outputs (10V), plus
  • 1x analog output (12-bit DAC), with an active output filter (~ +/- 5V).
  • 4x CV inputs, +/- 5V, 12 bit, 100k input impedance.
  • 2x trigger/gate inputs, threshold ~ 2.5v, > 100k input impedance.
  • two rotary encoders, with built-in push switches.
  • two push buttons.
  • 128 x 64 pixel 1.3" OLED display (with an SPI interface and SH1106 driver chip).
  • trigger-to-output latency < 100 microseconds
  • 16.67kHz internal timer (CPU overclocked to 120MHz)
  • +/-12V power only, ca. 85mA power draw on +12V bus, < 10mA on -12V bus

more verbose:

  • disclaimer: i drew the circuit by hand (which is to say, in pcb-view), so i don't have a proper schematic. sorry. but it's all generic digital module stuff (and essentially similar to O+C, so you may want to have a look there); here's the basics, anyway:

CV inputs:

.

  • inverting op-amp (MCP6004) with negative offset (via LM4040-5), 100R series resistor --> teensy pins A3, A4, A5, A6. the offset is set to half the ADC range (3v3) (ie -(-5V * 33k/100k) = 1.65V), so the inputs will be bipolar, with a 10V range (+/- 5V) (see calibration).
  • the MCP6004 is powered from the teensy 3v3 supply (via the 10uH inductor); the jack (switch) is normalled to 0V.
  • note: there's one jumper J (to connect AREF), that's the 3-pin connector near where is says LM4040-5 (removed in rev 1.c)

digital inputs:

  • GPIO pins 0 and 1 --> wired as transistor switches, pulled-up via the respective GPIO pins (internal pull-up): 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.

clock (digital) outputs:

  • GPIO pins 2, 5, 6, 7, and 8 --> basic, non-inverting op amp configuration, plus 1k series resistor. gain is ~ 3, so the output level is ~ 10V (= (20k/10k + 1) * 3.3V).

  • note: rev0 boards (yellow) used pins 2, 9, 10, 28, and 29 for the outputs, which was inconvenient, so i've changed it. keep this in mind when compiling the code for these boards. there's a switch in the code, as noted here.

DAC output:

  • onboard 12-bit DAC (pin A14), buffered/amplified via 2-stage multiple feedback lowpass filter (~ 18kHz) + offset; with 1k series resistor. gain is ~ 2.89.

encoders/buttons:

  • the encoders use GPIO pins 13, 15, 16 resp. 21, 22, 23; the two tact switches use pins 4 and 5. For details, see TU_gpio.h

power:

  • reverse voltage protection via the two Schottky diodes (in series)
  • Teensy 3.x is powered from 5V (LM1117-5), the OLED from 3v3_#1 (78L33); the MCP6004 from 3v3_#2 (from teensy onboard regulator, via 10uH inductor); the TL074s from +/- 12V.