Corso Arduino Metal DC Geared Motor 12V 251rpm con Encoder

Premessa: questo è un motore DC di alta qualità. La parte migliore di questo motore è che si tratta di un motore di uscita a coppia elevata e silenzioso con encoder ottico incorporato. L’encoder ottico fornisce 2797 pulse per rotazione in grado di rilevare una rotazione di 0,64 gradi dall’albero. La risoluzione può soddisfare i requisiti generali di controllo della velocità PID.

CARATTERISTICHE TECNICHE

  • Gear ratio: 43.8:1
  • No-load speed: 251 10% RPM
  • No-load current: 350 mA
  • Start Voltage: 1.0 V
  • Stall Torque: 18 Kg.com
  • Stall Current: 7 A
  • Insulation resistance: 20 M Ω
  • EncoderOperating Voltage: 5 V
  • Encoder type: Hall
  • Encoder Resolution: 16CPR(motor shaft)/700CPR(gearbox shaft)
  • Weight: 205g

LISTA MATERIALI

TEST DEL SUONO

I nostri test su emissioni sonore ambientali comuni mostrano che i motori presentano differenze. Mentre pensavamo di calcolare la media dei valori delle emissioni sonore, ciò non sarebbe accurato, pertanto abbiamo mantenuto il valore più alto raccolto dai test. Le emissioni sonore più basse hanno raggiunto una media di 57 dB su un suono ambientale interno di 40 dB. Questi test non sono stati eseguiti in una camera acustica. Per tutti i progetti sensibili al suono, si consiglia una custodia insonorizzata per tutte le parti meccaniche.

SCHEMA DI COLLEGAMENTO

CODICE DI ESEMPIO

//The sample code for driving one way motor encoder
const byte encoder0pinA = 2;//A pin -> the interrupt pin 2
const byte encoder0pinB = 4;//B pin -> the digital pin 4
byte encoder0PinALast;
int duration;//the number of the pulses
boolean Direction;//the rotation direction


void setup()
{
  Serial.begin(57600);//Initialize the serial port
  EncoderInit();//Initialize the module
}

void loop()
{
  Serial.print("Pulse:");
  Serial.println(duration);
  duration = 0;
  delay(100);
}

void EncoderInit()
{
  Direction = true;//default -> Forward
  pinMode(encoder0pinB,INPUT);
  attachInterrupt(0, wheelSpeed, CHANGE);//int.0
}

void wheelSpeed()
{
  int Lstate = digitalRead(encoder0pinA);
  if((encoder0PinALast == LOW) && Lstate==HIGH)
  {
    int val = digitalRead(encoder0pinB);
    if(val == LOW && Direction)
    {
      Direction = false; //Reverse
    }
    else if(val == HIGH && !Direction)
    {
      Direction = true;  //Forward
    }
  }
  encoder0PinALast = Lstate;

  if(!Direction)  duration  ;
  else  duration--;
}

Buon Progetto.