OpenEdv-开源电子网

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

pwm输出控制直流电机高电平正转但是接低电平是不会反转?

[复制链接]

1

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2017-4-6
在线时间
10 小时
发表于 2017-4-19 08:59:24 | 显示全部楼层 |阅读模式
1金钱
新手做STM32F103 输出PWM波控制电机正转反转和急停,其中调节频率和正转和急停都能实现,就是接低电平时候电机不反转?实在不明白问什么?百度和开源都搜了,真的解决不了。

最佳答案

查看完整内容[请看2#楼]

谢谢,已解决,是电源的电压不够,接5v电压后可以正常的正转反转和急停了,电机知识点查的有点少,当时看到L298N说可以直接和单片机相连,就没有仔细看电机的知识,接到3.3v上面,反转不了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2017-4-6
在线时间
10 小时
 楼主| 发表于 2017-4-19 08:59:25 | 显示全部楼层
正点原子 发表于 2017-4-19 20:44
你用什么驱动?正常来说,不用单片机,杜邦线接,都可以控制正反转了,好好看看电路和资料吧。

谢谢,已解决,是电源的电压不够,接5v电压后可以正常的正转反转和急停了,电机知识点查的有点少,当时看到L298N说可以直接和单片机相连,就没有仔细看电机的知识,接到3.3v上面,反转不了
回复

使用道具 举报

22

主题

213

帖子

0

精华

高级会员

Rank: 4

积分
682
金钱
682
注册时间
2015-2-13
在线时间
74 小时
发表于 2017-4-19 09:42:30 | 显示全部楼层
本帖最后由 huishun1314 于 2017-4-19 09:45 编辑

首先需要你的电路原理上能支持正反转,应该是2个IO口控制,h桥电机驱动电路。
回复

使用道具 举报

1

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2017-4-6
在线时间
10 小时
 楼主| 发表于 2017-4-19 10:53:12 | 显示全部楼层
huishun1314 发表于 2017-4-19 09:42
首先需要你的电路原理上能支持正反转,应该是2个IO口控制,h桥电机驱动电路。

电机是支持正反转的
#include "bsp_pwm_output.h"

static void TIMx_GPIO_Config(void)
{
   GPIO_InitTypeDef GPIO_InitStructure;
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);         
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_4|GPIO_Pin_5;                   
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_Init(GPIOB, &GPIO_InitStructure);                                           
   GPIO_ResetBits(GPIOB,GPIO_Pin_2);         反转线                                         
   GPIO_SetBits(GPIOB,GPIO_Pin_4);        接急停线
   GPIO_SetBits(GPIOB,GPIO_Pin_5);        正转线

//  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
        macTIM_APBxClock_FUN (macTIM_CLK, ENABLE);


  macTIM_GPIO_APBxClock_FUN (macTIM_GPIO_CLK, ENABLE);

  /*GPIOA Configuration: TIM3 channel 1 as alternate function push-pull */
  GPIO_InitStructure.GPIO_Pin =  macTIM_CH1_PIN;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                    
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(macTIM_CH1_PORT, &GPIO_InitStructure);

}

static void TIMx_Mode_Config(void)
{
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_OCInitTypeDef  TIM_OCInitStructure;


        u16 CCR1_Val = 299;        


                 
  TIM_TimeBaseStructure.TIM_Period = 599;       //
  TIM_TimeBaseStructure.TIM_Prescaler = 3;            //
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;       
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit(macTIMx, &TIM_TimeBaseStructure);

  /* PWM1 Mode configuration: Channel1 */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;          
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;       
  TIM_OCInitStructure.TIM_Pulse = CCR1_Val;          
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;  
  TIM_OC1Init(macTIMx, &TIM_OCInitStructure);         
  TIM_OC1PreloadConfig(macTIMx, TIM_OCPreload_Enable);

  TIM_ARRPreloadConfig(macTIMx, ENABLE);                输出PWM接pa6口         

  TIM_Cmd(macTIMx, ENABLE);                         
}



void TIMx_PWM_Init(void)
{
        TIMx_GPIO_Config();
        TIMx_Mode_Config();       
}

主函数如下

int main(void)
{       
       
        TIMx_PWM_Init();
       
        while (1);
       
}
回复

使用道具 举报

22

主题

213

帖子

0

精华

高级会员

Rank: 4

积分
682
金钱
682
注册时间
2015-2-13
在线时间
74 小时
发表于 2017-4-19 11:31:05 | 显示全部楼层
本帖最后由 huishun1314 于 2017-4-19 11:33 编辑

相应的电路是怎么样的,正反转的时候代码是怎么控制的?
你贴个初始化的代码能看出什么,你都说了正转是可以的,说明你初始化是对的。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-4-19 20:44:09 | 显示全部楼层
你用什么驱动?正常来说,不用单片机,杜邦线接,都可以控制正反转了,好好看看电路和资料吧。
回复

使用道具 举报

1

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2017-4-6
在线时间
10 小时
 楼主| 发表于 2017-4-19 21:29:25 | 显示全部楼层
huishun1314 发表于 2017-4-19 11:31
相应的电路是怎么样的,正反转的时候代码是怎么控制的?
你贴个初始化的代码能看出什么,你都说了正转是 ...

刚开始做这方面,有点不知道怎么做,看知识也不全面
回复

使用道具 举报

5

主题

9

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2017-4-10
在线时间
4 小时
发表于 2017-4-21 14:53:00 | 显示全部楼层
请问正转反转是怎么实现的啊?
  GPIO_ResetBits(GPIOB,GPIO_Pin_2);         反转线                                         
   GPIO_SetBits(GPIOB,GPIO_Pin_4);        接急停线
   GPIO_SetBits(GPIOB,GPIO_Pin_5);        正转线
硬件支持的话,这样设置一下就可以了吗
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-21 23:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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