Você está na página 1de 16

Filtro Digital Sequenced Wah ou A Maldio

longo artigo sobre o LFO melhor


Low Frequency osciladores so bastante comuns em pedais de efeitos, e so usados para
modular tudo do coro para atrasar a pedais tremolo . H uma grande variedade de LFO projeta l
fora baseado em op-amp ou transistor desenhos tradicionais, mas eles so muito limitante. Ao
limitar, quero dizer que voc implement-las e obter um LFO muito tradicional, ele rampas para
cima e para baixo . Claro que voc tem controles de profundidade e velocidade para variar o
LFO, mas ainda um assunto puramente up / down. Se voc quiser comear a fantasia e
adicionar sequenciamento ou outras formas de onda mais interessantes, voc precisa criar,
depurar e construir circuitos com muito mais componentes.
No me interpretem mal - h uma srie de fantsticos circuitos LFO l fora, mas eu encontrei-me
procura de algo diferente. Enquanto eu refletia sobre o projeto para um verdadeiramente flexvel
LFO / sequenciador, lembrei-me do trabalho que fiz no Console Punk Arduino , um
microcontrolador baseado tom seqenciador. Gostei muito desse projeto porque ele me permitiu
usar minhas habilidades de programao (que superam minhas habilidades muitas vezes
incompetentes eletrnicos). Eu poderia escrever cdigo, test-lo, ajust-lo, modific-lo, tudo com
o computador.
Essa experincia levou a uma abordagem diferente para um projeto LFO: um controlado por um
microcontrolador.
Aqui est o que eu queria realizar:
LFO ajustvel Padro, com controles de velocidade e profundidade

Onda senoidal e sada de onda quadrada

Sada de valores aleatrios

Controle Sequencer, ou seja, selecionar valores especficos para vrias etapas e t-lo de
reproduo

Controle do usurio em tempo real sobre diversos parmetros

Experimentao com compsitos e bastardizations do acima.

Anncios do OnlineBrowserAdvertisingOpes de anncios
The Big Picture
O microcontrolador (MCU) responsvel pelo envio de tenses variveis ao longo do tempo (tal
como a altura dos tons tradicional) a um efeito que pode ser modulado por uma tenso, ou um vaso
de um efeito analgico tradicional, que pode ser substitudo com um optoisolator / vactrol. Aqui est
um diagrama de blocos:

1. esquerda, podemos escrever um cdigo que diz o MCU para tenses de sada com base
nas variveis do programa. Temos tambm o MCU ler vrios potes e switches conectados a
ele. Isso nos d o controle em tempo real sobre os parmetros de nosso programa de LFO.

2. Uma vez que o programa est pronto, ns envi-lo para o MCU. Se compila e executa
corretamente, estamos prontos para passar para a prxima etapa. Se no,
vamos voltarpara o computador e depurar o problema.

3. A MCU envia ento uma srie de tenses para a entrada do efeito anlogo. Podemos fazer
isso diretamente com uma tenso de controle, ou ter a MCU dirigir um optoisolator / vactrol
para agir como um potencimetro.

4. A partir da, a guitarra conecta o efeito e, em seguida, um amplificador e estamos prontos
para ouvir os resultados.
Uma nota importante: Se voc novo para MCUs, voc
pode ter a impresso de que um laptop ou
desktop computador sempre tem que ser parte da
equao. Em outras palavras, voc no poderia fazer um
pedal de efeito real, porque voc sempre tem que
carrinho em torno de seu laptop.
No verdade! O computador onde voc escreve,
testar e afinar seu cdigo. Depois de ter baixado o cdigo
para o MCU, pode desligar o laptop, furar o MCU em um
gabinete, juntamente com as tomadas e interruptores
tradicionais, e nunca mais ter de voltar a ligar o
computador. Mesmo que o MCU perde energia, ele vai
manter a sua programao.
Ento, ter MCUs como parte de um projeto pedais / pedal
muito vivel.
Digite o Arduino, Stage Left
Como eu j tinha um conhecimento bsico de programao do
microcontrolador Arduino, escolher que para o motor LFO era
simples. Eu tenho algumas placas Arduino no bin partes, ento
vamos embora. Aqui esto algumas das coisas bsicas sobre o
Arduino que o tornam um ajuste muito bom com este projeto:
Bastante baixo custo : Voc pode obter uma placa de
desenvolvimento completo para menos de 40 dlares.

