Buscar

MÓDULO MICROCONTROLADO PARA CONFIGURAÇÃO DE PLATAFORMA DE EVOLUÇÃO DE CIRCUITOS

Prévia do material em texto

PROJETO DE GRADUAÇÃO 
 
 
 
 
MMÓÓDDUULLOO MMIICCRROOCCOONNTTRROOLLAADDOO PPAARRAA CCOONNFFIIGGUURRAAÇÇÃÃOO DDEE 
PPLLAATTAAFFOORRMMAA DDEE EEVVOOLLUUÇÇÃÃOO DDEE CCIIRRCCUUIITTOOSS 
 
 
 
 
Rafael Costa Pimentel 
Raphael Soares Ribeiro 
 
 
 
 
 
 
 
 
 
 
Orientador: Prof. José Franco Machado do Amaral 
Coordenador da Disciplina: Prof. Paulo Sérgio Rodrigues Alonso 
 
 
 
 
 
Abril 2010 
UNIVERSIDADE DO ESTADO DO RIO DE JANEIRO 
Faculdade de Engenharia 
Departamento de Engenharia Eletrônica e de Telecomunicações 
 
 
 
 
 
 
UNIVERSIDADE DO ESTADO DO RIO DE JANEIRO 
 
 
FACULDADE DE ENGENHARIA 
 
 
Departamento de Engenharia Eletrônica e de 
Telecomunicações 
 
 
 
 
Projeto de Graduação 
 
 
 
MÓDULO MICROCONTROLADO PARA CONFIGURAÇÃO DE PLATAFORMA 
DE EVOLUÇÃO DE CIRCUITOS 
 
 
 
 
Rafael Costa Pimentel 
Raphael Soares Ribeiro 
 
 
 
 
 
 
 
 
 
 
Orientador: Prof. José Franco Machado do Amaral 
 
Coordenador: Prof. Paulo Sergio Rodrigues Alonso 
 
 
 
 
 
Abril 2010 
ii 
 
 
 
 
 
 
 
 
 
Abril 2010 
 
Ficha Catalográfica 
 
 
 
 
 
 
 
PIMENTEL, Rafael Costa 
RIBEIRO, Raphael Soares 
 
 
 Módulo Microcontrolado para 
configuração de plataforma de evolução 
de circuitos. 
 
x, 85 pp, 29,7 cm (UERJ, Engenharia 
Eletrônica, 2010 ) 
 
Projeto de Graduação – Universidade do 
Estado do Rio de Janeiro. 
 
1. Eletrônica Evolucionária 
2. Algoritmo Genético 
3. MATLAB 
4. Comunicação Paralela 
5. Comunicação Serial 
6. Microcontrolador 
 
 I. UERJ/FEN II. Título (série) 
 
 
 
 
 
 
 
iii 
 
 
 
 
 
Agradecimentos 
 
A Deus, pela oportunidade, a orientação e a perseverança para chegar até aqui. 
Aos meus pais pelo incentivo permanente aos estudos e por tornar possível a 
realização deste sonho. 
À minha irmã pela compreensão e pelo apoio. 
Ao professor José Franco Machado do Amaral pela orientação deste trabalho. 
Aos funcionários do Laboratório de Engenharia Elétrica pelo apoio. 
A todos os professores que contribuíram para a minha formação. 
Rafael Costa Pimentel 
 
 
 
 
Agradeço a todos os familiares, professores e amigos que nos ajudaram e 
incentivaram o desenvolvimento e a realização deste projeto. 
 
 
 
 
Raphael Soares Ribeiro 
 
 
 
 
 
 
 
 
iv 
 
 
 
MÓDULO MICROCONTROLADO PARA CONFIGURAÇÃO DE 
PLATAFORMA DE EVOLUÇÃO DE CIRCUITO 
 
 
 
 
 
 O estudo desenvolvido neste projeto é baseado na teoria da eletrônica 
evolucionária. Um microcomputador, com o software MATLAB, executa o 
Algoritmo Genético e determina valores adequados para os componentes 
utilizados em um circuito analógico reconfigurável. Esses valores são 
disponibilizados ao circuito via comunicação paralela. Dados do funcionamento 
deste circuito são captados por uma plataforma microcontrolada e 
disponibilizados para o PC via comunicação serial para que possam ser 
utilizados novamente pelo programa no MATLAB. Os resultados obtidos são 
satisfatórios e servirão de base para trabalhos futuros sobre Eletrônica 
Evolucionária, tanto em cursos de graduação como de pós-graduação. 
 
 
 
 
 
 
 
 
 
 
 
 
v 
 
 
MICROCONTROLATED CIRCUIT USED TO CONTROL A EVOLVABLE 
HARDWARE PLATFORM 
 
 
 
 
 
 The study developed in this Project is based on Evolvable Hardware 
theory. A computer, using the MATLAB software, runs a Genetic Algorithm and 
tries to find solutions for the components’ values applied into a 
reprogrammable analogic circuit. These values are sent to the circuit by the 
PC’s paralel port. Data of the operation of this circuit are catch by a 
microcontroller and sent to the PC by serial port. So it can be used again to run 
the MATLAB’s software. The results are satisfactory and will serve as basis for 
future works about Evolvable Hardware, in both undergraduate and graduated 
courses. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vi 
ÍNDICE 
 
 
1- Introdução 1 
 
2- Eletrônica Evolucionária 5 
2.1 Introdução 5 
2.2 Classificação 6 
2.3 Aplicações 13 
 2.3.1 Robótica 13 
2.3.2 Medicina 15 
2.3.3 Engenharia Civil 16 
 
3- Algoritmos Genéticos 17 
 3.1 Histórico 17 
 3.2 Caracterização 18 
 3.2.1 Problema a ser otimizado 19 
 3.2.2 Representação das soluções do Problema 20 
 3.2.3 Decodificação do Cromossomo 21 
 3.2.4 Avaliação 21 
 3.2.5 Seleção 21 
 3.2.6 Operadores Genéticos 22 
 3.2.7 Inicialização da População 24 
 3.2.8 Parâmetros e Critérios de Parada 25 
 
4 – Desenvolvimento do Projeto 26 
4.1 Diagrama de Blocos 26 
4.2 Descrição do Funcionamento Básico dos Componentes 27 
4.2.1 E2POT – X9C103P 28 
4.2.2 Módulo microcontrolado 31 
4.2.3 Amplificador Operacional LM741 33 
4.2.4 Comunicação Serial 34 
4.2.5 Comunicação Paralela 36 
vii 
 
 
5 – Programação 40 
5.1 Descrição do Software 40 
5.2 Programa no PC 43 
 5.2.1 Método extrínseco 45 
 5.2.2 Método Intrínseco 45 
 
 
6 – Estudo de Casos 47 
6.1 Evolução extrínseca com AG 47 
 6.2 Evolução extrínseca sem AG 54 
 6.3 Evolução intrínseca sem AG 56 
6.4 Evolução intrínseca com AG 58 
 
 
7 – Conclusões 62 
 
 
8 – Bibliografia 64 
 
 
Apêndice A – Custos do Projeto 67 
 
 
Apêndice B – Toolbox do GAOT 68 
 
 
Apêndice C – Esquemático dos Circuitos 70 
 
 
Apêndice D – Diagrama Funcional do E2POT 72 
 
 
Apêndice E – Curvas Típicas de Operação do E2POT 73 
 
 
Apêndice F – Programas no Matlab 74 
 
 
 
 
 
 
 
viii 
ÍNDICE DE TABELAS 
 
Tabela 1 - Quadro comparativo das terminologias 19 
Tabela 2 – Representação do cromossomo 20 
Tabela 3 – Parâmetros porta serial 35 
Tabela 4 – Funções de cada pino conector de 9 pinos 35 
Tabela 5 - Configuração dos Endereços das Portas 37 
Tabela 6 - Funções de cada pino conector da porta paralela 39 
Tabela 7 - Parâmetros do AG 41 
Tabela 8 - Valores de Ra e Rb encontrados para evolução extrínseca sem 
AG 
 
56 
Tabela 9 - Valores de Ra e Rb encontrados para evolução intrínseca sem 
AG 
 
58 
Tabela 10 - Custo dos componentes 67 
Tabela 11 - Custo total do projeto 67 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ix 
ÍNDICE DE FIGURAS 
 
Fig. 1 – Diagrama de Blocos que representa o projeto 02 
Fig. 2 – Circuito amplificador analógico 03 
Fig. 3 – Estrutura completa do circuito analisado no projeto 04 
Fig. 4 – Evolução extrínseca 09 
Fig. 5 – Evolução Intrínseca 09 
Fig. 6 – FPTA 10 
Fig. 7 – FPTA-2 11 
Fig. 8 – Trecho de uma arquitetura FPGA típica (Thompson, 1995) 12 
Fig. 9 – Diagrama de blocos simplificado de um FPAA 12 
Fig. 10 – Robô Evolutivo 14 
Fig. 11 – A mão robótica 15 
Fig. 12 – Estrutura com os sensores de medição 16 
Fig. 13 – Algoritmo Genético básico 18 
Fig. 14 – Exemplo de uma roleta de seleção – Routlette Wheel 22 
Fig. 15 – Recombinação entre os cromossomos “pai” e “mãe”, 
um ponto de recombinação 
 
23 
Fig. 16 – Recombinação entre os cromossomos “pai” e “mãe”, 
dois ponto de recombinação 
 
23 
Fig. 17 – Mutação simples 24 
Fig. 18 – Estrutura básica do AlgoritmoGenético 25 
Fig. 19 – Diagrama de Blocos que representa o projeto 27 
Fig. 20 – Pinagem e Sinais do E2POT 29 
Fig. 21 – Microcontrolador PIC18F4550 32 
Fig. 22 – Max 232 32 
Fig. 23 – Pinagem LM741 33 
Fig. 24 – Conector serial RS232 36 
Fig. 25 – DB25 que fica atrás do microcomputador 38 
Fig. 26 – Conector Macho do Cabo Paralelo 38 
Fig. 27 – Configuração da Porta Paralela 44 
Fig. 28 – Gráfico da Aptidão para 5 gerações com 20 e 100 indivíduos em 
cada geração. 
 
48 
x 
Fig. 29 – Gráfico da Aptidão para 20 gerações com 20 e 100 indivíduos 
em cada geração. 
 
49 
Fig. 30 – Gráfico da Aptidão para 50 gerações com 20 e 100 indivíduos 
em cada geração. 
 
