Logo Pisciotta

PISCIOTTA

Soluções Inteligentes

PROJETOS

Listar
Alguns dos projetos que eu desenvolvi e prototipei.

Aproveite, aprenda, relembre, curta, divulgue.

Rob?? Equilibrista com L??gica Fuzzy


Conceito de controle de um sistema naturalmente inst??vel, baseado no p??ndulo invertido, utilizando L??gica Nebulosa (Fuzzy Logic).

1364 Views - 6 Curtidas - Dificuldade

postado 24 de Maro de 2019 - atualizado 15 de Abril de 2020

Autor: Alex Pisciotta


Baixe aqui o material da apresenta????o do Semin??rio. S??o 61MB devido ??s anima????es.

Download

Este artigo est?? em andamento, portanto, ainda inacabado, e demonstra como estou desenvolvendo meu projeto.

O sistema naturalmente inst??vel do Rob?? Equilibrista se baseia no conceito de p??ndulo invertido, geralmente resolvido por t??cnicas de Controle PID (Proporcional, Integral, Derivativo), mas neste projeto se deseja utilizar a L??gica Fuzzy para a solu????o desse problema.

O Primeiro Prot??tipo

O primeiro prot??tipo constru??do ?? apresentado na figura abaixo, constru??do ?? partir de palitos pl??sticos de sorvete encaixados e unidos por cola quente, apenas para validar o conceito e realizar os primeiros testes. A estrutura abriga uma protoboad na qual foi montada o primeiro circuito de controle, composto por um Arduino Mini, um driver de motor L295, um regulador de tens??o e um m??dulo GY-521 que cont??m o circuito integrado MPU-6050 constitu??do pelo Aceler??metro e Girosc??pio . Um conversor USB/Serial possibilita a leitura dos dados ?? partir do programa executado no Arduino.

O circuito eletr??nico ?? apresentado a seguir, atrav??s do programa CAD Eagle da Autodesk.

EM BREVE

A montagem do circuito ?? representada a seguir, atrav??s do programa Fritzing.

O primeiro prot??tipo foi fundamental para a determina????o e compreens??o do funcionamento dos componentes essenciais ?? solu????o do problema. O primeiro deles, e talvez o mais importante, ?? o m??dulo GY-521 que cont??m o componente MPU-6050 (um chip da empresa InvenSense - TDK, que cont??m um aceler??metro e um girosc??pio no mesmo encapsulamento).

O componente n??o ?? recomendado para novos projetos de hardware, uma vez que j?? existem componentes superiores no mercado. O link do fabricante, aonde se pode adquirir mais informa????es ??:

https://www.invensense.com/products/motion-tracking/6-axis/mpu-6050/

Clique aqui para visitar a p??gina do fabricante.

O MPU-6050

O componente MPU-6050 ?? um MEMS (Micro Electro-Mechanical System) que possui partes mec??nicas dentro da pastilha de sil??cio e permite o sensoriamento de grandezas f??sicas como a Acelera????o linear (Aceler??metro) e a Velocidade Angular (Girosc??pio). Ser??o tratados mais detalhes deste componente em breve.

O L293

O componente L293 ?? circuito integrado que disponibiliza 4 meias-pontes, ideal para driver de cargas indutivas de at?? 600mA no caso do L293D, ou at?? 1A (1,2A de pico) no L293 (sem sufixo). A vers??o L293D possui diodos de prote????o internos contra tens??o reversa e contra descargas provenientes de est??tica, simplificando o circuito. Ambas as vers??es possuem alimenta????o l??gica separada da tens??o de alimenta????o da carga, que pode ser entre 4,5V e 36V, e possuem um pino de habilita????o (Enable) para cada par de "meia-ponte". Podem funcionar chaveando pulsos de at?? 5kHz.

Os pinos de GND servem tamb??m para dissipar o calor do componente e, por isso, devem todos ser ligados ?? placa do circuito impresso para ajudar a resfri??-lo. A alimenta????o l??gica (VCC1) deve ser entre 2,3V e 7V, danificando o componente se tens??es maiores que 7V forem aplicadas. Recomenda-se a aplica????o da tens??o padr??o TTL: 5V.

Fonte: Datasheet L293 Texas Instruments

Seu funcionamento ?? simples:

Quando o Enable ?? baixo, as sa??das correspondentes s??o colocadas em alta imped??ncia (ou seja, se comportam como se estivessem desconectadas do circuito). Quando ENABLE ?? alto, as sa??das assumem o estado l??gico das entradas, fornecendo a tens??o VCC2 para a carga em caso de n??vel l??gico da entrada, ou GND em caso de n??vel baixo.

