找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3286|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

關(guān)于51單片機(jī)生成spwm波驅(qū)動(dòng)舵機(jī)轉(zhuǎn)動(dòng) 求幫助

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:399093 發(fā)表于 2018-9-22 00:31 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
500黑幣
想請(qǐng)教關(guān)于51單片機(jī)如何生成spwm并且通過(guò)這個(gè)波驅(qū)動(dòng)舵機(jī)的問(wèn)題。希望能夠得到源代碼,多謝了。

評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

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

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

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:155507 發(fā)表于 2018-9-22 11:03 | 只看該作者
我給你來(lái)個(gè)試試


  1. //軟件模擬pwm

  2. #include"reg52.h"

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

  8. timerinit()            //定時(shí)器中斷初始化
  9. {
  10.         TMOD=0x01;                               //設(shè)置定時(shí)器0為工作方式1
  11.         EA=1;                                    //開(kāi)總中斷
  12.         ET0=1;                                   //定時(shí)器0中斷允許
  13.         TH0 = (65536-500)/256;                  //初值使得定時(shí)器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發(fā)生一次中斷,20ms后定時(shí)器置0重新計(jì)數(shù)
  25. {
  26.         num++;
  27.         DJ1=DJ(3);
  28.         DJ2=DJ(3);
  29.         if(num>=40)     
  30.         {
  31.                 num=0;
  32.                 TH0 = (65536-500)/256;                  //初值使得定時(shí)器0.5毫秒溢出
  33.                 TL0 = (65536-500)%256;
  34.                 return;
  35.         }
  36. }

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

復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

地板
ID:155507 發(fā)表于 2018-9-22 11:10 | 只看該作者
我給你來(lái)多一個(gè)程序試試

  1. // 舵機(jī) 左右90度轉(zhuǎn)動(dòng) 親測(cè)可用


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

  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;//開(kāi)定時(shí)器0,1
  16.         TH0=-20000/256;//定時(shí)20MS,20MS為一個(gè)周期
  17.         TL0=-20000%256;
  18.         TH1=-1500/256;//定時(shí)1.5MS,這時(shí)舵機(jī)處于0度
  19.         TL1=-1500%256;
  20.         EA=1;//開(kāi)總斷
  21.         TR0=1;//開(kāi)定時(shí)器0
  22.         ET0=1;
  23.         TR1=1;//開(kāi)定時(shí)器1
  24.         ET1=1;
  25. }
  26. void timer0(void) interrupt 1//定時(shí)器0中斷函數(shù)
  27. {
  28.         pwm=1;
  29.         TH0=-20000/256;
  30.         TL0=-20000%256;
  31.         TR1=1;
  32. }
  33. void timer1(void) interrupt 3//定時(shí)器1中斷函數(shù)
  34. {
  35.         pwm=0;
  36.         TH1=-pwm_value/256;
  37.         TL1=-pwm_value%256;
  38.         TR1=0;
  39. }
  40. void main(void)//主函數(shù)
  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];//通過(guò)數(shù)組就可以改變舵機(jī)的轉(zhuǎn)角度
  50.                         delay_ms(1000);
  51.                 }
  52.         }
  53. }

復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

7#
ID:405273 發(fā)表于 2018-10-19 09:41 | 只看該作者
舵機(jī)轉(zhuǎn)動(dòng) 通過(guò)單片機(jī)輸出pwm控制 ,可以先去看看舵機(jī)原理
回復(fù)

使用道具 舉報(bào)

8#
ID:481641 發(fā)表于 2019-4-5 16:40 | 只看該作者
單片機(jī)是控制,不是驅(qū)動(dòng),驅(qū)動(dòng)需要芯片
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表