欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關于51單片機生成spwm波驅動舵機轉動 求幫助

[復制鏈接]
跳轉到指定樓層
樓主
ID:399093 發表于 2018-9-22 00:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
500黑幣
想請教關于51單片機如何生成spwm并且通過這個波驅動舵機的問題。希望能夠得到源代碼,多謝了。

評分

參與人數 1黑幣 +8 收起 理由
xiou + 8 很給力!

查看全部評分

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

使用道具 舉報

沙發
ID:277550 發表于 2018-9-22 08:19 | 只看該作者

pwm可以 本站中找到。 而單片機不可以直接驅動電機,所以,還要硬件的驅動部分的。本站的資料很多,搜索看看吧。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:155507 發表于 2018-9-22 11:03 | 只看該作者
我給你來個試試


  1. //軟件模擬pwm

  2. #include"reg52.h"

  3. unsigned int num=0;
  4. //舵機
  5. sbit DJ1=P3^6;
  6. sbit DJ2=P3^7;          /*引腳定義*/
  7. int DJ(int a);         //函數聲明

  8. timerinit()            //定時器中斷初始化
  9. {
  10.         TMOD=0x01;                               //設置定時器0為工作方式1
  11.         EA=1;                                    //開總中斷
  12.         ET0=1;                                   //定時器0中斷允許
  13.         TH0 = (65536-500)/256;                  //初值使得定時器0.5毫秒溢出
  14.         TL0 = (65536-500)%256;
  15.         TR0=0;         
  16. }

  17. main()
  18. {
  19.         timerinit();
  20.         while(1)
  21.         {
  22.         }
  23. }

  24. timer()  interrupt 0       //0.5ms發生一次中斷,20ms后定時器置0重新計數
  25. {
  26.         num++;
  27.         DJ1=DJ(3);
  28.         DJ2=DJ(3);
  29.         if(num>=40)     
  30.         {
  31.                 num=0;
  32.                 TH0 = (65536-500)/256;                  //初值使得定時器0.5毫秒溢出
  33.                 TL0 = (65536-500)%256;
  34.                 return;
  35.         }
  36. }

  37. int DJ(char a)           //當a=3舵機所在的位置是0度a=2 a=1分別對應的位置是-45 -90度a=4 a=5對應位置為45 90度
  38. {
  39.         if(num>=a||num>=5)
  40.            return 0;
  41.         if(num>=1)
  42.            return 1;
  43. }

復制代碼
回復

使用道具 舉報

地板
ID:155507 發表于 2018-9-22 11:10 | 只看該作者
我給你來多一個程序試試

  1. // 舵機 左右90度轉動 親測可用


  2. #include<reg52.h>
  3. typedef unsigned int uint;
  4. typedef unsigned char uchar;
  5. sbit pwm=P0^3;//輸出PWM信號
  6. uint pwm_value=1500;//初值為1.5ms
  7. uint value[]={1500,650,1500,2500,1500};//舵機的轉角度

  8. void delay_ms(uint x)
  9. {
  10.         uint i;
  11.         while(x--)for(i=0;i<125;i++);
  12. }
  13. void InitTimer(void)
  14. {
  15.         TMOD=0x11;//開定時器0,1
  16.         TH0=-20000/256;//定時20MS,20MS為一個周期
  17.         TL0=-20000%256;
  18.         TH1=-1500/256;//定時1.5MS,這時舵機處于0度
  19.         TL1=-1500%256;
  20.         EA=1;//開總斷
  21.         TR0=1;//開定時器0
  22.         ET0=1;
  23.         TR1=1;//開定時器1
  24.         ET1=1;
  25. }
  26. void timer0(void) interrupt 1//定時器0中斷函數
  27. {
  28.         pwm=1;
  29.         TH0=-20000/256;
  30.         TL0=-20000%256;
  31.         TR1=1;
  32. }
  33. void timer1(void) interrupt 3//定時器1中斷函數
  34. {
  35.         pwm=0;
  36.         TH1=-pwm_value/256;
  37.         TL1=-pwm_value%256;
  38.         TR1=0;
  39. }
  40. void main(void)//主函數
  41. {
  42.         uchar i;
  43.         InitTimer();
  44.         pwm_value=1500;
  45.         while(1)
  46.         {
  47.                 for(i=0;i<5;i++)
  48.                 {
  49.                         pwm_value=value[i];//通過數組就可以改變舵機的轉角度
  50.                         delay_ms(1000);
  51.                 }
  52.         }
  53. }

復制代碼
回復

使用道具 舉報

5#
ID:401351 發表于 2018-9-22 17:21 | 只看該作者
牛人,具有參考價值
回復

使用道具 舉報

6#
ID:388197 發表于 2018-9-24 21:25 | 只看該作者
SPWM波是等腰三角形波,多用于變頻器.一般的舵機應該用的是PWM.

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

7#
ID:405273 發表于 2018-10-19 09:41 | 只看該作者
舵機轉動 通過單片機輸出pwm控制 ,可以先去看看舵機原理
回復

使用道具 舉報

8#
ID:481641 發表于 2019-4-5 16:40 | 只看該作者
單片機是控制,不是驅動,驅動需要芯片
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表