Fcil de programa: O Ardunio inclui um muito simples
software editor de desenvolvimento e uma linguagem Java-
like simplificada

Open Source : Ao contrrio de sistemas proprietrios
fechados, o Arduino open-source. Voc no est preso a
um nico fornecedor ou tecnologia. H toneladas de peas
padro da indstria que voc pode interagir com, e pelo
menos quatro fontes diferentes para Arduino ou placas
Arduino compatveis.

Muita I / 'O, analgica in / out portos, e digitais de entrada /
sada portas, j no conselho.

Saiba mais sobre Arduino
Claro, voc pode usar qualquer MCU, e existem centenas de variaes para escolher. Google o
tema e voc vai encontrar uma vida de aprendizado e diverso pela frente.
MCU Interface com o mundo fsico
Lembre-se o objetivo do projeto de "controle do usurio em tempo real sobre diversos
parmetros"? Bem, em um tradicional programa de computador , voc teria uma tela e um teclado
e um mouse, e interagir com o programa eo computador atravs de coisas como menus e barras
de rolagem, etc. Mas ns queremos uma interface baseada em hardware. Por isso, queremos
definir parmetros com as coisas que gostamos de ver em pedais: potes e switches.
Felizmente, MCUs fazer esta incrivelmente simples. Nossa MCU tem um conjunto de analgico
para digital conversores (ADCs). Eles experimentar uma tenso analgica e transform-lo em um
valor digital que o nosso programa pode ler.
Lendo um Switch
O exemplo mais bsico um switch:

Aqui um timo tutorial sobre como trabalhar com Switches no Arduino.
Ler um potencimetro
Pots so fceis tambm. Basta conectar o pot-se como um divisor de tenso e ter sua sada ir para
um dos ADCs no MCU. Como voc virar o pote, voc variar a tenso indo para o ADC, e seu
programa simplesmente l esse valor:

Para implementar um divisor de tenso com Arduino, conecte lug 1 para o solo, lug 2-1 das
entradas analgicas, e lug 3 a 5 VDC + pino. Em seguida, use uma nica linha de cdigo simples
para ler o valor atual, conforme mostrado no exemplo de cdigo.
A combinao de dispositivos interminvel. Voc pode substituir vasos com resistores
dependentes de luz, ou um joystick ou um localizador de alcance ultra-snica. Do mesmo modo, os
comutadores pode ser substitudo com outros controladores, nem interfaces com outros
microcontroladores ou computadores. Essa uma das belezas de usar um MCU - h muitas
maneiras fceis de interagir com o mundo fsico.
Tudo sobre PWM
A fim de criar um LFO vivel, um dos requisitos fundamentais a seguinte: Eu preciso ter a MCU
enviar uma tenso contnua varivel, que varia ao longo do tempo . Mas o MCU
tradicionalmente um dispositivo binrio / digital. Ele no suporta nativamente uma gama analgico
continuamente varivel, como tenso. Ento, eu estou afundado certo?
No afundado em tudo: PWM para o resgate.
O Arduino, juntamente com a maioria dos MCUs, permite a sada uma tenso varivel. Ele faz isso
atravs do uso de largura de pulso modulao. Eu seria louco de tentar explicar PWM em detalhes
aqui, dado o nmero de excelentes artigos na web , mas basta dizer, o MCU utiliza uma srie de
muito rigor espaados on / off pulsos para simular uma sada analgica. Uso oanalogWrite
() funo para emitir um valor de 0 a 255. Um valor de 0 significa 0 volts na sada LFO, e 255
significa que uma sada da tenso de alimentao completa (5 volts no caso de o Arduino) para o
sada LFO.
Aqui est um grande grfico, roubado da wikipedia, que mostra como uma sada PWM pode
simular uma forma de onda analgica :

