电机控制
直播中

shi522533

11年用户 23经验值
擅长:嵌入式技术
私信 关注
[讨论]

用三极管驱动步进电机,亲自用实物测过的,附原码..

`第一个图是我前几天发的,可以仿真,但是我用实物去连电机不能转。。三极管呵呵不能工作。。
https://bbs.elecfans.com/jishu_405157_1_1.html
QQ截图20131129001015.png

第二个图是今天做的
今天画的

用三极管驱动步进电机,亲自用实物测过的,,,,电机:4 5线步进电机 全新步进电机/减速电机28BYJ-48
面包板1个  4个1K电阻   三极管用8个8050   电源用9V   

要注意的是要共地啊,所有的地连在一起,单片机地和9V电源地连在一起不然无法驱动三极管
还有不要纠结我画的按键电路图,画得太多不好截图。。。。


程序源码  都加了注释哦
  1. #include
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. ***it b=P3^5;        //减速按键
  5. ***it a=P3^4;        //加速按键
  6. ***it c=P3^3;        //正转反转按键
  7. bit a0;                                            //判断正反转变量
  8. uchar aa;                                        //延时变量,用来控制电机转速

  9. void delay(uchar i)                        //延时程序,我用的是STC的,12M晶振,别人y用120可以达到1ms,我要用400,好纠结
  10. {
  11.         uint x,y;
  12.         for(x=i;x>0;x--)
  13.                 for(y=400;y>0;y--);
  14. }

  15. void main()               
  16. {
  17.         P2=0x00;                                                                   //初始化p2口
  18.         aa=50;                                                                           //初始化50 ms
  19.         a0=0;
  20.         while(1)
  21.         {
  22.                
  23.                 if(a==0)                                                          //检测加速按键是否按下
  24.                 {
  25.                         delay(5);
  26.                         if(a==0)
  27.                         {
  28.                                 aa=aa+3;                                          //是就加3 ms
  29.                                 while(!a);                                          //检测松手,稳定但是按下不松手时电机会停止转动
  30.                         }
  31.                 }
  32.                
  33.                 if(b==0)                                                          //检测减速按键是否按下
  34.                 {
  35.                         delay(5);
  36.                         if(b==0)
  37.                         {
  38.                                 aa=aa-3;                                          //是就减3 ms
  39.                                 while(!b);
  40.                         }
  41.                 }
  42.                
  43.                 if(c==0)                                                          //正转反转按键
  44.                 {
  45.                         delay(5);
  46.                         if(c==0)
  47.                         {
  48.                                 a0=~a0;
  49.                                 while(!c);
  50.                        
  51.                        
  52.                        
  53.                         }
  54.                 }
  55.                
  56.                
  57.                
  58.                 if(a0==1)                                                                           //检测正转
  59.                 {
  60.                         P2=0x01;
  61.                         delay(aa);
  62.                         P2=0x02;
  63.                         delay(aa);
  64.                         P2=0x04;
  65.                         delay(aa);
  66.                         P2=0x08;
  67.                         delay(aa);
  68.                 }
  69.                 if(a0==0)                                                                           //检测反转
  70.                 {
  71.                         P2=0x01;
  72.                         delay(aa);
  73.                         P2=0x08;
  74.                         delay(aa);
  75.                         P2=0x04;
  76.                         delay(aa);
  77.                         P2=0x02;
  78.                         delay(aa);
  79.                
  80.                 }
  81.        
  82.        
  83.        
  84.        
  85.                 /*if(a0==1)                                                                                 //用达林顿管时用的,
  86.                 {
  87.                         P1=0x0e;
  88.                         delay(aa);
  89.                         P1=0x0d;
  90.                         delay(aa);
  91.                         P1=0x0b;
  92.                         delay(aa);
  93.                         P1=0x07;
  94.                         delay(aa);
  95.                 }
  96.                 if(a0==0)
  97.                 {
  98.                         P1=0x0e;
  99.                         delay(aa);
  100.                         P1=0x07;
  101.                         delay(aa);
  102.                         P1=0x0b;
  103.                         delay(aa);
  104.                         P1=0x0d;
  105.                         delay(aa);
  106.                
  107.                 } */

  108. //==========================================               
  109.                 /*if(a5==1)                                                                                                        //8拍时用的
  110.                 {
  111.                         P1=0x08;
  112.                         delay(aa);
  113.                         P1=0x0c;
  114.                         delay(aa);
  115.                         P1=0x04;
  116.                         delay(aa);
  117.                         P1=0x06;
  118.                         delay(aa);
  119.                         P1=0x02;
  120.                         delay(aa);
  121.                         P1=0x03;
  122.                         delay(aa);
  123.                         P1=0x01;
  124.                         delay(aa);
  125.                         P1=0x09;
  126.                         delay(aa);       
  127.                 }
  128. //===========================================
  129.                
  130. //===========================================
  131.                 if(a5==0)
  132.                 {
  133.                         P1=0x09;
  134.                         delay(aa);
  135.                         P1=0x01;
  136.                         delay(aa);
  137.                         P1=0x03;
  138.                         delay(aa);
  139.                         P1=0x02;
  140.                         delay(aa);
  141.                         P1=0x06;
  142.                         delay(aa);
  143.                         P1=0x04;
  144.                         delay(aa);
  145.                         P1=0x0c;
  146.                         delay(aa);
  147.                         P1=0x08;
  148.                         delay(aa);       
  149.                 } */
  150. //============================================               
  151.        
  152.         }
  153. }

` 谢谢.jpg

回帖(27)

shi522533

2013-12-1 02:00:06
还是自己等先顶一个先,还是没有看到过有类似的帖子哦
1 举报

zerocan

2014-1-24 21:09:44
                                    
举报

yw656369

2014-3-5 19:51:29
新手学习当中,多谢前辈们的分享~
举报

潘铭辉

2014-3-7 09:51:34
复制下来!!!!!!!我自己好好学习!!!!!!!!!!!!!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分