50 
Fig. 31 – Gráfico da Aptidão para 100 gerações com 20 e 100 indivíduos 
em cada geração. 
 
51 
Fig. 32 – Gráfico da Aptidão para 150 gerações com 20 e 100 indivíduos 
em cada geração. 
 
52 
Fig. 33 – Gráfico da Aptidão para 200 gerações com 20 e 100 indivíduos 
em cada geração. 
 
53 
Fig. 34 – Gráfico da Aptidão para os valores de Ra e Rb para evolução 
extrínseca sem AG 
 
55 
Fig. 35 – Gráfico da Aptidão para os valores de Ra e Rb para evolução 
intrínseca sem AG 
 
57 
Fig. 36 – Gráfico da Aptidão para 5 gerações com 20 e 100 indivíduos em 
cada geração. 
 
60 
Fig. 37 – Gráfico da Aptidão para 5 gerações com 20 indivíduos e para 20 
gerações com 20 indivíduos. 
 
61 
Fig.38 - Esquemático do PIC18F4550 70 
Fig. 39 - Esquemático do MAX 232 70 
Fig. 40 - Esquemático Amplificador Somador 71 
Fig. 41 - Diagrama Interno e ligações do E2POT 72 
Fig. 42 - Reposta de Freqüência Típica do X9C103 73 
Fig. 43 - Linearidade Típica do X9C103 73 
 
 
 
1 
1 – Introdução 
 
 O desenvolvimento tecnológico decorre do desejo humano de encontrar 
novas e melhores maneiras de satisfazer as suas necessidades, usando para 
isso conhecimentos, ferramentas, recursos naturais e energia. 
 Os avanços da ciência trazem descobertas tecnológicas que se revertem 
em grandes benefícios à humanidade. Nos campos da física, química, 
ecologia, engenharia genética, biotecnologia e informática, podem perceber 
tamanhas inovações. 
 É através de descobertas científicas que o homem tem desenvolvido 
fontes alternativas de energia, tais como a nuclear, eólica, solar, e 
bicombustíveis, que reduzem a quantidade de detritos liberados na atmosfera, 
e, consequentemente, a poluição do ar e o efeito estufa. 
 As vantagens do avanço do conhecimento humano são inegáveis: 
inúmeras descobertas na área de saúde, melhorias nas questões ambientais, 
agilidade em aspectos econômicos e maior eficiência na informática. Investir 
em tecnologia é construir um futuro melhor e com maiores benefícios. 
 A necessidade de projetos de engenharia que tenham excelente 
desempenho, além de possuírem custo que atenda à realidade do mercado e 
sejam versáteis, é a demanda da indústria de hoje. Assim como o mercado 
pressionou os profissionais para deixarem de ser apenas especialistas e 
passarem a entender toda a realidade da empresa, nos seus mais diversos 
setores, o mesmo ocorreu com os equipamentos. Hoje, a estrutura rígida e 
imutável de um circuito eletrônico tem sido questionada por novas técnicas. 
 A atual necessidade de equipamentos mais resistentes às difíceis 
condições do ambiente surge como barreira a ser vencida para que a pesquisa 
espacial e industrial possa avançar. Questionamentos como estes levaram 
pesquisadores a aprimorarem técnicas a serem aplicadas no projeto de 
circuitos eletrônicos. É nesse contexto que surge o novo campo chamado 
Eletrônica Evolucionária (Evolvable Hardware, EHW). 
 A Eletrônica Evolucionária é um novo campo de aplicação dos 
algoritmos genéticos desenvolvida para manipular circuitos que impossibilitem 
correções manuais. Ela pode ser definida como o ramo da engenharia 
eletrônica e da ciência da computação baseado na aplicação de estratégias 
2 
evolucionárias no projeto de hardware que pode ser adaptado de acordo com a 
necessidade do ambiente. A configuração do hardware pode ser realizada 
através da utilização de algoritmos computacionais. Neste trabalho o algoritmo 
utilizado será o Algoritmo Genético. A concepção fundamental deste campo de 
pesquisa é que cada possibilidade de configuração de um circuito eletrônico 
possa ser representada por um indivíduo, ou cromossomo, passando por um 
processo evolucionário, que executa operações genéticas padrão aos circuitos. 
 Os conceitos biológicos estudados pelo naturalista britânico Charles 
Darwin (1809-1882) como a seleção natural, onde o mais apto tem maior 
probabilidade de sobreviver e gerar descendentes, são executados aqui de 
forma artificial por um algoritmo computacional. Operadores comuns na 
natureza como a recombinação sexual e a mutação são aplicadas a fileiras de 
bits que representam possíveis configurações do circuito estudado. Neste 
trabalho a Eletrônica Evolucionária utiliza-se dos conceitos do Algoritmo 
Genético para a evolução de circuitos eletrônicos. 
 Como a implementação não será realizada apenas em software, mas 
também em hardware, a interface escolhida para a comunicação entre o PC e 
o circuito a ser configurado, será a interface paralela para dados de saída do 
MATLAB, e interface serial para dados de entrada, como podemos observar na 
figura 1. As interfaces, paralela e serial, encontram-se largamente difundidas e 
tem funcionamento de fácil compreensão. 
Figura 1 – Diagrama de Blocos que representa o projeto 
3 
 Atualmente as empresas brasileiras ainda não investem recursos em 
pesquisas voltadas para Eletrônica Evolucionária, embora o mercado 
americano e europeu tenha voltado seus olhos para este novo nicho. Podemos 
notar este aumento pela quantidade de pesquisas existentes sobre o tema de 
ambos. A grande expectativa gerada pela Eletrônica Evolucionária vem da 
perspectiva de que circuitos evoluídos podem ser extremamente complexos na 
sua estrutura e dinâmica e assim podem alcançar desempenho melhor do que 
seria possível com as técnicas tradicionais de projeto. A Eletrônica 
Evolucionária pode trazer conseqüências práticas para o futuro. Por exemplo, 
podemos citar o fato de que circuitos reconfiguráveis podem ser utilizados para 
serem utilizados em um chip robusto concentrando diversas funções, operando 
em seus limites. Se tal fato se tornar realidade, os limites, padrões e técnicas 
utilizadas atualmente pela indústria fabricante de microchips seriam 
revolucionados. 
 Neste trabalho as aplicações, em hardware e software, foram voltadas 
para um circuito analógico amplificador somador. Este circuito deve ser 
reconfigurado mediante a otimização de seus componentes Ra e Rb. 
 
Figura 2 – Circuito amplificador analógico 
 
 A evolução dos componentes será realizada em 4 diferentes testes. O 
primeiro e segundo de modo offline (extrínseca), ou seja, a evolução será 
realizada no computador e apenas os valores finais dos componentes serão 
enviados para o hardware, um utilizando o AG e outro não. No terceiro caso 
analisaremos o circuito no modo online (intrínseca), porém o AG não será 
utilizado, mas um programa que otimizará o valor dos componentes variando 
os valores dos componentes dos limites mínimos ao máximo. A última etapa 
4 
consiste em utilizar o AG para realizar a evolução também no modo intrínseco 
para que os resultados possam ser comparados. 
 
 
Figura 3 – Estrutura completa do circuito analisado no projeto 
 
Estrutura e organização do trabalho 
 O capítulo 2 apresenta uma breve introdução sobre Eletrônica 
Evolucionária. 
 O capítulo 3 apresenta os Algoritmos Genéticos, que são uma família de 
modelos computacionais inspirados na evolução. 
 O capítulo 4 apresenta a descrição do funcionamento dos principais 
componentes utilizados neste projeto. 
 O capítulo 5 apresentaa descrição do software e o funcionamento do 
programa no PC. 
 O capítulo 6 apresenta o estudo de casos sobre o divisor de tensão e o 
filtro passa banda. 
 O capítulo 7 apresenta as conclusões sobre este projeto. 
 
 
 
5 
2 – Eletrônica Evolucionária 
 
2.1- Introdução 
 
 Para a ciência, engenharia a eletrônica é o campo que estuda e trata 
dos dispositivos eletrônicos e de suas aplicações. A origem dos equipamentos 
eletrônicos dá-se às pesquisas de Thomas Alvas Edson, no ano de 1883, 
quando este descobre a formação da corrente elétrica através de um filamento 
aquecido e uma placa metálica num ambiente de vácuo parcial. Certamente, 
quando Faraday, Coulomb, Ampère, Volta, Ohm, Edson e tantos outros 
iniciaram suas primeiras experiências em eletricidade e construíram os 
primeiros aparelhos elétricos, sequer imaginavam as proporções que eles 
alcançariam e tampouco as mudanças que causariam na vida humana. 
 Alguns marcos foram fundamentais para a evolução da eletrônica. Em 
1904 John Ambrose Fleming cria a primeira válvula, esta chamada de válvula 
diodo, propiciou um rápido avanço na criação de outros dispositivos e circuitos 
que permitiram a execução de muitas tarefas que estavam sendo descobertas 
pelo homem naquela época. Com a Primeira Guerra Mundial (1914 – 1918) 
surgiram os primeiros equipamentos eletrônicos na área da radiocomunicação. 
Na década de 20, após algumas tentativas frustradas de utilização dos 
materiais semicondutores, estes despontam como grande promessa 
tecnológica. Porém somente na década de 40, já na Segunda Guerra Mundial 
(1939 – 1944), com a teoria atômica e quântica em pleno vapor, desenvolve-se 
também a física do estado sólido que investiga a estrutura, as propriedades e o 
comportamento elétrico dos semicondutores, surge então, o diodo 
semicondutor, que substituem as válvulas diodos. 
 Outros fatos também contribuíram decisivamente no progresso da 
eletrônica, dentre eles podemos citar alguns como as atividades espaciais, a 
automação industrial, a eletrônica médica entre outros. Estes devido à 
dificuldade de manutenção, ou até mesmo a impossibilidade de realizá-la 
manualmente, bem como o seu alto custo fez com que as pesquisas fossem 
direcionadas para o desenvolvimento de novas técnicas de projeto. 
 Diante de todas as dificuldades inerentes às limitações existentes nas 
técnicas de projeto, um dos limites seria o número de dispositivos aplicados no 
6 
hardware, isto é, a quantidade de transistores, circuitos integrados, resistores, 
capacitores, etc. Os projetistas não estariam aptos a aplicar todos estes 
dispositivos que tem se tornado disponíveis nos circuitos. Para superar este 
problema foi necessário o aumento do número de projetistas, engenheiros, 
desenvolvedores e programadores envolvidos no processo, o que encareceu a 
produção. Com a finalidade de superar essas limitações, processos de 
automatização dos projetos foram desenvolvidos. 
 Porém na década de 90, surge um novo campo na área da eletrônica, 