A coisa interessante sobre PWM que ele no faz as curvas suaves de sada analgica de tipo
linear. de ligar / desligar em intervalos especficos. Mas podemos obter curvas suavizadas de
PWM, percorrendo valores em um loop:
/ / Hard sada on / off
analogWrite (outPin, 255); / / Hard on (heh,
entendeu?)
delay (100);
analogWrite (outPin, 0); / / Hard off
delay (100)
/ / Uma abordagem mais suave
for (contador = 0; counter <= 255, o contador +
= 1) / / rampa at
{
analogWrite (outPin, contador);
}
for (contador = 255; counter <= 0; contra-= 1)
/ / rampa
{
analogWrite (outPin, contador);
}
O primeiro trecho bate a sada em, faz uma pausa, e ento bate a sada fora. O segundo um
pouco mais sutil, ele gradualmente rampas a tenso acima de 0 a 255, e depois, gradualmente,
rampas de volta para baixo. Ambos os tipos de modulao de sada so teis, e eu vou usar tanto
no cdigo para o meu LFO.
Para ter uma idia melhor de como PWM tenta aproximar / curvas analgicos-y lineares, ver as
formas de onda mostradas na tabela de modos abaixo.
Vamos falar em Cdigo
O corao de fazer este trabalho esquema louco a programao: escrever cdigo para dizer ao
MCU o que fazer. Queremos que o MCU para:
Inicializar corretamente quando ele ligado

Continuamente digitalizar os controles ligados a ele (panelas e switches)

Modificar seu comportamento com base nos controles

Sada de tenses para o pedal de efeitos.
Para criar o LFO mais flexvel, eu decidi criar diferentes modos de LFO. Cada ia utilizar um
algoritmo diferente para modular o LFO de uma maneira diferente. Aqui est o que eu vim acima
com. Cada modo explicado junto com um trecho de cdigo e uma imagem da forma de onda.
Modo Forma de Onda
Chopper
modo The Chopper um disco on / off
onda de sada. Eu simplesmente virar o
LFO full on, aguarde o perodo de
tempo especificado pelo potencimetro
taxa, gire o LFO completo, espere
novamente e repita. O cdigo
simplificado parece com isso:

digitalWrite (PIN_PWMOUT,
HIGH);
atraso (tempo);
digitalWrite (PIN_PWMOUT,
LOW);
atraso (tempo);


Pique suave
Ao modificar o algoritmo de Chopper, eu
posso fazer o chop um pouco mais
suave. Eu fao isso adicionando ramp
up / rampa valores para suavizar a
sada um pouco.


analogWrite (PIN_PWMOUT,
25);
atraso (tempo / 9);
analogWrite (PIN_PWMOUT,
50);
atraso (tempo / 9);
analogWrite (PIN_PWMOUT,
75);
atraso (tempo / 9);
analogWrite (PIN_PWMOUT,
100);
atraso (tempo / 9);
analogWrite (PIN_PWMOUT,
150);
atraso (tempo / 9);
analogWrite (PIN_PWMOUT,
180);
atraso (tempo / 9);
analogWrite (PIN_PWMOUT,
255);
atraso (tempo / 2);


Stairstep
Este modo caminha atravs de um loop,
incrementando a sada LFO tenso por
um pedao de cada vez, levando a um
tipo de escada-passo de onda LFO.

fo r (contador = 0; counter
<= 255; contador + = 25)
{
analogWrite (PIN_PWMOUT,
contador);
atraso (tempo/10);
}
for (contador = 255;
contador> = 0; contador -
= 25)
{
analogWrite (PIN_PWMOUT,
contador);
atraso (tempo/10);
}


Onda de
modo The Wave simula uma onda
senoidal, elevando gradualmente e para
baixo atravs da tenso de sada, com
um intervalo pedao menor.

for (contador = 0; counter
<= 255; contador + = 25)
{
analogWrite (PIN_PWMOUT,
contador);
atraso (tempo/10);
}
for (contador = 255;
contador> = 0; contra-=
25)
{
analogWrite (
PIN_PWMOUT, contador);
atraso (tempo/10);
}


