MODELARIA
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

CONTROLAR MOTOR ESCOVADO E SEM ESCOVA, COM ARDUINO

Ir para baixo

CONTROLAR MOTOR ESCOVADO E SEM ESCOVA, COM ARDUINO Empty CONTROLAR MOTOR ESCOVADO E SEM ESCOVA, COM ARDUINO

Mensagem por Admin Seg Nov 25, 2019 5:03 pm

CONTROLAR MOTOR ESCOVADO E SEM ESCOVA, COM ARDUINO 00110


CONTROLAR MOTOR ESCOVADO E SEM ESCOVA, COM ARDUINO 00210


No arduino voce pode inserir o controle via Wifi, Bluetooth ou IR para controlar o motor! (Ideia não tratada aqui).


A biblioteca servo.h do arduino é usada para executar o ESC. Os princípios operacionais do ESC e dos servos são os mesmos. Ambos são controlados por um sinal PWM.

O valor fornecido pelo potenciômetro da entrada analógica está entre 0 e 1023. Se usarmos esses valores diretamente, obteremos resultados inconsistentes. Portanto, com o comando "map", convertemos esse valor em um valor mínimo de 0 a um máximo de 180, o que o ESC entende. É o mesmo para servomotores.

Os ESCs bidirecionais operam com um intervalo de valores diferente do unidirecional. O ponto em que o motor não liga é o ponto do meio. Portanto, o valor 180/2 = 90 é teoricamente o ponto central. A operação é fornecida em uma direção entre 90 e 180 e na outra direção entre 90 e 0. Embora o ponto central seja 90 em teoria, ele pode ser praticamente um pouco para cima ou para baixo. Por exemplo, para a combinação ESC e Motor mostrada na figura acima, o ponto médio está entre 72 e 82 e o motor não funcionará entre esses valores. Esse ponto pode ser facilmente detectado girando a potência para a esquerda e direita, pois podemos ver o valor atual no Monitor Serial.

Há um "loop for" no código. Este ciclo também é possível sem operação. No entanto, com este ciclo, o valor da entrada analógica é somado 50 vezes e calculado a média e é obtida uma operação mais estável. Em particular, o motor pode fazer pequenos movimentos por conta própria devido a pequenos vazamentos de dados, principalmente quando se espera no ponto médio, ou seja, onde o motor não deve dar partida. Como o valor médio obtido com o "loop for" é enviado ao mecanismo, podemos evitar esses pequenos saltos. A razão pela qual o ciclo é realizado 50 vezes é que eu determinei o valor mais razoável como resultado dos meus testes. Se mais, observei atrasos e interrupções no comando do motor.

*(Texto traduzido pelo google).

Abaixo o video com motor escovado e sem escova.




CONTROLAR MOTOR ESCOVADO E SEM ESCOVA, COM ARDUINO 00310



CODIGO 1
Código:

 #include <Servo.h> //Arduino Servo Library

Servo ESC;  // ESC için bir obje tanımlanıyor.

float value;    // Analog pin A1 den veri okuma için değişken tanımlaması.
void setup()
{
  Serial.begin(9600);
  ESC.attach(3);  // Pin 3 den PWM sinyal çıkışı.
}

void loop() {
  
   for(int i = 0; i < 50; i++)
     {
      value=value+analogRead(A1); // Potansiyometreden gelen değeri daha kararlı veriye çevirmek için 50 kez toplanıp ortalamasının alınması.
      delay(1);
     }  
    
  value=value/50; // Ortalama değer
  value=map(value, 0, 1023, 0, 180); // Analog girişten okunan değerin ESC nin anlayacağı değerlere çevrilmesi.
  ESC.write(value);                    // Potansiyometreden gelen değere göre ESC / servo konumunu ayarlar.
  Serial.print("Değer= ");
  Serial.println(value);
  }


CONTROLAR MOTOR ESCOVADO E SEM ESCOVA, COM ARDUINO 00410


CODIGO 2
Código:

#include <Servo.h>                       // Arduino Servo Library (Servo motor kütüphanesi ESC için de kullanılır)
#include <Wire.h>                        // Include Wire library (I2C device için gerekli)
#include <Adafruit_GFX.h>                // Include Adafruit graphics library
#include <Adafruit_SH1106.h>             // SH1106 library (SH1106 Çipli Oled ekran için kütüphane)
#define OLED_RESET 4
Adafruit_SH1106 display(OLED_RESET);
#if (SH1106_LCDHEIGHT != 64)
#error(“Height incorrect, please fix Adafruit_SH1106.h!”);
#endif

int y;
String Durum;
Servo ESC;         // ESC için bir obje tanımlanıyor. (Object identification for esc)

int long value;    // Analog pin A1 den veri okuma için değişken tanımlaması. (Variable for A1 pin data)
void setup()
{
  display.begin(SH1106_SWITCHCAPVCC, 0x3C);  
  display.clearDisplay();
  display.setTextColor(WHITE);
  display.setTextSize(2);
  display.display();
  ESC.attach(3);  // Pin 3 den PWM sinyal çıkışı. (Sending PWM signals from pin 3)
}

void loop() {
  
   for(int i = 0; i < 50; i++)
     {
      value=value+analogRead(A1); // Potansiyometreden gelen değeri daha kararlı veriye çevirmek için 50 kez toplanıp ortalamasının alınması (To obtain a more stable result from the potentiometer data, collect 50 times and get the average)
      delay(1);
     }  
    
  value=value/50; // Ortalama değer
  value=map(value, 0, 1023, 0, 180); // Analog girişten okunan değerin ESC nin anlayacağı değerlere çevrilmesi. (Converting the value read from the analog input to the values that the ESC will understand)
  ESC.write(value); // Potansiyometreden gelen değere göre ESC / servo konumunu ayarlar. (Sets the ESC / servo position according to the value from the potentiometer.)

if(value<92) Durum = "< REVERSE";
if(value>102) Durum = "FORWARD >";
if(value>92 && value<104) Durum = "  CENTER";

if (value<100) y=55; else y=49;
 
  //display.setTextSize(1);
  display.setCursor(14,9);
  display.print(Durum);
  display.setCursor(y,39);
  display.print(value);
  display.display();
  display.clearDisplay();
  }



CONTROLAR MOTOR ESCOVADO E SEM ESCOVA, COM ARDUINO 510



Fonte:
https://www.kendinyap.xyz/



jhugor@modelaria.tk

Admin
Admin

Mensagens : 371
Data de inscrição : 21/11/2019

https://modelaria.forumbrasil.net

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos