Controle de velocidade para motores brushless com um ESP8266

Christopher Méndez
· 5 minutos de leitura
Enviar por e-mail

Aprenda como funcionam os motores brushless, como controlá-los com PWM usando um controlador de velocidade, um ESP8266 e Ubidots.

O que são motores sem escova?

Também conhecidos como motores síncronos de corrente contínua, são um tipo especial de motor que consiste em um estator e um rotor, como a maioria dos motores existentes, mas com uma diferença: os "motores sem escova", como o próprio nome indica, não possuem escovas conectadas eletricamente entre o estator e o rotor para reduzir o atrito, as vibrações e a ineficiência.

Como eles funcionam?

Esses motores são associados a um inversor. O inversor fornece a tensão de alimentação às bobinas sequencialmente, fazendo com que os polos do rotor se movam de acordo com o campo magnético gerado pelas bobinas, também sequencialmente. A velocidade do rotor e de seu eixo dependerá da taxa de sequenciamento do variador.

Normalmente podemos encontrá-los em aviões ou carros de controle remoto, bem como em drones.

No tutorial a seguir, vamos aprender sobre motores brushless, como controlá-los com um ESP8266 (NodeMCU) e Ubidots.

Requisitos para a candidatura:

Em seguida, use 2 fios para conectar o GND e o sinal à entrada respectiva do ESC.

ESC NodeMCU
Fio traseiro GND - Fio preto
Fio branco D5 - Fio amarelo

Neste caso, não usamos o fio vermelho do ESC porque ele fornece 5V e nosso NodeMCU funciona com 3,3V, então podemos danificá-lo.

2. Criação de dispositivos e variáveis Ubidots .

Acesse a seção Dispositivo da sua Ubidots e crie um dispositivo chamado " motor ".

Dentro do seu dispositivo " motor ", crie uma variável chamada " velocidade ".

3. Criação Dashboard e widgets Ubidots .

Após criarmos nosso dispositivo e variável, podemos criar um dashboard e um widget para controlar o motor a partir de um dashboardweb ou móvel.

Agora, crie um widget de controle para definir a velocidade do motor associada à variável " velocidade ".

Então você estará pronto para programar e testar seu projeto.

4. Programação com a IDE do Arduino.

1. Se ainda não o fez, faça o download da IDE do Arduino.

1a. Abra o IDE e selecione Arquivo -> Preferências

1b. Adicione o URL abaixo no "URLs adicionais do Gerenciador de Quadro" . Você pode adicionar vários URLs, separando-os por vírgulas.

http://arduino.esp8266.com/stable/package_esp8266com_index.json

2. Abra e instale a placa ESP8266 no Gerenciador de Placas: Ferramentas -> Placa -> Gerenciador de Placas.
2a. Você pode encontrar facilmente a placa digitando “ESP8266” na barra de pesquisa.

3. Agora, selecione a placa NodeMCU 1.0 no menu Ferramentas ->

4. Defina ou verifique a porta do seu computador com a qual o dispositivo está se comunicando. Vá em Ferramentas -> Porta -> Selecione a porta.

4b. Certifique-se de que a velocidade de upload do seu IDE seja 115200 acessando Ferramentas -> Velocidade de Upload -> 115200.

5. Baixe a biblioteca Ubidots , caso ainda não a tenha feito. Agora, clique em Sketch –> Incluir Biblioteca –> Adicionar Biblioteca .ZIP e escolha a biblioteca Ubidots

Se o upload for feito corretamente, você receberá a resposta: "Biblioteca adicionada às suas bibliotecas."

8. Feche e abra novamente o Arduino IDE.

Programação do NodeMCU ESP8266:

Assim que o seu ESP8266 estiver configurado, podemos enviar e receber dados do Ubidots para controlar o seu motor brushless.

1. Copie e cole o seguinte código na IDE do Arduino. Não se esqueça de personalizar o SSID e a senha do Wi-Fi, bem como o seu Ubidots .

/**************************************** Incluir Bibliotecas ****************************************/ #include "UbidotsESPMQTT.h" #include<Servo.h> /**************************************** Definição de Constantes ****************************************/ #define TOKEN "............" // Seu TOKEN Ubidots #define WIFINAME "............" // Seu SSID #define WIFIPASS "............" // Sua senha do Wi-Fi #define DEVICE_LABEL "motor" // Insira aqui o rótulo do seu dispositivo Ubidots #define VARIABLE "speed" // Insira aqui o rótulo da sua variável Ubidots #define MotorPin D5 // Pino do NodeMCU de onde sai o sinal para o ESC Servo ESC; // Variável do servo float value=0; // Para armazenar o valor de entrada. float MotorSpeed=0; Ubidots client(TOKEN); /**************************************** Funções Auxiliares ****************************************/ // Converte um array de caracteres para um valor float. float btof(byte * payload, unsigned int length) { char * demo = (char *) malloc(sizeof(char) * 10); for (int i = 0; i < length; i++) { demo[i] = payload[i]; } float value = atof(demo); free(demo); return value; } // Callback para lidar com a assinatura void callback(char* topic, byte* payload, unsigned int length) { value = btof(payload, length); value = map(value, 0, 100, 0, 180); //Mapeia os valores de 0 a 100 do slider para 0 a 180 para usar a biblioteca servo. ESC.write(value); //Envia o valor (PWM) para o ESC } /**************************************** Funções Principais ****************************************/ void setup() { // coloque seu código de configuração aqui, para executar uma vez: client.ubidotsSetBroker("ubidots"); // Define o broker corretamente para a conta comercial client.setDebug(true); // Passe um valor booleano verdadeiro ou falso para ativar as mensagens de depuração Serial.begin(115200); client.wifiConnection(WIFINAME, WIFIPASS); client.begin(callback);ubidotsSubscribe(DEVICE_LABEL, VARIABLE); // Insira os rótulos da fonte de dados e da variável ESC.attach(MotorPin,1000,2000); } void loop() { // Coloque seu código principal aqui, para ser executado repetidamente: if (!client.connected()) { client.reconnect();ubidotsSubscribe(DEVICE_LABEL, VARIABLE); // Insira os rótulos da fonte de dados e da variável } client.loop(); }


Agora, verifique se o seu código está correto clicando no botão de verificação na IDE do Arduino, acima do editor.

Após a verificação do código, você receberá uma resposta semelhante à abaixo, indicando que a configuração foi feita corretamente.

Em seguida, você precisa carregar o código no seu NodeMCU. Para fazer isso, selecione o ícone de seta para a direita ao lado do ícone de confirmação.

Após o upload do código, você receberá a seguinte mensagem na IDE do Arduino:

Sessão de Teste:

Conecte a bateria ou a fonte de alimentação ao ESC.

Então, quando tudo estiver pronto, basta deslizar o dedo na barra de navegação do seu dashboardseja na versão web ou móvel.

Resumo:

Neste guia, aprendemos como funcionam os motores brushless e como controlá-los com o ESP8266 NodeMCU e Ubidots. Este projeto pode nos ajudar a projetar sistemas de controle eletrônico para dispositivos mecânicos. Por exemplo: cortinas automáticas, um ventilador com controle térmico para o verão e tudo o que sua imaginação permitir com motores.