佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1434|回复: 17

PWM OF DC MOTOR

[复制链接]
发表于 15-8-2006 08:01 AM | 显示全部楼层 |阅读模式
请问哪位有PWM CONTROL DC MOTOR SPEED 的 SIMPLE
SOURCE CODE吗?
小弟是用PIC16F877A, 和 PICBASIC PRO 的.......
希望大家能帮忙...多谢....
回复

使用道具 举报


ADVERTISEMENT

发表于 15-8-2006 02:30 PM | 显示全部楼层

  1.   Device 16F877
  2.   Declare XTAL 4
  3.         
  4.   Dim Duty as byte    ' Duty cycle value
  5.   
  6.   TRISC.2 = 0         ' Set PORTC.2 / Pin17 (CCP1) to output
  7.   CCP1CON = %00001100 ' Set CCP1 to PWM
  8.   T2CON = %00000101   ' Turn on Timer2, Prescale=4
  9.   PR2 = 249           ' Set PR2 to get 1KHz out

  10.   ' Duty=0= off,
  11.   ' Duty= 128 = 50% speed,
  12.   ' Duty 255= 100% Speed
  13.   Duty = 128          ' Change this value for speed control   
  14.   CCPR1L = Duty
  15. Loop:  
  16.   
  17.   Goto Loop           ' Do it forever
复制代码


这是基本的Hardware PWM , 输出是16F877A 的pin 17, PortC.2, Xtal 是4Mhz。 改变Duty的值 (0-255), 就可以改变motor speed。

其他的你要自己做了。
回复

使用道具 举报

 楼主| 发表于 19-8-2006 02:38 AM | 显示全部楼层
其实我是用一个suis控制两个SPEED
以下是我的source codes(PICBASIC PRO),但是它没办法跳去
SWEEP 2 的 COMMAND.
想请教大家小弟的source code有错吗?如果有,请大家指点指点...


TRISB = 0
PortB = %00000000
start:

if Porta.0 = 0 then sweep1
if Porta.1 = 0 then sweep2

sweep1:
clear
HIGH Portb.0
LOW Portb.1
Portb.7 = 0
PWM Portb.7,125,155
goto start

sweep2:
clear
HIGH Portb.0
LOW Portb.1
Portb.7 = 0
PWM Portb.7,255,155
goto start

end
回复

使用道具 举报

发表于 19-8-2006 11:10 AM | 显示全部楼层
其实我是用一个suis控制两个SPEED
以下是我的source codes(PICBASIC PRO),但是它没办法跳去
SWEEP 2 的 COMMAND.

你发贴时, 就应该说清楚这个,而不是问“哪位有PWM CONTROL DC MOTOR SPEED 的 SIMPLE SOURCE CODE”, 那就不会浪费时间了, 对吗?


如你要用PortA,你要把它set去Digital mode,不然它是Analog mode (ADC), 所以之前PortA 根本没操作。

加以下的code

ADCON1 = 7
ALL_DIGITAL = TRUE




  1. ADCON1 = 7
  2. ALL_DIGITAL = TRUE

  3. TRISB = 0
  4. PortB = %00000000
  5. start:

  6. if Porta.0 = 0 then sweep1
  7. if Porta.1 = 0 then sweep2

  8. sweep1:
  9. clear
  10. HIGH Portb.0
  11. LOW Portb.1
  12. Portb.7 = 0
  13. PWM Portb.7,125,155
  14. goto start

  15. sweep2:
  16. clear
  17. HIGH Portb.0
  18. LOW Portb.1
  19. Portb.7 = 0
  20. PWM Portb.7,255,155
  21. goto start

  22. end
复制代码



但是,
clear (为什么?)
HIGH Portb.0(为什么?)
LOW Portb.1(为什么?)
Portb.7 = 0(为什么?)
回复

使用道具 举报

 楼主| 发表于 19-8-2006 07:51 PM | 显示全部楼层
不好意思, 因为过后我才懂可以不用用INTERNAL PWM的.
clear and portb.7 = 0 我已删掉,因为没有FUNCTION.
if porta.0 = 0 then sweep1
if porta.1 = 0 then sweep2
是要做INTERRUPT的.我在PIC SET porta.0 = 1 AND porta.1 = 1
在portb.0 和 GROUND 之间接SUIS.这就可以用来跳去sweep1或
sweep2.
我这样做行的通吗?
回复

使用道具 举报

发表于 20-8-2006 02:32 PM | 显示全部楼层
原帖由 AirWalker 于 19-8-2006 07:51 PM 发表
if porta.0 = 0 then sweep1
if porta.1 = 0 then sweep2
是要做INTERRUPT的.我在PIC SET porta.0 = 1 AND porta.1 = 1
在portb.0 和 GROUND 之间接SUIS.这就可以用来跳去sweep1或
sweep2.
我这样做行的通吗?

也可以啊,方法有很多种,重要的是你明白就可以了。

你加了以下的code,可以吗?
ADCON1 = 7
ALL_DIGITAL = TRUE
回复

使用道具 举报

Follow Us
 楼主| 发表于 23-8-2006 10:46 PM | 显示全部楼层
ALL_DIGITAL = TRUE
在MPLAB IDE EXECUTE 时出现以下问题:
"Syntax error.Halting build on first failure as requested
那里出问题呢?
它的是什么FUNCTION呢?
回复

使用道具 举报

