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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機IR2101S的全橋步進電機驅動器PCB文件+原理圖+程序

  [復制鏈接]
跳轉到指定樓層
樓主
ID:110431 發(fā)表于 2019-1-10 14:31 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
分立器件的全橋電機驅動,可以驅動直流電機也可以驅動步進電機

Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)


H橋直流電機調速紅外單片機源程序如下:
  1. #include<AT89X52.H>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit led1=P2^4;
  5. sbit led2=P2^5;
  6. sbit led3=P2^6;
  7. sbit led4=P2^7;


  8. sbit key1=P1^0;
  9. sbit key2=P1^1;
  10. sbit key3=P1^2;
  11. sbit key4=P1^3;
  12. sbit key5=P1^4;
  13. sbit key6=P1^5;

  14. sbit zheng=P2^0;
  15. sbit fan=P2^1;

  16. sbit zhengled=P3^6;
  17. sbit fanled=P3^7;
  18. sbit zhixing=P3^5;
  19. uchar code table[]={0xA0,0xBB,0x62,0x2A,0x39,0x2C,0x24,0xBA,
  20.                           0x20,0x28,0x30,0x25,0xE4,0x23,0x64,0x74};
  21. uint count=0,count1=0,time=0;
  22. uint qian,bai,shi,ge;
  23. uint moshi=0;  
  24. uchar pwm=75;
  25. unsigned long int jishu=0,shuzhi;

  26. void delay(uint xms)         //延時函數
  27. {
  28.         int a,b;
  29.         for(a=xms;a>0;a--)
  30.                 for(b=110;b>0;b--);
  31. }

  32. void initclock()                           //時鐘初始化
  33. {
  34.         T2MOD=0x00;
  35.         T2CON=0x04; /*定時器2為自動重裝定時工作模式)  TR2=1 */
  36.         RCAP2L=(65536-50000)%256;                //給定時器T2裝初值
  37.         RCAP2H=(65536-50000)/256;
  38.         TR2=1;    //打開定時器中斷1,2
  39.         ET2=1;
  40.         EA=1;                 //開中斷
  41. }


  42. void timer_init()                                          //定時器一初始化
  43. {
  44.         TMOD=0x15;
  45.         TH1=(65536-50000)/256;
  46.         TL1=(65536-50000)%256;
  47.         ET1=1;                 //開定時器零1中斷
  48.         TR1=1;                 //啟動計數器1

  49.         TH0=0X00;
  50.         TL0=0X00;
  51.         ET0=1;                 //開計數器中斷
  52.         TR0=1;                 //啟動計數器器0               
  53.         EA=1;                 //開中斷
  54. }
  55. void jisuan()                                                   //計算時間速度距離函數
  56. {

  57.         if(time==1)
  58.         {
  59.                  jishu=10;
  60.                  jishu=TH0*256+TL0;                                 //讀取計數器的值
  61.                  TH0=0X00;
  62.                  TL0=0X00;                                                 //重裝
  63.                  time=0;
  64.                  TF2=0;
  65.                  RCAP2H=(65536-50000)/256;
  66.                  RCAP2L=(65536-50000)%256;
  67.                  jishu=jishu*60;
  68.                  shuzhi=jishu;
  69.                  qian=jishu/1000;
  70.                  bai=jishu%1000/100;
  71.                  shi=jishu%1000%100/10;
  72.                  ge=jishu%1000%100%10;
  73.         }               
  74. }
  75. void display()
  76. {
  77.           led1=0;
  78.           P0=table[qian];
  79.           delay(5);
  80.           led1=1;

  81.           led2=0;
  82.           P0=table[bai];
  83.           delay(5);
  84.           led2=1;

  85.           led3=0;
  86.           P0=table[shi];
  87.           delay(5);
  88.           led3=1;

  89.           led4=0;
  90.           P0=table[ge];
  91.           delay(5);
  92.           led4=1;
  93. }

  94. void keyscan()
  95. {
  96.         if(key1==0)
  97.         {
  98.                 delay(5);
  99.                 if(key1==0)
  100.                 {
  101.                         while(!key1);
  102.                         moshi=0;
  103.                 }
  104.         }
  105.         if(key2==0)
  106.         {
  107.                 delay(5);
  108.                 if(key2==0)
  109.                 {
  110.                         while(!key2);
  111.                         moshi=1;
  112.                 }
  113.         }
  114.         if(key3==0)
  115.         {
  116.                 delay(5);
  117.                 if(key3==0)
  118.                 {
  119.                         EA=0;
  120.                         delay(2);
  121.                         while(!key3);
  122.                         pwm=pwm+5;
  123.                         if(pwm>=150)
  124.                         {
  125.                                 pwm=145;        
  126.                         }
  127.                         EA=1;
  128.                 }
  129.         }
  130.         if(key4==0)
  131.         {
  132.                 delay(5);
  133.                 if(key4==0)
  134.                 {
  135.                         while(!key4);
  136.                         EA=0;
  137.                         delay(2);
  138.                         pwm=pwm-5;
  139.                         if(pwm<=5)
  140.                         {
  141.                                 pwm=5;        
  142.                         }
  143.                         EA=1;
  144.                
  145.                 }
  146.         }
  147.         if(key5==0)
  148.         {
  149.                 delay(5);
  150.                 if(key5==0)
  151.                 {
  152.                         while(!key5);
  153.                         timer_init();
  154.                         initclock();
  155.                         EA=1;
  156.                         delay(100);
  157.                         zhixing=0;
  158.                 }
  159.         }
  160.         if(key6==0)
  161.         {
  162.                 delay(5);
  163.                 if(key6==0)
  164.                 {
  165.                         while(!key6);
  166.                         zhixing=1;
  167.                         EA=0;
  168.                         zheng=0;
  169.                         fan=0;
  170.                         jishu=0;
  171.                 }
  172.         }
  173. }
  174. void main()
  175. {
  176.          while(1)
  177.          {
  178.                    display();
  179.                   jisuan();
  180.                   keyscan();
  181.                   if(shuzhi<1000)
  182.                   {
  183.                           zhengled=0;
  184.                         fanled=1;
  185.                   }
  186.                   if(shuzhi>2500)
  187.                   {
  188.                           zhengled=1;
  189.                         fanled=0;
  190.                   }
  191.                   if(shuzhi>=1000&&shuzhi<=2500)
  192.                   {
  193.                           zhengled=1;
  194.                         fanled=1;
  195.                   }
  196.          }
  197. }
  198. void T1_time()interrupt 5                   //定時器
  199. {
  200.         TF2=0;
  201.         RCAP2H=(65536-50000)/256;
  202.         RCAP2L=(65536-50000)%256;
  203.         count++;
  204.         if(count==10)
  205.         {
  206.                 time=1;
  207.                 count=0;
  208.         }
  209. }

  210. void time1(void)interrupt 3                                     //定時器1溢出,yichu=1
  211. {
  212.         TH1=(65536-1000)/256;
  213.         TL1=(65536-1000)%256;
  214.         count1++;
  215.         if(count1==156)
  216.         {
  217.                  count1=0;
  218.         }
  219.         if(moshi==0)
  220.         {
  221.                
  222.                  zheng=0;
  223.                  if(count1<pwm)
  224.                  {
  225.                           fan=0;
  226.                  }
  227.                  if(count1>=pwm)
  228.                  {
  229.                           fan=1;
  230.                  }
  231.         }
  232.         if(moshi==1)
  233.         {
  234.                  fan=0;
  235.                  if(count1<pwm)
  236.                  {
  237.                           zheng=0;
  238.                  }
  239.                  if(count1>=pwm)
  240.                  {
  241.                           zheng=1;
  242.                  }
  243.         }
  244. }
