domingo, 25 de agosto de 2013

Hexaswitch

Projeto Hexaswitch Handmades

Para inaugurar meu blog sobre projetos de áudio, microcontroladores e eletrônica em geral, escolhi esse chaveador de pedais de efeitos que foi desenvolvido a pedido e com a ajuda do pessoal do Fórum Handmades, do qual eu contribuí com a programação do firmware para o PIC 16F877(A) que iria controlar as chaves que iriam ativar ou desativar os pedais, bem como o layout da placa de controle.

A ideia inicial partiu de algumas unidades comerciais que faziam uso de dip switches para programar os presets (grupos de pedais) e era meio limitado em termos de número de presets e sem bancos de presets para aumentar as possibilidades de combinações dos pedais. Assim a melhor opção era usar um microcontrolador para poder controlar e armazenar os presets em memória não volátil (EEPROM). Desenhei então um esquema elétrico para servir de base para o projeto e o desenho final ficou assim:



Opcionalmente pode ser usado para o oscilador um cristal de 4MHz e os capacitores de 22pF auxiliares. Também pode ser usado tanto o 16F877 como  o 16F877A. Depois de várias versões de firmware sendo testados, chegou-se a seguinte versão:

:10000000712883178001840AFF3E031D02286C2893
:10001000031783168C010C1483120C0803178D0A26
:100020006C28030103178C0083168C010C155530C6
:100030008D00AA308D008C148C181C280C11831292
:100040008D0A6C28A301A200FF30A207031CA3079E
:10005000031C6C280330A100DF3030202428A101CC
:10006000E83EA000A109FC30031C3928A0070318B2
:100070003628A0076400A10F362820183F28A01CAE
:100080004328000043280800A2000530A8002308E8
:100090002102031D4D2822082002043003180130DC
:1000A000031902302805031DFF306C281030A8000A
:1000B000A101A001A70CA60C031C64282208A0071C
:1000C00023080318230FA107A10CA00CA50CA40C56
:1000D000A80B5A2824086C28831303138312640086
:1000E00008008316FF3085008601C0308700880134
:1000F0000330890006309F00203084006030831276
:100100008A010220A030840050308A010220103081
:10011000840060308A0101209030840060308A01C0
:1001200001208801C030870086010911BC01031736
:10013000FF308D0003138A010820B8000317FE303A
:100140008D0003138A010820B90064000508003CF3
:100150008A110A12031DAE28B801B901E830A000C7
:100160000330A1003908A30038088A0144208A110D
:100170000A12031DBD288A01A528B80A0319B90A65
:100180000317FF308D00031338088A01122003176C
:10019000FE308D00031339088A01122064008A1191
:1001A0000A128918DB280130A3002C308A01232091
:1001B0008A110A1208223C080F3C8A110A12031CF9
:1001C000FF288A110A12E82086008A110A12FF28E5
:1001D00000308A003C08EF3E03188A0A8200773418
:1001E0007C3439345E34793471346F347434063489
:1001F0001E34383454345C347334673450346400FF
:100200008A110A120918132964008A110A1209199D
:100210000D2909158A110A120E2909110130A300AE
:100220005E308A01232064008A110A12851A272968
:10023000FA308A012220BC0364003C08FF3C8A118A
:100240000A12031D2429BC018A110A12E521640047
:100250008A110A12071B3C29FA308A012220BC0AA3
:1002600064003C08103C8A110A12031D39290F3022
:10027000BC008A110A12E52164008A110A12051ACB
:100280004829FA308A012220BE018A110A12E5218A
:1002900064008A110A1285195529FA308A01222030
:1002A0000130BE008A110A12E52164008A110A1287
:1002B00005196229FA308A0122200230BE008A1113
:1002C0000A12E52164008A110A1285186F29FA3092
:1002D0008A0122200330BE008A110A12E52164003F
:1002E0008A110A1205187C29FA308A01222004306A
:1002F000BE008A110A12E52164008A110A12871BC6
:100300008929FA308A0122200530BE008A110A129A
:10031000E52164003E08003C8A110A12031D92295F
:100320000130870064003E08013C8A110A12031D57
:100330009B290230870064003E08023C8A110A12A1
:10034000031DA4290430870064003E08033C8A1181
:100350000A12031DAD290830870064003E08043CE2
:100360008A110A12031DB6291030870064003E0866
:10037000053C8A110A12031DBF29203087003C0862
:100380000F3C8A110A12031CE3298A110A12CC219C
:1003900086008A110A12E32901308A003C08D33E04
:1003A00003188A0A820077347C3439345E34793415
:1003B00071346F34743406341E34383454345C343D
:1003C0007334673450348A01CE283C08A600A70154
:1003D0001030A200A3018A015620BA002508BB00F4
:1003E0003A083E07BD003D0803178D0003138A013C
:1003F0000820BF0064003C08003C8A110A12031D5B
:10040000022ABF013F08880032308A0122200800FA
:1004100086173C080F3C8A110A12031C2D2A8A11E8
:100420000A12162286008A110A122D2A02308A0028
:100430003C081D3E03188A0A8200F734FC34B934A4
:10044000DE34F934F134EF34F43486349E34B83485
:10045000D434DC34F334E734D03464008A110A1223
:10046000051A432AFA308A01222064008A110A12EE
:100470003F1C3E2A3F108A110A123F2A3F143F18A0
:1004800008143F1C081064008A110A128519592AA1
:10049000FA308A01222064008A110A12BF1C542AF1
:1004A000BF108A110A12552ABF14BF188814BF1C26
:1004B000881064008A110A1205196F2AFA308A011D
:1004C000222064008A110A123F1D6A2A3F118A11F4
:1004D0000A126B2A3F153F1908153F1D08116400C9
:1004E0008A110A128518852AFA308A0122206400AE
:1004F0008A110A12BF1D802ABF118A110A12812A8D
:10050000BF15BF198815BF1D881164008A110A1212
:1005100005189B2AFA308A01222064008A110A12E7
:100520003F1E962A3F128A110A12972A3F163F1A37
:1005300008163F1E081264008A110A12871BB12A8E
:10054000FA308A01222064008A110A12BF1EAC2AE6
:10055000BF128A110A12AD2ABF16BF1A8816BF1E13
:10056000881264008A110A12851AC72AFA308A0191
:10057000222064008A110A123F1FC22A3F138A11E7
:100580000A12C32A3F173F1B08173F1F08136400B6
:100590008A110A12071BDD2AFA308A012220640020
:1005A0008A110A12BF1FD82ABF138A110A12D92A28
:1005B000BF17BF1B8817BF1F88133F088800640040
:1005C0008A110A128918162B0130A3005E308A01A5
:1005D00023203D0803178D0003133F088A011220D2
:1005E00086133C080F3C8A110A12031C152B8A1132
:1005F0000A12FE2286008A110A12152B03308A0085
:100600003C08053E03188A0A820077347C3439346A
:100610005E34793471346F34743406341E343834B3
:1006200054345C3473346734503408008A012D2A02
:0606300063008A01182B93
:02400E00313F40
:00000001FF

