Add new implementation start of stereo_mix

This commit is contained in:
Jan-Henrik 2020-03-27 22:36:04 +01:00
parent 6b5d815f74
commit fea326c04c
39 changed files with 93045 additions and 117 deletions

103
stereo_mix/drivers/dac.h Normal file
View file

@ -0,0 +1,103 @@
#pragma once
#include <stm32f0xx.h>
#include "stm32f0xx_gpio.h"
#include "stmlib/stmlib.h"
#include <stm32f0xx_conf.h>
#include <stm32f0xx_rcc.h>
#include <stm32f0xx_spi.h>
class Dac { // MCP4xx2 dac implementation
public:
void Init(GPIO_TypeDef* ssGpioPort_, uint16_t ssGpioPin_)
{
ssGpioPort = ssGpioPort_;
ssGpioPin = ssGpioPin_;
// init SS/CS/RST GPIO
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
GPIO_InitTypeDef gpio_init;
GPIO_StructInit(&gpio_init);
gpio_init.GPIO_Mode = GPIO_Mode_OUT;
gpio_init.GPIO_OType = GPIO_OType_PP;
gpio_init.GPIO_Speed = GPIO_Speed_50MHz;
gpio_init.GPIO_PuPd = GPIO_PuPd_NOPULL;
gpio_init.GPIO_Pin = ssGpioPin;
GPIO_Init(ssGpioPort, &gpio_init);
GPIO_SetBits(ssGpioPort, ssGpioPin);
// init AF GPIO
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1 | RCC_APB2Periph_SYSCFG, ENABLE);
GPIO_StructInit(&gpio_init);
gpio_init.GPIO_Mode = GPIO_Mode_AF;
gpio_init.GPIO_OType = GPIO_OType_PP;
gpio_init.GPIO_Speed = GPIO_Speed_50MHz;
gpio_init.GPIO_PuPd = GPIO_PuPd_NOPULL;
gpio_init.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;
GPIO_Init(GPIOB, &gpio_init);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource3, GPIO_AF_0);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource4, GPIO_AF_0);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_0);
// init SPI
SPI_I2S_DeInit(SPI1);
// Initialize SPI TODO: check which config we need
SPI_InitTypeDef spi_init;
SPI_StructInit(&spi_init);
spi_init.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
spi_init.SPI_Mode = SPI_Mode_Master;
spi_init.SPI_DataSize = SPI_DataSize_16b;
spi_init.SPI_CPOL = SPI_CPOL_High;
spi_init.SPI_CPHA = SPI_CPHA_1Edge;
spi_init.SPI_NSS = SPI_NSS_Soft;
spi_init.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
spi_init.SPI_FirstBit = SPI_FirstBit_MSB;
spi_init.SPI_CRCPolynomial = 7;
SPI_Init(SPI1, &spi_init);
SPI_Cmd(SPI1, ENABLE);
};
void Write16(uint8_t channel, uint16_t value, uint8_t gain, uint8_t buffered)
{
if (channel > 1)
return; // only 2 channels available
if (buffered > 1)
return; // buffered can only be 0 or 1
if (gain > 2 || gain < 1)
return; // gain has to be 1 or 2
gain = !(gain - 1);
value >>= 4; // the dac supports a maximum of 12 bits precision
value |= channel << 15; // select channel
value |= buffered << 14; // set buffered
value |= gain << 13; // set gain
value |= 1 << 12; // shutdown always set to 1
GPIO_ResetBits(ssGpioPort, ssGpioPin);
SPI_I2S_SendData16(SPI1, value);
//SPI_I2S_SendData16(SPI1, value); // MSB first, specified in config
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET) {
asm("nop");
}
while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY) == SET) {
asm("nop");
}
GPIO_SetBits(ssGpioPort, ssGpioPin);
};
void Write16(uint8_t channel, uint16_t value)
{
Write16(channel, value, 1, 0);
};
private:
GPIO_TypeDef* ssGpioPort;
uint16_t ssGpioPin;
};

View file

@ -0,0 +1,42 @@
Circuit: * Z:\home\jhbruhn\eurorack\eurorack-dev-environment\eurorack-modules\stereo_mix\hardware_design\pcb\simulation\Draft4.asc
Instance "m:u1:6": Length shorter than recommended for a level 2 MOSFET.
Instance "m:u1:5": Length shorter than recommended for a level 2 MOSFET.
Direct Newton iteration failed to find .op point. (Use ".option noopiter" to skip.)
Starting Gmin stepping
Gmin = 10
Gmin = 1.07374
Gmin = 0.115292
Gmin = 0.0123794
Gmin = 0.00132923
Gmin = 0.000142725
Gmin = 1.5325e-005
Gmin = 1.6455e-006
Gmin = 1.76685e-007
Gmin = 1.89714e-008
Gmin = 2.03704e-009
Gmin = 2.18725e-010
Gmin = 2.34854e-011
Gmin = 2.52173e-012
Gmin = 2.70769e-013
Gmin = 0
Gmin stepping succeeded in finding the operating point.
Date: Sat Mar 14 19:22:02 2020
Total elapsed time: 0.109 seconds.
tnom = 27
temp = 27
method = modified trap
totiter = 2512
traniter = 2090
tranpoints = 1046
accept = 1046
rejected = 0
matrix size = 43
fillins = 28
solver = Normal
Matrix Compiler1: 3.38 KB object code size 0.9/0.4/[0.2]
Matrix Compiler2: 4.15 KB object code size 0.5/0.6/[0.3]

Binary file not shown.

View file

@ -1,43 +1,47 @@
# Copyright 2012 Emilie Gillet.
# Copyright 2013 Emilie Gillet.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Author: Emilie Gillet (emilie.o.gillet@gmail.com)
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
#
# See http://creativecommons.org/licenses/MIT/ for more information.
VERSION = 0.1
MCU_NAME = 328
# System specifications
F_CRYSTAL = 8000000L
F_CPU = 72000000L
SYSCLOCK = SYSCLK_FREQ_72MHz
FAMILY = f0xx
# USB = enabled
#APPLICATION = true
#BOOTLOADER = midi2cv_bootloader
# Preferred upload command
UPLOAD_COMMAND = upload_jtag
# Packages to build
TARGET = stereo_mix
PACKAGES = avrlib avrlib/devices stereo_mix
PACKAGES = stereo_mix \
stereo_mix/drivers \
stmlib/utils \
stmlib/system
RESOURCES = stereo_mix/resources
PROGRAMMER = atmelice_isp
LFUSE = ef
HFUSE = d8
EFUSE = 05
LOCK = ff
include stmlib/makefile.inc
include avrlib/makefile.mk
include $(DEP_FILE)
# Rule for building the firmware update file
wav: $(TARGET_BIN)
python avr_audio_bootloader/fsk/encoder.py \
-s 40000 -b 16 -n 8 -z 4 -p 128 -g 128 -k 10 \
$(TARGET_BIN)
bootstrap_all:
make -f stereo_mix/makefile
make -f stereo_mix/bootloader/makefile
make -f stereo_mix/bootloader/makefile fuses
$(AVRDUDE) -B 1 $(AVRDUDE_COM_OPTS) $(AVRDUDE_ISP_OPTS) \
-U flash:w:build/stereo_mix/stereo_mix.hex:i \
-U flash:w:build/stereo_mix_bootloader/stereo_mix_bootloader.hex:i \
-U lock:w:0xff:m

View file

