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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6613|回復: 6
打印 上一主題 下一主題
收起左側

新手求個步進電機控制程序和接線法tb6560驅動42

[復制鏈接]
跳轉到指定樓層
樓主
大家好,我是新手,想求個程序和接線圖,用51控制TB6560驅動42步進電機,我上圖大家指點下,非常感謝!這是TB6560的接線,有兩種接法,不知道哪種可以用,還有步進劃分,如何設置?





我用的單片機是stc90c516RD+,下一步準備換個帶ad的,控制方法為,按下鍵步進電機動,松開不動,可以加減速,先謝謝了
這是我的板子


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:110653 發表于 2016-3-30 13:44 | 只看該作者
TB6560驅動42步進電機例程
  1. #include "reg51.h"
  2. #include "stdio.h"
  3. #include < intrins.h >
  4. #include<math.h>
  5. #define uchar unsigned char
  6. #define uint  unsigned int
  7. //************************管腳定義************************************/
  8. sbit A_key = P0^2;//前
  9. sbit B_key = P0^0;//右
  10. sbit C_key = P0^3;//左
  11. sbit D_key = P0^1;//后
  12. sbit en_left = P1^0;//左電機使能控制位
  13. sbit cw_left= P1^1;//左電機方向控制位
  14. sbit clk_left= P1^2;//左電機脈沖控制位
  15. sbit en_right = P1^3;//右電機使能控制位
  16. sbit cw_right= P1^4;//右電機方向控制位
  17. sbit clk_right= P1^5;//右電機脈沖控制位
  18. /////////////////////////函數聲明////////////////////////////////////////
  19. void timer1_init();  //定時器1初始化函數
  20. void move_left(uint speed_l,uchar cw,uchar en);//左電機運動函數
  21. void move_right(uint speed_r,uchar cw,uchar en);//右電機運動函數
  22. void clk(uint speed,uint step);
  23. void delay(uint speed);
  24. //////////////////變量定義////////////////////////////////////////////////
  25. uint n;//進定時器1中斷次數計數
  26. uint speed;//電機速度控制變量
  27. /**************函數體******************************************/

  28. /*******************************/
  29. void timer1_init()
  30. {
  31.         TMOD=0X10;
  32.         ET1=1;
  33.         EA=1;
  34.         TH1=(65536-100)/256;
  35.         TL1=(65536-100)%256;
  36.         TR1=1;//定時器啟動后  運動控制脈沖將一直產生   小車的運動方式受 cw 和en控制
  37. }



  38. void main (void)
  39. {   
  40.    delay(10);
  41.    timer1_init();
  42.         while(1)
  43.                 {
  44.                         if(A_key==1&&B_key==0&&C_key==0&&D_key==0)
  45.                         {
  46.                                 EA=1;
  47.                                 move_left(20,0,1);
  48.                                 move_right(20,1,1);
  49.                             
  50.                         }
  51.                         else if(A_key==0&&B_key==1&&C_key==0&&D_key==0)
  52.                         {
  53.                                  EA=1;
  54.                                 move_left(20,0,1);
  55.                                 move_right(20,0,1);
  56.                        
  57.                         }
  58.                         else if(A_key==0&&B_key==0&&C_key==1&&D_key==0)
  59.                         {
  60.                                  EA=1;
  61.                                 move_left(20,1,1);
  62.                                 move_right(20,1,1);
  63.                                
  64.                         }
  65.                         else if(A_key==0&&B_key==0&&C_key==0&&D_key==1)
  66.                         {
  67.                                 EA=1;
  68.                                 move_left(20,1,1);
  69.                                 move_right(20,0,1);
  70.                                          
  71.                         }
  72.                         else
  73.                         {
  74.                                 EA=0;
  75.                         }
  76.                
  77.                 }

  78.    
  79. }
  80. void delay(uint speed)
  81. {
  82.         while(speed--)
  83.         {
  84.                 ;
  85.         }
  86. }
  87. void timer1_serve() interrupt 3
  88. {
  89.         TH1=(65536-100)/256;
  90.         TL1=(65536-100)%256;
  91.         n=n+1;
  92.         if(n==speed)
  93.         {
  94.         clk_left=~clk_left;
  95.         clk_right=~clk_right;
  96.         n=0;       
  97.         }

  98.                
  99.                
  100. }

  101. void move_right(uint speed_r,uchar cw,uchar en)
  102. {                                //speed_r速度控制變量 cw方向控制變量 en使能控制變量
  103.         speed=speed_r;         //speed數值與速度成反比  請結合實際情況進行調節,
  104.         if(cw==1)                 //但速度不能無限加快因為步進電機有速度上限
  105.         {                                 //而且速度加快是力矩會下降,容易導致丟步現象
  106.                 cw_right=1;         //所以實際應用當中應調節到速度可力矩比較合適的數值
  107.         }                                 //應考慮到電池電壓,輪胎直徑等因素
  108.         else
  109.         {
  110.                 cw_right=0;          //cw 控制電機正反轉,1與0各代表一個方向
  111.         }
  112.         if(en==1)
  113.         {                                  //en 為使能位  1:能 0:不能
  114.                 en_right=1;
  115.         }
  116.         else
  117.         {
  118.                 en_right=0;
  119.         }
  120.        
  121. }
  122. void move_left(uint speed_l,uchar cw,uchar en)
  123. {                           //speed_l速度控制變量 cw方向控制變量 en使能控制變量
  124.         speed=speed_l;
  125.         if(cw==1)
  126.         {
  127.                 cw_left=1;
  128.         }
  129.         else
  130.         {
  131.                 cw_left=0;
  132.         }
  133.         if(en==1)
  134.         {
  135.                 en_left=1;
  136.         }
  137.         else
  138.         {
  139.                 en_left=0;
  140.         }
  141.        
  142. }