Aleatrio
Random modo utiliza a funo Arduino
aleatrio () para gerar um nmero
aleatrio. Note que eu tento normalizar
esses valores um pouco, eu no quero
um monte de valores "full-off/zero" l
dentro. Lembre-se de obter a funo
Aleatrio para fazer um trabalho
razovel, bem, aleatoriedade, voc
precisa chamar o Randomize function ()
no incio do seu cdigo. No meu caso,
eu definir o valor da semente da tenso
de entrada de uma entrada analgica
no utilizado - a teoria de que no vai
haver algum tipo de rudo em que a
porta no utilizado, e no faria to bom
quanto qualquer uma semente.

/ / Modo aleatrio, obter um nmero
aleatrio entre os limiares
int randNumber = random
(RAND_LOW_THRESHOLD,
RAND_HIGH_THRESHOLD);
analogWrite (PIN_PWMOUT, randNumber);
atraso (tempo / 2);
analogWrite (PIN_PWMOUT, 255 -
randNumber);
atraso (tempo / 2) ;


Frequncia
Este modo uma variao sobre o
modo aleatrio, e realmente parece
muito mais agradvel se voc estiver
procurando por um 'sample e hold' tipo
de sequncia. Como o modo Aleatrio,
que gera nmeros aleatrios, mas ao
invs de apenas mandar esse nmero
aleatrio como um valor de tenso de
sada, ele envia-lo para Paul
Badger funo FrequOut muito cool 's
(), que usa PWM para gerar freqncias
de udio na porta de sada.

int randNumber = random
(ajustar, ajustar * 4);
freqout (randNumber,
tempo);
CheckControls ();


Ajustvel
ajustvel diverso: como modo de
freqncia, ele usa a funo FREQOUT
(), mas em vez de tenses aleatrias,
ele usa um pote para controlar a
frequncia real.

int fixo = analogRead
(PIN_MODETWEAK);
freqout (fixo, tempo /
2);
freqout (1024-fixados,
tempo / 2);


Usurio Sequence
Qual seria o ponto de um dispositivo
baseado no MCU sem um modo de
sequenciador legal.Neste modo, voc
pode especificar o nmero de passos e,
em seguida, conecte um valor
especfico em qualquer um desses
passos. Em seguida, os LFO percorre
os seus valores, no muito diferente dos
circuitos sequenciador usados em
sintetizadores analgicos.

? Pendente


Ver o cdigo-fonte
O Filtro / Efeito Wah
Claro, um LFO por si s intil a menos que seja realmente controlar alguma coisa. Como
mencionado anteriormente, voc pode usar este LFO para controlar todos os tipos de coisas.Para
os meus propsitos com o Filtro Digital Sequenced Wah, eu queria um circuito que iria se
comportar bem como um wah e como um tremolo pseudo. Acontece que o Colorsound Indutor-less
design de Wah, com alguns ajustes, funciona muito bem. Meus modificaes no circuito incluem:
a adio de um tampo JFET na frente do circuito (Q1, etc)

condensadores de acoplamento maiores (C2 e C3)

Uma gama comutvel para os capacitores de ressonncia (SW2, C6A, C6B)

Uma ressonncia sintonizvel, com a adio de um pote (VR4)

Substitua o pote wah com um vactrol VTL5C9
Uma nota importante:
Os esquemas e arte PCB so preliminares e no
verificadas neste momento.


Esquema - Clique na imagem para uma verso maior
Juntando tudo: Interface MCU at Effect