denominada Eletrônica Evolucionária (Evolvable Hardware, EHW). A Eletrônica 
Evolucionária tem como base um conjunto de informações adquiridas em 
outros campos de conhecimentos. 
 Define-se a Eletrônica Evolucionária como um ramo da eletrônica 
baseado na concepção de que uma string de bits, denominada de 
cromossomo, é utilizada para configurara um circuito programável (DE GARIS, 
1997). Aqui o espaço de busca de um projeto codificado em bits e testado. Os 
desempenhos dos circuitos são medidas e analisadas. Aqueles cromossomos 
ou indivíduos que representam o melhor desempenho do circuito, segundo 
critérios estabelecidos por uma função de avaliação (fitness function), recebem 
uma medida de aptidão. Os que forem mais aptos têm uma probabilidade maior 
de sobreviver e serem aproveitados, permitindo que o desempenho do circuito 
seja melhorado a cada geração. O processo é comandado por um algoritmo 
evolucionário. Aquele que é mais comumente utilizado, e que será aplicado 
neste trabalho é o Algoritmo Genético (Genetic Algorithm, GA). Este algoritmo 
contém operadores importantes como crossover (recombinação) e mutação 
das representações do circuito de modo a gerar novos circuitos. Estes 
operadores foram idealizados e modelados para que fossem muito 
semelhantes ao mecanismo de evolução natural encontrado na natureza. 
 
2.2 – Classificação 
 
 A classificação aqui proposta sobre a Eletrônica Evolucionária (Zebulum 
�et�al.,) nos dará um conhecimento melhor sobre este tema será dividida em 
questões como o tipo do projeto, natureza do produto e plataformas. Existem 
outras classificações, porém não serão utilizadas neste trabalho. 
7 
Tipo de Projeto 
 
Quando pensamos em tipos de projeto na área de eletrônica 
evolucionária, podemos facilmente identificar: projetos de otimização, síntese e 
reparo de circuitos. 
Na otimização, o objetivo é encontrar o melhor valor para os 
componentes de modo a fazer com que o circuito alcance a saída desejada. A 
topologia do circuito não é alterada, apenas o valor dos componentes. Por 
exemplo, Higuchi �et�al. (Higuchi �et �al., 1999) apresentam uma aplicação 
industrial relacionada com a produção de telefones celulares. Este é o tipo de 
projeto abordado no presente trabalho. 
A síntese é um projeto mais complexo que consiste na identificação da 
topologia de um sistema, determinação dos tipos e valores dos componentes e 
sua implementação (Zebulum �et al., 1998; Salazar & Mesquita, 2000). A 
síntese altera a topologia do circuito permitindo que a disposição dos 
componentes, isto é como eles estarão conectados, seja alterada. 
O auto-reparo é fundamental para garantir o funcionamento linear e 
confiável de um sistema de circuito complexo. Abrange os circuitos tolerantes à 
falhas e aqueles auto-regeneráveis. Dois princípios são aplicados no projeto 
destes sistemas: redundância e reparo on-line. A redundância consiste na 
presença de dispositivos extra para o caso de falha dos dispositivos principais 
e esta associada ao fator de tolerância à falha que tem por definição mostrar 
como a falta de um componente não afeta o funcionamento geral do hardware. 
O reparo on-line tem como finalidade deixar o sistema o menor tempo possível 
indisponível, para isso este realiza busca na população de circuitos correto ou 
rodando o Algoritmo Genético um número limitado de gerações. 
 
Natureza do Projeto 
 
 A natureza do projeto pode-se dividir em dois tipos: Analógica e Digital. 
A eletrônica digital encontra-se amplamente difundida no mundo atualmente e 
a quantidade de projetos utilizando a tecnologia digital só tende a aumantar. 
Entretanto o mundo ainda continua sendo analógico, ou seja, grande parte dos 
8 
circuitos ainda são analógicos, mesmo que seja utilizado tecnologia digital nos 
projetos, estes vão necessitar de módulos analógicos para interface com 
mundo externo. Tendo em vista, a escolha deste trabalho será por um circuito 
analógico: um amplificador somador. 
 Muitos projetos na área da Eletrônica Evolucionária já foram realizados. 
Podemos citar como exeplo de projeto de natureza digital filtros digitais de 
resposta finita ao impulso (DEMPSTER, 1995) e o equalizador adaptativo 
(MURAKAWA, 1999). Como exemplo de projetos de natureza analógica, tem-
se a evolução de circuitos analógicos que desempenham funções digitais 
(BENNETT III, 1999) e síntese de circuitos elétricos analógicos (KOZA, 1997). 
Plataformas 
 
 Outro critério para classificarmos os projetos em Eletrônica Evolucionária 
são suas respectivas plataformas. Nos primeiros testes realizados não era 
adequado implementar aplicações de hardware evolutivo, pois muitos não 
aceitavam instruções de configuração aleatórias e o tempo para reconfigurar 
um circuito era muito alto. Devido e esse fatores tudo era simulado, evolução 
extrínseca (DeGaris, 1999). 
 Na evolução extrínseca, cada etapa do protejo, evolução do circuito, 
será testado e analisado através de uma simulação em um software. Todo o 
processo é realizado pelo algoritmo e o resultado final, ou seja, a melhor 
escolha implantada ao circuito. Este por sua vez não retorna nenhuma 
informação a ser utilizada durante o processo evolutivo, ou seja, a maior parte 
da evolução é externa ao circuito. 
 Somente algum tempo depois, com o surgimento dos hardwares que 
supriram as carências passadas, foi possível permitir que cada novo conjunto 
de instruções, obtidas pelo algoritmo genético, fosse testado diretamente no 
hardware, evolução intrínseca (De Garis, 1999). 
 
 
 
 
 
9 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 4 – Evolução extrínseca 
 
 Na evolução intrínseca, cada etapa do processo evolutivo gerado pelo 
algoritmo é implementado no circuito eletrônico. Este circuito então retorna ao 
algoritmo a variável a ser analisada (corrente de saída, tensão de saída, por 
exemplo), para que então seja verificada a variação entre o valor real e o 
esperado. Este processo se repete até que todas as possíveis soluções sejam 
testadas e que a melhor delas seja implementada no circuito. 
 
 
 
 
 
 
 
 
 
 
Figura 5 – Evolução Intrínseca 
Módulo 
Microcontrolado 
Somador 
Resultado do 
teste é coletado 
Melhor indivíduo é 
aplicado ao circuito Sim 
Critério de 
parada foi 
alcançado? Avaliação do Indivíduo 
Algoritmo 
Genético 
Não 
Novo indivíduo é 
testado 
 
Somador 
Não 
Sim 
Melhor indivíduo é 
aplicado ao circuito 
10 
 Para teste trabalho utilizamos tanto o processo de evolução intrínseca 
quanto extrínseca para compararmos seus resultados. 
 Uma outra forma de se caracterizar uma plataforma é quanto a sua 
granulosidade podendo ser ela fina, grossa ou flexível. Plataformas de 
granulosidade fina são formadas por elementos de baixo nível como 
transistores, plataformas de granulosidade grossa são formadas por elementos 
do tipo portas lógicas, blocos lógicos e componentes analógicos enquanto 
plataformas de granulosidade flexível permitem que os elementos construtores 
sejam configurados. 
 A diversidade de plataformas para Eletrônica Evolucionária tem se 
elevado desde que o primeiro chip utilizado para experimentos intrínsecos, o 
Xilinx 6216, deixou de ser fabricado (STOICA, 2001). Devido há necessidade 
no avanço das pesquisas alguns laboratórios passaram a construir suas 
próprias plataformas. 
 O Field Programmable Transistor Array (FPTA) é uma plataforma 
reconfigurável de arquitetura versátil e granulosidade fina formada basicamente 
de array, matrizes, de blocos compostos por transistores programáveis ou não 
que se interligam através de chaves analógicas. 
 
Figura 6 – FPTA 
 
 O FPTA pode ser utilizado tanto para a síntese de circuitos analógicos, 
digitais e mistos. Sua estrutura deriva da variedade de projetos analógicos, 
nos quais normalmente existem fileiras de pares de transistores e possuem 
uma média de 4 fileiras entre a alimentação e o terra. 
11 
 Durante o desenvolvimento dos primeiros chips, Stoica(1999) descreve o 
programmable tranistor array (PTA), que eram formados por 3 células com 8 
transistores interconectados por 24 chaves, porém com conectores externos. O 
próximo chip foi o FPTA-1, exatamente um FPTA com 12 células. Sua 
vantagem para com o PTA era o fato de que capacitores foram no chip com a 
função filtros para cancelar os possíveis ruído, além de ter um maior número de 
células. 
 Continuando na árvore genealógica, temos a terceira geração de 
dispositivos voltados para evolução, o FPTA-2. Este tem como diferenciais 
resistores e capacitores programáveis. A figura a seguir, mostra a estrutura do 
FPTA-2: 
 
 
 
Figura 7 – FPTA-2 
 
 Os dispositivos comerciais mais comumente encontrados são os Field 
Programmable Gate Arrays (FPGA’s) e os Field Programmable Analog Arrays 
(FPAAs). Estas plataformas têm flexibilidade para implementar um vasto 
número de circuitos eletrônicos. Atualmente os FPGA’s são os dispositivos 
lógicos programáveis mais utilizados para síntese de circuitos digitais. Estes 
são circuitos integrados da classe VLSI (Very Large Scale Integration) sem 
função pré-determinada e granulosidade grossa, que apresentam recursos 
eletrônicos independentes que podem ser configurados via software (Xilinx, 
1991). 
12 
 
Figura 8 – Trecho de uma arquitetura FPGA típica (Thompson, 1995) 
 
 Cada célula contém uma unidade que pode desempenhar alguma 
função booleana. A saída de cada célula pode ser configurada para ser 
conectada a uma saída do circuito ou a outra célula vizinha de acordo os bits 
fornecidos. Neste caso, nenhuma configuração de célula pode desarranjar o 
restante do circuito. 
 Atualmente os FPGA´s tem aplicação na indústria de fabricação de 
display de cristal líquido (LCD) e as imagens de alta definição, conhecida como 
HDTV, isso devido a necessidade de resolução cada vez maiores em relação 
aos displays tradicionais. 
 Os FPAA´s são circuitos integrados (similares ao FPGA’s), que podem 