@ -1,91 +1,56 @@
#include "avrlib/adc.h"
#include "avrlib/avrlib.h"
#include "avrlib/boot.h"
#include "avrlib/devices/mcp492x.h"
#include "avrlib/gpio.h"
#include "avrlib/spi.h"
#include "avrlib/time.h"
#include "avrlib/watchdog_timer.h"
#include "stereo_mix/resources.h"
#include "drivers/dac.h"
using namespace avrlib;
using namespace stereo_mix;
// Default interrupt handlers.
extern "C" {
void NMI_Handler() {}
void HardFault_Handler()
{
while (1)
;
}
void MemManage_Handler()
{
while (1)
;
}
void BusFault_Handler()
{
while (1)
;
}
void UsageFault_Handler()
{
while (1)
;
}
void SVC_Handler() {}
void DebugMon_Handler() {}
void PendSV_Handler() {}
typedef SpiMaster<NumberedGpio<0>, MSB_FIRST, 2> dac1Spi;
typedef Dac<dac1Spi, BUFFERED_REFERENCE, 1> Dac1;
typedef SpiMaster<NumberedGpio<1>, MSB_FIRST, 2> dac2Spi;
typedef Dac<dac2Spi, BUFFERED_REFERENCE, 1> Dac2;
typedef SpiMaster<NumberedGpio<2>, MSB_FIRST, 2> dac3Spi;
typedef Dac<dac3Spi, BUFFERED_REFERENCE, 1> Dac3;
typedef SpiMaster<NumberedGpio<3>, MSB_FIRST, 2> dac4Spi;
typedef Dac<dac4Spi, BUFFERED_REFERENCE, 1> Dac4;
// called every 1ms
void SysTick_Handler()
{
}
}
typedef SpiMaster<NumberedGpio<4>, MSB_FIRST, 2> oDac1Spi;
typedef Dac<oDac1Spi, BUFFERED_REFERENCE, 0> oDac1;
typedef SpiMaster<NumberedGpio<5>, MSB_FIRST, 2> oDac2Spi;
typedef Dac<oDac2Spi, BUFFERED_REFERENCE, 0> oDac2;
typedef SpiMaster<NumberedGpio<6>, MSB_FIRST, 2> oDac3Spi;
typedef Dac<oDac3Spi, BUFFERED_REFERENCE, 0> oDac3;
typedef SpiMaster<NumberedGpio<7>, MSB_FIRST, 2> oDac4Spi;
typedef Dac<oDac4Spi, BUFFERED_REFERENCE, 0> oDac4;
typedef AdcInputScanner AnalogInputs;
#define NUM_CHANNELS 4
uint32_t volume[NUM_CHANNELS];
uint16_t pan[NUM_CHANNELS * 2];
Dac dacs[8];
int main(void)
{
Boot(true);
Dac1::Init();
Dac2::Init();
Dac3::Init();
Dac4::Init();
oDac1::Init();
oDac2::Init();
oDac3::Init();
oDac4::Init();
AnalogInputs::Init();
AnalogInputs::set_num_inputs(8);
#define WRITE(DAC, ODAC, N) \
DAC::Write((volume[N] * pan[N * NUM_CHANNELS]) >> 12, 0); \
ODAC::Write((volume[N] * pan[N * NUM_CHANNELS]) >> 12, 0); \
DAC::Write((volume[N] * pan[N * NUM_CHANNELS + 1]) >> 12, 1); \
ODAC::Write((volume[N] * pan[N * NUM_CHANNELS + 1]) >> 12, 1);
SystemInit();
dacs[0].Init(GPIOB, GPIO_Pin_8);
dacs[1].Init(GPIOB, GPIO_Pin_9);
dacs[2].Init(GPIOB, GPIO_Pin_10);
dacs[3].Init(GPIOB, GPIO_Pin_11);
dacs[4].Init(GPIOA, GPIO_Pin_8);
dacs[5].Init(GPIOA, GPIO_Pin_9);
dacs[6].Init(GPIOA, GPIO_Pin_10);
dacs[7].Init(GPIOA, GPIO_Pin_11);
while (true) {
ResetWatchdog();
int i = AnalogInputs::current_pin() % NUM_CHANNELS;
volume[i] = pgm_read_word_near(lut_res_linear_to_exp + (AnalogInputs::Read(i) >> 1));
pan[i * NUM_CHANNELS] = pgm_read_word(lut_res_left_sin_pan + (AnalogInputs::Read(i + NUM_CHANNELS) >> 1));
pan[i * NUM_CHANNELS + 1] = pgm_read_word(lut_res_right_cos_pan + (AnalogInputs::Read(i + NUM_CHANNELS) >> 1));
switch (i) {
case 0:
WRITE(Dac1, oDac1, i);
break;
case 1:
WRITE(Dac2, oDac2, i);
break;
case 2:
WRITE(Dac3, oDac3, i);
break;
case 3:
WRITE(Dac4, oDac4, i);
break;
for (uint16_t i = 0; i < 65535; i++) {
dacs[0].Write16(0, i);
dacs[0].Write16(1, 65535 - i);
}
AnalogInputs::Scan();
}
}
TIMER_0_TICK
{
TickSystemClock();
}

View file

View file

@ -0,0 +1,47 @@
width = 75;
panel_width = 76.2;
thickness = 2;
jack_radius = 6.2 / 2;
pot_radius = 9.1 / 2;
led_radius = 5.1 / 2;
switch_radius = 5.1 / 2;
x_offset = (128.5 - 100) / 2;
y_offset = (panel_width - width) / 2;
jacks = [[6.35, 91.44], [6.35, 74.93], [6.35, 58.42], [6.35, 41.91], [6.35, 22.352], [6.35, 7.62],
[19.05, 91.44], [19.05, 74.93], [19.05, 58.42], [19.05, 41.91], [19.05, 22.352], [19.05, 7.62],
[31.75, 22.352], [31.75, 7.62],
[44.45, 22.352], [44.45, 7.62],
[64.77, 22.352], [64.77, 7.62]];
pots = [[44.7675, 91.44], [44.7675, 74.93], [44.7675, 58.42], [44.7675, 41.91],
[64.77, 91.44], [64.77, 74.93], [64.77, 58.42], [64.77, 41.91]];
leds = [];
switches = [];
difference() {
cube(size = [128.5, panel_width, thickness]);
for (jack = jacks)
translate([jack[1] + x_offset, jack[0]+y_offset, -thickness / 2]) linear_extrude(height = thickness * 2) circle(r = jack_radius, $fn = 50);
for (pot = pots)
translate([pot[1] + x_offset, pot[0]+y_offset, -thickness / 2]) linear_extrude(height = thickness * 2) circle(r = pot_radius, $fn = 50);
for (led = leds)
translate([led[1] + x_offset, led[0]+y_offset, -thickness / 2]) linear_extrude(height = thickness * 2) circle(r = led_radius, $fn = 50);
for (switch = switches)
translate([switch[1] + x_offset, switch[0]+y_offset, -thickness / 2]) linear_extrude(height = thickness * 2) circle(r = switch_radius, $fn = 50);
// top hole
translate([125.5, 7.5, -thickness / 2]) linear_extrude(height = thickness * 2) circle(r = 3.2 / 2, $fn = 10);
//bottom hole
translate([3, 7.5, -thickness / 2]) linear_extrude(height = thickness * 2) circle(r = 3.2 / 2, $fn = 100);
// top hole
translate([125.5, ((panel_width / 5.08) - 2) * 5.08, -thickness / 2]) linear_extrude(height = thickness * 2) circle(r = 3.2 / 2, $fn = 10);
//bottom hole
translate([3, ((panel_width / 5.08) - 2) * 5.08, -thickness / 2]) linear_extrude(height = thickness * 2) circle(r = 3.2 / 2, $fn = 100);
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,284 @@
{
"author": {
"email": "jh.bruhn@me.com",
"name": "Jan-Henrik Bruhn"
},
"description": {
"EN": "EAGLE default 2 layer CAM job."
},
"output_type": "zip",
"outputs": [
{
"filename_prefix": "CAMOutputs/GerberFiles",
"format_specifier": {
"decimal": 4,
"integer": 3
},
"generate_job_file": true,
"output_type": "gerber",
"outputs": [
{
"advanced_options": {
"mirror": false,
"offset_x": 0,
"offset_y": 0,
"rotate": false,
"upside_down": false
},
"board_outline": false,
"config": {
"file_function": "Copper",
"layer": 1,
"layer_details": "mixed",
"layer_type": "top"
},
"filename_format": "%PREFIX/copper_top.gbr",
"layers": [
1,
17,
18
],
"name": "Top Copper",
"polarity": "positive",
"type": "gerber_layer"
},
{
"advanced_options": {
"mirror": false,
"offset_x": 0,
"offset_y": 0,
"rotate": false,
"upside_down": false
},
"board_outline": false,
"config": {
"file_function": "Copper",
"layer": 2,
"layer_details": "mixed",
"layer_type": "bottom"
},
"filename_format": "%PREFIX/copper_bottom.gbr",
"layers": [
16,
17,
18
],
"name": "Bottom Copper",
"polarity": "positive",
"type": "gerber_layer"
},
{
"advanced_options": {
"mirror": false,
"offset_x": 0,
"offset_y": 0,
"rotate": false,
"upside_down": false
},
"board_outline": true,
"config": {
"file_function": "Profile",
"plating": "non-plated"
},
"filename_format": "%PREFIX/profile.gbr",
"layers": [
],
"milling": true,
"polarity": "positive",
"type": "gerber_layer"
},
{
"advanced_options": {
"mirror": false,
"offset_x": 0,
"offset_y": 0,
"rotate": false,
"upside_down": false
},
"board_outline": false,
"config": {
"file_function": "Soldermask",
"index": 1,
"layer_type": "top"
},
"filename_format": "%PREFIX/soldermask_top.gbr",
"layers": [
29
],
"name": "Soldermask Top",
"polarity": "positive",
"type": "gerber_layer"
},
{
"advanced_options": {
"mirror": false,
"offset_x": 0,
"offset_y": 0,
"rotate": false,
"upside_down": false
},
"board_outline": false,
"config": {
"file_function": "Soldermask",
"index": 1,
"layer_type": "bottom"
},
"filename_format": "%PREFIX/soldermask_bottom.gbr",
"layers": [
30
],
"name": "Soldermask Bottom",
"polarity": "positive",
"type": "gerber_layer"
},
{
"advanced_options": {
"mirror": false,
"offset_x": 0,
"offset_y": 0,
"rotate": false,
"upside_down": false
},
"board_outline": false,
"config": {
"file_function": "Paste",
"layer_type": "top"
},
"filename_format": "%PREFIX/solderpaste_top.gbr",
"layers": [
31
],
"milling": false,
"name": "Solderpaste Top",
"polarity": "positive",
"type": "gerber_layer"
},
{
"advanced_options": {
"mirror": false,
"offset_x": 0,
"offset_y": 0,
"rotate": false,
"upside_down": false
},
"board_outline": false,
"config": {
"file_function": "Paste",
"layer_type": "bottom"
},
"filename_format": "%PREFIX/solderpaste_bottom.gbr",
"layers": [
32
],
"milling": false,
"name": "Solderpaste Bottom",
"polarity": "positive",
"type": "gerber_layer"
},
{
"advanced_options": {
"mirror": false,
"offset_x": 0,
"offset_y": 0,
"rotate": false,
"upside_down": false
},
"board_outline": false,
"config": {
"file_function": "Legend",
"index": 1,
"layer_type": "top"
},
"filename_format": "%PREFIX/silkscreen_top.gbr",
"layers": [
21,
25,
51
],
"milling": false,
"name": "Silkscreen Top",
"polarity": "positive",
"type": "gerber_layer"
},
{
"advanced_options": {
"mirror": false,
"offset_x": 0,
"offset_y": 0,
"rotate": false,
"upside_down": false
},
"board_outline": false,
"config": {
"file_function": "Legend",
"index": 1,
"layer_type": "bottom"
},
"filename_format": "%PREFIX/silkscreen_bottom.gbr",
"layers": [
22,
26,
52
],
"milling": false,
"name": "Silkscreen Bottom",
"polarity": "positive",
"type": "gerber_layer"
}
],
"version": "RS274X"
},
{
"filename_prefix": "CAMOutputs/DrillFiles",
"format_specifier": {
"decimal": 3,
"integer": 3
},
"output_type": "drill",
"outputs": [
{
"advanced_options": {
"mirror": false,
"offset_x": 0,
"offset_y": 0,
"rotate": false,
"upside_down": false
},
"filename_format": "%DRILLPREFIX/drill_%FROM_%TO.xln",
"name": "Auto Drill",
"type": "autodrills"
}
]
},
{
"filename_prefix": "CAMOutputs/Assembly",
"output_type": "assembly",
"outputs": [
{
"filename_format": "%ASSEMBLYPREFIX/%N",
"list_attribute": true,
"list_type": "values",
"name": "Bill of Material",
"output_format": "txt",
"type": "bom"
},
{
"filename_format": "%ASSEMBLYPREFIX/PnP_%N_%BOARDSIDE",
"name": "Pick and Place",
"output_format": "txt",
"type": "pick_and_place"
}
]
},
{
"filename_prefix": "CAMOutputs/DrawingFiles",
"output_type": "drawing",
"outputs": [
]
}
],
"timestamp": "2020-03-13T11:03:29",
"type": "EAGLE CAM job",
"units": "metric",
"version": "9.2.0"
}

View file

@ -0,0 +1,31 @@
"Comment","Designator","Footprint","LCSC Part #","LCSC Part Type"
"","VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8","9MM_SNAP-IN_POT","",""
"","JP1, JP2","JP2","",""
"100k","R2, R4, R6, R8, R21, R22, R24, R27, R29, R30, R31, R32, R34, R36, R38, R40, R53, R54, R55, R56, R61, R62, R63, R64, R66, R68, R70, R72, R81, R82, R83, R84, R86, R87, R88, R89","0402_R","",""
"100nF","C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C23, C24, C25, C28, C29, C30, C31, C34, C35, C40, C42","0402_C","",""
"10k","R85","0402_R","",""
"10uF","C37, C38, C39, C41","A/3216-18R","",""
"15k","R9, R10, R11, R12, R41, R42, R43, R44","0402_R","",""
"1N4148W","D1, D2","SOD123","",""
"200k","R65, R67, R69, R71, R77, R78, R79, R80","0402_R","",""
"22pF","C26, C27","0402_C","",""
"300k","R23, R25, R26, R28, R57, R58, R59, R60","0402_R","",""
"33k","R73, R74, R75, R76","0402_R","",""
"4.7nF","C19, C20, C21, C22","0402_C","",""
"4051D","IC1","SO16","",""
"470R","R90","0402_R","",""
"47k","R13, R14, R15, R16, R17, R18, R19, R20, R45, R46, R47, R48, R49, R50, R51, R52","0402_R","",""
"6.8pF","C32, C33","0402_C","",""
"8MHz","X1","NX5032","",""
"91k","R1, R3, R5, R7, R33, R35, R37, R39","0402_R","",""
"AMS1117-3.3","IC2","SOT223","",""
"CORTEX_DEBUG_PTH","J17","2X5-PTH-1.27MM","",""
"EURO_POWER_LOCKFAT-LOCK","C36","EURO_PWR_HEADER_LOCK","",""
"LM4040AIM3-10.0","D3","SOT23","",""
"MCP4822E-SN","U1, U2, U9, U10","SOIC8","",""
"MCP4922E/SL","U5, U6, U13, U14","SO-14","",""
"MCP6002T-I/SN","U3, U4, U11, U12, U17, U18, U19, U20","SOIC8","",""
"OSHW-LOGOS","LOGO1","OSHW-LOGO-S","",""
"STM32F030C8T6","U21","LQFP48","",""
"TL072CD","U7, U8, U15, U16, U22","SOIC8","",""
"WQP-PJ301M-12_JACK","J1, J2, J3, J4, J5, J6, J7, J8, J9, J10, J11, J12, J13, J14, J15, J16, J18, J19","WQP-PJ301M-12_JACK","",""
1 Comment Designator Footprint LCSC Part # LCSC Part Type
2 VR1, VR2, VR3, VR4, VR5, VR6, VR7, VR8 9MM_SNAP-IN_POT
3 JP1, JP2 JP2
4 100k R2, R4, R6, R8, R21, R22, R24, R27, R29, R30, R31, R32, R34, R36, R38, R40, R53, R54, R55, R56, R61, R62, R63, R64, R66, R68, R70, R72, R81, R82, R83, R84, R86, R87, R88, R89 0402_R
5 100nF C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C23, C24, C25, C28, C29, C30, C31, C34, C35, C40, C42 0402_C
6 10k R85 0402_R
7 10uF C37, C38, C39, C41 A/3216-18R
8 15k R9, R10, R11, R12, R41, R42, R43, R44 0402_R
9 1N4148W D1, D2 SOD123
10 200k R65, R67, R69, R71, R77, R78, R79, R80 0402_R
11 22pF C26, C27 0402_C
12 300k R23, R25, R26, R28, R57, R58, R59, R60 0402_R
13 33k R73, R74, R75, R76 0402_R
14 4.7nF C19, C20, C21, C22 0402_C
15 4051D IC1 SO16
16 470R R90 0402_R
17 47k R13, R14, R15, R16, R17, R18, R19, R20, R45, R46, R47, R48, R49, R50, R51, R52 0402_R
18 6.8pF C32, C33 0402_C
19 8MHz X1 NX5032
20 91k R1, R3, R5, R7, R33, R35, R37, R39 0402_R
21 AMS1117-3.3 IC2 SOT223
22 CORTEX_DEBUG_PTH J17 2X5-PTH-1.27MM
23 EURO_POWER_LOCKFAT-LOCK C36 EURO_PWR_HEADER_LOCK
24 LM4040AIM3-10.0 D3 SOT23
25 MCP4822E-SN U1, U2, U9, U10 SOIC8
26 MCP4922E/SL U5, U6, U13, U14 SO-14
27 MCP6002T-I/SN U3, U4, U11, U12, U17, U18, U19, U20 SOIC8
28 OSHW-LOGOS LOGO1 OSHW-LOGO-S
29 STM32F030C8T6 U21 LQFP48
30 TL072CD U7, U8, U15, U16, U22 SOIC8
31 WQP-PJ301M-12_JACK J1, J2, J3, J4, J5, J6, J7, J8, J9, J10, J11, J12, J13, J14, J15, J16, J18, J19 WQP-PJ301M-12_JACK

View file

@ -0,0 +1,160 @@
"Designator","Mid X","Mid Y","Layer","Rotation"
"C1","34.29","99.06","Bottom",0
"C2","45.09","93.98","Bottom",0
"C3","34.29","80.01","Bottom",0
"C4","41.91","73.66","Bottom",0
"C5","31.75","59.69","Bottom",180
"C6","40.64","30.48","Bottom",0
"C7","35.56","36.83","Bottom",180
"C8","41.91","52.07","Bottom",0
"C9","13.97","87.63","Bottom",180
"C10","13.97","66.04","Bottom",180
"C11","13.97","44.45","Bottom",180
"C12","13.97","22.86","Bottom",180
"C13","67.31","36.20","Bottom",180
"C14","66.04","57.79","Bottom",180
"C15","66.67","98.43","Bottom",180
"C16","64.77","79.38","Bottom",180
"C17","16.51","82.55","Bottom",90
"C18","16.51","60.96","Bottom",90
"C19","18.41","90.17","Bottom",90
"C20","18.41","68.58","Bottom",90
"C21","18.41","46.99","Bottom",90
"C22","18.41","25.40","Bottom",90
"C23","16.51","39.37","Bottom",90
"C24","16.51","17.78","Bottom",90
"C25","41.91","8.89","Bottom",270
"C26","52.07","21.59","Bottom",0
"C27","48.26","21.59","Bottom",180
"C28","44.45","37.47","Bottom",270
"C29","56.52","28.58","Bottom",180
"C30","45.72","27.30","Bottom",0
"C31","46.99","50.80","Bottom",0
"C32","17.78","14.61","Bottom",180
"C33","7.62","13.34","Bottom",180
"C34","12.70","9.53","Bottom",180
"C35","7.62","14.61","Bottom",0
"C37","66.04","10.16","Bottom",0
"C38","66.04","6.35","Bottom",180
"C39","33.02","3.81","Bottom",90
"C40","18.41","6.35","Bottom",90
"C41","43.18","3.81","Bottom",270
"C42","33.02","7.62","Bottom",0
"D1","65.41","13.34","Bottom",180
"D2","65.41","3.18","Bottom",0
"D3","20.32","2.54","Bottom",180
"IC1","50.16","58.42","Bottom",270
"IC2","38.10","5.08","Bottom",270
"R1","3.81","89.54","Bottom",180
"R2","3.81","90.81","Bottom",180
"R3","13.97","90.17","Bottom",0
"R4","13.97","91.44","Bottom",0
"R5","3.81","67.95","Bottom",180
"R6","3.81","69.22","Bottom",180
"R7","13.97","68.58","Bottom",0
"R8","13.97","69.85","Bottom",0
"R9","3.81","88.27","Bottom",180
"R10","13.97","88.90","Bottom",0
"R11","3.81","66.67","Bottom",180
"R12","13.97","67.31","Bottom",0
"R13","45.09","97.79","Bottom",0
"R14","34.29","96.52","Bottom",180
"R15","34.29","95.25","Bottom",180
"R16","45.09","95.25","Bottom",0
"R17","41.91","77.47","Bottom",0
"R18","31.75","76.84","Bottom",180
"R19","31.75","74.30","Bottom",180
"R20","41.91","76.20","Bottom",0
"R21","34.29","93.98","Bottom",180
"R22","31.75","75.56","Bottom",0
"R23","45.09","99.06","Bottom",0
"R24","45.09","96.52","Bottom",180
"R25","34.29","97.79","Bottom",180
"R26","41.91","78.74","Bottom",0
"R27","41.91","74.93","Bottom",180
"R28","31.75","78.11","Bottom",180
"R29","22.23","13.97","Bottom",270
"R30","6.35","9.53","Bottom",90
"R31","24.77","13.97","Bottom",270
"R32","5.08","9.53","Bottom",90
"R33","3.81","46.36","Bottom",180
"R34","3.81","47.63","Bottom",180
"R35","13.97","46.99","Bottom",0
"R36","13.97","48.26","Bottom",0
"R37","3.81","24.77","Bottom",180
"R38","3.81","26.04","Bottom",180
"R39","13.97","25.40","Bottom",0
"R40","13.97","26.67","Bottom",0
"R41","3.81","45.09","Bottom",180
"R42","13.97","45.72","Bottom",0
"R43","3.81","23.50","Bottom",180
"R44","13.97","24.13","Bottom",0
"R45","41.91","55.88","Bottom",0
"R46","31.75","55.25","Bottom",180
"R47","31.75","53.98","Bottom",180
"R48","40.64","34.29","Bottom",0
"R49","30.48","33.66","Bottom",180
"R50","30.48","31.12","Bottom",180
"R51","41.91","53.34","Bottom",0
"R52","40.64","33.02","Bottom",0
"R53","41.91","54.61","Bottom",0
"R54","31.75","52.71","Bottom",180
"R55","40.64","31.75","Bottom",0
"R56","30.48","32.38","Bottom",180
"R57","41.91","57.15","Bottom",0
"R58","40.64","35.56","Bottom",0
"R59","31.75","56.52","Bottom",180
"R60","30.48","34.93","Bottom",180
"R61","23.50","13.97","Bottom",270
"R62","26.04","13.97","Bottom",270
"R63","3.81","9.53","Bottom",90
"R64","2.54","9.53","Bottom",90
"R65","22.23","90.17","Bottom",270
"R66","20.96","90.17","Bottom",270
"R67","22.23","68.58","Bottom",270
"R68","20.96","68.58","Bottom",270
"R69","22.23","46.99","Bottom",270
"R70","20.96","46.99","Bottom",270
"R71","22.23","25.40","Bottom",270
"R72","20.96","25.40","Bottom",270
"R73","19.69","90.17","Bottom",90
"R74","19.69","68.58","Bottom",90
"R75","19.69","46.99","Bottom",90
"R76","19.69","25.40","Bottom",90
"R77","1.27","82.55","Bottom",90
"R78","1.27","60.96","Bottom",90
"R79","1.27","39.37","Bottom",90
"R80","1.27","17.78","Bottom",90
"R81","2.54","82.55","Bottom",270
"R82","2.54","60.96","Bottom",270
"R83","2.54","39.37","Bottom",270
"R84","2.54","17.78","Bottom",270
"R85","58.42","31.12","Bottom",180
"R86","27.30","13.97","Bottom",270
"R87","7.62","9.53","Bottom",90
"R88","17.78","13.34","Bottom",180
"R89","7.62","12.07","Bottom",180
"R90","20.32","6.35","Bottom",180
"U1","60.96","96.52","Bottom",270
"U2","60.96","76.20","Bottom",270
"U3","8.89","90.17","Bottom",90
"U4","8.89","68.58","Bottom",90
"U5","50.16","86.36","Bottom",270
"U6","50.16","72.39","Bottom",270
"U7","39.37","96.52","Bottom",270
"U8","36.83","76.20","Bottom",270
"U9","62.23","54.61","Bottom",270
"U10","64.77","33.02","Bottom",270
"U11","8.89","46.99","Bottom",90
"U12","8.89","25.40","Bottom",90
"U13","50.16","45.09","Bottom",270
"U14","50.16","13.97","Bottom",270
"U15","36.83","54.61","Bottom",270
"U16","35.56","33.02","Bottom",270
"U17","20.32","85.09","Bottom",0
"U18","20.32","63.50","Bottom",0
"U19","20.32","41.91","Bottom",0
"U20","20.32","20.32","Bottom",0
"U21","50.16","33.02","Bottom",180
"U22","12.70","12.70","Bottom",270
"X1","50.16","24.13","Bottom",0
1 Designator Mid X Mid Y Layer Rotation
2 C1 34.29 99.06 Bottom 0
3 C2 45.09 93.98 Bottom 0
4 C3 34.29 80.01 Bottom 0
5 C4 41.91 73.66 Bottom 0
6 C5 31.75 59.69 Bottom 180
7 C6 40.64 30.48 Bottom 0
8 C7 35.56 36.83 Bottom 180
9 C8 41.91 52.07 Bottom 0
10 C9 13.97 87.63 Bottom 180
11 C10 13.97 66.04 Bottom 180
12 C11 13.97 44.45 Bottom 180
13 C12 13.97 22.86 Bottom 180
14 C13 67.31 36.20 Bottom 180
15 C14 66.04 57.79 Bottom 180
16 C15 66.67 98.43 Bottom 180
17 C16 64.77 79.38 Bottom 180
18 C17 16.51 82.55 Bottom 90
19 C18 16.51 60.96 Bottom 90
20 C19 18.41 90.17 Bottom 90
21 C20 18.41 68.58 Bottom 90
22 C21 18.41 46.99 Bottom 90
23 C22 18.41 25.40 Bottom 90
24 C23 16.51 39.37 Bottom 90
25 C24 16.51 17.78 Bottom 90
26 C25 41.91 8.89 Bottom 270
27 C26 52.07 21.59 Bottom 0
28 C27 48.26 21.59 Bottom 180
29 C28 44.45 37.47 Bottom 270
30 C29 56.52 28.58 Bottom 180
31 C30 45.72 27.30 Bottom 0
32 C31 46.99 50.80 Bottom 0
33 C32 17.78 14.61 Bottom 180
34 C33 7.62 13.34 Bottom 180
35 C34 12.70 9.53 Bottom 180
36 C35 7.62 14.61 Bottom 0
37 C37 66.04 10.16 Bottom 0
38 C38 66.04 6.35 Bottom 180
39 C39 33.02 3.81 Bottom 90
40 C40 18.41 6.35 Bottom 90
41 C41 43.18 3.81 Bottom 270
42 C42 33.02 7.62 Bottom 0
43 D1 65.41 13.34 Bottom 180
44 D2 65.41 3.18 Bottom 0
45 D3 20.32 2.54 Bottom 180
46 IC1 50.16 58.42 Bottom 270
47 IC2 38.10 5.08 Bottom 270
48 R1 3.81 89.54 Bottom 180
49 R2 3.81 90.81 Bottom 180
50 R3 13.97 90.17 Bottom 0
51 R4 13.97 91.44 Bottom 0
52 R5 3.81 67.95 Bottom 180
53 R6 3.81 69.22 Bottom 180
54 R7 13.97 68.58 Bottom 0
55 R8 13.97 69.85 Bottom 0
56 R9 3.81 88.27 Bottom 180
57 R10 13.97 88.90 Bottom 0
58 R11 3.81 66.67 Bottom 180
59 R12 13.97 67.31 Bottom 0
60 R13 45.09 97.79 Bottom 0
61 R14 34.29 96.52 Bottom 180
62 R15 34.29 95.25 Bottom 180
63 R16 45.09 95.25 Bottom 0
64 R17 41.91 77.47 Bottom 0
65 R18 31.75 76.84 Bottom 180
66 R19 31.75 74.30 Bottom 180
67 R20 41.91 76.20 Bottom 0
68 R21 34.29 93.98 Bottom 180
69 R22 31.75 75.56 Bottom 0
70 R23 45.09 99.06 Bottom 0
71 R24 45.09 96.52 Bottom 180
72 R25 34.29 97.79 Bottom 180
73 R26 41.91 78.74 Bottom 0
74 R27 41.91 74.93 Bottom 180
75 R28 31.75 78.11 Bottom 180
76 R29 22.23 13.97 Bottom 270
77 R30 6.35 9.53 Bottom 90
78 R31 24.77 13.97 Bottom 270
79 R32 5.08 9.53 Bottom 90
80 R33 3.81 46.36 Bottom 180
81 R34 3.81 47.63 Bottom 180
82 R35 13.97 46.99 Bottom 0
83 R36 13.97 48.26 Bottom 0
84 R37 3.81 24.77 Bottom 180
85 R38 3.81 26.04 Bottom 180
86 R39 13.97 25.40 Bottom 0
87 R40 13.97 26.67 Bottom 0
88 R41 3.81 45.09 Bottom 180
89 R42 13.97 45.72 Bottom 0
90 R43 3.81 23.50 Bottom 180
91 R44 13.97 24.13 Bottom 0
92 R45 41.91 55.88 Bottom 0
93 R46 31.75 55.25 Bottom 180
94 R47 31.75 53.98 Bottom 180
95 R48 40.64 34.29 Bottom 0
96 R49 30.48 33.66 Bottom 180
97 R50 30.48 31.12 Bottom 180
98 R51 41.91 53.34 Bottom 0
99 R52 40.64 33.02 Bottom 0
100 R53 41.91 54.61 Bottom 0
101 R54 31.75 52.71 Bottom 180
102 R55 40.64 31.75 Bottom 0
103 R56 30.48 32.38 Bottom 180
104 R57 41.91 57.15 Bottom 0
105 R58 40.64 35.56 Bottom 0
106 R59 31.75 56.52 Bottom 180
107 R60 30.48 34.93 Bottom 180
108 R61 23.50 13.97 Bottom 270
109 R62 26.04 13.97 Bottom 270
110 R63 3.81 9.53 Bottom 90
111 R64 2.54 9.53 Bottom 90
112 R65 22.23 90.17 Bottom 270
113 R66 20.96 90.17 Bottom 270
114 R67 22.23 68.58 Bottom 270
115 R68 20.96 68.58 Bottom 270
116 R69 22.23 46.99 Bottom 270
117 R70 20.96 46.99 Bottom 270
118 R71 22.23 25.40 Bottom 270
119 R72 20.96 25.40 Bottom 270
120 R73 19.69 90.17 Bottom 90
121 R74 19.69 68.58 Bottom 90
122 R75 19.69 46.99 Bottom 90
123 R76 19.69 25.40 Bottom 90
124 R77 1.27 82.55 Bottom 90
125 R78 1.27 60.96 Bottom 90
126 R79 1.27 39.37 Bottom 90
127 R80 1.27 17.78 Bottom 90
128 R81 2.54 82.55 Bottom 270
129 R82 2.54 60.96 Bottom 270
130 R83 2.54 39.37 Bottom 270
131 R84 2.54 17.78 Bottom 270
132 R85 58.42 31.12 Bottom 180
133 R86 27.30 13.97 Bottom 270
134 R87 7.62 9.53 Bottom 90
135 R88 17.78 13.34 Bottom 180
136 R89 7.62 12.07 Bottom 180
137 R90 20.32 6.35 Bottom 180
138 U1 60.96 96.52 Bottom 270
139 U2 60.96 76.20 Bottom 270
140 U3 8.89 90.17 Bottom 90
141 U4 8.89 68.58 Bottom 90
142 U5 50.16 86.36 Bottom 270
143 U6 50.16 72.39 Bottom 270
144 U7 39.37 96.52 Bottom 270
145 U8 36.83 76.20 Bottom 270
146 U9 62.23 54.61 Bottom 270
147 U10 64.77 33.02 Bottom 270
148 U11 8.89 46.99 Bottom 90
149 U12 8.89 25.40 Bottom 90
150 U13 50.16 45.09 Bottom 270
151 U14 50.16 13.97 Bottom 270
152 U15 36.83 54.61 Bottom 270
153 U16 35.56 33.02 Bottom 270
154 U17 20.32 85.09 Bottom 0
155 U18 20.32 63.50 Bottom 0
156 U19 20.32 41.91 Bottom 0
157 U20 20.32 20.32 Bottom 0
158 U21 50.16 33.02 Bottom 180
159 U22 12.70 12.70 Bottom 270
160 X1 50.16 24.13 Bottom 0

View file

@ -0,0 +1,55 @@
Version 4
SHEET 1 880 680
WIRE 288 32 192 32
WIRE 192 128 192 32
WIRE 208 128 192 128
WIRE 288 144 288 32
WIRE 288 144 272 144
WIRE 176 160 112 160
WIRE 208 160 176 160
WIRE 176 224 176 160
WIRE 224 224 176 224
WIRE 304 288 304 224
WIRE 304 288 272 288
WIRE 112 304 112 160
FLAG -80 128 0
FLAG 16 128 0
FLAG -48 272 0
FLAG -80 48 12V
FLAG 16 48 -12V
FLAG -48 192 3V3
FLAG 272 368 0
FLAG 112 384 0
FLAG 240 176 0
FLAG 240 112 3V3
SYMBOL voltage -80 32 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V1
SYMATTR Value 12
SYMBOL voltage 16 32 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V2
SYMATTR Value -12
SYMBOL voltage -48 176 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V3
SYMATTR Value 3.3
SYMBOL Opamps\\UniversalOpamp2 240 144 R0
SYMATTR InstName U1
SYMBOL voltage 272 272 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V5
SYMATTR Value SINE(4 5 20)
SYMBOL res 96 288 R0
SYMATTR InstName R1
SYMATTR Value 100k
SYMBOL res 320 208 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R3
SYMATTR Value 200k
TEXT -112 296 Left 2 !.tran 2

View file

@ -0,0 +1,126 @@
Version 4
SHEET 1 880 680
WIRE 32 -192 16 -192
WIRE 160 -176 160 -208
WIRE 160 -176 80 -176
WIRE 160 -160 160 -176
WIRE 320 -160 256 -160
WIRE -48 -112 -48 -192
WIRE -48 -112 -64 -112
WIRE 32 -112 32 -192
WIRE 96 -112 32 -112
WIRE 320 -112 320 -160
WIRE 368 -112 320 -112
WIRE 368 -96 368 -112
WIRE 240 -64 160 -64
WIRE 256 -64 240 -64
WIRE 240 -16 240 -64
WIRE 304 -16 240 -16
WIRE 608 -16 576 -16
WIRE -64 16 -64 -112
WIRE -48 16 -64 16
WIRE 304 16 304 -16
WIRE 32 32 32 -112
WIRE 32 32 16 32
WIRE 288 32 208 32
WIRE -48 48 -64 48
WIRE -64 64 -64 48
WIRE 80 80 80 -176
WIRE 144 80 144 32
WIRE 144 80 80 80
WIRE 208 80 144 80
WIRE 288 96 288 32
WIRE 288 96 272 96
WIRE 304 96 288 96
WIRE 464 96 304 96
WIRE 576 96 576 -16
WIRE 576 96 544 96
WIRE 592 96 576 96
WIRE 208 112 192 112
WIRE 688 112 688 -16
WIRE 688 112 656 112
WIRE 704 112 688 112
WIRE 192 128 192 112
WIRE 592 128 560 128
WIRE 560 144 560 128
WIRE -144 176 -144 16
FLAG -16 0 +12V
FLAG -16 64 -12V
FLAG -64 64 0
FLAG 240 64 +12V
FLAG 240 128 -12V
FLAG -256 144 0
FLAG -256 64 +12V
FLAG -368 64 -12V
FLAG -368 144 0
FLAG -144 256 0
FLAG 368 -96 0
FLAG 160 -288 +12V
FLAG 192 128 0
FLAG 560 144 0
FLAG 624 144 -12V
FLAG 624 80 +12V
SYMBOL TL072 -16 -32 R0
SYMATTR InstName U1
SYMBOL TL072 240 32 R0
SYMATTR InstName U2
SYMBOL voltage -256 48 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V1
SYMATTR Value 12
SYMBOL voltage -368 48 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V2
SYMATTR Value -12
SYMBOL voltage -144 160 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V3
SYMATTR Value PULSE(0 10 0 .25 .25 0 .5)
SYMBOL npn 96 -160 R0
SYMATTR InstName Q1
SYMATTR Value BC847C
SYMBOL npn 320 -160 M0
SYMATTR InstName Q2
SYMATTR Value BC847C
SYMBOL res 144 -304 R0
SYMATTR InstName R1
SYMATTR Value 10Meg
SYMBOL res 48 -128 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R2
SYMATTR Value 1k
SYMBOL res 288 0 R0
SYMATTR InstName R3
SYMATTR Value 1k5
SYMBOL cap 208 16 R90
WINDOW 0 0 32 VBottom 2
WINDOW 3 32 32 VTop 2
SYMATTR InstName C1
SYMATTR Value 100p
SYMBOL cap 16 -208 R90
WINDOW 0 0 32 VBottom 2
WINDOW 3 32 32 VTop 2
SYMATTR InstName C2
SYMATTR Value 100p
SYMBOL res -48 0 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R4
SYMATTR Value 100k
SYMBOL TL072 624 48 R0
SYMATTR InstName U3
SYMBOL res 704 -32 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R5
SYMATTR Value 100k
SYMBOL res 560 80 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R6
SYMATTR Value 10k
TEXT -402 280 Left 2 !.tran 1s

View file

@ -0,0 +1,100 @@
Version 4
SHEET 1 880 680
WIRE 96 -240 -48 -240
WIRE -48 -224 -48 -240
WIRE -112 -176 -240 -176
WIRE 256 -48 240 -48
WIRE 336 -48 320 -48
WIRE 240 -16 240 -48
WIRE -112 0 -112 -176
WIRE 48 0 -112 0
WIRE 96 16 96 -240
WIRE 160 16 96 16
WIRE 48 32 48 0
WIRE 128 32 48 32
WIRE 240 32 240 -16
WIRE 256 32 240 32
WIRE 336 32 336 -48
WIRE 160 64 160 16
WIRE 240 64 240 32
WIRE 128 128 128 32
WIRE 160 128 128 128
WIRE 160 144 160 128
WIRE 240 144 240 64
WIRE 256 144 240 144
WIRE 336 160 336 32
WIRE 336 160 320 160
WIRE 256 176 240 176
WIRE 240 192 240 176
FLAG -16 272 0
FLAG 80 272 0
FLAG 80 144 0
FLAG -16 144 0
FLAG -16 64 +12V
FLAG 80 64 -12V
FLAG -16 192 -10V
FLAG 80 192 +3V3
FLAG 288 192 0
FLAG 288 128 +3V3
FLAG 240 192 0
FLAG 160 -16 -10V
FLAG -48 -144 0
FLAG -240 -96 0
SYMBOL voltage -16 48 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V1
SYMATTR Value 12
SYMBOL voltage 80 48 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V2
SYMATTR Value -12
SYMBOL voltage -16 176 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V3
SYMATTR Value -10
SYMBOL voltage 80 176 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V4
SYMATTR Value 3.3
SYMBOL res 352 16 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R1
SYMATTR Value 33k
SYMBOL res 256 48 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R2
SYMATTR Value 100k
SYMBOL res 256 128 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R3
SYMATTR Value 100k
SYMBOL res 256 -32 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R4
SYMATTR Value 200k
SYMBOL voltage -48 -240 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V5
SYMATTR Value SINE(0 2.5 10)
SYMBOL voltage -240 -192 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V6
SYMATTR Value SINE(0 2.5 10000)
SYMBOL Opamps\\LT1677 288 96 R0
SYMATTR InstName U2
SYMBOL cap 320 -64 R90
WINDOW 0 0 32 VBottom 2
WINDOW 3 32 32 VTop 2
SYMATTR InstName C1
SYMATTR Value 4.7n
TEXT -274 296 Left 2 !.tran 2

View file

@ -0,0 +1,42 @@
Circuit: * Z:\home\jhbruhn\eurorack\eurorack-dev-environment\eurorack-modules\stereo_mix\hardware_design\pcb\simulation\Draft4.asc
Instance "m:u1:6": Length shorter than recommended for a level 2 MOSFET.
Instance "m:u1:5": Length shorter than recommended for a level 2 MOSFET.
Direct Newton iteration failed to find .op point. (Use ".option noopiter" to skip.)
Starting Gmin stepping
Gmin = 10
Gmin = 1.07374
Gmin = 0.115292
Gmin = 0.0123794
Gmin = 0.00132923
Gmin = 0.000142725
Gmin = 1.5325e-005
Gmin = 1.6455e-006
Gmin = 1.76685e-007
Gmin = 1.89714e-008
Gmin = 2.03704e-009
Gmin = 2.18725e-010
Gmin = 2.34854e-011
Gmin = 2.52173e-012
Gmin = 2.70769e-013
Gmin = 0
Gmin stepping succeeded in finding the operating point.
Date: Sat Mar 14 19:22:02 2020
Total elapsed time: 0.109 seconds.
tnom = 27
temp = 27
method = modified trap
totiter = 2512
traniter = 2090
tranpoints = 1046
accept = 1046
rejected = 0
matrix size = 43
fillins = 28
solver = Normal
Matrix Compiler1: 3.38 KB object code size 0.9/0.4/[0.2]
Matrix Compiler2: 4.15 KB object code size 0.5/0.6/[0.3]

View file

@ -0,0 +1,75 @@
Version 4
SymbolType CELL
LINE Normal -16 64 -48 64
LINE Normal -32 40 -16 64
LINE Normal -48 64 -32 40
LINE Normal -16 40 -48 40
LINE Normal -16 96 -48 96
LINE Normal -32 120 -16 96
LINE Normal -48 96 -32 120
LINE Normal -16 120 -48 120
LINE Normal -32 1 -32 161
LINE Normal 96 80 -32 1
LINE Normal -32 161 96 80
LINE Normal 32 17 32 41
LINE Normal 32 145 32 121
LINE Normal 41 56 34 56
LINE Normal 37 60 37 52
LINE Normal 40 107 32 107
LINE Normal 224 97 224 64
LINE Normal 240 64 224 76
LINE Normal 224 85 240 96
LINE Normal 212 81 224 81
LINE Normal 237 90 240 96
LINE Normal 233 96 237 90
LINE Normal 240 96 233 96
LINE Normal 252 112 252 79
LINE Normal 268 79 252 91
LINE Normal 252 100 268 111
LINE Normal 240 96 252 96
LINE Normal 265 105 268 111
LINE Normal 261 111 265 105
LINE Normal 268 111 261 111
LINE Normal 268 64 268 79
LINE Normal 240 64 268 64
LINE Normal -16 25 -24 25
LINE Normal -12 136 -23 136
LINE Normal -17 142 -17 132
LINE Normal -32 16 -64 16
LINE Normal -32 80 -64 80
LINE Normal -32 144 -64 144
LINE Normal 129 73 129 51
CIRCLE Normal 130 64 97 96
CIRCLE Normal 160 65 127 97
WINDOW 0 83 -7 Left 2
WINDOW 3 75 138 Left 2
SYMATTR Value LM13700
SYMATTR Prefix X
SYMATTR Value2 HALF13700
SYMATTR Description Operational transconductance amplifier
PIN -64 80 NONE 8
PINATTR PinName LIN
PINATTR SpiceOrder 1
PIN -64 144 NONE 8
PINATTR PinName INP
PINATTR SpiceOrder 2
PIN -64 16 NONE 8
PINATTR PinName INN
PINATTR SpiceOrder 3
PIN 128 48 NONE 8
PINATTR PinName IAB
PINATTR SpiceOrder 4
PIN 160 80 NONE 8
PINATTR SpiceOrder 5
PIN 32 16 NONE 8
PINATTR PinName VCC
PINATTR SpiceOrder 6
PIN 32 144 NONE 8
PINATTR PinName VSS
PINATTR SpiceOrder 7
PIN 208 80 NONE 8
PINATTR PinName BIN
PINATTR SpiceOrder 8
PIN 272 112 NONE 8
PINATTR PinName BUF
PINATTR SpiceOrder 9

View file

@ -0,0 +1,165 @@
.SUBCKT MCP6001 1 2 3 4 5
* | | | | |
* | | | | Output
* | | | Negative Supply
* | | Positive Supply
* | Inverting Input
* Non-inverting Input
*
********************************************************************************
* Software License Agreement *
* *
* The software supplied herewith by Microchip Technology Incorporated (the *
* "Company") is intended and supplied to you, the Company's customer, for use *
* soley and exclusively on Microchip products. *
* *
* The software is owned by the Company and/or its supplier, and is protected *
* under applicable copyright laws. All rights are reserved. Any use in *
* violation of the foregoing restrictions may subject the user to criminal *
* sanctions under applicable laws, as well as to civil liability for the *
* breach of the terms and conditions of this license. *
* *
* THIS SOFTWARE IS PROVIDED IN AN "AS IS" CONDITION. NO WARRANTIES, WHETHER *
* EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED *
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO *
* THIS SOFTWARE. THE COMPANY SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR *
* SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. *
********************************************************************************
*
* Macromodel for the MCP6001/2/4 op amp family:
* MCP6001, MCP6001R, MCP6001U, MCP6002, MCP6004
*
* Revision History:
* REV A: 21-Jun-02, Created model
* REV B: 16-Jul-02, Improved output stage
* REV C: 03-Jan-03, Added MCP6001
* REV D: 19-Aug-06, Added over temperature, improved output stage,
* fixed overdrive recovery time
* REV E: 27-Jul-07, Updated output impedance for better model stability w/cap load
* REV F: 09-Jul-12, Added MCP6001R, MCP6001U
*
* Recommendations:
* Use PSPICE (other simulators may require translation)
* For a quick, effective design, use a combination of: data sheet
* specs, bench testing, and simulations with this macromodel
* For high impedance circuits, set GMIN=100F in .OPTIONS
*
* Supported:
* Typical performance for temperature range (-40 to 125) degrees Celsius
* DC, AC, Transient, and Noise analyses.
* Most specs, including: offsets, DC PSRR, DC CMRR, input impedance,
* open loop gain, voltage ranges, supply current, ... , etc.
* Temperature effects for Ibias, Iquiescent, Iout short circuit
* current, Vsat on both rails, Slew Rate vs. Temp and P.S.
*
* Not Supported:
* Some Variation in specs vs. Power Supply Voltage
* Monte Carlo (Vos, Ib), Process variation
* Distortion (detailed non-linear behavior)
* Behavior outside normal operating region
*
* Input Stage
V10 3 10 -500M
R10 10 11 6.90K
R11 10 12 6.90K
C11 11 12 0.2p
C12 1 0 6.00P
E12 71 14 POLY(4) 20 0 21 0 26 0 27 0 1.00M 20.1 20.1 1 1
G12 1 0 62 0 1m
M12 11 14 15 15 NMI L=2.00U W=42.0U
M14 12 2 15 15 NMI L=2.00U W=42.0U
G14 2 0 62 0 1m
C14 2 0 6.00P
I15 15 4 50.0U
V16 16 4 -300M
GD16 16 1 TABLE {V(16,1)} ((-100,-1p)(0,0)(1m,1n)(2m,1m)(3m,1))
V13 3 13 -300M
GD13 2 13 TABLE {V(2,13)} ((-100,-1p)(0,0)(1m,1n)(2m,1m)(3m,1))
R70 1 0 20.6T
R71 2 0 20.6T
R72 1 2 20T
I80 1 2 0.5p
*
* Noise, PSRR, and CMRR
I20 21 20 423U
D20 20 0 DN1
D21 0 21 DN1
G26 0 26 POLY(1) 3 4 110U -49U
R26 26 0 1
G27 0 27 POLY(2) 1 0 2 0 -440U 39.7U 39.7U
R27 27 0 1
*
* Open Loop Gain, Slew Rate
G30 0 30 POLY(1) 12 11 0 1
R30 30 0 1K
G31 0 31 POLY(1) 3 4 86 5.25
R31 31 0 1 TC=2.8m
GD31 30 31 TABLE {V(30,31)} ((-11,-1)(-10,-10n)(0,0)(1m,1000))
G32 32 0 POLY(1) 3 4 113.7 3.5
R32 32 0 1 TC=2.65m
GD32 30 32 TABLE {V(30,32)} ((-1m,-1000)(0,0)(10,10n)(11,1))
G33 0 33 30 0 1m
R33 33 0 1k
G34 0 34 33 0 425M
R34 34 0 1K
C34 34 0 74U
G37 0 37 34 0 1m
R37 37 0 1K
C37 37 0 41.6P
G38 0 38 37 0 1m
R38 39 0 1K
L38 38 39 100U
E38 35 0 38 0 1
G35 33 0 TABLE {V(35,3)} ((-1,-1n)(0,0)(16,1n))(16.1,1))
G36 33 0 TABLE {V(35,4)} ((-16.1,-1)((-16,-1n)(0,0)(1,1n))
*
* Output Stage
R80 50 0 100MEG
G50 0 50 57 96 2
R58 57 96 0.50
R57 57 0 750
C58 5 0 2.00P
G57 0 57 POLY(3) 3 0 4 0 35 0 0 0.67M 0.67M 1.5M
GD55 55 57 TABLE {V(55,57)} ((-2m,-1)(-1m,-1m)(0,0)(10,1n))
GD56 57 56 TABLE {V(57,56)} ((-2m,-1)(-1m,-1m)(0,0)(10,1n))
E55 55 0 POLY(2) 3 0 51 0 -0.7m 1 -40.0M
E56 56 0 POLY(2) 4 0 52 0 1.2m 1 -37.0M
R51 51 0 1k
R52 52 0 1k
GD51 50 51 TABLE {V(50,51)} ((-10,-1n)(0,0)(1m,1m)(2m,1))
GD52 50 52 TABLE {V(50,52)} ((-2m,-1)(-1m,-1m)(0,0)(10,1n))
G53 3 0 POLY(1) 51 0 -49U 1M
G54 0 4 POLY(1) 52 0 -49U -1M
*
* Current Limit
G99 96 5 99 0 1
R98 0 98 1 TC=-2.8M,2.63U
G97 0 98 TABLE { V(96,5) } ((-11.0,-10.0M)(-1.00M,-9.9M)(0,0)(1.00M,9.9M)(11.0,10.0M))
E97 99 0 VALUE { V(98)*((V(3)-V(4))*359M + 310M)}
D98 4 5 DESD
D99 5 3 DESD
*
* Temperature / Voltage Sensitive IQuiscent
R61 0 61 100 TC 3.11M 4.51U
G61 3 4 61 0 1
G60 0 61 TABLE {V(3, 4)}
+ ((0,0)(900M,0.0106U)(1.00,0.20U)(1.3,0.63U)
+ (1.5,0.66U)(1.6,1.06U)(5.5,1.10U))
*
* Temp Sensitive offset voltage
I73 0 70 DC 1uA
R74 0 70 1 TC=2
E75 1 71 70 0 1
*
* Temp Sensistive IBias
I62 0 62 DC 1uA
R62 0 62 REXP 58.2u
* Voltage on R62 used for G12, G14 in input stage
*
* Models
.MODEL NMI NMOS
.MODEL DESD D N=1 IS=1.00E-15
.MODEL DL D N=1 IS=1F
.MODEL DN1 D IS=1P KF=146E-18 AF=1
.MODEL REXP RES TCE=10.1
.ENDS MCP6001

View file

@ -0,0 +1,35 @@
Version 4
SymbolType CELL
LINE Normal -32 32 32 64
LINE Normal -32 96 32 64
LINE Normal -32 32 -32 96
LINE Normal -28 48 -20 48
LINE Normal -28 80 -20 80
LINE Normal -24 84 -24 76
LINE Normal 0 32 0 48
LINE Normal 0 96 0 80
LINE Normal 4 44 12 44
LINE Normal 8 40 8 48
LINE Normal 4 84 12 84
WINDOW 0 16 32 Left 0
WINDOW 3 16 96 Left 0
SYMATTR Value TL072
SYMATTR Prefix X
SYMATTR SpiceModel TL072.sub
SYMATTR Value2 TL072
SYMATTR Description TL072 LOW NOISE DUAL JFET OPAMP
PIN -32 80 NONE 0
PINATTR PinName In+
PINATTR SpiceOrder 1
PIN -32 48 NONE 0
PINATTR PinName In-
PINATTR SpiceOrder 2
PIN 0 32 NONE 0
PINATTR PinName V+
PINATTR SpiceOrder 3
PIN 0 96 NONE 0
PINATTR PinName V-
PINATTR SpiceOrder 4
PIN 32 64 NONE 0
PINATTR PinName OUT
PINATTR SpiceOrder 5

View file

@ -0,0 +1,42 @@
* TL072 OPERATIONAL AMPLIFIER "MACROMODEL" SUBCIRCUIT
* CREATED USING PARTS RELEASE 4.01 ON 06/16/89 AT 13:08
* (REV N/A) SUPPLY VOLTAGE: +/-15V
* CONNECTIONS: NON-INVERTING INPUT
* | INVERTING INPUT
* | | POSITIVE POWER SUPPLY
* | | | NEGATIVE POWER SUPPLY
* | | | | OUTPUT
* | | | | |
.SUBCKT TL072 1 2 3 4 5
*
C1 11 12 3.498E-12
C2 6 7 15.00E-12
DC 5 53 DX
DE 54 5 DX
DLP 90 91 DX
DLN 92 90 DX
DP 4 3 DX
EGND 99 0 POLY(2) (3,0) (4,0) 0 .5 .5
FB 7 99 POLY(5) VB VC VE VLP VLN 0 4.715E6 -5E6 5E6 5E6 -5E6
GA 6 0 11 12 282.8E-6
GCM 0 6 10 99 8.942E-9
ISS 3 10 DC 195.0E-6
HLIM 90 0 VLIM 1K
J1 11 2 10 JX
J2 12 1 10 JX
R2 6 9 100.0E3
RD1 4 11 3.536E3
RD2 4 12 3.536E3
RO1 8 5 150
RO2 7 99 150
RP 3 4 2.143E3
RSS 10 99 1.026E6
VB 9 0 DC 0
VC 3 53 DC 2.200
VE 54 4 DC 2.200
VLIM 7 8 DC 0
VLP 91 0 DC 25
VLN 0 92 DC 25
.MODEL DX D(IS=800.0E-18)
.MODEL JX PJF(IS=15.00E-12 BETA=270.1E-6 VTO=-1)
.ENDS

View file

@ -0,0 +1,152 @@
Version 4
SHEET 1 1208 680
WIRE 304 32 272 32
WIRE 624 32 608 32
WIRE 96 144 80 144
WIRE 176 144 176 64
WIRE 192 144 192 32
WIRE 192 144 176 144
WIRE 208 144 192 144
WIRE 384 144 384 32
WIRE 384 144 368 144
WIRE 400 144 384 144
WIRE 528 144 528 32
WIRE 528 144 480 144
WIRE 544 144 528 144
WIRE 304 160 304 32
WIRE 304 160 272 160
WIRE 624 160 624 32
WIRE 624 160 608 160
WIRE 208 176 192 176
WIRE 544 176 528 176
WIRE 80 192 80 144
WIRE 192 192 192 176
WIRE 368 256 368 144
WIRE 528 304 528 176
WIRE 576 304 528 304
WIRE 320 352 240 352
WIRE 240 416 240 352
WIRE 256 416 240 416
WIRE 320 432 320 352
WIRE 400 432 320 432
WIRE 256 448 224 448
WIRE 112 496 112 480
WIRE 224 496 224 448
WIRE 224 496 112 496
WIRE 112 512 112 496
WIRE 480 528 480 432
WIRE 464 608 480 528
WIRE 576 608 576 304
WIRE 576 608 464 608
FLAG -192 208 0
FLAG -192 352 0
FLAG -80 352 0
FLAG -192 128 +3V3
FLAG 240 128 +3V3
FLAG -192 272 -12V
FLAG -80 272 +12V
FLAG 240 192 0
FLAG 80 272 0
FLAG -80 208 0
FLAG -80 128 -10V
FLAG 96 64 -10V
FLAG 192 192 0
FLAG 576 192 -12V
FLAG 576 128 +12V
FLAG 368 336 0
FLAG 112 592 0
FLAG -352 128 +2V048
FLAG -352 208 0
FLAG 112 400 +2V048
FLAG 656 304 0
FLAG 288 464 -12V
FLAG 288 400 +12V
SYMBOL voltage -80 256 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V1
SYMATTR Value 12
SYMBOL voltage -192 256 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V2
SYMATTR Value -12
SYMBOL voltage -192 112 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V3
SYMATTR Value 3.3
SYMBOL voltage 80 176 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V4
SYMATTR Value SINE(0 10 20 0 0 0 0)
SYMBOL res 192 128 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R1
SYMATTR Value 100k
SYMBOL res 288 16 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R2
SYMATTR Value 15k
SYMBOL res 192 48 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R3
SYMATTR Value 91k
SYMBOL voltage -80 112 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V5
SYMATTR Value -10
SYMBOL Opamps\\LT1677 240 96 R0
SYMATTR InstName U1
SYMBOL TL072 576 96 R0
SYMATTR InstName U2
SYMBOL res 496 128 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R4
SYMATTR Value 47k
SYMBOL res 624 16 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R5
SYMATTR Value 300k
SYMBOL res 400 16 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R9
SYMATTR Value {X}
SYMBOL res 384 352 R180
WINDOW 0 36 76 Left 2
WINDOW 3 36 40 Left 2
SYMATTR InstName R10
SYMATTR Value {100k-X}
SYMBOL res 96 384 R0
SYMATTR InstName R12
SYMATTR Value {X}
SYMBOL res 96 496 R0
SYMATTR InstName R13
SYMATTR Value {100k-X}
SYMBOL voltage -352 112 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V6
SYMATTR Value 2.048
SYMBOL res 496 416 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R14
SYMATTR Value 47k
SYMBOL res 672 288 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R7
SYMATTR Value 100k
SYMBOL TL072 288 368 R0
SYMATTR InstName U3
TEXT -96 216 Left 2 !.tran 1
TEXT 720 80 Left 2 !.step param X .001k 99.999k 10k

View file

@ -0,0 +1,39 @@
.SUBCKT HALF13700 LIN INP INN IAB OUT VCC VSS BIN BUF
QN1 IAB VN2B VSS npnv 3
QN2 VN2B VN2B VSS npnv 3
QN3 VN3C IAB VN2B npnv 3
QN4 VP3B INN VN3C npnv 3
QN5 VP6B INP VN3C npnv 3
QN6 LIN LIN INN npnv 3
QN7 LIN LIN INP npnv 3
QN8 VN10B VN9B VSS npnv 3
QN9 VN9B VN9B VSS npnv 3
QN10 OUT VN10B VN9B npnv 3
QN11 VCC BIN VN12B npnv 15
QN12 VN12B VN12B BUF npnv 3
QN13 VCC VN12B BUF npnv 150
QP1 VP3B VP2B VCC pnpl 3
QP2 VP2B VP2B VCC pnpl 3
QP3 VN10B VP3B VP2B pnpl 3
QP4 VP6B VP5B VCC pnpl 3
QP5 VP5B VP5B VCC pnpl 3
QP6 OUT VP6B VP5B pnpl 3
.ends
.MODEL npnv NPN(
*==========================================================
+IS=1.1E-18 NF=1.005 BF=220 VAF=130 IKF=5e-03
+ISE=9.15E-15 NE=2
*==========================================================
+CJE=2E-12 CJC=2E-13 CJS=3E-12 TF=.6E-9 )
.MODEL pnpl PNP(
*==========================================================
+IS=1.1E-18 NF=1.8 BF=5 VAF=170 IKF=6e-03
+ISE=3E-15 NE=3
*==========================================================
+CJE=4E-12 CJC=6E-13 CJS=5E-12 TF=70E-9 )
.end

View file

@ -0,0 +1,704 @@
Version 4
SHEET 1 1880 1252
WIRE 1408 -464 1392 -464
WIRE 1392 -384 1392 -464
WIRE 1472 -384 1472 -464
WIRE 1168 -368 1088 -368
WIRE 928 -288 912 -288
WIRE 1008 -288 928 -288
WIRE 1088 -288 1088 -368
WIRE 1152 -288 1088 -288
WIRE 1232 -288 1232 -368
WIRE 1312 -288 1232 -288
WIRE 1312 -272 1312 -288
WIRE 1360 -272 1312 -272
WIRE 1392 -272 1392 -384
WIRE 1472 -256 1472 -384
WIRE 1472 -256 1456 -256
WIRE 1360 -240 1360 -272
WIRE 1376 -240 1360 -240
WIRE 1392 -240 1376 -240
WIRE 416 -224 416 -336
WIRE 448 -224 416 -224
WIRE 464 -224 448 -224
WIRE 576 -208 576 -336
WIRE 576 -208 528 -208
WIRE 464 -192 416 -192
WIRE 832 -192 768 -192
WIRE 416 -176 416 -192
WIRE 720 -160 640 -160
WIRE 768 -160 768 -192
WIRE 432 -144 384 -144
WIRE 832 -128 832 -192
WIRE 944 -128 928 -128
WIRE 1088 -128 1088 -288
WIRE 1088 -128 1024 -128
WIRE 1120 -128 1088 -128
WIRE 1216 -128 1216 -160
WIRE 832 -112 832 -128
WIRE 928 -112 928 -128
WIRE 1360 -112 1312 -112
WIRE 1312 -96 1312 -112
WIRE 16 -80 0 -80
WIRE 112 -80 96 -80
WIRE 288 -80 288 -112
WIRE 0 -64 0 -80
WIRE 752 -64 720 -64
WIRE 768 -64 752 -64
WIRE 1376 -64 1376 -240
WIRE 1376 -64 1344 -64
WIRE 384 -48 384 -64
WIRE 752 -48 752 -64
WIRE 752 -32 752 -48
WIRE 448 -16 448 -224
WIRE 448 -16 416 -16
WIRE 576 0 576 -208
WIRE 896 0 576 0
WIRE 1072 0 976 0
WIRE 1120 0 1072 0
WIRE -256 32 -304 32
WIRE 912 32 752 32
WIRE 1216 32 1216 0
WIRE -32 48 -96 48
WIRE 144 48 48 48
WIRE 192 48 144 48
WIRE 1360 64 1360 -112
WIRE 1360 64 1344 64
WIRE 288 80 288 48
WIRE 912 80 912 32
WIRE 960 80 912 80
WIRE 960 112 960 80
WIRE 960 112 880 112
WIRE 432 128 432 -144
WIRE -256 144 -256 112
WIRE -256 144 -368 144
WIRE 640 144 640 -160
WIRE 816 144 816 112
WIRE 816 144 640 144
WIRE -256 160 -256 144
WIRE 656 160 656 -112
WIRE 800 160 656 160
WIRE 336 176 304 176
WIRE 368 176 336 176
WIRE 816 176 816 144
WIRE 864 176 816 176
WIRE 944 192 928 192
WIRE 960 192 960 112
WIRE 960 192 944 192
WIRE 1344 192 1344 144
WIRE 1344 192 1248 192
WIRE 800 208 800 160
WIRE 800 208 784 208
WIRE 864 208 848 208
WIRE -368 224 -368 144
WIRE -352 224 -368 224
WIRE -256 240 -288 240
WIRE 80 240 -256 240
WIRE 208 240 160 240
WIRE 336 240 336 176
WIRE 624 240 480 240
WIRE 848 240 848 208
WIRE -480 256 -720 256
WIRE -352 256 -400 256
WIRE 304 256 304 176
WIRE 304 256 272 256
WIRE 624 256 624 240
WIRE 720 256 720 208
WIRE 720 256 704 256
WIRE 800 256 800 208
WIRE 1248 256 1248 192
WIRE 208 272 192 272
WIRE 704 272 704 256
WIRE 704 272 656 272
WIRE 192 304 192 272
WIRE 480 304 480 240
WIRE 528 304 480 304
WIRE 1120 304 976 304
WIRE 1184 304 1120 304
WIRE 624 320 624 256
WIRE 624 320 592 320
WIRE -400 336 -400 256
WIRE 528 336 480 336
WIRE 656 336 656 272
WIRE 704 336 656 336
WIRE 160 352 160 240
WIRE 336 352 336 304
WIRE 336 352 160 352
WIRE 432 352 432 224
WIRE 432 352 336 352
WIRE 800 352 800 256
WIRE 800 352 768 352
WIRE 704 368 688 368
WIRE 976 368 976 304
WIRE 1024 368 976 368
WIRE 1120 384 1120 304
WIRE 1120 384 1088 384
WIRE 944 400 944 192
WIRE 1024 400 944 400
WIRE 1392 400 1344 400
WIRE 1504 400 1456 400
WIRE 688 416 688 368
WIRE -720 432 -720 256
WIRE -480 432 -720 432
WIRE 480 432 480 336
WIRE 480 432 464 432
WIRE 528 432 480 432
WIRE 1248 480 1248 352
WIRE 1248 480 976 480
WIRE 1344 480 1344 400
WIRE 1504 480 1504 400
WIRE 1504 480 1424 480
WIRE -720 496 -720 432
WIRE 608 512 608 432
WIRE 624 512 608 512
WIRE 1344 544 1344 480
WIRE 1200 560 1168 560
WIRE 1344 592 1344 544
WIRE 1392 592 1344 592
WIRE 944 608 944 400
WIRE 944 608 864 608
WIRE 1024 608 1024 560
WIRE 1056 608 1024 608
WIRE 1504 608 1504 480
WIRE 1504 608 1456 608
WIRE 1392 624 1376 624
WIRE 416 640 416 528
WIRE 448 640 416 640
WIRE 464 640 448 640
WIRE 1104 640 1104 560
WIRE 1120 640 1104 640
WIRE 1200 640 1200 560
WIRE 1376 640 1376 624
WIRE 1376 640 1200 640
WIRE 576 656 576 528
WIRE 576 656 528 656
WIRE 1056 656 1056 608
WIRE 1056 656 1024 656
WIRE -352 672 -368 672
WIRE -256 672 -272 672
WIRE 464 672 416 672
WIRE 1360 672 1312 672
WIRE 416 688 416 672
WIRE 1056 704 1056 656
WIRE 432 720 384 720
WIRE 944 736 928 736
WIRE 1104 736 1104 640
WIRE 1104 736 1024 736
WIRE 1120 736 1104 736
WIRE 1216 736 1216 704
WIRE -480 752 -480 432
WIRE -384 752 -400 752
WIRE 928 752 928 736
WIRE 1312 768 1312 752
WIRE 16 784 0 784
WIRE 112 784 96 784
WIRE 288 784 288 752
WIRE -384 800 -384 752
WIRE -368 800 -368 672
WIRE -368 800 -384 800
WIRE -352 800 -368 800
WIRE 0 800 0 784
WIRE 1376 800 1376 640
WIRE 1376 800 1344 800
WIRE -256 816 -256 672
WIRE -256 816 -288 816
WIRE -208 816 -256 816
WIRE 384 816 384 800
WIRE -368 832 -400 832
WIRE -352 832 -368 832
WIRE 448 848 448 640
WIRE 448 848 416 848
WIRE 576 864 576 656
WIRE 896 864 576 864
WIRE 1072 864 976 864
WIRE 1120 864 1072 864
WIRE -368 880 -368 832
WIRE 1216 896 1216 864
WIRE -32 912 -96 912
WIRE 144 912 48 912
WIRE 192 912 144 912
WIRE 1360 928 1360 672
WIRE 1456 928 1360 928
WIRE 288 944 288 912
WIRE 1360 944 1360 928
WIRE 432 992 432 720
WIRE 1296 992 1232 992
WIRE 1232 1008 1232 992
WIRE 1232 1008 1088 1008
WIRE 336 1040 304 1040
WIRE 368 1040 336 1040
WIRE 864 1040 864 608
WIRE 992 1040 864 1040
WIRE 1088 1056 1088 1008
WIRE 1136 1056 1088 1056
WIRE 1232 1072 1232 1008
WIRE 1232 1072 1200 1072
WIRE 992 1088 992 1040
WIRE 1136 1088 992 1088
WIRE -208 1104 -208 816
WIRE 80 1104 -208 1104
WIRE 208 1104 160 1104
WIRE 336 1104 336 1040
WIRE 304 1120 304 1040
WIRE 304 1120 272 1120
WIRE 208 1136 192 1136
WIRE 192 1168 192 1136
WIRE 1360 1168 1360 1040
WIRE 160 1216 160 1104
WIRE 336 1216 336 1168
WIRE 336 1216 160 1216
WIRE 432 1216 432 1088
WIRE 432 1216 336 1216
FLAG -112 -368 0
FLAG -112 -448 +12V
FLAG -224 -448 -12V
FLAG -224 -368 0
FLAG 0 800 0
FLAG 112 848 +12V
FLAG 288 752 +12V
FLAG 496 624 +12V
FLAG 240 1088 +12V
FLAG 288 944 -12V
FLAG 496 688 -12V
FLAG 240 1152 -12V
FLAG -96 992 0
FLAG 144 992 0
FLAG 192 1168 0
FLAG 416 688 0
FLAG 0 -64 0
FLAG 112 -16 +12V
FLAG 288 -112 +12V
FLAG 496 -240 +12V
FLAG 240 224 +12V
FLAG 288 80 -12V
FLAG 496 -176 -12V
FLAG 240 288 -12V
FLAG -96 128 0
FLAG 144 128 0
FLAG 192 304 0
FLAG -720 576 0
FLAG 416 -176 0
FLAG -320 208 +12V
FLAG -320 272 -12V
FLAG -304 32 0
FLAG -224 -96 0
FLAG -224 -176 5V
FLAG -480 336 5V
FLAG -320 784 +12V
FLAG -320 848 -12V
FLAG -368 960 0
FLAG -480 832 5V
FLAG 928 752 0
FLAG 1216 704 +12V
FLAG 1424 576 +12V
FLAG 1168 1040 +12V
FLAG 1216 896 -12V
FLAG 1424 640 -12V
FLAG 1168 1104 -12V
FLAG 1072 944 0
FLAG 928 -112 0
FLAG 1216 -160 +12V
FLAG 1056 352 +12V
FLAG 1216 32 -12V
FLAG 1424 -224 -12V
FLAG 1056 416 -12V
FLAG 1072 80 0
FLAG 624 592 0
FLAG 1168 192 -12V
FLAG 560 288 +12V
FLAG 560 352 -12V
FLAG 736 320 +12V
FLAG 736 384 -12V
FLAG 896 160 +12V
FLAG 896 224 -12V
FLAG 832 -128 0
FLAG 720 -240 +12V
FLAG 848 240 0
FLAG 688 416 0
FLAG 976 480 0
FLAG 1424 -288 +12V
FLAG 1312 -384 0
FLAG 832 -288 +12V
FLAG 384 432 +12V
FLAG 928 -208 -12V
FLAG 1360 1168 0
FLAG 1536 928 -12V
FLAG 1264 544 0
FLAG 944 656 +12V
FLAG 1056 784 -12V
SYMBOL voltage -112 -464 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V1
SYMATTR Value 12
SYMBOL voltage -224 -464 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V2
SYMATTR Value -12
SYMBOL LM13700 256 768 R0
SYMATTR InstName U4
SYMBOL res 208 768 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 -16 15 VTop 2
SYMATTR InstName R10
SYMATTR Value 22
SYMBOL res 112 768 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R11
SYMATTR Value 470
SYMBOL res 208 832 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R12
SYMATTR Value 12k
SYMBOL voltage -96 896 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V5
SYMATTR Value SINE(0 5 400)
SYMBOL res 64 896 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R13
SYMATTR Value 21k
SYMBOL res 160 1008 R180
WINDOW 0 36 76 Left 2
WINDOW 3 36 40 Left 2
SYMATTR InstName R14
SYMATTR Value 510
SYMBOL TL072 496 592 R0
SYMATTR InstName U5
SYMBOL TL072 240 1056 R0
SYMATTR InstName U6
SYMBOL res 176 1088 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R15
SYMATTR Value 6k8
SYMBOL res 592 512 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R16
SYMATTR Value 560
SYMBOL res 512 512 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R17
SYMATTR Value 15k
SYMBOL res 368 704 R0
WINDOW 0 42 52 Left 2
SYMATTR InstName R18
SYMATTR Value 7k2
SYMBOL pnp 368 992 R0
SYMATTR InstName Q2
SYMATTR Value 2N3906
SYMBOL diode 320 1104 R0
SYMATTR InstName D2
SYMATTR Value 1N4148
SYMBOL LM13700 256 -96 R0
SYMATTR InstName U1
SYMBOL res 208 -96 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 -19 21 VTop 2
SYMATTR InstName R1
SYMATTR Value 22
SYMBOL res 112 -96 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R2
SYMATTR Value 470
SYMBOL res 208 -32 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R3
SYMATTR Value 12k
SYMBOL voltage -96 32 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V3
SYMATTR Value SINE(0 5 200)
SYMBOL res 64 32 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R4
SYMATTR Value 21k
SYMBOL res 160 144 R180
WINDOW 0 36 76 Left 2
WINDOW 3 36 40 Left 2
SYMATTR InstName R5
SYMATTR Value 510
SYMBOL TL072 496 -272 R0
SYMATTR InstName U2
SYMBOL TL072 240 192 R0
SYMATTR InstName U3
SYMBOL res 176 224 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R6
SYMATTR Value 6k8
SYMBOL res 592 -352 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R7
SYMATTR Value 560
SYMBOL res 512 -352 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R8
SYMATTR Value 15k
SYMBOL res 368 -160 R0
WINDOW 0 42 52 Left 2
SYMATTR InstName R9
SYMATTR Value 7k2
SYMBOL pnp 368 128 R0
SYMATTR InstName Q1
SYMATTR Value 2N3906
SYMBOL diode 320 240 R0
SYMATTR InstName D1
SYMATTR Value 1N4148
SYMBOL voltage -720 480 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V4
SYMATTR Value PULSE(-5 5 0 .5 .5 0 1)
SYMBOL TL072 -320 176 R0
SYMATTR InstName U7
SYMBOL res -384 240 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R19
SYMATTR Value 100k
SYMBOL res -384 320 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R20
SYMATTR Value 100k
SYMBOL res -272 144 R0
SYMATTR InstName R21
SYMATTR Value 200k
SYMBOL res -272 16 R0
SYMATTR InstName R22
SYMATTR Value 200k
SYMBOL voltage -224 -192 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V6
SYMATTR Value 5V
SYMBOL TL072 -320 752 R0
SYMATTR InstName U8
SYMBOL res -384 736 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R23
SYMATTR Value 100k
SYMBOL res -384 816 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R24
SYMATTR Value 100k
SYMBOL res -256 656 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R25
SYMATTR Value 100k
SYMBOL res -384 864 R0
SYMATTR InstName R26
SYMATTR Value 100k
SYMBOL LM13700 1184 720 R0
SYMATTR InstName U9
SYMBOL res 1216 624 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 -16 15 VTop 2
SYMATTR InstName R27
SYMATTR Value 47k
SYMBOL res 1040 720 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R28
SYMATTR Value 680
SYMBOL res 992 848 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R30
SYMATTR Value 100k
SYMBOL res 1088 960 R180
WINDOW 0 36 76 Left 2
WINDOW 3 36 40 Left 2
SYMATTR InstName R31
SYMATTR Value 680
SYMBOL TL072 1424 544 R0
SYMATTR InstName U10
SYMBOL TL072 1168 1008 R0
SYMATTR InstName U11
SYMBOL res 1360 528 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R33
SYMATTR Value 68k
SYMBOL res 1440 464 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R34
SYMATTR Value 100k
SYMBOL res 1296 656 R0
WINDOW 0 42 52 Left 2
SYMATTR InstName R35
SYMATTR Value 15k
SYMBOL pnp 1296 944 R0
SYMATTR InstName Q3
SYMATTR Value 2N3906
SYMBOL cap 1456 384 R90
WINDOW 0 0 32 VBottom 2
WINDOW 3 32 32 VTop 2
SYMATTR InstName C3
SYMATTR Value 22p
SYMBOL LM13700 1184 -144 R0
SYMATTR InstName U12
SYMBOL res 1040 -144 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R37
SYMATTR Value 680
SYMBOL res 992 -16 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R39
SYMATTR Value 100k
SYMBOL res 1088 96 R180
WINDOW 0 36 76 Left 2
WINDOW 3 36 40 Left 2
SYMATTR InstName R40
SYMATTR Value 680
SYMBOL TL072 1424 -320 R0
SYMATTR InstName U13
SYMBOL TL072 1056 320 R0
SYMATTR InstName U14
SYMBOL pnp 1184 256 R0
SYMATTR InstName Q4
SYMATTR Value 2N3906
SYMBOL voltage 624 496 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName V8
SYMATTR Value PULSE(0 10 0 .25 .25 0 .5)
SYMBOL res 1264 176 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R38
SYMATTR Value 680k
SYMBOL res 1328 48 R0
SYMATTR InstName R41
SYMATTR Value 15k
SYMBOL TL072 560 256 R0
SYMATTR InstName U15
SYMBOL TL072 736 288 R0
SYMATTR InstName U16
SYMBOL TL072 896 128 R0
SYMATTR InstName U17
SYMBOL res 720 240 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R42
SYMATTR Value 1Meg
SYMBOL res 816 240 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R43
SYMATTR Value 10k
SYMBOL cap 784 192 R90
WINDOW 0 0 32 VBottom 2
WINDOW 3 32 32 VTop 2
SYMATTR InstName C1
SYMATTR Value 100p
SYMBOL npn 656 -160 R0
SYMATTR InstName Q5
SYMATTR Value BC847C
SYMBOL npn 832 -160 M0
SYMATTR InstName Q6
SYMATTR Value BC847C
SYMBOL res 704 -256 R0
SYMATTR InstName R44
SYMATTR Value 10Meg
SYMBOL res 736 -64 R0
SYMATTR InstName R45
SYMATTR Value 1k5
SYMBOL cap 880 96 R90
WINDOW 0 0 32 VBottom 2
WINDOW 3 32 32 VTop 2
SYMATTR InstName C2
SYMATTR Value 100p
SYMBOL res 1488 -400 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R46
SYMATTR Value 100k
SYMBOL res 1408 -400 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R47
SYMATTR Value 68k
SYMBOL res 1104 -304 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R36
SYMATTR Value 1Meg
SYMBOL res 928 -304 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R48
SYMATTR Value 50k
SYMBOL res 1248 -304 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R49
SYMATTR Value 47k
SYMBOL cap 1232 -384 R90
WINDOW 0 0 32 VBottom 2
WINDOW 3 32 32 VTop 2
SYMATTR InstName C4
SYMATTR Value 100p
SYMBOL res 624 416 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R50
SYMATTR Value 1k
SYMBOL res 480 416 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R51
SYMATTR Value 1Meg
SYMBOL res 912 -304 R0
SYMATTR InstName R52
SYMATTR Value 50k
SYMBOL cap 1472 -480 R90
WINDOW 0 0 32 VBottom 2
WINDOW 3 32 32 VTop 2
SYMATTR InstName C5
SYMATTR Value 22p
SYMBOL res 1552 912 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R32
SYMATTR Value 680k
SYMBOL cap 1168 544 R90
WINDOW 0 0 32 VBottom 2
WINDOW 3 32 32 VTop 2
SYMATTR InstName C6
SYMATTR Value 100p
SYMBOL res 1040 640 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R29
SYMATTR Value 50k
SYMBOL res 1040 688 R0
SYMATTR InstName R53
SYMATTR Value 50k
SYMBOL res 1120 544 R90
WINDOW 0 0 56 VBottom 2
WINDOW 3 32 56 VTop 2
SYMATTR InstName R54
SYMATTR Value 1Meg
TEXT -146 -584 Left 2 !.tran 1
TEXT -576 -504 Left 2 !.include lm13700.sub

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

43
stereo_mix_old/makefile Normal file
View file

@ -0,0 +1,43 @@
# Copyright 2012 Emilie Gillet.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
VERSION = 0.1
MCU_NAME = 328
TARGET = stereo_mix
PACKAGES = avrlib avrlib/devices stereo_mix
RESOURCES = stereo_mix/resources
PROGRAMMER = atmelice_isp
LFUSE = ef
HFUSE = d8
EFUSE = 05
LOCK = ff
include avrlib/makefile.mk
include $(DEP_FILE)
# Rule for building the firmware update file
wav: $(TARGET_BIN)
python avr_audio_bootloader/fsk/encoder.py \
-s 40000 -b 16 -n 8 -z 4 -p 128 -g 128 -k 10 \
$(TARGET_BIN)
bootstrap_all:
make -f stereo_mix/makefile
make -f stereo_mix/bootloader/makefile
make -f stereo_mix/bootloader/makefile fuses
$(AVRDUDE) -B 1 $(AVRDUDE_COM_OPTS) $(AVRDUDE_ISP_OPTS) \
-U flash:w:build/stereo_mix/stereo_mix.hex:i \
-U flash:w:build/stereo_mix_bootloader/stereo_mix_bootloader.hex:i \
-U lock:w:0xff:m

View file

View file

@ -0,0 +1,29 @@
import numpy as np
lookup_tables = []
lookup_tables_32 = []
ADC_RESOLUTION = 512
OUTPUT_RESOLUTION = 4096
# linear to exponential conversion
values = np.linspace(0, 1, num=ADC_RESOLUTION)
values = np.power(values, 2) * OUTPUT_RESOLUTION
lookup_tables.append(('linear_to_exp', values))
# Left pan Lookup table
l_pan = np.linspace(0, 1, num=ADC_RESOLUTION)
r_pan = np.linspace(0, 1, num=ADC_RESOLUTION)
l_pan = np.sin(l_pan * (np.pi / 2.0))
r_pan = np.cos(r_pan * (np.pi / 2.0))
l_pan = np.round(l_pan * OUTPUT_RESOLUTION)
r_pan = np.round(r_pan * OUTPUT_RESOLUTION)
lookup_tables.append(('left_sin_pan', l_pan))
lookup_tables.append(('right_cos_pan', r_pan))

View file

@ -0,0 +1,64 @@
#!/usr/bin/python2.5
#
# Copyright 2012 Emilie Gillet.
#
# Author: Emilie Gillet (emilie.o.gillet@gmail.com)
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# -----------------------------------------------------------------------------
#
# Master resources file.
header = """// Copyright 2019 Jan-Henrik Bruhn.
//
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
// -----------------------------------------------------------------------------
//
// Resources definitions.
//
// Automatically generated with:
// make resources
"""
namespace = 'stereo_mix'
target = 'stereo_mix'
modifier = 'PROGMEM'
types = ['uint8_t', 'uint16_t']
includes = """
#include "avrlib/avrlib.h"
#include <avr/pgmspace.h>
"""
import lookup_tables
create_specialized_manager = False
resources = [
('dummy', 'string', 'STR_RES', 'prog_char', str, True),
(lookup_tables.lookup_tables,
'lookup_table', 'LUT_RES', 'prog_uint16_t', int, True),
(lookup_tables.lookup_tables_32,
'lookup_table_32', 'LUT_RES', 'prog_uint32_t', int, True)
]

View file

@ -0,0 +1,91 @@
#include "avrlib/adc.h"
#include "avrlib/avrlib.h"
#include "avrlib/boot.h"
#include "avrlib/devices/mcp492x.h"
#include "avrlib/gpio.h"
#include "avrlib/spi.h"
#include "avrlib/time.h"
#include "avrlib/watchdog_timer.h"
#include "stereo_mix/resources.h"
using namespace avrlib;
using namespace stereo_mix;
typedef SpiMaster<NumberedGpio<0>, MSB_FIRST, 2> dac1Spi;
typedef Dac<dac1Spi, BUFFERED_REFERENCE, 1> Dac1;
typedef SpiMaster<NumberedGpio<1>, MSB_FIRST, 2> dac2Spi;
typedef Dac<dac2Spi, BUFFERED_REFERENCE, 1> Dac2;
typedef SpiMaster<NumberedGpio<2>, MSB_FIRST, 2> dac3Spi;
typedef Dac<dac3Spi, BUFFERED_REFERENCE, 1> Dac3;
typedef SpiMaster<NumberedGpio<3>, MSB_FIRST, 2> dac4Spi;
typedef Dac<dac4Spi, BUFFERED_REFERENCE, 1> Dac4;
typedef SpiMaster<NumberedGpio<4>, MSB_FIRST, 2> oDac1Spi;
typedef Dac<oDac1Spi, BUFFERED_REFERENCE, 0> oDac1;
typedef SpiMaster<NumberedGpio<5>, MSB_FIRST, 2> oDac2Spi;
typedef Dac<oDac2Spi, BUFFERED_REFERENCE, 0> oDac2;
typedef SpiMaster<NumberedGpio<6>, MSB_FIRST, 2> oDac3Spi;
typedef Dac<oDac3Spi, BUFFERED_REFERENCE, 0> oDac3;
typedef SpiMaster<NumberedGpio<7>, MSB_FIRST, 2> oDac4Spi;
typedef Dac<oDac4Spi, BUFFERED_REFERENCE, 0> oDac4;
typedef AdcInputScanner AnalogInputs;
#define NUM_CHANNELS 4
uint32_t volume[NUM_CHANNELS];
uint16_t pan[NUM_CHANNELS * 2];
int main(void)
{
Boot(true);
Dac1::Init();
Dac2::Init();
Dac3::Init();
Dac4::Init();
oDac1::Init();
oDac2::Init();
oDac3::Init();
oDac4::Init();
AnalogInputs::Init();
AnalogInputs::set_num_inputs(8);
#define WRITE(DAC, ODAC, N) \
DAC::Write((volume[N] * pan[N * NUM_CHANNELS]) >> 12, 0); \
ODAC::Write((volume[N] * pan[N * NUM_CHANNELS]) >> 12, 0); \
DAC::Write((volume[N] * pan[N * NUM_CHANNELS + 1]) >> 12, 1); \
ODAC::Write((volume[N] * pan[N * NUM_CHANNELS + 1]) >> 12, 1);
while (true) {
ResetWatchdog();
int i = AnalogInputs::current_pin() % NUM_CHANNELS;
volume[i] = pgm_read_word_near(lut_res_linear_to_exp + (AnalogInputs::Read(i) >> 1));
pan[i * NUM_CHANNELS] = pgm_read_word(lut_res_left_sin_pan + (AnalogInputs::Read(i + NUM_CHANNELS) >> 1));
pan[i * NUM_CHANNELS + 1] = pgm_read_word(lut_res_right_cos_pan + (AnalogInputs::Read(i + NUM_CHANNELS) >> 1));
switch (i) {
case 0:
WRITE(Dac1, oDac1, i);
break;
case 1:
WRITE(Dac2, oDac2, i);
break;
case 2:
WRITE(Dac3, oDac3, i);
break;
case 3:
WRITE(Dac4, oDac4, i);
break;
}
AnalogInputs::Scan();
}
}
TIMER_0_TICK
{
TickSystemClock();
}