VTL5C9 Datasheet
As duas formas gerais para a interface do LFO a um circuito
esto a utilizar diretamente a tenso de sada LFO (ala
Conntrol tenso), ou para usar um optoisolator para substituir
um potencimetro existente no circuito. Desde que eu estou
usando um circuito que j tem um pot para controlar o wah, a
escolha de uma optoisolater fcil. Eu passei por uma
variedade de optoisolators commerical, o uso de dispositivos
PerkinElmer VACTROL. O que eu liquidada em a
VTL59C. Ele tinha o melhor tempo de resposta e melhor curva
global para o meu circuito especfico.
Para domar um pouco do barulho vindo do MCU antes de
atingir o vactrol, coloquei em um filtro simples que consiste em
R4 e C5. O Vactrol tambm teve um efeito colateral
inesperado - sua latncia ajudou suavizar as speras passos /
picos da sada PWM.
Apenas para fins de exibio
Desde que eu tenho controles de taxa, modo e modo de
ajuste, com certeza seria bom ter o pedal de mostrar o que
o qu. Eu poderia usar indicadores LED tradicionais, mas
que faria underkill srio desde que eu tenho um MCU que
suporta uma porta de sada de srie minha disposio.
Tudo que eu preciso agora um dispositivo que tem uma
entrada serial. Sparkfun Eletrnica cuida dessa parte para
mim. Eles oferecem uma variedade de painis de LCD,
mas o legal que eles adicionar uma placa de entrada
serial pequeno, chamado de SerLCD.Este add-on placa
elimina o tedioso trabalho para obter um display LCD de
interface paralela ao trabalho. Em vez de toda a misria, eu
simplesmente ligar trs fios do LCD para o Arduino e
escrever um pouco de cdigo.

Grandes LCDs de SparkFun
Para ligar o LCD, eu passar os fios a 5VDC +, cho, e TX de srie:

O cdigo de acesso ao LCD um pouco complicado, principalmente porque a documentao
projetado para uso MCU genrica, no especificamente para o Arduino. H tambm uma outra
questo que me fez puxar meu cabelo para os dias: a srie in / out no Arduino compartilhada com
a porta USB. Ento, quando voc carregar o seu programa a partir do computador para o Arduino,
o cdigo objeto abandonada na porta de srie tambm. Isto significa que todos os dados binrio
aleatrio est sendo despejado no LCD como carregado para o microprocessador. Isso pode
deixar o seu LCD em um confuso, e muitas vezes mortos, Estado.
Para contornar esse problema, voc tem duas escolhas. 1) Lembre-se sempre de desligar fios RX
do conselho SerLCD do porto Arduino TX antes de carregar um programa. Isso fcil, mas eu
garanto que voc vai se esquea de faz-lo todas as vezes, e isso significa que voc vai Farkle a
placa LCD, assim como eu fiz mil vezes. Uma melhor abordagem envolve a re-inicializao do LCD
cada vez que seu Ardunio inicia. Aqui est o cdigo de arranque eu uso:
/ / *******************************************
/ / STUFF LCD
/ / beavis udio / mar 2008 / controle / LCD
constantes # define SERLCD_CMD 0xfe # define
SERLCD_XCMD 0x7C / / dezembro 124 # define
SERLCD_CTRLK 0x0B # define SERLCD_CTRLM 0x0D #
define SERLCD_CTRLJ 0x0A # define SERLCD_CLEAR 0
01 # define SERLCD_MOVE1_R 0 14 # define
SERLCD_MOVE1_L 0 10 # define SERLCD_SCROLL_R 0
1C # define SERLCD_SCROLL_L 0 18 # define
SERLCD_DISP_ON 0 0C # define SERLCD_DISP_OFF 0
08 # define SERLCD_UNDERLINE_CURSOR_ON 0 0E #
define SERLCD_UNDERLINE_CURSOR_OFF 0 0C #
define SERLCD_BLINKING_CURSOR_ON 0 0D # define
SERLCD_BLINKING_CURSOR_OFF 0 0C # define
SERLCD_SET_CURSOR_POS 0 80 # define
SERLCD_CURSOR_OFF 0 0C LCD_Clear void
() { Serial.print (254, BYTE); Serial.print
(1, BYTE); } / * LCD_SetBacklight - ajustar o
brilho da luz de fundo int Bright - 128 = mais
baixo, 157 = mais brilhante * / LCD_SetBacklight
void (int brilhante) { / / LCD espera valores
entre 128 e 157 int valor = brilhante +
127; Serial.print (SERLCD_XCMD,
BYTE); Serial.print (valor, BYTE); } LCD_Init
void () { Serial.begin (9600); Serial.print
(SERLCD_XCMD, BYTE); Serial.print
(SERLCD_CTRLM, BYTE); delay (300); LCD_Clear
(); / / Configure a mensagem de inicializao,
esta s precisa ser / / brilhou uma vez / *
Serial.print ("beavis Digital"); Serial.print
(254, BYTE); Serial.print (192,
BYTE); Serial.print ("DSWF 1.0"); srie.
print (SERLCD_XCMD, BYTE); Serial.print
(SERLCD_CTRLJ, BYTE); * / LCD_SetBacklight
(30); } LCD_Newline void () { Serial.print
(254, BYTE); Serial.print (192, BYTE); }



































