ser configurados para implementarem várias funções analógicas, usando um 
conjunto de blocos analógicos configuráveis (BAC) e uma rede programável de 
interconexão desses blocos. 
 
 
Figura 9 – Diagrama de blocos simplificado de um FPAA 
13 
 Cada bloco BAC pode implementar algumas funções analógicas tais 
como: adição, subtração, multiplicação, amplificação, integração, diferenciação, 
comparação, logaritmo e exponencial. O que o torna atrativo para a evolução 
intrínseca é que o circuito pode ser programado através de bits. 
 Também podemos destacar outras plataformas configuráveis para 
síntese evolucionária como a Field Programmable Mixed-Analog-Digital Array 
(FPMAs), que deriva de uma FPAA e uma FPGA, e ainda a Programmable 
Analog Multiplixer Array (PAMA), desenvolvida pela Pontifícia Universidade 
Católica (PUC-RJ), que introduz o conceito de barramento analógico para 
interligar componentes discretos através de multiplexadores e 
demultiplexadores (SANTINI, 2001) 
 
2.3 – Aplicações 
 
 Devido às grandes vantagens e possibilidades que a Eletrônica 
Evolucionária disponibilizou, hoje os projetos já superam os simples projeto de 
circuito, podendo ser encontrados em varias áreas de aplicações. Dentre estas 
áreas se destacam robótica, medicina, engenharia civil, entre outras que 
utilizam as técnicas desenvolvidas para a otimização de processos. 
 
2.3.1 – Robótica 
 
 Por muito tempo os robôs foram construídos para aplicação muito 
simples, que não exigiam nenhuma decisão, normalmente tarefas repetidas em 
alta escala. Em outros casos, robôs autônomos deviam ser guarnecidos de 
sensores para identificação do ambiente, o que não era difundido na época. 
 Os princípios da evolução estão começando a ser aplicada ao setor de 
robótica. Um exemplo disso é o robô evolutivo, ou “Evobot,” um robô com a 
capacidade de aprender na escala discreta, se adaptar à evolução das 
imediações, e seletivamente reproduzir (em software e / ou hardware) de uma 
forma que melhore as suas chances de sobrevivência ao seu meio. 
Os seres humanos aprendem relacionando a sua ecologia através de 
seus sentidos visão, audição, tato, paladar e odor. Um robô precisa saber os 
formatos dos objetos para sua navegação, devido a isso, os robôs podem ser 
14 
equipados com entradas sensoriais para aprender sobre sua ecologia. Estes 
meios de entrada podem incluir: configuração da visão (reconhecimento de 
gestos, a percepção dos movimentos, o magnetismo baseado em sinais acima 
e abaixo do espectro visível); configuração dos sons (reconhecimento da fala); 
configuração do tato (sensores táteis, de pressãoe monitores de temperatura); 
configuração do paladar (sensores químicos) e configuração do odor (sensores 
do cheiro). 
No campo da robótica evolutiva, esses conceitos são aplicados para a 
inovação do robô. Ao invés de robôs, cuja criação e componentes de software 
são totalmente especificado, evobots são produzidos com simples mecanismos 
de adaptação e capacidade de reprodução seletiva. Com o tempo, sua 
programação se adapta às sua biosfera. 
 
 
Figura 10 – Robô Evolutivo 
 
Um exemplo de robô evolutivo foi elaborado na Gordon University de 
Aberdeen, Escócia, pela equipe de inteligência artificial do professor 
Christopher MacLeod. Esse aumenta automaticamente sua “inteligência” e 
complexidade à medida que o mesmo acontece com sua estrutura física. 
Em uma entrevista a revista New Scientist (Janeiro 2009), MacLeod 
afirma que, “Se realmente queremos construir robôs humanóides complexos 
com ainda mais sensores e comportamentos mais complexos, é fundamental 
que possam crescer em complexidade à medida que o tempo passa, como 
fizeram as criaturas biológicas”. 
15 
2.3.2 – Medicina 
 
 Na área da medicina um exemplo interessante é o Myoeletric Prosthetic 
Hand (Prótese de Mão Myoeletrica). Esta é uma opção de prótese mecânica 
controlada eletricamente de acordo com a myoeletrica (impulsos elétricos dos 
múscolos), ou seja, quando qualquer movimento muscular é feito, seja ele 
contração ou flexão, um pequeno sinal elétrico é gerado, este é analisado e 
repassado a prótese. Porém, o tempo de adaptação para utilização e a rejeição 
são alguns fatores que restringe esse método. 
 Desde a década de 60, pesquisas estão sendo feitas para tentar 
viabilizar comercialmente as próteses myoeletricas. Contudo muitas delas 
apenas desempenham funções simples, como abrir e fechar a mão, e tem seu 
uso limitado a atividades diárias. 
 Para tentar resolver essas as adversidades, pesquisas foram feitas nos 
chips de controle das próteses com o intuito de se adaptarem as características 
dos indivíduos. Nestes chips foram desenvolvidas técnicas de Eletrônica 
Evolucionária, onde em vez do indivíduo se adaptar a mão, o que seria natural, 
foi possível fazer com que a mão acostumasse ao indivíduo. 
 
 
Figura 11 – A mão robótica 
 
A mão robótica i-LIMB ganhou recentemente o prémio para o produto de 
engenharia do ano no Reino Unido. 
16 
2.3.3 – Engenharia Civil 
 
Na engenharia civil o objetivo é utilizar a computação evolucionária na 
determinação dos diversos parâmetros de uma ligação, entre estruturas 
metálicas, através do método das componentes. 
 Os sensores são instalados nas extremidades das estruturas para que 
esses possam registrar qualquer variação. Como exemplos de parâmetros a 
serem verificados, podemos citar desde o diâmetro dos parafusos aos 
espaçamentos verticais e horizontais. 
Na figura abaixo temos um exemplo da instalação dos sensores nas 
extremidades que interligam uma estrutura na outra. 
 
 
Figura 12 – Estrutura com os sensores de medição 
 
 
 
 
 
 
 
 
 
17 
3 – Algoritmos Genéticos 
 
3.1 – Histórico 
 
 Os primeiros estudos sobre os Algoritmos Genéticos (AG’s) datam do 
ano de 1962, propostos por John H. Holland, porém somente em 1975 em seu 
trabalho “Adaptation in Natural ans Artificial Systems”, onde Holland divulgou 
os seus primeiros resultados. 
 Seus estudos foram inspirados na teoria da evolução das espécies de 
Darwin (1859), onde os indivíduos melhor dotados têm maiores chances de 
sobreviver a um ambiente competitivo e somente estes repassam suas 
características aos seus descendentes. Holland estudou formalmente a 
evolução das espécies e propôs um modelo computacional que, quando 
implementado, poderia oferecer boas soluções para problemas extremamente 
difíceis que eram insolúveis computacionalmente, até aquela época. 
 Os AG’s, assim como na evolução biológica, onde a combinação entre 
os genes dos indivíduos melhores dotados na espécie podem produzir um novo 
indivíduo melhor adaptado às características de seu ambiente, se utilizam de 
alguns operadores como seleção, crossover (cruzamento) e mutação e da 
aplicação de uma função de avaliação de aptidão. Em cada geração, o 
algoritmo busca sua evolução visando uma solução ótima ao problema 
proposto. 
 Os AG’s diferem dos métodos tradicionais de busca e otimização em 
quatro fatores: 
• Trabalham com uma condição do conjunto de parâmetros e não com os 
próprios parâmetros; 
• Trabalham com uma população e não com um único ponto; 
• Utilizam informações de funções objetivas e não derivadas ou outro 
conhecimento auxiliar; 
• Utilizam regras de transição probabilísticas e não determinísticas. 
Na figura abaixo segue um esquema do algoritmo genético básico 
18 
 
Figura 13 – Algoritmo Genético básico 
 
3.2 – Caracterização 
 
 Nos experimentos feitos por Darwin, ele pode verificar que a seleção 
evolucionária nas espécies ocorre randomicamente e que a sobrevivência ou a 
extinção de cada organismo é determinada pela sua habilidade de se adaptar 
ao meio ambiente. Cada vida existente tem uma manifestação física ou uma 
aparência que se deve ao seu fenótipo, o qual é determinado pelo genótipo, 
codificado em forma de DNA. A adaptação ao meio é também chamada de 
aptidão. A aptidão é então utilizada para pressionar a população para a 
sobrevivência do mais apto. 
 Para os AG´s, aptidão é o resultado do processo evolucionário aplicado 
em uma função, enquanto na natureza a aptidão é a sobrevivência de um 
indivíduo em seu meio. Devido a este fator, os indivíduos mais adaptados têm 
maiores chances de participarem dos processos de reprodução. Desta 
maneira, os genes com características mais benéficas são propagados para as 
gerações subseqüentes. Aqueles indivíduos menos adaptados tendem a 
morrer. 
 A analogia entre Algoritmos Genéticos e o sistema natural é 
representada através da tabela abaixo: 
 
19 
Natural Algoritmos Genéticos 
Indivíduo Um ou mais cromossomos com uma aptidão associada 
Cromossomo Uma string codificada de parâmetros (binário, ponto flutuantes, etc) 
Genótipo Código representando os parâmetros do problema 
Fenótipo Versão do problema preparada para ser evoluída 
Gene Versão codificada de um parâmetro do problema a ser resolvido 
Alelo Valor que o gene pode assumir 
Locus Posição ocupada pelo gene no cromossomo 
Crossover 
Operação que mescla os genétipos de dois ascendentes 
selecionados de modo a gerar novos descendentes 
Mutação 
Operação que espontaneamente altera um ou mais alelos do 
genótipo. 
Aptidão resultado do processo evolucionário aplicado em uma função 
Tabela 1 – Quadro comparativo das terminologias 
 
 De maneira a facilitar, podemos caracterizar os AG’s através dos 
seguintes componentes (PACHECO, 2005): 
1. Problema a ser otimizado 
2. Representação das soluções de Problema 
3. Decodificação do Cromossomo 
4. Avaliação 
5. Seleção 
6. Operadores Genéticos 
7. Inicialização da População 
8. Parâmetros e Critérios de Parada 
 
3.2.1 – Problema a ser otimizado 
 
 Por sua característica robusta, os AG’s vêm sendo empregados em 
diversas áreas de conhecimento como otimização de problemas numéricos e 
combinatórias, escalonamento de tarefas, desenvolvimento de layouts 
(modelos) para circuitos, aprendizagem de máquinas, etc. (ZEBULUM, 1999). 
 
