Oi pessoal,
Hardware pronto, software funcionando, linhas gerais traçadas e funcionando. Hora do detalhamento e melhorias.
Comecei medindo as correntes máximas do driver e da bob (interface opto-acoplada). Levar um susto é pouco :-O O driver puxa 200mA em 12V com tudo funcionando, inclusive a ventuinha. Sem a ventuinha, fica em 140mA. Como podemos ligar até 4 drivers na bob, o total seria 800mA!!! Por esta eu não esperava!
Com a bob não ficou muito longe: Calculei que a fonte isolada de 12V tem que fornecer 280mA para alimentar a bob mais 4 drivers. Tudo ligado, claro.
É... acho que as fontes tem que ser mais parrudas do que eu imaginava. Penso em colocar estas 2 fontes na bob. O usuário só tem que ligar o 110V / 220V. Facilita bastante pro cidadão. Só que tem que ser uma fonte com 2 saídas de 12V isoladas entre si, sendo que a potência total fica em 13W. Sem gordura nem folga. Vou discutir esta questão no encontro do dia 30 para ver qual caminho seguimos.
Deixando os sustos de lado, comecei a polir o controle de corrente. Anteriormente era um controle PI meia boca, e tinha 2 caminhos a serem escolhidos. Um era melhorar este controle e o outro era mudar para um de controle de pico de corrente, sugerido pelo monsieur Alain. Comecei pelo mais fácil de fazer, ou seja, mudar o que já existia.
Anteriormente, a corrente era gerada através de um PWM, cujo ciclo de trabalho deveria ser corrigido através da leitura da corrente. Simplificando: Se a corrente está pouca, aumenta o ciclo. Se está muito, diminui. Simples, não? Só que na prática a teoria é outra.
No controle antigo, tiro a média das 2 últimas medidas de corrente (como se fosse um integral) e adiciono a diferença entre a corrente desejada e a lida (dividida por uma constante) ao ciclo do PWM (como se fosse um proporcional). O resultado até que fica razoável, só que gera uma pequena oscilação na corrente resultante.
Comecei brincando com a constante que divide a diferença das correntes. Se a constante é grande, a oscilação diminui muito, só que a corrente demora a subir após a mudança de passo, fazendo com que se perca torque. Se a constante é pequena, a corrente sobe bem rápido, mas a oscilação aumenta. Ó céus.. o que fazer?
Eureca! Se o passo muda, coloco um ciclo de 100%, fazendo com que a corrente aumente o máximo possível. Assim que ela passa pela corrente desejada, entra o controle que já estava. Simples, não? Pois é... Aí que a corrente oscilou mesmo! Cuméquié???
Quando a corrente fica maior que a desejada, coloco um ciclo que manteria a corrente constante, só que a corrente não quer nem saber: continua subindo que nem louca, embalada pelas características indutivas do motor e turbinada pelo circuito de diodo. Ao mesmo tempo, o controle faz com que o ciclo diminua cada vez mais. Assim que a corrente chega na estratosfera, despenca de uma vez. Ok, uma hora a corrente e o controle chegam num acordo, mas ficou bem pior do que eu gostaria...
Feito o backup desta versão, vamos fazer o controle por pico de corrente. O funcionamento é muito simples: Ligo a corrente e fico aguardando ela passar pela desejada. Assim que isso acontece, desligo e aguardo um tempo fixo, quando torno a ligar a corrente e o ciclo recomeça. Simples, não?
Joguei um monte de tralha fora. O programa diminuiu em torno de 1Kb (1/8 do tamanho total). Ficou super simples (como era de se esperar). Sei, sei.. e o resultado???
A primeira diferença é que o motor começou a apitar, já que a freqüência de comutação dos transistores ficou abaixo dos 20KHz (o PWM funcionava bem acima disso). A aquisição da corrente ficou sendo feita a cada 6,4us (infelizmente não consegui diminuir este tempo). Isso faz com que a corrente fique ligada em até 6,4us a mais do que deveria. Para compensar, o tempo desligado tem que ser maior do que o ideal, fazendo com que a freqüência fique abaixo dos 20KHz, fazendo o motor apitar.
O driver tem um trimpot de uso geral do soft. Fiz com que o tempo desligado seja controlado pelo trimpot, atualmente múltiplo de 20us. Se deixo muito tempo, a corrente média fica baixa. Se deixo pouco tempo, a corrente média fica acima da desejada. Num determinado ponto (que varia com a tensão da fonte, claro), temos o melhor resultado. E isso quer dizer o que, na prática?
Além do assobio do motor, ele se comportou com menos torque, quando comparado com o PWM anterior. Faz sentido... Quanto maior a freqüência do chaveamento da corrente, maior o controle que podemos ter sobre ela. Claro, tudo dentro de certos limites.
Por falar nisso e abrindo um parênteses, estudando as características do DSP, acabei achando uma maneira de aumentar muito a eficiencia da interrupção do PWM, fazendo com que o período do PWM pudesse diminuir. Só não testei, pois estava envolvido com o controle por pico de corrente.
E o resultado geral? Bão, prá dizer a verdade, nenhuma das maneiras me convenceu. A primeira ficou muito instável (mais que anteriormente) e a outra ficou com pouco torque.
A grande vantagem das 2 opções é que tudo foi feito por soft, sem alteração nenhuma de hardware. Este era um dos requisitos originais do driver. Basta o próprio usuário fazer um upgrade que o driver poderia ficar mais invocado.
E quanto ao controle, como ficamos? Ainda não ficamos. As 3 opções (puro PID, PID alterado e controle por pico de corrente) necessitam de mais pesquisa, mais testes. Quem sabe no encontro poderemos chegar a um veredito?
Abraços,
Rudolf