发表于 24-8-2006 08:40 AM | 显示全部楼层
原帖由 AirWalker 于 23-8-2006 10:46 PM 发表
ALL_DIGITAL = TRUE
在MPLAB IDE EXECUTE 时出现以下问题:
"Syntax error.Halting build on first failure as requested
那里出问题呢?
它的是什么FUNCTION呢?

首先,你用什么version的picbasic?compile 成功吗?

ALL_DIGITAL = TRUE, 是把PortA 设定成Digital mode, 不使用ADC。
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 24-8-2006 08:46 PM | 显示全部楼层
原帖由 pic 于 24-8-2006 08:40 AM 发表

首先,你用什么version的picbasic?compile 成功吗?

ALL_DIGITAL = TRUE, 是把PortA 设定成Digital mode, 不使用ADC。


我用的时PICBASIC PRO 2.45
COMPILE 时不成功.
问题出现在 "ALL_DIGITAL = TRUE" 的COMMAND......
我该怎么办?
回复

使用道具 举报

发表于 25-8-2006 10:23 AM | 显示全部楼层
原帖由 AirWalker 于 24-8-2006 08:46 PM 发表


我用的时PICBASIC PRO 2.45
COMPILE 时不成功.
问题出现在 "ALL_DIGITAL = TRUE" 的COMMAND......
我该怎么办?

我compile没问题啊。。。
你是什么 error message?

ALL_DIGITAL = TRUE 是PICbasic 的internal command。
回复

使用道具 举报

 楼主| 发表于 25-8-2006 10:56 AM | 显示全部楼层
你用身么PROGRAMME?
我用的是MPLAB IDE V 7.31 LINK WITH PICBASICPRO 2.45
一样吗?
以下是出现的error

回复

使用道具 举报

发表于 25-8-2006 04:59 PM | 显示全部楼层
原帖由 AirWalker 于 25-8-2006 10:56 AM 发表
你用身么PROGRAMME?
我用的是MPLAB IDE V 7.31 LINK WITH PICBASICPRO 2.45
一样吗?

我用的是PICBasic 2.1.
再放你的源码(完整的),我试compile你的code看看。
回复

使用道具 举报

 楼主| 发表于 25-8-2006 11:24 PM | 显示全部楼层
原帖由 pic 于 25-8-2006 04:59 PM 发表

我用的是PICBasic 2.1.
再放你的源码(完整的),我试compile你的code看看。


ADCON1 = 7
ALL_DIGITAL = TRUE
TRISB = 0
PortB = %00000000
start:

if Porta.0 = 0 then sweep1
if Porta.1 = 0 then sweep2

sweep1:
HIGH Portb.0
LOW Portb.1
PWM Portb.7,125,155
goto start

sweep2:
HIGH Portb.0
LOW Portb.1
PWM Portb.7,255,155
goto start

end

Z这是我的SOURCE CODE.那麻烦你咯,多谢.
回复

使用道具 举报

发表于 26-8-2006 08:46 AM | 显示全部楼层
你的code并不完整啊,你没告诉compiler你是用什么MCU。
加入:
Device 16F877
Declare XTAL 4



  1. Device 16F877 ' Tell compiler you are using 16F877
  2. Declare XTAL 4 ' if you are using 4Mhz crystal
  3.   
  4. ADCON1 = 7
  5. ALL_DIGITAL = TRUE
  6. TRISB = 0
  7. PortB = %00000000
  8. start:

  9. if Porta.0 = 0 then sweep1
  10. if Porta.1 = 0 then sweep2

  11. sweep1:
  12. HIGH Portb.0
  13. LOW Portb.1
  14. PWM Portb.7,125,155
  15. goto start

  16. sweep2:
  17. HIGH Portb.0
  18. LOW Portb.1
  19. PWM Portb.7,255,155
  20. goto start

  21. end
复制代码
回复

使用道具 举报

 楼主| 发表于 27-8-2006 01:01 AM | 显示全部楼层
原帖由 pic 于 26-8-2006 08:46 AM 发表
你的code并不完整啊,你没告诉compiler你是用什么MCU。
加入:
Device 16F877
Declare XTAL 4



Device 16F877 ' Tell compiler you are using 16F877
Declare XTAL 4 ' if you are using 4Mhz crystal ...


我用的MPLAB IDE LINK WITH PICBASICPRO 2.45,在CREATE
PROJECT时已经选了PIC16F877A.
CRYSTAL 我之前做别的SOURCE CODE 时, 没DECLARE 也可以
COMPILE.
我已经想了很久但还做不出来.
那里出错了???????
回复

使用道具 举报

发表于 27-8-2006 10:58 AM | 显示全部楼层
也是说,你并没有加入
Device 16F877

因为你认为不需要?
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 27-8-2006 11:12 AM | 显示全部楼层
原帖由 pic 于 27-8-2006 10:58 AM 发表
也是说,你并没有加入
Device 16F877

因为你认为不需要?


我加了
Device 16F877
Declare XTAL 4
不过我COMPLIE 时还是出现问题
问题出现在
Device 16F877
Declare XTAL 4
ALL_DIGITAL = TRUE
这三个COMMAND.
请问还有别的方法吗?
不好意思,麻烦你了.
回复

使用道具 举报

发表于 28-8-2006 09:05 AM | 显示全部楼层
原帖由 AirWalker 于 27-8-2006 11:12 AM 发表
请问还有别的方法吗?
不好意思,麻烦你了.

别的方法是吗?简单的是不要用PortA, 你可以改用PortB,PortC, PortD 或 PortE 。但你并没解决本来的问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 23-12-2024 01:55 PM , Processed in 0.736612 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表