20 
3.2.2 – Representação das soluções de Problema 
 
 A representação das possíveis soluções do espaço de busca do 
problema define a estrutura do cromossomo a ser manipulado pelo algoritmo. 
A representação do cromossomo depende da funcionalidade e do objetivo a 
ser alcançado. Abaixo temos os principais tipos de representação. 
 
 
 
 
 
 
Tabela 2 – Representação do cromossomoAs representações mais comumente utilizadas são as binárias e a real. 
A representação binária é de simples compreensão, fácil manipulação de 
cromossomos utilizando os operadores genéticos, além de ser facilmente 
transformada em inteiro ou real e, ainda, torna mais fácil a justificativa de 
alguns teoremas. Apesar disso, a representação que oferece um melhor 
desempenho é a representação por números reais (ponto flutuante). 
 Neste trabalho a representação escolhida foi à binária. Com esta 
representação são necessários um cromossomo de 6 bits para representar as 
soluções de um problema em que o intervalo esta entre [0,63] com os quais 
podemos representar até 64 possibilidades 
 Um binário pode ser usado para representar um número real onde 
tenhamos p casas decimais de precisão. Para tanto deve-se utilizar K bits de 
seguinte forma: 
Número real: [ ]máxmínR X,XX ∈ 
K2 ≥ ( )mínmáx XX − x P10 
Exemplo: 
0,10X máx = 
1,0Xmín = 
Representação Problema 
Binária Numéricos, Inteiros 
Números reais Numéricos 
Permutação de símbolos Baseados em ordem 
Símbolos repetidos Grupamento 
21 
Precisão decimal = 1 casa 
9 X- X mínmáx = 
P10 = 10 
K2 ≥ 90 ⇒ k = 7 bits 
 
3.2.3 – Decodificação do Cromossomo 
 
 A decodificação do cromossomo representa uma potencial solução para 
o problema em questão. Considerando os conceitos até agora propostos por 
Holland, os AG’s são capazes de resolver problemas complexos reproduzindo 
o processo natural de evolução, através da manipulação das cadeias de dígitos 
binários (cromossomos). 
 
3.2.4 – Avaliação 
 
O processo de evolução é direcionado por uma função de avaliação que 
determina, através de um índice de aptidão estabelecido, quanto um indivíduo 
é ou não uma boa solução para o problema proposto. Os indivíduos mais 
aptos, com as melhores avaliações, têm maior chance de sobrevivência ao 
longo deste processo evolutivo. 
 
3.2.5 – Seleção 
 
 A seleção em AG’s executa o papel equivalente ao da Seleção Natural 
na natureza. Na seleção, os indivíduos mais adaptados têm maior possibilidade 
para reprodução. 
 No AG clássico os indivíduos são selecionados aleatoriamente. Para 
este método todos dos indivíduos possuem a mesma probabilidade de serem 
selecionados. 
 Outro tipo de seleção em AG’s é a Roulette Wheel (Roleta), nesta cada 
indivíduo é representado por uma fatia proporcional a sua aptidão relativa. 
Assim, aos indivíduos com maior aptidão é selecionada uma porção maior da 
22 
roleta, enquanto que aos de menor aptidão é selecionada uma porção menor 
da roleta. 
 
 
Figura 14 – Exemplo de uma roleta de seleção – Routlette Wheel 
 
 Além deste método, podemos especificar também outros mecanismos 
de seleção: por torneios, proporcional, por normalização linear, por 
normalização exponencial e por truncamento (BLICKLE, 1996). 
 
3.2.6 – Operadores Genéticos 
 
Os algoritmos evolucionários funcionam mantendo uma população de 
estruturas que evoluem de forma semelhante à evolução das espécies. A estas 
estruturas são aplicados os chamados operadores genéticos, tais como, 
crossover (cruzamento) e mutação. A seguir tem-se a apresentação dos fatores 
principais relacionados a estes operadores. 
• Crossover 
 
Crossover é o processo através do qual novos indivíduos são gerados 
pela combinação de gene de dois indivíduos no universo da população. 
A intenção deste operador é a troca de material entre diferentes 
indivíduos. 
 Para este operador, três tipos de crossover são usualmente utilizados 
em AG’s, o crossover de um ponto, de 2 pontos e o crossover uniforme. 
Normalmente o mais utilizado é o crossover de um ponto. Neste, dois 
indivíduos são selecionados e seus cromossomos são cortados em um 
determinado ponto escolhido de forma aleatória, e os segmentos são trocados, 
23 
formandos dois novos indivíduos. Temos a seguir um exemplo do crossover de 
um ponto 
 Ponto de recombinação 
Antes da recombinação Cromossomo A 1 0 0 1 1 1 1 0 
 Cromossomo B 0 1 0 1 0 0 1 0 
 
 Ponto de recombinação 
Após a recombinação Cromossomo A’ 0 1 0 1 1 1 1 0 
 Cromossomo B’ 1 0 0 1 0 0 1 0 
 
Figura 15 – Recombinação entre os cromossomos “pai” e “mãe”, 
um ponto de recombinação 
 
Para o crossover de dois pontos, dois pontos são aleatoriamente 
escolhidos. No caso de crossover uniforme, a contribuição de cada genitor na 
formação dos descendentes é determinada por um padrão aleatório, o que 
equivale à criação de diversos pontos de corte. 
 Pontos de recombinação 
Antes da recombinação Cromossomo A 1 0 0 1 1 1 1 0 
 Cromossomo B 0 1 0 1 0 0 1 0 
 
Pontos de recombinação 
Após a recombinação Cromossomo A’ 0 1 0 1 1 1 1 0 
 Cromossomo B’ 1 0 0 1 0 0 1 0 
 
Figura 16 – Recombinação entre os cromossomos “pai” e “mãe”, 
dois ponto de recombinação 
 
24 
 É importante salientar que os dois primeiros tipos de crossover 
preservam características codificadas nos cromossomos. O crossover uniforme 
possui a capacidade de combinar quaisquer padrões de bits, mas apresenta 
mais chances de destruir boas características dos cromossomos (ZEBULUM, 
1999). 
 
• Mutação 
 
Mutação é o processo de modificação aleatoriamente de um ou mais 
genes de um cromossomo. A probabilidade de ocorrência de mutação é 
denominada taxa de mutação. Essas taxas geralmente são aplicadas a 
valores muitos baixos, em torno de 0,1% por posição do cromossomo. 
Em outros trabalhos vem demonstrando que em determinadas 
aplicações, o aumento desta taxa para valores entre 1 e 5%, melhora o 
desempenho dos AG’s. 
O operador de mutação é importante porque mantém a diversidade da 
população e a variabilidade dinâmica dos programas em evolução. À título de 
exemplo, podemos citar a mutação simples. 
 
Antes da recombinação Cromossomo A 1 1 0 0 1 0 1 
 
Ponto de mutação 
 
Após da recombinação Cromossomo A’ 1 0 0 0 1 0 1 
 
Figura 17 – Mutação simples 
 
3.2.7 – Inicialização da População 
 
 O processo mais comum para a inicialização da população deve-se 
através da escolha aleatória dos indivíduos. Populações iniciais aleatórias 
podem ser semeadas com bons cromossomos para uma evolução mais rápida, 
quando se conhece o valor de boas “sementes”. 
 
25 
3.2.8 – Parâmetros e Critérios de Parada 
 
 Em um AG vários parâmetros controlam o processo de evolução 
(PACHECO, 2005): 
 
• Tamanho da População: número de indivíduos que irão participar da 
simulação. 
• Taxa de Crossover: probabilidade de um indivíduo ser recombinado com 
outro. 
• Taxa de Mutação: probabilidade do conteúdo de uma posição/gene do 
cromossomo ser alterado. 
• Número de Gerações: total de ciclos de evolução de um AG. 
• Total de Indivíduos: total de tentativas em um experimento (tamanho da 
população x número de gerações). 
 Geralmente o número de gerações e o total de indivíduos são empregados 
como critérios de parada de um AG. A configuração básica de um AG está 
ilustrada na figura abaixo. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 18 – Estrutura básica do Algoritmo Genético 
 
 
 
 
 
Não 
Sim 
População 
Inicial/Atual Problema 
Representação 
Avaliação da 
População 
Operadores 
Genéticos 
Seleção Critério de 
Parada 
Resultado 
Descendentes Genitores 
26 
4 – Desenvolvimento do Projeto 
 
 O projeto se desenvolveu através de dois pilares básicos: software e 
hardware. O hardware do projeto é composto pelo circuito amplificador e por 
um módulo microcontrolado. Este módulo é o responsável pela conversão A/D 
da tensão de saída do circuito amplificador e envio de dados para o 
microcomputador, via comunicação serial. 
 Com relação à programação utilizou-se o Matlab na partereferente ao 
AG, e com a programação do microcontrolador PIC18F4550 presente no 
módulo. Na programação do microcontrolador foi utilizada a linguagem 
QBASIC. Para o desenvolvimento dos circuitos, conhecimentos teóricos e 
tradicionais foram aplicados. Com relação ao Matlab, um pacote específico 
para aplicações de AG’s foi utilizado, o pacote GAOTv5 (HOUCK, 1995), 
desenvolvido na Universidade da Carolina do Norte. Mais detalhes sobre este 
pacote podem ser encontrados no capítulo 5. 
 
4.1 – Diagrama de Blocos 
 
Estabelecida uma população inicial e o número de gerações envolvidas 
no processo, o GAOT passa a avaliar cada indivíduo de cada uma das 
gerações. O melhor indivíduo de uma geração é sempre passado para a 
geração seguinte. Deste modo, a aptidão do melhor indivíduo da geração atual 
é sempre igual ou superior ao da geração passada. Ao chegamos à última 
geração, critério de parada definido pelo número de gerações, temos a melhor 
solução encontrada pelo AG para alcançarmos os critérios estabelecidos no 
problema. A solução final obtida através do software é a otimização dos 
componentes analógicos do circuito. 
Para o circuito do somador, a evolução será realizada tanto na forma 
extrínseca quanto intrínseca, ainda para esta, serão utilizados dois métodos 
para a evolução, uma utilizando o AG e outra sem a utilização do AG, testando 
todas as combinações possíveis de resultados (valores para os 
potenciômetros) para obter a melhor resposta. Vale ressaltar que na evolução 
intrínseca, cada indivíduo é passado para o hardware e, através de um 
conversor A/D, a saída obtida é reutilizada na função de avaliação. 
A figura 19 apresenta o diagrama de blocos que representa o projeto. 
27 
 