復制代碼
回復

使用道具 舉報

板凳
ID:111294 發表于 2016-3-30 18:19 | 只看該作者
hubaba 發表于 2016-3-30 13:44
TB6560驅動42步進電機例程

好人,謝謝了
回復

使用道具 舉報

地板
ID:111294 發表于 2016-3-30 23:23 | 只看該作者
hubaba 發表于 2016-3-30 13:44
TB6560驅動42步進電機例程

你好,http://www.zg4o1577.cn/bbs/dpj-47351-1.html,關于這個控制,我實驗不成功,請再次幫忙,謝謝,我是新手
回復

使用道具 舉報

5#
ID:111294 發表于 2016-3-30 23:55 | 只看該作者
本帖最后由 bg8sya 于 2016-3-31 00:00 編輯

這個不能反轉#include <reg52.h>       //51芯片管腳定義頭文件
#include <intrins.h>  //內部包含延時函數 _nop_();
unsigned char code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //正轉相序代碼
unsigned char code REV[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};       //反轉相序代碼
sbit  K1   = P3^2;       //正轉
sbit  K2   = P3^3;       //反轉
sbit  K3   = P3^4;       //停止
sbit  BEEP = P3^6;       //蜂鳴器


/*********************************************************
1ms延時
*********************************************************/
void delay(unsigned int t)
{                          
   unsigned int k;
   while(t--)
     for(k=0; k<125; k++);
}

/**********************************************************
0.1ms延時
  **********************************************************/
void delayB(unsigned char n)   
{
   unsigned char i;
   while(n--)
     for (i=0; i<13; i++);
}

/**********************************************************/


/*蜂鳴器*/
void beep()
{
  unsigned char i;
  for(i=0;i<100;i++){
  BEEP=~BEEP;
  delayB(4);
}
BEEP=1;
}

/********************************************************/
/*
/*步進電機正轉
/*
/********************************************************/
void  motor_ffw()
{
   unsigned char i;
   unsigned int  j;
   for (j=0; j<8; j++)         //轉1*n圈
    {
     if(K3==0){
   delay(15); //消陡
   if(K3==0)
    break;
  }                //退出此循環程序
      for (i=0; i<8; i++)       //一個周期轉45度
        {
          P1 = FFW;          //取數據
          delay(2);            //調節轉速
        }
    }
}

/********************************************************/
/*
/*步進電機反轉
/*
/********************************************************/
void  motor_rev()
{
     unsigned char i;
  unsigned int  j;
  for (j=0; j<8; j++)       //轉1×n圈
      {
      if(K3==0){
   delay(15); //消陡
   if(K3==0)
    break;
  }                //退出此循環程序
        for (i=0; i<8; i++)     //一個周期轉45度
        {
          P1 = REV;          //取數據
          delay(2);            //調節轉速
        }
      }
}

/********************************************************
*                                                      
*  主程序                                             
*                                                     
*********************************************************/

void main()
{

   unsigned char r,N=64;             //N 步進電機運轉圈數 因為步進電機是減速步進電機 減速比是1/64 所以這里N=64時 步進電機外部的主軸轉1圈
   while(1)
    {
      if(K1==0)
   {
    delay(10);
  if(K1==0){
   beep();
      for(r=0;r<N;r++)
            {
         motor_ffw();       //電機正轉
          if(K3==0){
        delay(10);
     if(K3==0){
               beep();
      break;
     }
      }    //退出此循環程序
      }  
     }
      }
   else if(K2==0)
      {
    delay(10);
  if(K2==0){
        beep();
     for(r=0;r<N;r++)
           {
           motor_rev();       //電機反轉
           if(K3==0){
        delay(10);
     if(K3==0){
               beep();
      break;
     }
         }    //退出此循環程序
      }
   }
       }
    else
   P1 = 0xf0;    //關閉電機
}


}

/********************************************************/



回復

使用道具 舉報

6#
ID:139429 發表于 2016-9-17 01:57 | 只看該作者
這個根本不是這種步進電機的,而且也沒有通過驅動
回復

使用道具 舉報

7#
ID:451559 發表于 2019-3-25 21:27 | 只看該作者
好好學習 下
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人日b视频| 久久精品国产一区二区电影 | 天堂中文av | 国产成人影院 | 日韩欧美国产一区二区 | 国产视频一区二区三区四区五区 | 欧美一级免费 | 欧美高清视频一区 | 黄a免费看 | hdfreexxxx中国妞| 日韩一级免费电影 | 国产精品日韩欧美 | 91精品国产91久久久久福利 | av免费网| 久久国产免费 | 精品国产伦一区二区三区观看说明 | 欧美成人精品欧美一级 | 亚洲精品日韩一区二区电影 | av在线黄 | 亚洲欧美中文日韩在线v日本 | 精品日韩一区二区三区av动图 | 韩日精品一区 | 中国一级特黄真人毛片免费观看 | 国产成人在线视频 | 日韩欧美国产精品一区二区 | 午夜成人在线视频 | 在线视频成人 | 欧美日韩一区二区三区四区 | 99国产精品久久久 | 日韩激情在线 | www.99re| 亚洲二区精品 | 99久久夜色精品国产亚洲96 | 成人深夜福利 | 玖玖视频免费 | 91久久精品国产 | 仙人掌旅馆在线观看 | 亚洲 成人 在线 | 日本不卡免费新一二三区 | 网站国产| 自拍偷拍第一页 |