Ir ao conteúdo
  • Cadastre-se

PWM e direção de rotação de motores DC com PIC


Posts recomendados

Bom dia.

 

Meu objetivo é simples: controlar a direção e a velocidade de rotação de dois motores DC de forma independente para implementá-lo em um carrinho.

 

Estou utilizando o PIC 18F4620 e programando no mikroBASIC.

 

Gostaria de utilizar a biblioteca PWM, mas esse PIC possui apenas 2 módulos de PWM. Dessa forma, só consigo ou controlar a velocidade dos dois motores sem a possiblidade de inverter o sentido.

 

Alguém conhece algum método que permita que eu controle o sentido de rotação dos dois motores de forma independente utilizando essa biblioteca?

Link para o comentário
Compartilhar em outros sites

Olá,

Você pode usar os 2 canais PWM do PIC, um para cada motor e para inverter o sentido de giro terá de usar uma ponte H para cada motor. No caso terá de usar +1 pino do PIC para cada ponte H. Esse pino quando em nível baixo o motor gira para um lado, em nível alto, gira para o outro. Pesquise por "ponte H PWM", será retornado bastante coisa a respeito.

 

Att,

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@Evans Picolo ,

 

Olha, quando usamos uma ponte H, o PWM é aplicado a um pino de controle, e definimos a direção por um ou dois pinos adicionais, então os seus dois canais de PWM já são suficientes para controlar a rotação dos dois motores de forma independente, e agora falta você descobrir se a sua ponte H precisa de um ou dois pinos para o controle de sentido (para cada motor).... e escolher os pinos para isto.

 

Paulo

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

...portanto não é a "biblioteca" que vai resolver seu problema e sim o hardware, ou seja não é soft não. Tem que por a mão na massa... kk. O que não impede de você criar uma função com um argumento binário pra definir a direção...

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 3 meses depois...

Primeiramente, obrigado pela atenção. Segundamente, desculpe pela ausência, não recebi notificação de suas respostas. Terceiramente, eu havia postado uma resposta aqui mas agora que vi que ela não foi. Então aqui vai um esclarecimento da minha dúvida.

 

***OBS: Ressalto que consegui contornar minha dúvida, mas ainda não a sanei.

 

O duty cicle seria inverso pra cada sentido de rotação, certo?

Por exemplo: 

 

pino A = PWM 70%

pino B = 0

Efeito: roda no sentido com horário com 70% da velocidade máxima

 

pino A = PWM 70%

pino B = 1

Efeito: roda no sentido anti-horário com 30% da velocidade máxima

(pois é o pulso baixo que vai permitir a passagem de corrente)

 

Minhas pesquisas não resultam em nada que realmente foque na minha dúvida. Na maioria dos lugares há apenas um motor e nos que há dois, não é explicado a utilização de PWM, só da ponte H.

adicionado 26 minutos depois

Resolvi o problema utilizando um algoritmo simples:

 

1. Ler velocidade desejada

2. Verificar se a velocidade é positiva (>=0)

3. Se sim, então:

     a. Limpar pino de controle de sentido (sentido = 0)

     b. Aplicar PWM com a velocidade desejada

4. Senão, então: 

     a. Setar pino de controle de sentido (sentido = 1)

     b. Trocar o valor da velocidade pelo seu complemento (velocidade = 255 - velocidade)

     c. Aplicar PWM com a velocidade calculada

FIM

 

Esse algoritmo resolve meu problema. Contudo, gostaria de saber como fazer isso por hardware, da maneira como todos estão falando. Por isso, vou manter o tópico aberto.

 

Obrigado a todos que participaram.

 

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
2 horas atrás, Evans Picolo disse:

não recebi notificação de suas respostas.

Deve estar na sua caixa de spam ou lixeira ou você configurou pra não receber.@Bommu Perneta tem razão. Publique desenhos. Claro, pra 2 motores então você deve ter pino A,B,C,D e não só AB

 

2 horas atrás, Evans Picolo disse:

O duty cicle seria inverso pra cada sentido de rotação, certo?

A "polaridade" e  sentido são um só. O que inverte é o nível do pino B. De novo, depende de teu desenho.

 

Além do circuito deves publicar também o código fonte lembrando que - apesar que penso ser só uma questão de setup de hw - se em basic, o amigo Paulão está apto a te orientar um pouco melhor.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

O pic18f4620 tem  1 ECCP e 1 CCP. No modulo eccp você tem capacidade de usar full bridge,verificar capitulo 16 do datasheet.Screenshot_17.png.e50d0e6556e191fcfe9a492936e78c6a.png

No caso você precisar controlar dois motores,você precisaria de dois pic deste.Também poderia procurar algum outro pic com duas eccp(ou algum outro nome).Ou procurar algum driver especifico para isto,ou você mesmo projetar um circuito para isto.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Implantar um PWM bidirecional para motor DC usando apenas uma saida de PWM é simples. Basta que você tenha um  pino sobrando no seu MCU. Se nível 1 gira à direita, nivel 0 à esquerda. Muitos dos drives existentes possuem pino de ENABLE, serve para isso. Alguns modelos prontos de driver para ponte H podem vir a apresentar entrada específica para a função sentido de rotação.

Sobre a lógica de disparo do PWM, trabalhar com lógica positiva, negativa complica um bocado as coisas. Se já conseguiu  controlar os 2 motores na velocidade desejada e o desafio consiste apenas em se ter a rotação reversa, no seu caso basta apenas ter 2 pinos sobrando na sua MCU, 1 para cada motor, indicando o sentido da rotação. No desenho abaixo não tive o cuidado de selecionar os pinos corretos, deixo isso por sua conta.

Sem título1.png

adicionado 17 minutos depois

Não sei o que está montando, mas se na lógica de funcionamento da sua máquina o sentido de rotação do motor1 estiver amarrado no sentido de rotação do segundo motor, bastará então 1 único pino de controle no sentido de rotação.

Boa sorte, não se esqueça de postar os resultados.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Amigos, novamente tive o problema de pensar ter postado uma resposta e somente depois ver que ela não havia sido postada.

 

O circuito do Sérgio soluciona em 100% meu problema e minha dúvida. Agora sei que é possível sim e como fazer isso por hardware. Talvez, se tivesse me dedicado um pouco mais, tivesse encontrado uma solução semelhante antes, mas acabei optando pela solução via software mesmo, já que estava mais acessível.

 

Por curiosidade, deixo abaixo a minha última resposta que não foi postada, contendo alguns detalhes do projeto.

 

Ressalto que minha dúvida foi sanada e agradeço a todos que participaram.

 

Eis a minha resposta anterior (que não foi postada):

 

Estou utilizando o módulo HG7881 que é baseado no CI L9110: Datasheet L9110 (Ponte H HG7881).pdf

 

esquema_ponte_H.thumb.jpg.fc4dafd7f3dd0154df49b64b6708efda.jpg

 

2 portas pra cada motor. Um para o sentido e outro para o PWM.

Quando quero inverter o sentido, basta inverter o sinal no sentido. De fato, o motor vai girar no sentido contrário, mas o duty cicle vai ser o complemento do duty cicle

que eu jogar no PWM, e não o duty cile em si.

 

Por exemplo: se meu duty cicle for de 70%, quando eu inverter o sentido, ele vai ficar com 100% - 70% = 30% apenas.

 

Isso acontece porque a corrente vai passar agora somente quando pulso no PWM for baixo, pois o outro polo vai estar sempre em HIGH.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!