Figura 19 – Diagrama de Blocos que representa o projeto 
 
A transferência de dados de configuração dos componentes dos 
circuitos analógicos (E2POTS) será realizada diretamente através da 
comunicação paralela. Dado o funcionamento do circuito amplificador somador 
analógico, uma saída de tensão será obtida e deve ser enviada para o AG para 
que a evolução intrínseca seja realizada. O módulo microcontrolado será o 
responsável por converter o sinal analógico para digital e enviar este dado ao 
microcomputador via comunicação serial. Para a evolução extrínseca o módulo 
não precisa ser utilizado pois toda a evolução é feita diretamente no software 
do MATLAB com a modelagem matemática do circuito. 
 
4.2 – Descrição do Funcionamento Básico dos componentes 
 
 Em linhas gerais, os principais componentes do trabalho são: 
• Microcomputador – Função de executar algoritmo genético através do 
Matlab e executar a programação do microcontrolador; 
• Módulo Microcontrolado – Responsável pela transferência de dados 
entre o microcomputador e o hardware. A comunicação entre o módulo e 
o microcomputador é através da porta serial; 
28 
• Circuito Reconfigurável (Amplificador Somador) – Hardware a ser 
configurado. 
Desta forma, agora vamos descrever o funcionamento dos principais 
componentes utilizados neste projeto: o potenciômetro digital E2POT – 
X9C103P, a módulo microcontrolado e o amplificador operacional LM741. 
 
4.2.1 – E2POT – X9C103P 
 
 Para o nosso projeto, foi necessário escolher um dispositivo capaz de 
ser controlado digitalmente, ou seja, via computador, para a modelagem de um 
circuito de teste. O chip X9C103P que utilizamos em nosso projeto foi projetado 
pela empresa Xicor (XICOR, 2005). Este dispositivo é um potenciômetro digital 
composto por uma matriz de 99 elementos resistivos. 
 Entre cada um dos resistores existe uma posição de parada para um 
cursor, assim como em um potenciômetro mecânico. A posição do cursor é 
controlada pelos seguintes sinais de controle: INC , DU/ e CS . A posição do 
cursor pode ser armazenada na memória interna do chip, e esta informação 
pode ser restaurada ao religarmos o circuito. 
 A resolução deste dispositivo é igual ao maior valor resistivo da matriz 
dividido pelo número de elementos da mesma. No nosso caso, o valor máximo 
é de 10KΩ, que dividido por 99 é igual a aproximadamente 100Ω por posição 
do cursor. 
 
Especificações Técnicas 
 
• Compatível com X9C102/103/104/503 
• CMOS de baixa tensão 
o VCC = 3V à 5.5V 
o Corrente máxima de trabalho = 3mA 
o Corrente de Standby máxima = 500µA 
• 99 elementos resistivos 
o Compensação de temperatura 
• 100 Posições de resistência para o cursor 
29 
o O cursor é posicionado via interface de 3 pólos 
o Similar ao um contador crescente/decrescente TTL 
o Posição do contato é guardada numa memória não volátil e é 
recuperada ao realimentar o chip 
• Informação da posição do contato resistivo permanece guardada por até 
100 anos 
• Resistência Máxima = 10KΩ. 
 
Temos agora que verificar como realizar o controle do potenciômetro. 
Abaixo temos a pinagem e a descrição dos sinais de controle do dispositivo. 
 
 
Figura 20 – Pinagem e Sinais do E2POT 
 
• VH e VL 
Os terminais de tensão alta (VH) e tensão baixa (VL) do chip X9C103P 
são equivalentes aos terminais fixos de um potenciômetro mecânico. A tensão 
mínima é -5V e a máxima é de +5V. Deve se notar que a terminologia VH e VL 
faz referência a posição relativa do terminal em relação à direção de 
movimento do cursor selecionada pelo sinal DU/ e não ao potencial de tensão 
do terminal. 
 
 
 
 
 
Símbolo Descrição 
VH Terminal Positivo da Matriz 
VW Terminal do Cursor 
VL Terminal Negativo da Matriz 
VSS Terra 
VCC Alimentação do chip 
DU/ Sinal de Subida/Descida 
INC Sinal de incremento 
CS Sinal de Seleção do chip 
NC Não conectado. 
 
30 
• VW 
VW é o terminal do cursor, equivalente ao terminal móvel de um 
potenciômetro mecânico. A posição do cursor dentro da matriz de 
elementos resistivos é definida por sinais de controle. 
 
• Up/Down ( DU/ ) 
Este terminal indica a direção de movimento do cursor dentro da matriz 
e também informa quando o contador é incrementado ou decrementado. 
 
• Increment ( INC ) 
Este sinal é ativado pela transição de descida de um pulso. A ativação 
de INC irá mover o cursor e também irá incrementar ou decrementar o 
contador de acordo com a direção indicada pelo nível de sinal lógico 
inserido no terminal Up/Down. 
 
• Chip Select (CS ) 
Este dispositivo é selecionado quando o sinal CS está em nível lógico 
baixo. O valor do contador é armazenado numa memória interna não-
volátil quando o sinal CS volta para nível lógico alto enquanto o sinal 
INC também está em nível alto. Após esta operação de 
armazenamento, o chip será colocado no estado de baixa tensão 
(standby) até que o dispositivo seja selecionado novamente. 
 Por não se tratar de um componente comumente utilizado, passaremos 
a descrever de forma sucinta a operação do potenciômetro. Podemos dividir 
em três seções principais no chip X9C103: a seção de sinais de controle, 
contador e decodificação; a memória não-volátil; e a matriz de resistores. 
 A seção de sinais de controle funciona como um contador pra cima ou 
pra baixo. A saída deste contador é decodificada para ativar uma chave 
eletrônica que liga um terminal de um determinado resistor com o terminal do 
cursor. 
 Dentro das condições próprias de operação, o valor do contador pode 
ser armazenado numa memória não volátil e guardado para uso posterior. A 
matriz de elementos resistivos é formada por 99 resistores conectados em 
31 
série. Em cada extremo da matriz e entre cada elemento resistivo existe uma 
chave eletrônica na qual o cursor pode ser posicionado, transferindo o 
potencial daquele ponto para o cursor. 
 Os sinais INC , DU/ e CS controlam o movimento do cursor ao longo da 
matriz. Com CS setado em nível baixo, o chip estará selecionado e apto a 
responder aos sinais DU/ e INC. Transições de descida em um sinal pulsado 
colocado em INC irão decrementar ou incrementar (dependendo do sinal em 
DU/ ) um contador de 7 bits. A saída deste contador é decodificada, 
selecionando uma das 100 posições disponíveis ao longo da matriz de 
segmentos resistivos. 
 O cursor quando no extremo da matriz, funciona como um potenciômetro 
mecânico, não se movimentando além desta última posição. Desta maneira, o 
contador não retorna ao outro extremo da matriz quando incrementado (se 
estiver na última posição da matriz) ou decrementado (quando estiver na 
primeira posição da matriz). 
 Quando a alimentação é retirada do chip, o último valor do contador é 
armazenado em uma memória não-volátil interna. Quando a alimentação é 
restabelecida, o conteúdo da memória é recuperado para o contador. 
 
4.2.2 – Módulo Microcontralado 
 
 Microcontroladores são microcomputadores em um único chip. Desta 
forma, a CPU (Unidade central de processamento), a memória, as entradas e 
as saídas estão presentes em um único chip. O módulo utilizado possui um 
microcontrolador da MICROCHIP, o PIC18F4550 (Microchip, 2003). É um 
microcontrolador de baixo consumo e alto desempenho com 32kbytes de 
memória flash para programação e 256 bytes de EEPROM. É compatível com 
o padrão industrial de instruções e pinagem. Este chip ainda possui as 
facilidades de utilização do “In Circuit Programming” que permite a gravação de 
todo o programa que controlará o projeto na memória Flash (ROSA, 2004). 
Assim, não é necessário que o microcontrolador seja retirado do módulo para 
ser programado. Entretanto a programação do chip foi realizada via porta USB 
com o gravador CERNE USB. 
32 
 
 
Figura 21 – Microcontrolador PIC18F4550 
 
 A comunicação entre o PC e o módulo é feita via porta serial, Assim, 
tem-se No módulo o chip MAX232 responsável pela interface entre o PC e o 
módulo. O MAX232 capta os dados do microcontrolador através dos pinos RX 
e TX e envia para a porta serial do PC no padrão RS232 (ROSA, 2004). A 
seguir, tem-se a pinagem do MAX232. 
 
 
Figura 22 – MAX232 
 
Além dos componentes principais do módulo que foram citados acima, 
existem ainda dois barramentos de entrada de 8 pinos para coleta de dados e 
dois barramentos de saída de 8 pinos para saída de dados. 
O circuito completo do módulo pode ser encontrado no apêndice C. 
 
33 
4.2.3 – Amplificador Operacional LM741 
 
 Para a construção do circuito somador utilizaremos um circuito 
integrados LM741 (NATIONAL, 2005). O amplificador operacional é um circuito 
integrado de estado sólido que se utiliza de realimentação externa para 
controlar suas funções (ROON, 2000). É um dos dispositivos mais utilizados na 
eletrônica. Abaixo temos a pinagem deste dispositivo. 
 
 
 
 
Figura 23 – Pinagem LM741 
 
Pinagem: 
 
Pino1: Offset nulling – Como o amplificador operacional é do tipo diferencial, 
o offset da tensão de entrada deve ser controlado. A tensão de offset pode 
pode ser anulada através da aplicação de uma tensão de polaridade inversa à 
da tensão de offset. O potenciômetro de ajuste offset null pode ser usado para 
compensar a tensão de offset. Este potenciômetro também pode compensar 
irregularidades que possam existir do processo da fabricação que podem vir a 
causar o offset. Conseqüentemente, é recomendado para aplicações críticas. 
 
Pino 2: Entrada inversora – Todos os sinais de entrada neste pino serão 
invertidos na saída (pino 6). 
 
Pino 3: Entrada não-inversora – Todos os sinais de entrada aplicados neste 
pino apareceram na saída sem inversão. 
 
34 
Pino 4: V- – Este pino é o terminal de alimentação negativa. Para o 741 os 
limites de alimentação são – 4,5 V e – 18 V, e é especificado para operação 
entre – 5 e – 15 Vdc. O dispositivo irá operar normalmente ao longo deste 
intervalo de tensões de alimentação. É importante ressaltar que este pino não é 
o mesmo que o terra. 
 
