Ir ao conteúdo
  • Cadastre-se

Expansão de portas digitais que possuem função pwm


ZiquiGni
Ir à solução Resolvido por .if,

Posts recomendados

[Repost de outro tópico]Boa tarde, estou a procura de uma solução para a expansão das portas do arduino com função de PWM (não sei se todas podem trabalhar dessa forma). Meu projeto tomou algumas dimensões que eu não imaginava, agora preciso dessa solução para controlar a velocidade dos motores individualmente e tambem a posição dos servos, vi que nem o arduino mega tem a quantidade que eu preciso. Para o controle das pontes h's utilisarei o CI 74HC595 junto com a ponte h L298N. Mas para o controle da velocidade acredito que tenha que ser os pinos do arduino com essa função (PWM) ou eu posso mandar um pulso pwm selecionando um pino de um CI como o 74hc595. Como vocês resolvem essa questão de não ter portas pwm suficientes.

 

Obs: quero controlar a velocidade individualmente de cada roda pois pretendo usar o L298N para verificar quando uma das rodas esta trancada usando o pino de Sense deste ci, e através do código fazer as outras terem mais força para ajudar.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
  • Solução

Uma alternativa é fazer por sw e gerar o pwm numa interrupt. Algo como:
 

#define saida0 RB0
#define saida1 RB1
//...
#define saidan Rxn
unsigned char pwm0, pwm1, ... pwmn , d0,d1...dn;

void interrupt timer0()
{
if (d0++<pwm0) saida0=0;
else saida0=1;
if (d1++<pwm1) saida1=0;
else saida0=1;
//...
if (dn++<pwmn) saidan=0;
else saidan=1;
}

Consegues perceber as variáveis pwm controlando a largura nos pinos saida? Consegues perceber a resolução 8 bits? Consegues perceber que a freq do timer0 é a freq pwm?

Também relativamente fácil passar as saídas prum 595, caso os pinos não disponíveis.

E se achar que vai fazer ctrl-c ctrl-v disso no arduíno e se dar bem, receba um cóqui...

 

Link para o comentário
Compartilhar em outros sites

@Isadora Ferraz neste caso então é possível modularizar a largura do pulso e ainda assim usar uma saida do 74hc595 para mandar para cada motor de forma separada? Por que pelo que li sobre o 595 ele trabalha em low e high... 

 

Obs: não irei fazer ctrl-c ctrl-v senão não é possível aprender... Hahahha... 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
48 minutos atrás, Ezequiel Gnich disse:

é possível modularizar a largura do pulso e ainda assim usar uma saida do 74hc595 para mandar para cada motor de forma separada

Tudo é possível. Basta varrer os dados nele e chutar pra saída

 

49 minutos atrás, Ezequiel Gnich disse:

pelo que li sobre o 595 ele trabalha em low e high.

Sim. A tradução pra isso seria ele ativa as saídas em zero e um e se ler um pouco mais, até desativa. De fato é melhor ler mais sobre.

 

52 minutos atrás, Ezequiel Gnich disse:

não irei fazer ctrl-c ctrl-v senão não é possível aprender

de fato. E de fato aquilo é C e não totalmente = a linguagem arduína (que não vai muito com minha cara)

  • Curtir 1
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!