久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> Arduino >> 瀏覽文章

Arduino 控制多路步進電機

作者:huqin   來源:本站原創   點擊數:  更新時間:2014年04月25日   【字體:

 前面用一片arduino控制一個步進電機,但是控制多路步進電機容易互相干擾,主要是每個脈沖延時用了delay函數。

 
一路兩相的步進電機需要占用4個i/o口,因此一片arduino最多控制3個步進電機(不算模擬i/o)。
一個l298模塊只能接一個步進電機。下面實驗接2路電機的情況,3路時情況差不多。
 
(1)實驗了一下arduino自帶的stepper庫,發現連接兩個電機只能一個一個按順序動,不能同時動。但是電機都能動,工作沒有問題。這顯然不是我們想要的
(2)改了一下自己編的步進電機程序,可以同時動了,但是兩個電機的速度不好設置,變量太多。
最后做了個艱難的決定,自己編庫文件。好久沒動c語言了,忘得差不多了,只好在原有庫函數的基礎上改。改了一個晚上,終于沒問題了,并且把原來庫函數中的四拍的方法改成八拍,控制更準確,運動更平穩了。庫函數在我的網盤下載,這幾天沒空了,等有空再改一下傳到官網上去:
 
 
例子程序:
#include
const int stepsPerRevolution = 400;  // 對于兩相四線的電機,一般步距角是1.8度,這里如果是四拍就寫200,八拍就寫400
                                    
 
// initialize the stepper library on pins 8 through 11:
Stepper myStepper1(stepsPerRevolution, 4,5,6,7);       //兩個電機分別占四個腳     
Stepper myStepper2(stepsPerRevolution, 8,9,10,11);    
 
void setup() {
  // set the speed at 60 rpm:
  myStepper1.setSpeed(60);
   myStepper2.setSpeed(60);
  // initialize the serial port:
  Serial.begin(9600);
}
 
void loop() {
  
 
int r;
 for(int i=0; i<400;)
   { 
     r= myStepper1.stepOneStep(0);
     myStepper2.stepOneStep(1);//括號中的參數是方向,0和1代表不同轉動方向
     if(r==2) i++;
   }
   
 
  delay(500);
  
  
}
 

StepperM.h:

 
/*
  Stepper.h - - Stepper library for Wiring/Arduino - Version 0.4
  
  Original library     (0.1) by Tom Igoe.
  Two-wire modifications   (0.2) by Sebastian Gassner
  Combination version   (0.3) by Tom Igoe and David Mellis
  Bug fix for four-wire   (0.4) by Tom Igoe, bug fix from Noah Shibley
  Muliti-motor modifications (0.5) by Xu Pei.
 
  Drives a unipolar or bipolar stepper motor using  2 wires or 4 wires
 
  When wiring multiple stepper motors to a microcontroller,
  you quickly run out of output pins, with each motor requiring 4 connections. 
 
  By making use of the fact that at any time two of the four motor
  coils are the inverse  of the other two, the number of
  control connections can be reduced from 4 to 2. 
 
  A slightly modified circuit around a Darlington transistor array or an L293 H-bridge
  connects to only 2 microcontroler pins, inverts the signals received,
  and delivers the 4 (2 plus 2 inverted ones) output signals required
  for driving a stepper motor.
 
  The sequence of control signals for 4 control wires is as follows:
 
  Step C0 C1 C2 C3
     1  1  0  1  0
     2  0  1  1  0
     3  0  1  0  1
     4  1  0  0  1
 
  The sequence of controls signals for 2 control wires is as follows
  (columns C1 and C2 from above):
 
  Step C0 C1
     1  0  1
     2  1  1
     3  1  0
     4  0  0
 
  The circuits can be found at 
  http://www.arduino.cc/en/Tutorial/Stepper
*/
 
// ensure this library description is only included once
#ifndef Stepper_h
#define Stepper_h
 
// library interface description
class Stepper {
  public:
    // constructors:
    Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2);
    Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2, int motor_pin_3, int motor_pin_4);
 
    // speed setter method:
    void setSpeed(long whatSpeed);
 
    // mover method:
    void step(int number_of_steps);
 
    // mover 1 step:
// dir:direction, 0 negtive; else positive.
//if return 0, the motor start move; else if return 1, waiting; return 2, move complete;
    int stepOneStep(int dir);
 
    int version(void);
 
  private:
    void stepMotor(int this_step);
    
    int direction;        // Direction of rotation
    int speed;          // Speed in RPMs
    unsigned long step_delay;    // delay between steps, in us, based on speed
    int number_of_steps;      // total number of steps this motor can take
    int pin_count;        // whether you're driving the motor with 2 or 4 pins
    int step_number;        // which step the motor is on
    
    // motor pin numbers:
    int motor_pin_1;
    int motor_pin_2;
    int motor_pin_3;
    int motor_pin_4;
    
    unsigned long last_step_time;      // time stamp in ms of when the last step was taken
 
int isWaiting; //signal of waiting
int isEightShot; //Eight-shot two-phase stepper motor 
};
 
#endif
 
關閉窗口

相關文章

主站蜘蛛池模板: 亚洲成人中文字幕 | 国产精品视频久久久 | 国产sm主人调教女m视频 | 91成人在线视频 | 另类 综合 日韩 欧美 亚洲 | 久久视频免费观看 | 久久久久国产一区二区三区 | 成人免费观看男女羞羞视频 | 亚洲成人免费 | 午夜久久久久久久久久一区二区 | 日韩成人在线视频 | 久久99深爱久久99精品 | 国产福利久久 | 91在线电影 | 中文字幕精品视频 | 夜夜骑首页 | 欧美三级久久久 | 日韩国产高清在线观看 | 99精品视频免费在线观看 | 久久精品视频9 | 国产精品无码久久久久 | 精品二| 国产精品乱码一区二区三区 | 精品一区av | 夜夜骚视频 | 精品国产精品国产偷麻豆 | 九九九精品视频 | 久草中文网 | 国产成在线观看免费视频 | 成人av网站在线观看 | 黄色一级大片在线免费看产 | 911影院| 国产精品日女人 | 久久久国产一区二区三区 | 中文字幕观看 | 欧美一区二区另类 | 国产特级毛片aaaaaa | av成人在线观看 | 久草网址 | 日韩在线视频一区二区三区 | 欧美中文字幕在线观看 |