Pino 5: Offset nulling – Ver pino 1. 
 
Pino 6: Saída – A saída será de polaridade oposta ao sinal de entrada se o 
sinal estiver sendo aplicado ao pino 2 (entrada inversora do amplificador 
operacional) e terá a mesma polaridade caso seja aplicado ao pino 3 (entrada 
não-inversora). 
 
Pino 7: V+ – Este pino é o terminal de alimentação positiva. Para o 741 os 
limites de alimentação são + 4,5 V e + 18 V, e é especificado para operação 
entre + 5 e + 15 Vdc. O dispositivo irá operar normalmente ao longo deste 
intervalo de tensões de alimentação. 
 
Pino 8: N/C (Não conectado) – Não há nada conectado a este pino. O motivo 
pelo qual ele está presente no circuito integrado é para manter o padrão de 8 
pinos. 
 
4.2.4 – Comunicação Serial 
 
 A comunicação entre o módulo microcontrolado e o PC é serial e 
somente será utilizada para enviar o valor do sinal de tensão já convertida para 
digital. 
O padrão de porta serial para microcomputadores que se encaixam na 
categoria Data Terminal Equipment (DTE) é o RS232. Suas especificações 
básicas são mostradas a seguir. 
 
 
 
 
35 
 
Parâmetro Condições 
“0” lógico Entre +3V e +25V 
“1” lógico Entre -3V e -25V 
Rede indefinida Entre -3V e -25V 
Tensão em circuito aberto Sempre menor que 250V 
Corrente de curto-circuito Nunca srá maior que 500mA 
 
Tabela 3 – Parâmetros porta serial 
 
Existem dois tipos de porta serial nos PC’s. Uma delas é o conector de 
25 pinos e a outra 9 pinos. Neste projeto foi escolhido o conector de 9 pinos 
(D-type 9 pins). Suas pinagens e função podem ser verificadas na tabela a 
seguir. 
Pino Nome Função 
1 DCD Data Carrier Detected: Detecção de portadora 
2 RX Received Data: Entrada serial de dados 
3 TX Transmitted Data: Saída serial de dados 
4 DTR 
Data Terminal Ready: Indica para ao aparelho que o 
microcomputador está pronto para o link 
5 GND Terra 
6 DSR 
Data Set Ready: Avisa ao microcomputador que o aparelho está 
pronto para o link 
7 RTS 
Request To Send: Avisa ao aparelho que o microcomputador 
deseja transmitir dados 
8 CTS 
Clear To Send: Indica que o aparelho está pronto para a 
transmissão de dados 
9 RI 
Ring Indicator: É ativo quando o aparelho detecta um sinal de 
ligação externa 
Tabela 4 – Funções de cada pino conector de 9 pinos 
36 
 
Figura 24 – Conector serial RS232 
 
4.2.5 – Comunicação Paralela 
 
 A porta paralela também é uma interface de comunicação entre o 
computador e um periférico. Ela é chamada de porta paralela porque conduz os 
sinais por meio de oito vias de dados simultâneas, um para cada bit. Os fios de 
sinal seguem em paralelo do microcomputador ao seu destino. 
 Enquanto uma conexão serial envia um bit, uma porta paralela é capaz 
de enviar um byte inteiro (8 bits). Por esta razão, a conexão através de portas 
paralelas é mais rápida. As portas paralelas são intrinsecamente simples, pois 
lidam com os dados da forma como o microcomputador faz, em bytes no lugar 
de bits. A porta paralela está ligada diretamente à placa mãe do 
microcomputador, logo todos os cuidados devem ser tomadas para que ao 
conectar circuitos eletrônicos a essa porta, pois, uma descarga elétrica ou um 
componente com a polaridade invertida, poderá causar danos irreparáveis ao 
seu computador, seja coerente. 
 Mesmo sendo a transmissão paralela mas rápida que a serial, a mesma 
tem suas limitações. Ela só funciona bem até uns poucos metros. Quando a 
distância aumenta, problemas de interferência eletrônica começam a ocorrer no 
cabo. Quanto maior o cabo, maior a interferência. 
 O microcomputador geralmente possui três portas: LPT1, LPT2 e LPT3 
(alguns possuem LPT4), e cada porta possui três endereços: data, status e 
control. Estes endereços estão numa ordem seqüencial. Para a porta física 
37 
padrão, a LPT1, tem-se os seguintesendereços: 0x378h (para enviar um byte 
de dados pela porta), 0x379h ( para receber um byte de dados pela porta), 
0x37Ah ( para enviar dados). 
 Os computadores estão basicamente configurados da seguinte maneira 
(MRS, 2005): 
 
Printer Data Port Status Control 
LPT1 0x0378h 0x0379h 0x037ah 
LPT2 0x0278h 0x0279h 0x027ah 
LPT3 0x03bch 0x03bdh 0x03beh 
Tabela 5 – Configuração dos Endereços das Portas 
 
Mas em alguns computadores (principalmente os da IBM) esses valores 
podem mudar. 
Existem dois tipos de porta paralela nos PC’s. Esta diferença esta 
voltada para o modo de como são feitas as transmissão em cada uma. Elas 
podem ser unidirecionais ou bidirecionais. Neste trabalho vamos utilizar a a 
transmissão unidirecional. 
A conexão de qualquer equipamento à porta parelela é feita através do 
conector DB25, que esta localizado a parte de trás do microcomputador. 
Este tem a função enviar e receber os dados. O conector padrão DB25 
possui 25 pinos. A figura abaixo, mostra o conector padrão DB25, onde cada 
pino tem um nome que o identifica (MESSIAS, 2005). 
 
38 
 
Figura 25 – DB25 que fica atrás do microcomputador 
 
 
Figura 26 – Conector Macho do Cabo Paralelo 
 
Suas pinagens e funções podem ser verificadas na tabela a seguir. 
 
 
 
 
 
 
 