Essa sequência de códigos hexadecimais deve ser o texto de um arquivo com extensão .HEX para poder ser gravado num PIC 16F877(A). Eu utilizo um PICKIT2 da Microchip o que é um gravador bem prático e rápido, que trabalha pela porta USB, não necessitando de fonte de alimentação externa. Ele permite também que rapidamente sejam zeradas todas as posições da memória EEPROM, para evitar que inicialmente todos os presets iniciem com os loops de pedais todos acionados.

Em seguida consegui desenhar também um layout para a placa de controle:

Pra resumir, a operação é a seguinte:
- O chaveador pode armazenar até 90 presets de loops, organizados em 15 bancos de 6 presets cada. Cada preset pode fazer a combinação de até 8 loops ativados ou desativados. 
- Os bancos são nomeados por letras: A, b, C, d, E, F, g, H, I, J, L, n, o, p, q, r.   Sendo que o banco A apresenta todos os loops desativados para simular o bypass. Qualquer preset nesse banco terá os loops desativados.
- Os demais bancos podem ter seus presets programados e as combinações de loops armazenadas na memória EEPROM do PIC, de forma que mesmo desligado, o chaveador guarda todas as programações.
- Para selecionar um banco, usa-se os footswitches (chaves de contato momentâneo)  UP e DOWN. Os banco são mudados sequencialmente.  Em cada banco há 6 opções de presets (footswitches de 1 a 6). Ao escolher um banco, a letra é mostrada no display de leds de 7 segmentos. O preset selecionado é apontado por um led perto do footswitch correspondente. E os loops ativados são apontados por leds perto dos conectores jacks dos loops (in e out).
- Para programar um preset (8 loops ligados ou desligados), deve-se escolher o banco e preset a ser programado, apertar em seguida o botão PROG, vai acender o ponto decimal do display de 7 segmentos. A partir daí se liga ou desliga apertando os footswitches de 1 a 6 (loops 1 a 6) mais os de UP e DOWN (loops 7 e 8). Os leds acendem ou apagam a cada pressão nos footswitches. Estando a combinação de loops ok, basta apertar novamente o botão PROG, que a combinação será gravada e salva na memória do PIC.
- Para um acesso rápido ao modo Bypass, pode-se apertar o botão RESET, que imediatamente o chaveador vai para o banco A.