Início do Projeto:

Visando construir um programador EPROM para enterder como o Hardware de uma memória funciona e como é, em geral, sua arquitetura, procurei um chip de memória que tivesse uma extensa documentação, fosse barato, e que a implementação do circuito para interfacear com ele não fosse tão complicado. A escolha de uma EPROM ao invés de uma EEPROM ou memórias mais modernas deve-se em parte ao fato de que devido a miniaturização dos componentes torna-se difícil construir um circuito impresso para tal, além de que viso que seja possível enxergar as trilhas que representam os barramentos de dados e endereços no circuito. Outro motivo que levou minha escolha a ser uma EPROM é devido a sua simplicidade de uso e requerer poucos componentes de suporte para funcionar, tornando assim também viável a confecção do circuito. Outro ponto positivo é apresentar esta arquitetura de memória que mesmo agora caindo em desuso foi muito importate no desenvolvimento de circuitos eletrônicos da década de 80.

O chip escolhido foi o CI de memória EPROM 27C512 que possui barramento de dados de 8 bits, barramento de endereços de 16 bits. Este CI foi muito popular nas décadas de 80 e 90, pois fora amplamente aplicado em memórias de máquinas industriais e em cartuchos para videogames como os da Atari.

Entre as memórias que foram estudadas na pesquisa estão a memória EEPROM 24C32 que foi descartada para esse projeto devido a sua abstração dos barramentos usando protocolo Paralelo/Serial, o que culminaria no uso de mais componentes na placa, e não seria possível, ao final, ver as trilhas de cobre dos barramentos; a memória EEPROM ST24W08 que foi descartada pelo mesmo motivo da anterior, esta memória se comunica com outros componentes via protocolo I2C; e por fim a memória EPROM 27C64A que foi descartada, pois dado o custo/quantidade de bits, a 27C512 se tornou mais viável.

Decisões de Projeto

As decisões de projeto a serem aqui discutidas serão a respeito da interação com o usuário. Como a ideia principal desse prototipo é elucidar como uma memória funciona, para alunos que estão estudando disciplinas tais como álgebra booleana e Arquitetura de Computadores, a forma de gravação dos dados na memória e visualização dos mesmos seria dada de forma mais fundamental possível, em bits. Porém, ao projetar a placa já pretendo deixar tudo pronto para futuramente, em uma segunda versão do circuito, integrar conversores binários para decimal, interfaces para programação via computador entre outras coisas para usuários que desejassem se aprofundar mais no uso.

A princípio a decisão de projeto foi de representar a entrada e saída de dados em binário. A entrada dos dados será feita por chaves do tipo DIP Switchs e a saída dos dados representadas por um conjunto de 8 leds, onde cada um representa o estado do barramento de dados.

Na busca por informações encontrei um projeto, do site WRkits cuja a aplicação seria exatamente a mesma que estive propondo. A descrição do circuito esta disponível no github de Wagner Rambo , apesar de ele servir como uma otima base para o projeto, necessitará alterações.

Projetando a Circuitaria Lógica

O circuito de apoio para o funcionamento da EPROM 27C512 é resumidamente enxuto, no entanto diversos cuidados devem ser tomados em sua implementação, observando o datasheet da 27C512, percebemos que ela possui três tensões de operação para determinados estados, 12,5V para a escrita de dados na memória no pino de tensão de programação, 6.5V para aplicar nos barramentos de dados ao se gravar os dados e 5V para executar a leitura. De forma a simplificar a alimentação do circuito, observando mais uma vez as tensões no datasheet, existe a possibilidade de executar a leitura dos dados aplicando 6.5V nos barramentos de endereços para acessar os dados, dessa forma há uma redução na vida útil da memória, mas considerando a facilitação da implementação, que este dispositivo será um protótipo e que não se trata de nenhuma aplicação crítica do equipamento, considerei viável fazer essa simplificação. O modo de gravação será selecionado na placa por meio de chaves do tipo HH. O pulso necessário para a gravação disparado pela chave táctil precisa ter seu tempo em estado alto definido em precisos 100us para efetuá-la com sucesso, isso é feito usando um circuito RC onde um capacitor de 47nF em paralelo com um resistor de 10k ohm gera este pulso de gravação.

