OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3542|回复: 9

利用ADC采集电压,用于控制PWM输出的占空比,程序调不通

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2019-4-18
在线时间
0 小时
发表于 2019-4-18 20:30:11 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2019-4-18
在线时间
0 小时
 楼主| 发表于 2019-4-18 20:31:08 | 显示全部楼层
ADC模块单独调试可以使用  PWM功能单独调试也可以使用  合在一起就是不行
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2019-4-18 20:44:53 | 显示全部楼层
程序卡在哪里不行了?
回复

使用道具 举报

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2019-4-4
在线时间
27 小时
发表于 2019-4-18 23:40:53 来自手机 | 显示全部楼层
先启动adc采样,然后把adc结果赋值给pwm的比较寄存器,就可以了。但是注意adc采样值不能大于pwm的周期寄存器内的值
回复

使用道具 举报

1

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2019-5-4
在线时间
40 小时
发表于 2019-6-1 09:38:50 | 显示全部楼层
wzh198764 发表于 2019-4-18 23:40
先启动adc采样,然后把adc结果赋值给pwm的比较寄存器,就可以了。但是注意adc采样值不能大于pwm的周期寄存 ...

我也是PWM、ADC单独使用都没问题。我是用PWM来控制舵机,ADC转换传感器的模拟量。通过ADC转换后的数值来判断情况,再调PWM占空比。但两个一起用就不行,原本舵机我让它0~180度来回转动,加了ADC初始化后,舵机就一卡一卡的。幅度、频率都不稳定
回复

使用道具 举报

1

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2019-5-4
在线时间
40 小时
发表于 2019-6-1 09:48:25 | 显示全部楼层
peng1554 发表于 2019-4-18 20:44
程序卡在哪里不行了?

求助,这个困扰我好几天了,麻烦解答一下,感激不尽!!!
       我也是PWM、ADC单独使用都没问题。我是用PWM来控制舵机,ADC转换传感器的模拟量(ADC中断读取,禁止扫描模式,连续转换,ADC时钟9MHZ)。通过ADC转换后的数值来判断情况,再调PWM占空比。但两个一起用就不行,原本舵机我让它0~180度来回转动,加了ADC初始化后,舵机就一卡一卡的。用示波器看的波形幅度、频率都不稳定。(是不是我的ADC采样时间有问题)
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-6-1 11:03:47 | 显示全部楼层
ExtremeHoly 发表于 2019-6-1 09:48
求助,这个困扰我好几天了,麻烦解答一下,感激不尽!!!
       我也是PWM、ADC单独使用都没问题。我 ...

一卡一卡的,最好adc最后一位或两位不要了,数值稳定点
还有检查舵机动的时候电压多少,供电够不够
回复

使用道具 举报

1

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2019-5-4
在线时间
40 小时
发表于 2019-6-1 11:59:14 | 显示全部楼层
nashui_sx 发表于 2019-6-1 11:03
一卡一卡的,最好adc最后一位或两位不要了,数值稳定点
还有检查舵机动的时候电压多少,供电够不够

ADC最后一两位不要,是指那个采样时间吗?我是用直流电源器来供给电压电流的,电压稳定输出4.899V,电流1A左右,供电应该够
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-6-1 13:08:19 | 显示全部楼层
ExtremeHoly 发表于 2019-6-1 11:59
ADC最后一两位不要,是指那个采样时间吗?我是用直流电源器来供给电压电流的,电压稳定输出4.899V,电流1A ...

不是,假如最后一位不要,采集是1234 你就当123 然后在换算到-180--180
电流够,那就减小没两次的控制间的延时,流畅点  延时网上有大致计算方法,也可以自己估计
回复

使用道具 举报

1

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2019-5-4
在线时间
40 小时
发表于 2019-6-2 08:23:55 | 显示全部楼层
nashui_sx 发表于 2019-6-1 13:08
不是,假如最后一位不要,采集是1234 你就当123 然后在换算到-180--180
电流够,那就减小没两次的控制 ...

我在  void ADC_IRQHandler(void)  这个中断里,把那个转换值 ADC_GetConversionValue,  直接 /100,粗暴去掉两位数(不懂这样操作正不正确)。原本转换值最高是4096,在串口助手已经变为40了。
  两次的控制时间是PWM的控制吗?PWM我是每17ms调一次占空比,舵机转动2度,舵机延时是用定时器中断,来判断时间再再执行操作。
   采集去掉两位后,舵机转动范围逐渐减小,后面又逐渐增大,就这样一直循环
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 05:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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