Note-se que mesmo com esse cdigo start-up, voc pode precisar de realmente desligar e ligar em
sua placa Arduino (desligue a energia para a placa, esperar dez segundos, reconecte o poder) para
obter o LCD para funcionar corretamente.
Lidar com rudo
Como eu estava desenvolvendo este circuito, foi tranqila como um rato. No LFO sangrar-thru,
no hum ou outro dissabor. Mas isso foi porque o MCU eo filtro Wah estavam cada um em sua
prpria fonte de alimentao. O ran MCU da potncia fornecida pelo cabo USB ligado ao
computador eo Wah foi alimentado pela placa de ensaio alimentado. Todo mundo estava
feliz. Como eu comecei a trabalhar para terminar as coisas, uma tarefa foi executada a coisa toda
fora de uma nica fonte de alimentao. Depois de ligar isso, fiquei chocado: era incrivelmente
barulhenta: vrias frequncias diferentes de zumbido, e um sinal de PWM extremamente audvel
sangramento atravs de. Depois de algumas consultas com os orculos de DIYStompboxes.com,
eu adicionar um monte de filtragem da fonte de alimentao. No esquema, voc ver 100 resistores
ohm polvilhado por toda parte, juntamente com uma tampa grande 470uf. Estes todos contriburam
muito para conseguir o rudo e sangrar-thru para nveis administrveis. Ele ainda no est morto
em silncio, mas eu acredito que uma vez que recebo tudo isso em um PCB e em um gabinete
aterrado, ele vai fazer muito bem.
Ok, chega tolices. Vamos Construir o Damn Thing
Ento, eu tinha este construdo e espalhados por uma mesa inteira: laptop, cabo de interface USB,
MCU, placa de ensaio para MCU, fonte de alimentao, cabos para placa de ensaio principal, placa
de ensaio principal, tomadas de sada, etc Foi divertido, mas no seria realmente apto na minha
pedaleira.

Ento, como faz-lo em um pedal? Uma palavra: planejamento. Fiz os mockups no Visio, ea
medida de cada componente, descobri como ele iria se encaixar em uma caixa, e depois construiu
alguns modelos de papel para testar tudo. O resultado final um gabinete Hammond 1790NS para
segurar tudo. Aqui est o layout at o momento.

PCB para o lado analgico da casa feita e pronta para teste.



Ainda Lotes resta a fazer
At o momento, ainda h muitas coisas para fazer. Precisa gravar uma PCB para o wah filtro, faa
o recinto, e construir tudo. Claro, os obrigatrios vdeo / clips ter que acontecer com.Enquanto
isso, espero que a cobertura aqui pelo menos um pouco interessante.
Concluso e reas de Estudo
O material discutido aqui somente arranha a superfcie. Entre a capacidade de um MCU de gerar
uma srie aparentemente infinita de opes de sada, e o nmero de analgico e digital efeitos que
pode ser modulado por isso, tambm no parece ser um terreno frtil aqui para experimentao.
Se voc quiser saber mais sobre alguns dos temas e tecnologias apresentadas aqui, confira o
seguinte:
Arduino Site Oficial: Saiba mais sobre o hardware e software
Arduino
V l
Bare Bones Board, uma grande Arduino clone de baixo custo V l
Sparkfun: nice loja online de toneladas de MCUs, perifricos e
monitores
V l
LadyAda: mais grandes projetos Arduino V l
Arduino cobertura no Blog Marca V l
Informaes Vactrol da PerkinElmer V l
Outra fonte potencial de LCDs de srie V l
Micro-controlador frum DIY em electro-music.com V l