A estimação do resistor e do capacitor foi feita basendo-se no projeto de Wagner Rambo e com a verificação do periodo do pulso utilizando um osciloscópio. Outro ponto definido seria a forma como os leds seriam conectados aos barramentos, onde devido a resistores de pulldown os estados dos barramentos de dados para a visualização da saida estariam negados, fazendo-se assim a necessidade do uso de portas NOT a fim de que os leds acendessem para quando no respectivo barramento do led aparecesse o valor 1 e apagasse quando aparecesse 0. Para que isso fosse possível, foi necessario o uso de um CI de logico de NOT's. As características desse CI deveriam ser a de ter encapsulamento do tipo DIP para facilitar sua soldagem, e suportar a tensão de 6.5V usada na placa. Após uma busca e baseado no projeto do WRkits, o CI escolhido foi o CMOS 4069 que suporta esta tensão de trabalho, é facil de ser encontrado e é barato. Como o barramento de dados tem 8 bits e cada 4069 possuir apenas 6 NOT's serão necessarios 2 CI deste modelo.

Projetatando a Circuitaria de Potência

Devido as diversas tensões que circulam no circuito achei mais viável alimentá-lo com uma fonte que fornecesse uma tensão maior e que na placa houvessem reguladores de tesão para cada uma das tensões secundárias, para isso utilizamos os reguladores de tensão do tipo LM317 que, dependendo do arranjo de resistores entre seus terminais conectados fornece uma determinada tensão precisamente regulada. Dois reguladores LM317 serão necessarios para gerar as tensões de 12.5V e 6.5V, efetuando os cálculos, descobre-se que para a tensao de 6.5V entre os pinos ADJ e OUT deve ser por um resistor de 240 Ohm e entre ADJ e GND um resistor de 1k Ohm, respectivamente nessas mesmas posições para 12.5V usamos outro resistor de 240 Ohm e um de 2k2. Para essas configurações foi calculada a dissipação de potência para averiguar a necessidade do uso de dissipadores de calor. No datasheet do LM317 indica que para potências dissipadas a cima de 2W é necessario o uso de dissipador, isso so ocorreu no que regula a tensão para 6.5V.

Compra de peças

Estudando a melhor forma com relação a obtenção das peças quanto a economia de tempo e dinheiro, cheguei a conclusão de que o CI 27C512 deveria ser adquirida pela internet e os outros componentes obtidos nas lojas da região da santa efigênia. Segue a lista de peças

.

Peças compradas

Implementação em Protoboard

A implementação do circuito na protoboard é feita de modo a planejar como serão feitas as ligações e trilhas na futura placa definitiva. Segundo foi definido nos cálculos da circuitaria de potência, implementamos o circuito dos reguladores de tensão em uma placa anexo como demonstra a seguite imagem:

Ligação dos Reguladores de tensão

A segunda parte da implementação em protoboard foi a da circuitaria da parte lógica, que consta da memória, a 27C512, algumas chaves do tipo DIP-Switch, redes resistivas (conjunto de resistores encapsulados), os leds que indicam os valores definidos na memória (dados) e os endereços de leitura correspondentes, os botoes para determinar as tensões de leitura/escrita, o botão de gravação, além de alguns resistores avulsos que são para pull-up ou pull-down de determinadas portas do chip de memória. Apesar da pequena quantidade de componentes envolvidas a complexidade da montagem é relativamente elevada, mesmo com a simplificação que executei de a princípio utilizar, dos 16 bits de endereço apenas os 8 menos significativos, exigindo menos fios e um conjunto DIP-switch a menos na protoboard. O resultado foi funcional:

Montagem final na protoboard

