ÍNDICE DE CONTEÚDO
O objetivo desse artigo é mostrar a você como partir dos conceitos em controle de sistemas dinâmicos e implementar suas soluções, juntando a teoria com a prática.
Vamos explorar o conceito de Hardware-in-the-Loop, pensando no controlador para motor DC escovado. Queremos alcançar isso de forma rápida, segura, testada e documentada. Para isso, teremos os seguintes passos:
- Identificar o sistema através de teste de bancada, no caso os parâmetros do nosso motor;
- Projetar o sistema de controle no simulador, com os parâmetros já identificados;
- Testar o controlador em um gêmeo digital do sistema, também conhecido como Hardware-in-the-loop;
- Testar o controlador na planta real.
Hardware-in-the-Loop é um conceito extensamente usado em Model-Based Design. Assim, adotaremos essa metodologia de desenvolvimento. A simulação, implementação e testes serão todos baseados em modelo(s).
Se você não conhece, vale a pena ler o artigo do Rodrigo Botelho (link) sobre a metodologia.
Embarcados Experience 2024: Evento Presencial
Participe do Embarcados Experience 2024 em São Paulo. Conhecimento técnico, palestras, workshops e oportunidade de networking com profissionais experientes.
Esse primeiro artigo será dedicado à identificação dos parâmetros do sistema. No nosso caso, o teste será implementado numa ESP32 acionando uma ponte H. Usando o Model-Based Design, utilizaremos da geração do código automática com a biblioteca Waijung 2 e o Simulink. Aqui, usamos a versão para estudantes, que pode ser encontrada gratuitamente. Se quiser mais detalhes sobre geração automática de códigos para sistemas embarcados, o articulista Evandro Teixeira fez uma apresentação a respeito aqui no Embarcados: (link)
Sendo assim, vamos ao estudo da identificação dos parâmetros do motor!
O sistema a ser identificado e sua representação em modelo
Trabalharemos aqui com um motor DC de ímã permanente, escovado, o qual contém um encoder de 260 pulsos por revolução (ppr) para medições de posição do eixo do rotor:
Desse modo, as equações que regem o funcionamento de um motor de corrente contínua de imã permanente no domínio da frequência são:
Em que:
O primeiro passo é representarmos essas equações em diagramas de bloco no Simulink, com a biblioteca Simscape:
Desejamos identificar os parâmetros ,, ,, do motor. Para isso, vamos utilizar o estimador de parâmetros do Simulink, ajustando a simulação aos valores coletados do teste do sistema.
Na imagem acima, é mostrada a configuração entre a ponte H e o motor. É necessária essa interface entre o mundo lógico do microcontrolador e o mundo de altas tensões e correntes do motor elétrico. Quem se encarrega disso é a ponte H, que representamos aqui com o modelo de chaves ideais. Vale lembrar que nosso projeto aqui é apenas o começo. Modelos mais precisos podem requerer a inclusão da dinâmica das chaves IGBTs, TBJs ou MOSFETs, por exemplo.
Na placa de controle que utilizamos, o driver dedicado para o acionamento do motor é o TB6612FNG. Mais informações podem ser obtidas no datasheet do componente. Porém, o mais importante é a forma de operá-lo: dois terminais controlam o acionamento das pernas da ponte H e um terminal é usado para controlar o fluxo de energia que será transmitido ao motor por meio do sinal PWM.
Contando passos
A coleta de dados é um passo intermediário necessário para garantir que o modelo descrito acima seja aproximado para se comportar próximo ao real. Assim, a coleta de dados deve ser feita através de um estímulo conhecido no comando do motor e a captura de sua posição.
No caso, fazemos o estímulo a partir da ESP32 diretamente na ponte H. Na imagem abaixo, você pode perceber como é a conexão entre o motor, a placa de controle e o módulo ESP32:
O encoder é um dispositivo para medir as voltas do motor. No nosso caso, temos 260 pulsos elétricos (digitais) a cada volta completa do rotor. O diagrama de blocos de um encoder com 260 [ppr] é mostrado abaixo. O bloco denominado “ideal rotational motion sensor” fornece um valor de deslocamento angular. Como temos um encoder de 260 ppr, precisamos converter a saída do simulador para ser próxima ao que devemos encontrar na prática.
Dados e mais dados!
Essa etapa é uma das mais importantes do desenvolvimento. Nela, o engenheiro deve implementar técnicas de identificação de sistemas para levantar os parâmetros da planta e trabalhar com modelos matemáticos representativos da planta.
Para atingir esse objetivo, utilizou-se um código para acionamento da ponte H e a subsequente coleta dos dados da resposta do sistema a esse acionamento.
Os terminais e da ponte H estão conectados ao GPIO5 e GPIO23 da ESP32, respectivamente. Assim, invertendo-se o valor lógico desses IOs do microcontrolador, pode-se inverter o sentido de rotação do motor. Isso é visto no seguinte trecho do modelo de acionamento para coleta de dados:
Pino | Função | Descrição |
GPIO5 | IN1 | Controla o sentido de giro |
GPIO23 | IN2 | Controla o sentido de giro |
GPIO13 | PWM | Controla o fluxo de energia |
Na imagem acima, os blocos Simulink em vermelho são as interfaces com a ESP32. Estes estão no Blockset do Simulink, Waijung 2, como comentado anteriormente. O restante são blocos disponíveis no software.
Prosseguindo o raciocínio, o sinal H_Bridge é um gerador de pulsos nativo do Simulink. Esse modelo é usado para excitar a planta. Em seguida, coletamos as posições do motor no tempo.
Os dados acima são enviados pela serial da ESP32 de volta ao PC. Eles serão usados na próxima etapa. Assim como o controle, a lógica de Teste da Bancada também é desenvolvida em modelos, posteriormente convertidos para C/C++ e executada na ESP32.
Do modelo à realidade
Agora que os dados da planta física foram coletados, deve-se fazer uso do aplicativo Estimador de Parâmetros, do próprio Simulink, a fim de encontrar um ponto de ajuste ótimo do modelo, com base nos dados de entrada e saída coletados. O modelo base para essa rotina de ajuste é o seguinte:
O algoritmo de aproximação do modelo baseia-se na identificação de um mínimo local da função de erro entre os dados coletados e a resposta do laço de otimização da função e procura identificar qual combinação dos parâmetros ( ,, ,, ) gera o menor valor da função de erro. A resposta do sistema em função do sinal de acionamento da ponte H pode ser vista ao lado. ”Measured” são os dados coletados via serial com Python a partir de um arquivo escrito na ESP32. Assim, executa-se o estimador de parâmetros a fim de aproximar as curvas, conforme mostrado abaixo.
Após uma rodada de iterações, chega-se aos valores na simulação mais próximos que representam aquela dinâmica.
Cabe lembrar que uma rotina de identificação acontece em pelo menos duas etapas: Estimação e Validação. Por isso, toda a descrição aqui para Estimação é repetida para Validação, mas com uma diferença: A entrada do sistema é diferente da usada na Estimação.
A partir desse ponto, com a planta identificada, o engenheiro pode seguir seu trabalho no projeto de sistemas de controle, a partir de um modelo próximo à realidade. Esse será o tema do próximo artigo, quando apresento como encaixar isso no simulador/HIL. Até lá!
Interessante ver a abordagem de HIL aqui no Embarcados. Parabéns pelo nível de detalhe e clareza do artigo, especialmente por juntar o que encontramos na bancada com o que temos nos simuladores. Apesar de um modelo simples, mostra como é fundamental o trabalho de experimentação para desenvolvimento de modelos representativos.