Conhecendo o componente, foi realizada a liga????o dos motores, sendo o motor esquerdo ligado aos pinos 1Y e 2Y (sa??das do L293D), e o motor direito aos pinos 3Y e 4Y. As entradas correspondentes foram ligadas ao Arduino Mini, al??m dos pinos de Enable e as alimenta????es do CI. Desse modo, para ligar o motor esquerdo em um sentido, primeiro devo enviar n??vel l??gico alto para o pino 1A e n??vel l??gico baixo ao pino 2A e ent??o n??vel l??gico alto ao pino EN1 para habilitar as sa??das. Para inverter o sentido de rota????o do motor, deve-se inverter o n??vel l??gico das entradas 1A e 2A, e ent??o habilitar as sa??das atrav??s de EN1 novamente. Para ativar o motor da direita deve-se realizar o procedimento an??logo. Caso sejam enviados Alto e Alto ou Baixo e Baixo, n??o representa problema ao circuito, mas os motores n??o ser??o energizados com diferen??a de potencial que possa provocam circula????o de corrente, permanecendo sem movimento.

Defini, ent??o, que os pinos de controle PWM ser??o conectados aos pinos de ENABLE do L293D, e os pinos de controle de orienta????o ser??o ligados a pinos digitais sem a fun????o PWM.

Projetei o circuito antes da chegada do material e, por n??o ter certeza se me seria entregue um L293 ou um L293D, eu inserir os diodos na montagem, mas eles n??o s??o necess??rios para o L293D que possuo, ent??o estes diodos foram retirados do circuito para a confec????o da placa de circuito impresso.

O Arduino Pro Mini

A placa Arduino Pro Mini ?? uma redu????o da placa Arduino Uno, utilizando o mesmo microcontrolador, mas removendo-se alguns componentes perif??ricos.

Fonte: Arduino Pro Mini

Consultando-se o esquema el??trico do Arduino Pro Mini pode-se observar que essa vers??o foi desenvolvida pela Spark Fun Electronics baseada na vers??o Arduino Mini desenvolvida pela pr??pria equipe Arduino.

Essa placa tem um microcontrolador ATMEGA328 SMD, e possui dimens??es reduzidas, ideal para sistemas embarcados.

Suas principais diferen??as em rela????o ao Arduino UNO s??o a aus??ncia de um conversor UART/USB, o que impede ligar a placa diretamente ?? porta USB do computador para sua programa????o. Para isso deve-se utilizar um conversor Serial/USB externo ajustando-se a tens??o desse conversor para a tens??o da placa (vide adiante). Outra diferen??a importante ?? que essa placa n??o possui um auto-reset para a grava????o dos programas, exigindo que se pressione o bot??o de reset quando a IDE do Arduino estiver pronta para descarregar o programa na placa. Caso o reset n??o seja pressionado, a transfer??ncia do programa n??o ocorre e a IDE apresenta uma mensagem de erro.

Existem duas vers??es principais, e a diferen??a est?? na tens??o do regulador de tens??o (que pode ser de 5V ou de 3,3V) e no cristal do oscilador, que pode ser 8/16 ou 20MHz. Geralmente a placa possui uma marca????o indicando as caracter??sticas da mesma, mas no meu caso, a placa veio sem indica????o alguma.

Por defini????o, as placas com regulador de 3,3V devem possuir cristal de 8MHz, enquanto as placas alimentadas por 5V devem possuir cristal de 16MHz. Para descobrir as caracter??sticas da minha placa, eu alimentei com 9V o pino RAW da placa (pino 1) e medi a tens??o no pino VCC (pino 4), e obtive a tens??o de 3,3V. Para verificar a frequ??ncia de opera????o, utilizei uma lupa e li a inscri????o sobre o ressonador (pe??a cromada), 80f, indicando 8MHz. Para ter certeza, eu gravei no Arduino Pro Mini uma rotina "Blink" para piscar o LED do pino 13 a cada 10 segundos, e ent??o verificar se o clock est?? correto.

Mais informa????es podem ser obtidas no site Oficial do Arduino Pro Mini:

https://store.arduino.cc/usa/arduino-pro-mini

Sabendo-se que minha placa ?? uma 3,3V e 8MHz, concluo que a liga????o com o m??dulo MPU-6050 pode ser realizada diretamente, sem nenhum tratamento da tens??o entre os dispositivos, j?? que ambos trabalham em 3,3V.



