zhang32568 发表于 2025-1-20 17:08:20

pwm学习理解不知是否正确

一般都是需要用到啥才开始研究。从来没有技术积累。很久不用又忘记的一干二净。
最近需要用到7路单独PWM 。芯片使用的是stc32.本以为端口够用了。盲目画板子做硬件。焊接上板子调试才发现问题了。仔细研究发现:
1:STC32带两组PWM.分别是PWMA 组和PWMB 组。每一组都只能使用一个定时器。所以尽管很多输出端口。但是输出频率只能是两个。同一组不能同时输出不同频率。
2:第一组PWMA 可以输出互补PWM.如果不互补输出。同时只能是4个P或者4个N 分别输出。不能同时输出。单独输出的时候,互补的另外一个端口可以作为普通端口使用。
    无论哪种输出。占空比可以单独调节。
3:第二组PWMB 可以单独输出4路同频率的PWM。各自的占空比可以单独调节。
4:配置的时候 必须先将寄存器CCER1 清0,然后开始配置CCMR寄存器(通道模式配置)
5:开启对应的输出使能ENO寄存器。
6:选择需要输出的PWM端口 PWM_PS寄存器。
7:最后开启总输出BKR寄存器
8:使能预装载 CR1寄存器。
9:设置ARR寄存器 (输出频率设置 具体手册有计算公式)
10 设置占空比寄存器CCR (这个与ARR数值有关系,CCR的值= 需要的占空比Duty*(ARR+1)/100
按照上面顺序配置基本上不会出现什么问题。

研究以后发现 单片机选型错误。STC32尽管很强大 但是不适合这个项目

DebugLab 发表于 2025-1-20 17:41:19

7路不同频率,如果频率低可以用定时器软件实现,频率高的话就不好办了

梁工 发表于 2025-1-21 13:54:04

你可以考虑使用STC8G2K64S4,6组PWM,每组用一个通道,则6组都是独立的频率。还有PCA也可以做PWM,但只能是6、7、8、10位PWM之一。

zhang32568 发表于 2025-1-22 08:49:45

梁工 发表于 2025-1-21 13:54
你可以考虑使用STC8G2K64S4,6组PWM,每组用一个通道,则6组都是独立的频率。还有PCA也可以做PWM,但只能是 ...
梁工 有个问题项请教一下:STC8G2K64S4不适合这里。因为需要驱动三路直流有刷电机。另外三路需要将控制端的5V信号通过485传送给分机转换成一致的电压。分辨率要求5mv以内。分辨率可能不满足。
我现在想法是通过PWMA 驱动三个电机。频率一致 通过互补输出端口控制正反转和调速。
PWMB 单独将主机通过485送来的电压ADC数值 通过DAC转换成一致的电压。(这个测试没有问题,感谢你推荐使用LMV358轨到轨,这个芯片喜欢的离不开手。)
目前测试遇到的问题是电机驱动。电机电压12V
先使用L289N 发现占空比和输出电压严重不成比例。驱动频率从100HZ到10KHZ 都不行。具体表现为。比如100HZ 。占空比10%左右输出9V电压占空比再增加输出电压增加。但是我期望的是占空比和电压基本成比例。比方说50%占空比驱动输出大概6V左右电压。
驱动频率10KHZ90%占空比输出10.8V左右。占空比降到30%输出8.6V 左右。占空比再低。输出很快下降。线性很差。
更换AT8236 输出只有不到5V也许我这个模块有问题。
想着自己用四个MOS做个全桥,用驱动芯片驱动但是输出比例不知道是否可以做到一致。
没有做过调速没有经验。
希望根据你的经验有没有合适方案或者推荐的芯片。最高工作电压24V 单路电机最大工作
电流0.5A .

主机采集电压是通过电位器(可回位平时在中心点,上端接到VREF2.5V下端到地)。当ADC在2048表示电位器无操作。2048--4095电机正转并且占空比逐渐增大。2048----0的时候反转并且速度逐渐增加

梁工 发表于 2025-1-22 10:19:01

zhang32568 发表于 2025-1-22 08:49
梁工 有个问题项请教一下:STC8G2K64S4不适合这里。因为需要驱动三路直流有刷电机。另外三路需要将控制端 ...

PWM控制有刷电机为什么要PWM调频?我不理解这个。
原则上,PWM占空比与输出平均电压严格成正比,但是实际的驱动电路有压降,就会出现非线性的问题,使用MOSFET驱动会好很多。

zhang32568 发表于 2025-1-22 16:31:27

梁工 发表于 2025-1-22 10:19
PWM控制有刷电机为什么要PWM调频?我不理解这个。
原则上,PWM占空比与输出平均电压严格成正比,但是实际 ...

不调频 。频率固定。我是测试在不同频率下的线性情况。
页: [1]
查看完整版本: pwm学习理解不知是否正确