39 
Pino Nome Função 
2 a 9 D0, D1, D2, D3, 
D4, D5, D6 e 
D7 
Usados para enviar dados através da Porta Paralela. São 
controlados pelo Registrador de Dados (saída de dados), e 
a letra D indica isso. O número que vem após a letra 
corresponde à posição do pino dentro do Byte. 
10, 
11, 
12, 
13 
e 
15 
S6 – Ack, 
S7 – Busy, 
S5 – Paper End, 
S4 – Select Out 
e 
S3 – Error 
Através desse registrador podemos receber dados do 
mundo externo. São controlados pelo Registrador de Status 
(entrada de dados), e a letra S indica isso. O número que 
vem após a letra corresponde à posição do pino dentro do 
Byte. 
1, 
14, 
16 
e 
17 
C0 – Strob, 
C1 – Auto Feed, 
C2 – Init 
e 
C3 – Select In 
São controlados pelo Registrador de Controle da Porta 
Paralela (controla a impressora, pode ser usado como 
outras 4 saídas e podem ser usado para enviar dados para o 
mundo externo, e a letra C indica isso. O número que vem 
após a letra corresponde à posição do pino dentro do Byte. 
18 a 25 GND Terra 
 
Tabela 6 – Funções de cada pino conector da porta paralela 
 
 
Os pinos de 2 à 9 são responsáveis por enviar os dados do microcomputador 
para o ambiente externo. Todas as saídas da porta paralela são lógicas. Ou 
seja, quando a tensão elétrica está entre 0 à 0,4V, significa que o pino está em 
um nível lógico 0. E quando a tensão elétrica está entre 3,1V e 5V significa que 
o pino encontra-se em um nível lógico 1. Entretanto os pinos SELECT_IN, 
AUTOFEED e STROBE possuem uma lógica invertida. Isto é, colocando o 
nível lógico 1 nesses sinais iremos obter uma saída de 0V. 
 
 
 
 
 
 
 
 
 
 
 
 
40 
5 – Programação 
 
5.1 – Descrição do Software 
 Baseado nos conceitos da eletrônica evolucionária, utilizamos em nosso 
projeto, um pacote desenvolvido pelos professores Chris Houck, Jeff Joines e 
Mike Kay: The Genetic Algorithms for Optimization Toolbox (GAOT) for Matlab 
5 (HOUCK, 1995). O algoritmo genético nos permite, através das ferramentas 
de simulação do MATLAB, analisar problemas dos mais diversos tipos. 
 O software Matlab integra análise numérica, operações com matrizes e 
gráficos de uma forma simples de ser entendida. Além disso, as funções do 
Matlab são completamente portáteis de um hardware para outro sem a 
necessidade de recompilação, desde que apresentem as mesmas bibliotecas. 
 O algoritmo utilizado neste trabalho foi implementado como um toolbox 
do Matlab, isto é, um grupo de funções relacionadas, chamado GAOT. O 
GAOT implementa a evolução simulada em Matlab utilizando as 
representações binária e real. Esta implementação é bem flexível quanto aos 
operadores genéticos, funções de seleção, funções de terminação assim como 
funções de evolução que podem ser utilizadas. 
 O GAOT foi dividido em módulos individuais, onde cada módulo é 
reconhecido como uma função do Matlab, permitindo assim que o código seja 
livre para ser expandido e melhorado modificando tais extensões. 
 Passaremos agora a analisar a estrutura básica do GAOT. As 
particularidades dos algoritmos desenvolvidos para cada uma dos circuitos 
serão vistas mais adiante. 
 O comando principal do algoritmo genético é dado pela seguinte 
instrução: 
 [x,endPop,bPop,traceInfo] = ga(bounds ,evalFN ,evalParams 
,params , startPop , termFN , termParams , selectFN , selectParams,… 
xOverFNs, xOverParams, mutFNs ,mutParams) 
 No quadro abaixo descrevemos as funções dos parâmetros do comando 
principal. 
 
 
41 
Parâmetros de saída: 
X Solução final 
endPop (opcional) População final 
bPop (opcional) Matriz com os melhores indivíduos e a geração 
correspondente onde foram encontrados 
traceInfo (opcional) Matriz com os valores máximo e médio da população 
para cada geração 
 
Parâmetros de entrada: 
bounds Matriz com os limites (superior e inferior) das 
variáveis 
evalFN Função de avaliação, usualmente um arquivo .m; 
evalParams 
(opcional) 
Matriz de parâmetros para a função de avaliação cujo 
padrão é [NULL] 
params (opcional) Um vetor de opções, isto é [epsilon prob_param 
disp_param] onde epsilon é a mudança necessária 
para que duas soluções sejam consideradas e 
prob_params é 0 se utilizarmos a codificação binária 
para representação das soluções, ou 1 para 
representação em números reais. Disp_param 
(opicional) controla a visualização de como o 
progresso do algoritmo será mostrado: 1 mostra a 
geração corrente e o valor da melhor solução na 
população enquanto que 0 não mostra tais valores 
startPop (opcional) Matriz contendo a população inicial. É criada com o 
initializega 
termFN (opcional) Nome da função de terminação utilizada 
termParams 
(opcional) 
Matriz de parâmetros definida tendo com default [100] 
selectFN (opcional) Nome da função de seleção utilizada; 
selectParams 
(opcional) 
Parâmetros para a função de seleção 
xOverFNs (opcional) Opções para os operadores de crossover 
xOverParams 
(opcional) 
Parâmetros do crossover 
mutFNs (opcional) Opções para os operadores de mutação 
42 
mutParams 
(opcional) 
Matriz de parâmetros da mutação. 
Tabela 7 – Parâmetros do AG 
 
 Para realizar as simulações de evolução, o AG utiliza o parâmetro 
evalFN. Ele determina a aptidão da solução com o cálculo do erro, que pode 
ser utilizado para as simulações online ou offline. O AG utiliza os operadores 
xOverFNs e mutFNs para alterar as soluções durante a busca. 
 Podemos notar que o sistema GAOT como um todo, apresenta alto nível 
de modularidade e é bastante flexível, nos permitindo trabalhar com uma lista 
de operadores genéticos, realizando a evolução utilizando qualquer 
combinação de seleção, crossover, mutação e função de terminação. 
 A grande responsável pelo sucesso do AG é sua função de avaliação, 
um programa aparentemente secundário, porém que é fundamental para 
determinar a aptidão de cada solução durante a busca. 
 Ela utilizará todos os parâmetros da função principal e nos indicará 
apenas a melhor solução encontrada pela simulação de evolução do problema. 
Para cada tipo de problema encontrado em nosso cotidiano, podemos definir 
uma função de avaliação. Ela é única para a otimização dos problemas e 
garante a busca de indivíduos com melhores aptidões. Cada vez que a função 
ga é utilizada para resolver um novo problema, uma nova função de avaliação 
deve ser modelada e inserida no software. 
 Operadores genéticos são capazes de alterar mecanismos de busca do 
AG. Eles são utilizados paracriar novas soluções baseadas nas soluções 
existentes na população. No estudo do algoritmo genético, podemos verificar 
que existem dois tipos básicos de operadores, crossover e mutação. O 
crossover toma dois indivíduos e produz dois novos indivíduos enquanto que a 
mutação altera um indivíduo para produzir uma nova solução. Podemos alterar 
os parâmetros da função ga que utiliza ambos os operadores para produzir 
novas soluções. 
 A função de seleção determina quais dos indivíduos irão sobreviver e 
serão passados para a próxima geração. A função ga chama a função de 
43 
seleção a cada geração depois de todos os novos indivíduos terem sido 
evoluídos para criar a nova população a partir da antiga. 
 A inicialização de uma nova população para prover ao ga um ponto de 
partida é usualmente realizada pela geração aleatória de indivíduos a partir do 
espaço de busca. Contudo, é possível realizar o ‘seed’ da população inicial 
com indivíduos, ou gerar soluções de outra forma. A função ga permite tal fato 
com o parâmetro startPop que provê ao ga uma população inicial explícita. 
 Para determinarmos quando a simulação da evolução deve ser 
finalizada e a população resultante deve ser informada, utilizamos a função de 
terminação. A função ga chama a função de terminação uma vez a cada 
geração após a aplicação de todos os operadores e da função de evolução 
para o indivíduo resultante. 
 
 No apêndice B são informados todos os arquivos encontrados no toolbox 
listando, por exemplo, as funções de seleção e os operadores crossover e 
mutação disponíveis. É informado também qual dos arquivos pode ser utilizado 
com cada representação escolhida para os indivíduos. Neste trabalho, a 
representação escolhida para as soluções (indivíduos) é a representação 
binária. 
 
5.2 – Programa no PC 
 
Para a implementação do projeto, necessitamos que o algoritmo 
genético, cuja versão utilizada foi o GAOTv5, se comunique tanto com o 
Hardware externo, para que seja realizada uma evolução intrínseca, quanto 
com outro programa, ou função, realizando uma evolução extrínseca. 
Utilizaremos para essa comunicação, programas desenvolvidos no 
Matlab 2007b, cuja versão contempla em sua biblioteca interna, diversas 
funções e parâmetros que configuram facilmente estes tipos de conexão. Para 
o caso do envio de dados aos potenciômetros digitais, utilizaremos a porta 
paralela do PC, e sua configuração é de fácil implementação no Matlab. 
 A figura abaixo, mostra os parâmetros utilizados para a configuração da 
porta paralela no Matlab. 
 
44 
 
Figura 27 – Configuração da Porta Paralela 
 
 Os parâmetros acima são neste projeto introduzidos em todos os 
arquivos que necessitavam da utilização da transmissão dos dados através da 
porta paralela para acessar dispositivos externos. Em todos os trechos de 
programa, podemos verificar que esses arquivos estão relacionados à 
configuração dos POTs, como será explicado em seguida. 
Como visto no item 4.1, os E2POTs mantém armazenados sempre o 
último valor no contador, mesmo que o circuito tenha sido desligado, por isso 
quando precisamos que o valor seja nulo, utilizamos um programa 
desenvolvido para colocar os POTs num valor inicial igual a zero (os programas 
completos aqui mencionados encontram-se no apêndice F). Este procedimento 
é fundamental para termos a certeza de que os POTs não continham nenhum 
resíduo de operações anteriores. 
Este programa para zerar os POTs deve ser executado antes que 
quaisquer dados sejam enviados ao circuito, de preferência na primeira linha 
do programa principal. Este programa principal é responsável pela evolução do 
sistema com o algoritmo genético. Para cada tipo de evolução utilizada ( 
intrínseca e extrínseca ) existe um programa principal, para a evolução 
extrínseca com AG, este programa é denominado “aa_prin_ext_comAG.m”, 
para a evolução também extrínseca, porém sem o AG este programa é 
chamado de “ab_prin_ext_semAG.m”. Para os modos intrínsecos os 
programas principais sem e com AG chamam-se “aa_prin_int_semAG.m” e 
“ad_prin_ext_comAG.m” respectivamente. Todos são arquivos do Matlab. 
Para o modo offline ( extrínseco ), depois que ocorreu a evolução do 
sistema, lembrando que está evolução foi feita toda no computador, os valores 
dos resistores gerados por esta evolução são enviados para os potenciômetros 
via comunicação paralela. O arquivo responsável por configurar os 
potenciômetros, estando eles inicialmente com valores nulos é chamado de 
“aa_Configurar_Pots.m”. Estes programas para configurar os POTs são 
executados no fim da evolução, de preferência na última linha do programa 
principal. O programa para configurar os potenciômetros funciona enviando os 
45 
dados bit a bit, gerando pulsos para incrementar os POTs até que eles 
cheguem aos valores desejados. O código deste programa encontra-se no 
apêndice F. 
 Como o processo de evolução é diferente para cada um dos quatro 
casos, vamos explicá-los separadamente. 
 
 5.2.1 – Método extrínseco 
 
 Para o método extrínseco ( offline ), realizamos duas evoluções. A 
primeira, utilizando o AG, é iniciada pelo arquivo “aa_prin_ext_comAG”.m”. 
Utilizamos também o arquivo “aa_AmpSomador.m”, onde nós vamos 
especificar a tensão de saída desejada, tensões de entrada e resistência de 
realimentação do amplificador. Então o programa principal recebe estes dados 
através deste arquivo e busca soluções para o resistor 1 e resistor 2. Em 
seguida, o software utiliza estes dados como entrada para o modelo do 
amplificador somador, cujas características foram desenvolvidas no arquivo. O 
AG encontra uma tensão de saída. Esta tensão de saída obtida é comparada 
com a tensão de saída desejada e então estes valores são enviados para uma 
fórmula de erro, para que possa ser avaliada a sua aptidão dentro da geração. 
 A segunda evolução está presente no arquivo 
“ab_prin_ext_semAG.m”, cuja função de avaliação é “ab_simuladorPIC”. Da 
mesma forma que o anterior, especificamos na função de avaliação o modelo 
do circuito a ser trabalhado. A função principal então varia o valor teórico das 
soluções entre os valores mínimos e Máximos sem a utilização do AG. Para o 
caso dos nossos potenciômetos, a variação foi de 0 a 10Kohms para cada um 
deles, resultando em um número de 10 mil combinações. Todas as 
combinações são verificadas, e a solução que apresentar um menor erro é 
então enviada ao circuito físico pela função “aa_Configurar_Pots.m”. 
 
 5.2.2 – Método intrínseco 
 
 Para o método intrínseco, duas evoluções também foram realizadas, a 
primeira, sem a utilização do AG, utilizamos o arquivo 
“aa_prin_int_comAG.m”. Ele inicialmente zera o valor dos Pots com o 
46 
arquivo “aa_Zerar_Pots.m” e então testa diretamente no Hardware pela 
porta paralela todas as combinações possíveis de soluções com o arquivo 
“aa_Configurar_Pots.m”. para que, a cada ciclo, a aptidão seja testada, 
utilizamos o arquivo “Conversao_AD” que capta pela porta serial o sinal já 
digital da tensão de saída do circuito fornecida pelo PIC. A função 
“adteste.HEX” gravada no PIC é a responsável pela conversão A/D do sinal 
de saída do amplificador somador e seu envio para o PC via transmissão 
serial. Este processo é repetido e a melhor solução encontrada é mantida no 
circuito. 
 O segundo método intrínseco utiliza o AG. O arquivo principal é o 
“ad_prin_int_comAG.m”. Ele inicialmente zera o valor dos Pots com o 
arquivo “aa_Zerar_Pots.m” e então testa diretamente no Hardware pela 
porta paralela as sooluções do AG com o arquivo “ad_Configurar_Pots.m”. 
Para que, a cada ciclo, a aptidão seja testada, também utilizamos o arquivo 
“Conversao_AD” que capta pela porta serial o sinal já digital da tensão de 
saída do circuito fornecida pelo PIC. A função “adteste.HEX” gravada no PIC 
é a responsável pela conversão A/D do sinal de saída

Continue navegando