L??gica Fuzzy

O diferencial deste projeto, al??m do conhecimento do tratamento de sinais do m??dulo sensor de movimento, ?? a aplica????o da L??gica Fuzzy para a solu????o do problema: manter o equil??brio do rob??.

Em um sistema equilibrista cl??ssico, a solu????o seria realizada pela aplica????o de um controle realimentado PID (Proporcional, Integral, Derivativo) para o qual se necessita estabelecer uma fun????o de transfer??ncia em malha fechada. Para isso, deve-se conhecer o modelo matem??tico que representa o problema. A L??gica Fuzzy n??o necessita da FT, mas apenas o racioc??nio de um especialista para montar o conjunto de regras.

A L??gica Fuzzy, tamb??m conhecida como L??gica Nebulosa ou L??gica Difusa, ?? aquela que se utiliza de grandezas n??o exatas, para as quais n??o se pode apenas dizer "sim" ou "n??o" (como na l??gica booleana), aproximando-se da tratativa humana. Aplica-se um conjunto de regras e fun????es de pertin??ncia para determinar uma sa??da num??rica de um sistema complexo. As entradas e sa??das s??o definidas por vari??veis lingu??sticas, em faixas de valores (por exemplo baixa, m??dia, alta e muito alta), e o conjunto de regras determina os valores com base na combina????o dessas entradas com o conjunto de regras definido.

Lofti Zadeh ?? considerado o pai da l??gica nebulosa pois em 1965 publicou um artigo propondo o conceito de utiliza????o dessa l??gica ao inv??s da l??gica cl??ssica ou Booleana para a resolu????o de sistemas complexos, afirmando que o mundo ?? nebuloso. Enquanto a l??gica booleana aceita apenas dois valores (0 e 1, verdadeiro ou falso), o conceito Fuzzy trabalha com vari??veis lingu??sticas em in??meras possibilidades de valores lingu??sticos, como, em caso de um copo, completamente cheio, m??dio, completamente vazio, em diferentes graus de pertin??ncia, regidos por uma fun????o de pertin??ncia para cada uma das vari??veis lingu??sticas adotadas.

As fun????es de pertin??ncia podem ser trapezoidais, triangulares, ???singleton functions???, fun????es de Sigmoid ou fun????es Gaussianas.

Um sistema Fuzzy pode ser dividido em 4 etapas b??sicas:

  • Fuzzyfica????o: (vari??veis lingu??sticas, valores lingu??sticos, fun????es de pertin??ncia);
  • Regras Fuzzy;
  • Motor de Infer??ncia;
  • Defuzzifica????o.

As regras Fuzzy s??o um conjunto de regras Se ??? Ent??o com uma condi????o e uma conclus??o.

A Infer??ncia Fuzzy ?? o processo aonde os operadores Fuzzy s??o calculados, atrav??s de operadores como o Complemento Fuzzy, a Intersec????o Fuzzy (similar ao E Booleano) e a Uni??o Fuzzy (similar ao OU Booleano).

A defuzzifica????o ?? o processo de transforma????o dos valores Fuzzy encontrados em valores de sa??da, utilizando-se m??todos matem??ticos, como o c??lculo de centro de gravidade atrav??s de integrais, a m??dia ponderada ou a mediana dos m??ximos.

Existem dois m??todos para a Defuzzifica????o: Mandani e Takagi-Sugeno (TS) que prop??em m??todos diferentes para a defuzzifica????o. Mandani defende que os resultados das infer??ncias fuzzy devem ser vari??veis constantes, enquanto Takagi-Sugeno defende que a sa??da deve ser uma fun????o da entrada.



CONTINUA...


Este artigo est?? em constru????o. Fique de olho. Semanalmente haver??o atualiza????es.


Refer??ncias

  • https://www.invensense.com/products/motion-tracking/6-axis/mpu-6050/ - acessado em 25/09/2018
  • CUNHA, Alessandro. A vez dos sensores. Revista Saber Eletr??nica n??419 ano 43, p??ginas 62 a 65. 2007
  • https://playground.arduino.cc/Main/MPU-6050/ - acessado em 07/04/2019
  • RIGNEL, Diego Gabril de Sousa. Uma Introdu????o ?? L??gica Fuzzy. Revista Eletr??nica de Sistemas de Informa????o e Gest??o Tecnol??gica, 2011.