Léptető motor sebességének beállítása soros porton keresztül

Nincs túl nagy varázslat ebben a dologban, inkább csak azért teszem fel, hogy a későbbiekben emlékezzek rá. Majd a leendő fermentor kevertetését szeretném valami hasonlóval megoldani, persze ott majd a nagyobb sebesség miatt szervomotort fogok használni. A végleges kód lényegében két kész kódból lett összegyúrva. A motorvezérlő egy L293D Motor Drive Shield a motor pedig egy Bipoláris, 2.1Nm nyomatékú léptetőmotor (Variometrum-tól) – Típusa: 60HS67-2808AF (dokumentum letöltése). 

BIPOLÁRIS – SOROS bekötésselL293D

FÁZIS ÁRAM = 1,4A
NYOMATÉK = 2,1Nm

1. TEKERCS
● PIROS A+
● FEKETE A
KÖZÖS: SÁRGA + KÉK

2. TEKERCS
● FEHÉR B+
● ZÖLD B
KÖZÖS: NARANCS + BARNA

A forgó tárcsára neodímium mágnesek lesznek elhelyezve, amik majd átviszik a nyomatékot az üveg/műanyag fermentorban elhelyezett keverőbabára, a forgás sebességéről pedig egy Hall szenzor fog majd informálni. Maga a léptetőmotor shield kettő L293D  ic-vel van szerelve, így ha sikerül kiégetni, ezt könnyen ki lehet cserélni.

Run four solenoids, two DC motors or one bi-polar or uni-polar stepper with up to 600mA per channel using the L293D. These are perhaps better known as “the drivers in our Adafruit Motorshield”. If you accidentally damaged the drivers in a shield, you can use one of these puppies to replace it. Or you can breadboard something on your own!

motor driver ic

Videó a vezérlésről

 

A kód

// Adafruit Motor shield library
// copyright Adafruit Industries LLC, 2009
// this code is public domain, enjoy!

#include <AFMotor.h>

// to motor port #2 (M3 and M4)
AF_Stepper motor(200, 2);

void setup() {
  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("Stepper test!");
}

unsigned int integerValue=20;  // Max value is 65535
char incomingByte;

void loop() {

  motor.setSpeed(integerValue);     
  motor.step(100, FORWARD, SINGLE); 

   if (Serial.available() > 0) {   // something came across serial
    integerValue = 0;         // throw away previous integerValue
    while(1) {            // force into a loop until 'n' is received
      incomingByte = Serial.read();
      if (incomingByte == '\n') break;   // exit the while(1), we're done receiving
      if (incomingByte == -1) continue;  // if no characters are in the buffer read() returns -1
      integerValue *= 10;  // shift left 1 decimal place
      // convert ASCII to integer, add, and shift left 1 decimal place
      integerValue = ((incomingByte - 48) + integerValue);
    }
    Serial.println(integerValue);   // Do something with the value
  }
}

Beállítások

Az adatlapja alapján ennek a léptetőmotornak a lépésszöge 1,8 (360/1,8 = 200).
A vezérlő egyszerre két léptetőmotort tud vezérelni a 2 erre vonatkozik, így kell bekötni M3, M4, ha 1 lenne akkor az M1 és M2-hez kellene kötni.

AF_Stepper motor(200, 2);

A soros porton érkező érték az integerValue-ban tárolódik (kezdő értéke 20), ez határozza meg a motor sebességét 0-50 között lehet értéket adni neki, 50 fölött elveszíti a ritmust a motor.

motor.setSpeed(integerValue);

Itt adod meg a lépésszámot, itt is lehet használni a bevitt értéket, de itt most loop-ban van így folyamatosan forog.

motor.step(100, FORWARD, SINGLE);

Lehet olyat, hogy

motor.step(integerValue, FORWARD, SINGLE);
motor.step(integerValue, BACKWARD, SINGLE);
delay(1000);

és akkor már van értelme.

2017-10-14

Közben kipróbáltam még két léptetőmotort is, a hozzájuk tartozó bekötést itt találod:

GOSO 42 stepping motor

• Piros A
• Kék   B

• Zöld      A
• Fekete  B

Motor Shield

A másik mindenféle jelölés nélküli

• Kék                       A
• Narancssárga     B

• Piros                    A
• Citromsárga       B

stepper motor IMAG0744

2017-10-18

Közben megérkezett az egyik perisztaltikus pumpa ebay-ről  Peristaltic Pump Dosing Pump With 42 Stepper Motor 174dkk volt az ára, gyorsan csináltam is egy kalibrációt. Az R2 közel 1, így az eredmény nagyon jónak számít. A hozzá adott szilikon csővel jól működik, de ennek a hátránya, hogy hamar kiszakad. Sajnos a pumpa feje nagyon szoros, így ha például masterflex csőre akarom cserélni, akkor a motor nem elég erős, hogy vigye.

Masterflex Norprene Food tubing (A60 F), L/S 13, 50 ft.

Ezek a típusú csövek kifejezetten perisztaltikus pumpához valók, nagyon ellenállóak.

A kalibráció

pumpa kalibráció

Néhány kép

 

Felhasznált irodalom

Arduino: Sending and Receiving Multi-Digit Integers
by

Adafruit Motor Shield

GitHub –  Adafruit-Motor-Shield-library

 

Képek

Motor Shield

 

Share This:

 
Loading Facebook Comments ...

Leave a Comment