Aproveitando a montagem, foi realizado um experimento de tentativa de apagamento dos dados da EPROM utilizando um LED UV, no entanto este experimento foi um fracasso com um ótimo feedback de informações. Neste experimento o led foi deixado por aproximadamente 50 minutos sobre a janela de quartzo do chip, dada a potência de um único led de 100mW total ao longo de todo o seu espectro de irradiação e sua intensidade no comprimento de onda de apagamento deste modelo de memória (253,7nm) e o comprimento de onda de pico deste led ser de 390nm esperava-se este resultado, dado também a potência necessaria para o apagamento ser de 12000mW por centímetro quadrado. Apesar destes dados apntarem os leds não serem a opção mais promissora para a fonte luminosa de um apagador, dado a falta de um espectrograma completo da intensidade luminosa no datasheet, mais para frente pretende-se continuar tentando o apagamento por esta forma dada a disponibilidade dos led's.

Tentativa de apagamento dos dados

Design das Trilhas do Circuito

Esta etapa é sempre a etapa limitante de projetos eletrônicos DIY de complexidade moderada/alta, pelo menos aqui no Brasil, quando se deseja prototipar. Para o processo de fabricação deste circuito não foi disposto equipamentos adequados, portanto todo a gravação das trilhas na placa para ser fresada será feita a mão, desta forma não seria possível contar com o auxilio de softwares de CAD para a tarefa de design já que esses ao se determinar trilhas de espessuras consideráveis (1.5mm), para placas de fenolite de face simples, o roteador de trilhas (um algoritmo em grafos que dadas as conexões, estuda a forma mais eficiente de conectar os pinos desejados, se ela exisir) dificilmente encontra uma solução. Como foi de se esperar, exatamente este caso ocorreu e nenhum dos softwares gratuitos que dispunha (Eagle, KiCAD) conseguiu gerar algum desig que fosse possível de ser desenhado a mão ou por qualquer outra técnica caseira (ex. Papel Transfer). Dessa forma a unica opção foi traçar as linhas a mão e na tentativa e erro encontrar a melhor forma de conectaros elementos na placa. Para isso, neste protótipo inicial tive de fazer algumas restrições onde, dada a aplicação, são be consideráveis, seriam as mesmas adotadas na implementação na protoboard: usar apenas os 8 bits menos significativos do barramento de dados. Com isso reduzimos a capacidade de gravação da memória pela metade, porém dado que o objetivo do protótipo é fazer a gravação dos dados manualmente dificilmente alguem gravaria 216 dados na memória setando-os bit a bit, 28 já são mais que o suficiente para este início.

Esboço rápido para posicionamento dos componentes

Esboço definitivo que foi redesenhado na placa

Esboço em papel vegetal para auxílio na transferência para a placa de fenolite

Após o processo de cópia das trilhas para a placa de fenolite o resultado foi o seguinte:

Placa pronta para o processo de fresagem química

Nesta etapa do processo executamos a fresagem química que é o processo de remoção do cobre da placa de fenolite que não desejamos. O processo se da apenas nas áreas onde neste caso não foram recobertas pela camada de tinta proveniente da caneta permanente usada para desenhar as trilhas. O agente fresador é percloreto de ferro um ácido de Lewis reativamente forte porém, neste caso não é seu carater ácido o responsável pela remoção do cobre, diferente do que o senso comum indica, o que ocorre é uma reação de dupla troca devido a eletronegatividade dos elementos cobre e ferro. A reação que ocorre na superfície da placa é FeCI3 + Cu -> FeCl2 + CuCl e na solução FeCI3 + CuCl -› FeCl2 + CuCl2 onde podemos notar que o cobre é extraido para a solução na forma de um composto solúvel. Após a extração obtivemos o seguinte resultado:

Placa pronta para o processo de fresagem química

Após a extração química executa-se o processo de lavagem da placa para a remoção da camada de tinta que protegeu as trilhas e a furação da placa usando-se um furador manual especializado para placas de circuitos impressos.

