• Welcome to LusoRobótica - Robótica em Português.
 

FlyeRobot - Equilíbrio Automático

Started by Nunito, 12 de October de 2014, 10:32

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

jm_araujo

Também não entendo a dúvida. Se é um motor passo-a-passo, se queres que rode mais devagar, dás menos passos. Usar PWM com um motor de passo não faz qualquer sentido (exceto para ficar com menos força nos passos?!!?!?!)

StarRider

Boas,

O L298 é excelente para controlar servo motors com PWM, já para steppers é um pouco "estranho".

Uso PWM para controlar steppers em vários projectos com um driver/IC com interface SD, se bem que
acaba por não ser PWM "puro" uma vez que o duty é fixo e o que varia é o período, no fundo é  mais
uma forma de simplificar a implementação uma vez que o hardware do LEON (ou mesmo dos STM) tem
algumas características do PWM que torna a coisa mais leve em termos de processamento do que uma
implementação com um timer e interrupts.

Abraços,
PA

senso

Acho que é complicado um micro que não tenha um timer que não te deixe variar o periodo/frequência do mesmo..
Avr fanboy

Nunito

Quote from: jm_araujo on 12 de October de 2014, 23:48
Também não entendo a dúvida. Se é um motor passo-a-passo, se queres que rode mais devagar, dás menos passos. Usar PWM com um motor de passo não faz qualquer sentido (exceto para ficar com menos força nos passos?!!?!?!)
Este video de um colega que participa neste forum vai ajudar a compreender a minha dúvida.
Como é que ele varia a aceleração dos motores de passo?
http://youtu.be/YLNWpxRAM1Y

senso

Dando menos passos por segundo.
Num driver com interface SD é dar menos pulsos no pino de step, no caso de um driver burro como o L298 andas mais devagar na tua tabela de passos, para esse uso, continuo a achar que um driver de preferencia com micro-stepping e limite de currente seria muito melhor escolha.
Avr fanboy

Nunito

Quote from: senso on 13 de October de 2014, 19:36
Dando menos passos por segundo.
Num driver com interface SD é dar menos pulsos no pino de step, no caso de um driver burro como o L298 andas mais devagar na tua tabela de passos, para esse uso, continuo a achar que um driver de preferencia com micro-stepping e limite de currente seria muito melhor escolha.
Eu comprei estas boards de L298, vou tentar utilizar isto que tenho, não estou a pensar investir mais.

senso

Um step-stick ou lá como lhe chamam esta semana, que é o que usam nas impressoras 3d, usam chips dedicados para controlo de steppers e compras a meia duzia de € cada uma no ebay, mas seja como for, é só implementar a tabela de passos(ou não, é basicamente um shift á direita ou á esquerda de um bit e dar a volta), e usar uma interrupção usando um timer no modo de frequencia variavel(qualquer modo em que o top seja um OCRxx) e está feito, cada interrupt dás um passo, para variar velocidade varias o OCRxx que controla a frequencia, para saltos muito maiores de frequencia usas o prescaler do timer, mas dificilmente precisas de uma gama de frequencia assim tão grande.
Avr fanboy

Njay

Tens 2 tempos que podes variar: 1) a duração do impulso e 2) o intervalo entre impulsos. Ao acelerares podes ter que mexer na duração do impulso (assumindo um esquema simples sem  monitorização da corrente de fase).

Se não precisas de fazer mais nada enquanto movimentas o motor, podes fazer tudo no ciclo principal sem meter interrupções e contadores ao barulho.

Se tiveres mais coisas para fazer ao mesmo tempo mas não quiseres ainda lidar com interrupções, também podes usar multitarefa cooperativa (aqui e a parte 2 aqui), mas os teus tempos devem ser um pouco apertados, precisas provavelmente de uma resolução de relógio de 1 ou 2 ms.

Nunito

Quote from: Njay on 14 de October de 2014, 01:52
Tens 2 tempos que podes variar: 1) a duração do impulso e 2) o intervalo entre impulsos. Ao acelerares podes ter que mexer na duração do impulso (assumindo um esquema simples sem  monitorização da corrente de fase).
Estes impulsos que falas são os que dou com os IN1(HIGH) etc...
E a duração dos impulsos, os delays em ms, certo?

Njay

Ya. A duração do impulso contribui para o controlo do torque do motor, mais tempo ligado -> mais torque. Mas se estiver demasiado tempo ligado o motor aquece demais. Para um esquema simples de controlo (ou seja, sem controlo da corrente), eu começo por um valor "qualquer" conservador, e depois optimizo-o, reduzindo-o até encontrar o ponto em que o motor deixa de conseguir responder a tempo e ficando a uma margem de segurança desse valor. Por exemplo posso começar por dar impulsos de 5ms e depois vou reduzindo esse tempo até o motor deixar de funcionar bem na aplicação em causa (perde passos); aí volto para o anterior valor em que o motor funcionava bem e fica assim. Claro que tudo isto tem certas assunções, como o motor estar correctamente dimensionado para a aplicação em causa.

Nunito

#25
Bom dia, não há ninguém por aqui que tenha duas drives A4988 para venda? Podem ser usadas a funcionar de preferencia :)

Cumprimentos, Nuno



StarRider

Quote from: Nunito on 15 de October de 2014, 09:31
Bom dia, não há ninguém por aqui que tenha duas drives [http://www.pololu.com/product/1182]A4988[/url] para venda? Podem ser usadas a funcionar de preferencia :)

Cumprimentos, Nuno

Boas,

Tenho algumas breakouts com o A4988 clones das da Pololu, se tiveres interessado apita por PM.

Abraços,
PA

Nunito

Quote from: StarRider on 15 de October de 2014, 09:48
Tenho algumas breakouts com o A4988 clones das da Pololu, se tiveres interessado apita por PM.

Eu vou ver se me desenrasco com as breakouts do L298, senão depois entro em contacto.
Obrigado!

Nunito

Boa noite.

Estou a realizar uns testes com 2 motores DC ligados ao L298, o que está a acontecer é que num sentido os motores estão a arrancar através da programação que tenho "speed = map(speed,0,255,0,-255)" mas quando inclino o MPU6050 para o outro lado lentamente, os motores em sentido reverso eles não estão a arrancar seguindo o speed, estão a fazer on/off.
Será que alguém me pode dar umas dicas do que está a acontecer.

Cumprimentos,

Nunito

Quote from: Nunito on 17 de October de 2014, 19:52
Boa noite.

Estou a realizar uns testes com 2 motores DC ligados ao L298, o que está a acontecer é que num sentido os motores estão a arrancar através da programação que tenho "speed = map(speed,0,255,0,-255)" mas quando inclino o MPU6050 para o outro lado lentamente, os motores em sentido reverso eles não estão a arrancar seguindo o speed, estão a fazer on/off.
Será que alguém me pode dar umas dicas do que está a acontecer.

Cumprimentos,
Estava a fazer testes com o sensor ao contrário, tava da ideia que poderia trabalhar com ele da forma que estava o sensor para cima.
Já funciona como deve ser, mas por vezes aparece um erro na comunicação I2C "i2c read failed:4"

Cumprimentos