Controle de velocidade para motores sem escova com ESP8266
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 CC síncronos, 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 nos diz, não possuem escovas conectado eletricamente entre o estator e o rotor para reduzir atrito, vibrações e ineficiência.
Como eles funcionam?
Estes motores estão associados a um inversor. O inversor faz a alimentação das bobinas sequencialmente, assim os pólos do rotor se movem de acordo com o campo magnético gerado pelas bobinas sequencialmente. A velocidade do rotor e do seu eixo dependerá da velocidade de sequenciamento do variador.
Podemos encontrá-los normalmente em aviões ou carros RC, também drones.
No tutorial a seguir aprenderemos sobre motores Brushless, como controlá-los com ESP8266 (NodeMCU) e Ubidots .
Requisitos de aplicação:
- NodeMCU ESP8266
- Controlador de velocidade
- Motor sem escova
- Tábua de ensaio
- Cabos de fiação
- Conta Ubidots
- Bateria 12v ou fonte de alimentação
Em seguida, use 2 fios para conectar Gnd e sinal à respectiva entrada do ESC.
ESC | NodeMCU |
---|---|
Fio traseiro | GND - fio preto |
Fio branco | D5 - Fio amarelo |
Neste caso não utilizamos o fio vermelho do ESC pois ele fornece 5v e nosso NodeMCU funciona a 3,3v, então podemos danificá-lo.
2. Dispositivo Ubidots e criação de variáveis.
Vá para a seção Dispositivo da sua Ubidots e crie seu dispositivo chamado " motor ".
Dentro do seu dispositivo “ motor ”, crie uma variável chamada “ velocidade ”.
3. Criação Dashboard e widget Ubidots .
Depois que nosso dispositivo e variável forem criados, podemos criar um dashboard e um widget para controlar o motor a partir de um dashboard web ou móvel.
Agora, crie um widget de controle para definir a velocidade do motor associada à variável “ velocidade ”.
Então você está pronto para programar e testar seu projeto.
4. Programação com o Arduino IDE.
1. Se ainda não tiver feito isso, baixe o IDE do Arduino.
1a. Abra o IDE e selecione Arquivos -> Preferências
1b. Adicione o URL abaixo no URLs adicionais do gerente do conselho . Você pode adicionar vários URLs separando-os com vírgulas.
http: //arduino.esp8266.com/stable/package_esp8266com_index.json
2. Abra e instale a placa ESP8266 no Boards Manager: Tools -> Board -> Boards Manager
2a. Você pode encontrar a placa facilmente digitando “ESP8266” na barra de pesquisa.
3. Agora selecione a placa NodeMCU 1.0 no Ferramentas -> Placa
4. Defina ou verifique novamente a porta do seu PC 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 Ubidots ESPMQTT, caso ainda não o tenha feito. Agora clique em Sketch -> Incluir Biblioteca -> Adicionar Biblioteca .ZIP e escolha a Ubidots ESP8266 MQTT
Se carregado corretamente, você receberá a resposta: "Biblioteca adicionada às suas bibliotecas".
8. Feche e abra novamente o Arduino IDE.
Programando o NodeMCU ESP8266:
Assim que seu ESP8266 estiver configurado, podemos postar e obter dados do Ubidots para controlar seu motor Brushless.
1. Copie e cole o seguinte código no Arduino IDE. Não se esqueça de personalizar o SSID e a senha do Wi-Fi e seu Ubidots .
/**************************************** Incluir bibliotecas ******* *********************************/ #include " Ubidots ESPMQTT.h" #include<Servo.h> /**************************************** Definir constantes ******* *********************************/ #define TOKEN "............ " // Seu Ubidots TOKEN #define WIFINAME "............" //Seu SSID #define WIFIPASS "............" // Seu Wifi Pass # define DEVICE_LABEL "motor" // Coloque aqui o rótulo do seu dispositivo Ubidots #define VARIABLE "speed" // Coloque aqui o rótulo da sua variável Ubidots #define MotorPin D5 //Pino NodeMCU por onde sai o sinal para o ESC Servo ESC; //Servovariável float value=0; // Para armazenar o valor recebido. float Velocidade do motor = 0; Cliente Ubidots (TOKEN); /**************************************** Funções Auxiliares ******* *********************************/ // converte de um array de caracteres para um valor flutuante. float btof(byte * carga útil, comprimento int não assinado) { char * demo = (char *) malloc(sizeof(char) * 10); for (int i = 0; i < comprimento; i++) { demo[i] = carga útil[i]; } valor flutuante = atof(demonstração); grátis(demonstração); valor de retorno; } // Retorno de chamada para lidar com assinatura void callback(char* topic, byte* payload, unsigned int length) { value = btof(payload, length); valor = mapa(valor, 0, 100, 0, 180); //Mapeie os valores 0-100 do controle deslizante para 0-180 para usar a biblioteca servo. ESC.write(valor); //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. ubidots SetBroker("industrial.api. ubidots .com"); // Define o corretor corretamente para a conta comercial client.setDebug(true); // Passa um valor bool verdadeiro ou falso para ativar mensagens de depuração Serial.begin(115200); cliente.wifiConnection(WIFINAME, WIFIPASS); cliente.begin(retorno de chamada); cliente. ubidots Assinar(DEVICE_LABEL, VARIABLE); //Inserir a fonte de dados e os rótulos da variável ESC.attach(MotorPin,1000,2000); } void loop() { // coloque seu código principal aqui, para executar repetidamente: if (!client.connected()) { client.reconnect(); cliente. ubidots Assinar(DEVICE_LABEL, VARIABLE); //Inserir o dataSource e os rótulos da variável } client.loop(); }
Agora, verifique se seu código está correto clicando no botão de verificação no IDE do Arduino acima do editor.
Assim que o código for verificado, você receberá uma resposta semelhante à abaixo, indicando que ele está configurado corretamente.
Em seguida, você deve fazer upload do código em seu NodeMCU. Para fazer isso, escolha o ícone de seta para a direita ao lado do ícone de verificação.
Assim que o código for carregado, você receberá a mensagem abaixo no Arduino IDE:
Sessão de teste:
Conecte a bateria ou fonte de alimentação ao ESC.
Então, tudo está pronto, basta deslizar o controle deslizante em seu dashboard web ou móvel.
Resumo:
Neste guia acabamos de aprender como funcionam os motores Brushless e como controlá-los com o ESP8266 NodeMCU e Ubidots . Este projeto poderá nos ajudar a projetar sistemas de controle eletrônico para dispositivos mecânicos. Ex: Cortinas Automáticas, Ventilador Termocontrolado para o Verão, e tudo o que a sua imaginação puder mexer com motores.