Soldagem dos componentes

Com as trilhas desenhadas na placa e perfurada nas posições de fixação dos componentes então os soldamos na placa. O processo de soldagem devido a proximidade das trilhas é um tanto quanto delicado. Também devido a espessura das ilhas de soldagem em alguns determinados locais da placa deve-se ter cuidado ao aquecer a região para não superquecê-la e acabar por destruir a trilha. Ao final do processo o resultado final foi o seguinte:

Placa com os componentes soldados

Teste da Placa

O teste inicial é feito fazendo uma verificação em todos os pontos de solda para garantir que nehum deles tenha tocados locais que não poderiam ser alcançados, na sequência faz-se uma verificação dos contatos elétricos dos componentes de forma a garantir que não haja problemas como soldas frias ou camadas de oxidação que tenham impedido que a solda tenha fornecido o contato suficiente para o funcionamento do componente e por fim o teste com a fonte. Neste primeiro protótipo, ao conectar a fonte foi observado um comportamento anormal em seu funcionamento, no qual os leds não correspondiam aos comandos dados nas chaves DIP-Switchs. Fazendo algumas observações nos desenhos das trilhas, na etapa de copiar o desenho para a placa existe a necessidade de fazer o espelhamento do desenho ao transferí-lo, no entanto, por uma falha os componentes que correspondem aos CI's das portas NOT, os 4069, que são conectados aos leds e fazem o papel de inversão do sinal para acendê-los não foram invertidos. Desta forma, detectado o problema o desenho necessitou ser remanofaturado, e todo o processo de transferencia para a placa refeito, assim como o o processo de fresagem química. Apesar de trabalhoso o já que apenas uma pequena parte do grafo ter sido afetada a solução anterior para as trilhas exigiu apenas algumas poucas mudanças. Pelos componetes terem sido comprados sem backups, foi necessário o processo de reaproveitamento deles, os dessoldando. Uma nova placa foi feita, soldada e testada.

Comparação dos dois layouts, o da placa errada (cima) e certa.

Novo Layout com o footprint dos CI's corrigido

Ao final, esta segunda placa produzida fucionou perfeitamente, bastando agora encontrar um modo para apagá-la.

Placa com os componentes soldados

Apagador UV

O apagador UV é apenas uma fonte luminosa com uma determinada intensidade e um comprimento de onda específico, para isso inicialmente foi testado um led onde não se tinha todos os dados para avaliar se realmente isso seria possível ser feito usando esse tipo de fonte luminosa, mas dada a disponibilidade de leds UV e de uma matriz de leds desse tipo já previamente feita então poderíamos adaptá-la para este uso também.

A matriz original foi criada no inicio de 2016 para a fabricação de placas de circuito usando tinta fotoresistiva, para essa aplicação ela funcionou perfeitamente, no entanto não foi projetada para ficar em funcionamento pelo tempo determinado pelo fabricante da memória, 40 minutos. Para a fabricação de placas bastava apenas 3 minutos em funcionamento, então o dimensionamento dos resistores limitadores de corrente contavam com a potência dissipada apenas por esse tempo, dessa forma foram usados resistores de 1/4W por tê-los a disposição. (mesmo para essa aplicação eles não seriam os ideais, mas dados os cálculos de dissipação de potência/aquecimento não seria um problema por tão pouco tempo.). A matriz consta de duas 8 colunas com 9 leds em cada, ligados em série por coluna, para fornecer energia para esse arranjo temos um conversor step-up que converte uma tensão de 12V para 36V. Para a potência dissipada que teremos (0.20W) dado o tempo de funcionamento o ideal é que o resistor que teremos de usar seria um de 400 Ohm 1/2W. Esta será a adaptação feita para o teste de apagamento.

Arranjo dos leds com resistores, ênfase para o conversor a direita, em azul.

Matriz em funcionamento, durante o processo de gravação em fotoresist (foto de 2016)

Parte interna da camara de radiação ultra violeta