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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2242|回復: 0
收起左側

原創的單片機步進電機開環驅動模塊PCB文件+源程序

[復制鏈接]
ID:230560 發表于 2020-5-17 00:26 | 顯示全部樓層 |閱讀模式
本設計為步進電機開環驅動,使用STC15W408AS單片機作為主控,12V電源輸入,使用兩個A4950電機驅動,最高電流可達3.5A。三個輸入使用光耦隔離,就算驅動板炸了也不會炸主控,四個撥碼開關可調節細分和電流(扭矩),預留串口接口可燒程序或用于監控調試。
原理圖,PCB,程序都已經上傳附件。

成品圖:正面 IMG_20200516_235909.jpg
背面: IMG_20200516_235933.jpg
應用外觀: IMG_20200516_235735.jpg
整體外觀: IMG_20200517_000204.jpg

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

單片機源程序如下:
  1. #include <reg51.h>

  2. #define Timer0_time 35
  3. #define Timer0_H (65536-Timer0_time)/256
  4. #define Timer0_L (65536-Timer0_time)%256

  5. sbit led_green = P3^6;        //指示燈
  6. sbit led_red = P3^7;

  7. sbit in_clk = P3^2;                //輸入信號上限1.2KHz
  8. sbit in_dir = P1^7;
  9. sbit in_en = P1^6;

  10. sbit sw0 = P2^0;                //選擇開關
  11. sbit sw1 = P2^1;
  12. sbit sw2 = P2^2;
  13. sbit sw3 = P2^3;

  14. sbit in1 = P2^4;                //電機驅動
  15. sbit in2 = P2^5;
  16. sbit in3 = P2^6;
  17. sbit in4 = P2^7;

  18. unsigned char code step8_tab[8]={0x8F,0XAF,0X2F,0X6F,0X4F,0X5F,0X1F,0X9F};

  19. unsigned char duty=0,target=30,set=0,clin=0;
  20. char step=0;

  21. void delayms(unsigned int x)        //@35MHz
  22. {
  23.         unsigned int y;
  24.         for(x;x>0;x--)
  25.                 for(y=3000;y>0;y--);
  26. }

  27. void delay(unsigned int x)
  28. {
  29.         for(x;x>0;x--);
  30. }

  31. void sys_init()
  32. {
  33.         EX0=1;
  34.         IT0=1;
  35.        
  36.         TMOD=0X01;
  37.         TH0=Timer0_H;
  38.         TL0=Timer0_L;
  39.         EA=1;
  40.         ET0=1;
  41.         TR0=1;
  42. }

  43. void main()
  44. {
  45.         unsigned char div,cur;
  46.         P2=0X0F;
  47.         cur=P2 & 0x03;
  48.         div=P2 >>2;
  49.         div=div & 0x03;
  50.         switch(cur)                //撥碼選擇電流/扭矩
  51.         {
  52.                 case 0X03: target=30; break;               
  53.                 case 0X02: target=40; break;               
  54.                 case 0X01: target=55; break;               
  55.                 case 0X00: target=65; break;               
  56.                 default : target=30;break;
  57.         }
  58.         switch(div)                //撥碼選擇分頻系數
  59.         {
  60.                 case 0X03: set=0; break;               
  61.                 case 0X02: set=2; break;               
  62.                 case 0X01: set=4; break;               
  63.                 case 0X00: set=8; break;               
  64.                 default : set=0;break;
  65.         }       
  66.        
  67.         P3=0XFF;
  68.        
  69.         sys_init();
  70.         while(1)
  71.         {
  72.                
  73.         }
  74. }

  75. void init0() interrupt 0
  76. {
  77.         unsigned char i;
  78.         clin++;
  79.         if(clin>=set)                //細分
  80.         {
  81.                         clin=0;
  82.                         if(in_en)
  83.                         {
  84.                                 if(in_dir)        //正轉
  85.                                 {               
  86.                                         step++;
  87.                                         if(step>=8)
  88.                                                 step=0;
  89.                                         P2=step8_tab[step];
  90.                                        
  91.                                 }
  92.                                 else                                //反轉
  93.                                 {
  94.                                         step--;
  95.                                         if(step<0)
  96.                                                 step=7;
  97.                                         P2=step8_tab[step];
  98.                                        
  99.                                 }
  100.                                
  101.                         }
  102.                                
  103.         }
  104. }

  105. void timer0() interrupt 1
  106. {
  107.         TH0=Timer0_H;
  108.         TL0=Timer0_L;
  109.         duty++;
  110.         if(duty>=100)
  111.                 duty=0;
  112.         (duty<target)?(P2=step8_tab[step]):(P2=0X0F);
  113. }
復制代碼

51hei.png
所有資料51hei提供下載:
步進電機驅動.zip (59.1 KB, 下載次數: 24)

評分

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

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩一区二区三区av | 国产精品99| 国产精品免费看 | 激情小说综合网 | 久久综合狠狠综合久久综合88 | 波多野结衣一区二区 | 中文字幕日韩欧美一区二区三区 | 亚洲国产日韩欧美 | 成人影院网站ww555久久精品 | 国产精品久久国产精品久久 | 国产乱码精品一区二区三区忘忧草 | 欧美最猛黑人xxxx黑人 | 免费看黄色片 | 日韩精品一区二区三区中文字幕 | 精品欧美黑人一区二区三区 | 羞羞在线视频 | 欧美综合一区二区三区 | 久久精品视频一区二区 | 久久久久亚洲精品 | 秋霞在线一区 | 老牛影视av一区二区在线观看 | 国产激情91久久精品导航 | 精品一区二区三区91 | 亚洲人在线| 中文字幕视频在线 | 日韩一区二区在线视频 | 免费一区二区 | 久久久成人免费一区二区 | 成人免费在线网 | 91精品在线播放 | 成人免费视频一区二区 | 日日夜夜天天久久 | 国产成人免费 | 成人在线免费观看 | 成年人精品视频 | 日干夜干 | 在线一区视频 | 亚洲精品久久区二区三区蜜桃臀 | 国产精品观看 | 亚洲国产精品一区 | 国产福利在线视频 |