復制代碼

所有資料51hei提供下載:
電機驅動.zip (5.25 MB, 下載次數: 348)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:49198 發(fā)表于 2019-4-5 20:46 | 只看該作者
只能說6666,51都能做的出來,厲害了
回復

使用道具 舉報

板凳
ID:475999 發(fā)表于 2020-1-2 11:47 | 只看該作者
很簡潔,不錯
回復

使用道具 舉報

地板
ID:631925 發(fā)表于 2020-2-17 12:36 | 只看該作者
這個步進電機帶細分嗎,是恒流斬波嗎
回復

使用道具 舉報

5#
ID:219707 發(fā)表于 2022-3-3 14:43 | 只看該作者
感謝分享,電腦報病毒但實際應該沒問題的 應該是誤報
回復

使用道具 舉報

6#
ID:863530 發(fā)表于 2022-3-31 09:37 | 只看該作者
51的速度夠快嗎?
回復

使用道具 舉報

7#
ID:951974 發(fā)表于 2022-12-14 18:45 | 只看該作者
只能說6666,51都能做的出來,厲害了
回復

使用道具 舉報

8#
ID:228452 發(fā)表于 2022-12-15 00:10 | 只看該作者
Do you have current control for output stage
This is motor , power supply sensitive schematic !
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费看国产片在线观看 | 亚洲精品一区二区三区四区高清 | av性色全交蜜桃成熟时 | 欧美日韩国产在线观看 | 一区二区在线不卡 | 午夜视频一区 | 亚洲成人久久久 | 91在线成人 | 男女视频免费 | 日韩中文一区二区三区 | 久久99精品国产自在现线小黄鸭 | 中文字幕av在线一二三区 | 日韩久久久久 | 日韩在线免费 | 欧美在线视频a | 亚洲欧美精品 | 亚洲成人精品一区 | 日韩在线播放第一页 | 一区二区三区精品视频 | 国产精品久久 | 日韩免费高清视频 | 日韩欧美在线一区二区 | 久久久久久九九九九九九 | 成人国产精品免费观看 | 亚洲精品电影在线观看 | 国产精品久久久久久久久久久久冷 | 免费观看国产视频在线 | 国产精品69毛片高清亚洲 | 久久91精品国产一区二区 | 久久久国产精品入口麻豆 | 国产一区二区麻豆 | 精品一区av | www.久久 | 国产91在线播放 | 精品国产18久久久久久二百 | 黄在线免费观看 | 91精品国产91久久综合桃花 | 亚洲综合婷婷 | 在线精品一区二区三区 | 成人av片在线观看 | 国产精品视频一二三区 |