Automação no Parque - 15/11/2014 - acionando um motor brushless com Arduino I
Hoje, feriadão, fizemos uma montagem que há muito tempo eu tinha vontade de fazer: controlar um motor brushless sem a ajuda de um ESC.
Motor brushless é aquele tipo de motor usado em CD-ROM e HD. Ele se chama assim porque não tem contato elétrico com o rotor, que é feito de ímã. Mais informações aqui.
Basicamente o BLDC (de motor brushless de corrente contínua, em inglês) é um motor trifásico do tipo Y, ou seja, tem três bobinas ligadas a um ponto comum, o neutro.
Acontece que os motores trifásicos CA (corrente alternada) se valem da onda senoide entregue pelas concessionárias para funcionar, ou seja, basta ligar as três fases mais o neutro ao motor e o mesmo começa a girar.
A figura acima mostra a onda trifásica ideal para "tocar" um motor brushless.
Acontece que os circuitos de baixa tensão são normalmente alimentados por fontes de alimentação como as de celulares ou mesmo baterias que, claro, só proveem CC (corrente contínua).
Isso faz com que tenhamos apenas duas opções para controlar um motor brushless com um microprocessador como o Arduino:
1) Criar algum tipo de circuito que gere a senoide necessária. É assim que funciona a maioria dos drones, que usam normalmente motores brushless. Um equipamento chamado ESC (de Eletronic Speed Control) é usado para essa função. O ESC, por sua vez, é ligado ao microprocessador do drone que determina a velocidade, direção e até um "freio" para o motor.
Acontece que o ESC não é muito barato, custa acima de R$ 35,00. Se vc estiver pensando em construir um hexacóptero, só de ESC serão mais de R$ 210,00. Por isso vamos tentar outra alternativa:
2) Tratar o motor como se fosse de relutância chaveada. A ideia aqui é usar uma onda quadrada para fazer o papel da senoide.
Ocorre que essa onda tem que variar em função da velocidade do motor, ou seja, tem que ser mais lenta para que o motor parta e depois ir-se acelerando para que o dito ganhe velocidade. Novamente temos duas opções:
a) Usarmos um sensor para detectar a velocidade de giro e com isso ir ajustando a velocidade de acionamento das bobinas.
b) Simplesmente "chutar" algumas velocidades diferentes para mover o motor, sem saber exatamente o que está acontecendo com ele.
A opção "b" será analisada nesse post. Futuramente vamos testar outras alternativas.
Para avaliarmos essa abordagem vamos montar o seguinte circuito:
As três bobinas (L1, L2 e L3) são as que estão dentro do motor. Normalmente o motor brushless tem quatro pontos de conexão, conforme figura abaixo (motor de HD):
Para achar os terminais ligados às bobinas e o terra comum basta medir a resistência entre os terminais. A resistência entre dois terminais ligados às bobinas será mais ou menos metade existente entre uma das bobinas e o neutro. No meu motor a resistência entre os polos das bobinas é de em torno de 7V e de um terminal de bobina para o neutro em torno de 3,2V.
Usamos os três transístores (que podem ser qualquer um NPN que aguente 5V ou a tensão que vc resolva usar, com a corrente de algumas centenas de miliamperes) para funcionar como chave, permitindo o controle de uma corrente maior que os 50 mA que o Arduino pode prover por porta. Normalmente pode ser usados da série BC ou BD. Se vc for usar mais do que 6V convém usar também um dissipador de calor para cada resistor.
Os diodos por sua vez impedem o "ricochete" da tensão quando o motor for parando, já que ele tende a gerar uma força contra-eletromotriz quando está desligado porém rodando por causa da inércia.
Abaixo o circuito montado na protoboard:
Abaixo, dois vídeos do Automação no Parque desse sábado, 15/11.
Esse aí de cima é o do motor sendo acionado, ligado exatamente como descrito acima. O próximo vídeo é de um projeto de escola de alguns alunos de eletrônica da ETEP. O professor encomendou que os caras fizessem carrinhos para uma competição, porém os carrinhos deveriam ser comandados... por fios. Assim, o carrinho não tem nem processador, e a ponte H para controlar os motores é na mão, ou seja, os caras acionam os interruptores para acionar o carrinho na direção desejada. A bateria fica na caixinha de controle. Vejam aí o resultado:
Bom, esse foi o post da teoria e do hardware. Amanhã vai o do software e o vídeo com os resultados.
Abracadabraço!
Motor brushless é aquele tipo de motor usado em CD-ROM e HD. Ele se chama assim porque não tem contato elétrico com o rotor, que é feito de ímã. Mais informações aqui.
Basicamente o BLDC (de motor brushless de corrente contínua, em inglês) é um motor trifásico do tipo Y, ou seja, tem três bobinas ligadas a um ponto comum, o neutro.
Acontece que os motores trifásicos CA (corrente alternada) se valem da onda senoide entregue pelas concessionárias para funcionar, ou seja, basta ligar as três fases mais o neutro ao motor e o mesmo começa a girar.
Senoide aplicada a um motor trifásico |
Acontece que os circuitos de baixa tensão são normalmente alimentados por fontes de alimentação como as de celulares ou mesmo baterias que, claro, só proveem CC (corrente contínua).
Isso faz com que tenhamos apenas duas opções para controlar um motor brushless com um microprocessador como o Arduino:
1) Criar algum tipo de circuito que gere a senoide necessária. É assim que funciona a maioria dos drones, que usam normalmente motores brushless. Um equipamento chamado ESC (de Eletronic Speed Control) é usado para essa função. O ESC, por sua vez, é ligado ao microprocessador do drone que determina a velocidade, direção e até um "freio" para o motor.
Acontece que o ESC não é muito barato, custa acima de R$ 35,00. Se vc estiver pensando em construir um hexacóptero, só de ESC serão mais de R$ 210,00. Por isso vamos tentar outra alternativa:
2) Tratar o motor como se fosse de relutância chaveada. A ideia aqui é usar uma onda quadrada para fazer o papel da senoide.
Exemplo de trem de pulsos usados para acionar um motor de relutância chaveada. |
a) Usarmos um sensor para detectar a velocidade de giro e com isso ir ajustando a velocidade de acionamento das bobinas.
b) Simplesmente "chutar" algumas velocidades diferentes para mover o motor, sem saber exatamente o que está acontecendo com ele.
A opção "b" será analisada nesse post. Futuramente vamos testar outras alternativas.
Para avaliarmos essa abordagem vamos montar o seguinte circuito:
|
Para achar os terminais ligados às bobinas e o terra comum basta medir a resistência entre os terminais. A resistência entre dois terminais ligados às bobinas será mais ou menos metade existente entre uma das bobinas e o neutro. No meu motor a resistência entre os polos das bobinas é de em torno de 7V e de um terminal de bobina para o neutro em torno de 3,2V.
Usamos os três transístores (que podem ser qualquer um NPN que aguente 5V ou a tensão que vc resolva usar, com a corrente de algumas centenas de miliamperes) para funcionar como chave, permitindo o controle de uma corrente maior que os 50 mA que o Arduino pode prover por porta. Normalmente pode ser usados da série BC ou BD. Se vc for usar mais do que 6V convém usar também um dissipador de calor para cada resistor.
Os diodos por sua vez impedem o "ricochete" da tensão quando o motor for parando, já que ele tende a gerar uma força contra-eletromotriz quando está desligado porém rodando por causa da inércia.
Abaixo o circuito montado na protoboard:
Abaixo, dois vídeos do Automação no Parque desse sábado, 15/11.
Esse aí de cima é o do motor sendo acionado, ligado exatamente como descrito acima. O próximo vídeo é de um projeto de escola de alguns alunos de eletrônica da ETEP. O professor encomendou que os caras fizessem carrinhos para uma competição, porém os carrinhos deveriam ser comandados... por fios. Assim, o carrinho não tem nem processador, e a ponte H para controlar os motores é na mão, ou seja, os caras acionam os interruptores para acionar o carrinho na direção desejada. A bateria fica na caixinha de controle. Vejam aí o resultado:
Bom, esse foi o post da teoria e do hardware. Amanhã vai o do software e o vídeo com os resultados.
Abracadabraço!
Boa noite, seu post está me ajudando muito. Você já conseguiu terminar, estou fazendo um projeto cujo qual necessito ligar dois motores de HD com o arduino, e seu post está me ajudando muito, porém estou precisando do modelo de software que você utilizou. Obrigado.
ResponderExcluirQualquer coisa meu e-mail é edudu15.cf@gmail.com
Eduardo, desculpe-me. mas só vi a sua mensagem hoje... veja a resposta ao comentário abaixo do seu e obrigado pela visita.
ExcluirAmigo. Boa noite. Você tem o código de programação? Sou inicinte e gostaria de conhecer.
ResponderExcluirObrigado.
Cássio,
ResponderExcluirEu infelizmente não guardei o código que usei. Mas de toda forma, te adianto que realmente não funciona. Outro dia tentei reproduzir o experimento, sem sucesso.
Motor brushless, com Arduino ou não, só com ESC mesmo...
PS: Obrigado pela visita!
ExcluirVoce poderia informar o nome dos transistores q vc usou?
ResponderExcluirBoa noite, gente, eu baixei o pdf do componente TDA5241 da Philips.
ResponderExcluirEu fim um teste e funionou de boa... Ao que parece esse CI era usado nos antigos players de video cassete VHS.