Autor Tópico: Divisor feito com motor de passo  (Lida 143908 vezes)

Description:

0 Membros e 10 Visitantes estão vendo este tópico.

Offline C N C N o w !

  • CNCMASTER
  • ******
  • Posts: 6300
  • Sexo: Masculino
Re: Divisor feito com motor de passo
« Resposta #165 Online: 26 de Agosto de 2009, 09:59 »
O circuito pode acionar o motor diretamente sem uma placa de driver, para simplificar e baratear a montagem.

Fico contente vendo que acatou minha sugestão.  ;D

Citar
Além disso, o aquecimento do motor será menor, devido a menor tensão aplicada sobre o mesmo.

Hum ? O que é que a tensão tem a ver com aquecimento ?

Citar
Os resistores do motor devem ser calculados dependendo do motor a ser utilizado, coloquei 1 ohm como sugestão.

Os resistores são dispensáveis quando o motor é alimentado sob tensão nominal. Devem ser devidamente calculados quando este não for o caso.

Desrecomendo a utilização dos diodos em paralelo com os enrolamentos, é andar com o freio de mão puxado ...

Considerando que provavelmente os motores serão alimentados sob baixa tensão, os diodos poderiam ser dispensados na maioria dos casos, mas se forem utilizados, é muito preferível que sejam instalados em anti-paralelo com os transistores, o que os protege e provê recirculação para a fonte, reduzindo muito o efeito de freio dinâmico.

Citar
Mas acho que pela baixa velocidade, não compensa, um resistor de fio deve sair mais barato.

Tb acho. É preferível alimentar o motor com a tensão nominal, evita tb os resistores.

Citar
Fururamente será implementada a possibilidade de salvar os parâmetros na memóriia EEPROM.

Acho que isto é essencial, ter que reconfigurar é um pé ...

Citar
Se a divisão não for inteira, haverá um erro cumulativo, que será somado a cada divisão. Isso poderia ser melhorado com um programa de ajuste de curva (best fit). Mas não sei se vale a pena num sistema de precisão, acredito que seja melhor trabalhar no sistema de redução mecânica. Sugestões?

Acho que pra ficar perfeito, deveria ser implementado o algoritmo de compensação, de modo a possibilitar a utilização de quaisquer redutores.

Parabéns ! Tô gostando de ver a evolução do projeto !

Offline Ivan

  • Hobby
  • ****
  • Posts: 723
  • Sexo: Masculino
Re: Divisor feito com motor de passo
« Resposta #166 Online: 26 de Agosto de 2009, 10:32 »
Olá Gil,
acabei de comprar um kit de desenvolvimento PIC c/ o 16F628, para começar a aprender a mexer com componentes de CNC, e motivado pelo que você já está mastigando, pretendo fazer o divisor como primeira aplicação.
Quero usar um ULN2803, usando 2 portas dele para cada alimentação do motor, e programar em PIC Basic (só fiz coisas em Basic e Pascal :( ) Pretendo usar somente meio-passo.

Só pra ter uma idéia do erro em um exemplo prático nesta configuração que citou:
Engrenagem 127 dentes 17DP (de um torno Joinville de bancada)
Par1: 127
Par2: 16000 divisões da circunferência
Passos por dente: 125,98
(arredondado para 126, erro 0,0157 passo/dente)
Erro acumulado no último dente = 2 passos

engrenagem DP17, diâmetro primitivo ~ 190mm
circunferência no dp = 597mm
erro na circunferência do dp do último para o primeiro dente = : 7,5 centésimos de mm

Com meio-passo isso obviamente cai pela metade, mas num arranjo pior (ex. motor passo 7,5 graus e/ou redução de menor relação) acho que isso pode incomodar - eu pretendo tentar uma forma de distribuir o erro (quanta pretensão, ainda não sei nem ligar na tomada  ;D ).

Outra coisa, não sei se considerou: ao iniciar o uso, a primeira posição não deve ser simplesmente a posição inicial. O pograminha deve voltar um (ou melhor, alguns) passo(s) e avançar um (alguns) e considerar este como zero - para zerar folgas da redução (e mesmo a histerese do motor para a carga aplicada).

Offline luciano g

  • Hobby
  • ****
  • Posts: 922
  • Sexo: Masculino
Re: Divisor feito com motor de passo
« Resposta #167 Online: 26 de Agosto de 2009, 11:28 »
ola gil
pelo que vejo ja esta ficando bom e como sujestao para não tero erro maior que um passo teria que dividir o numero de passos usados para dar uma volta com dupla precisão ex:
para uma volta são 8400 passos dividido por 49 o resultado sera 171,4285 então o primeiro avanço sera 171 passos ja o segundo sera 342 e o terceiro tera pela soma mais um passo andando 514 ou seja soma-se o numero com a fraçao e só usa a parte inteira.
eu tive olhando e sei que é possivel fazer o programa com este raciocinio

Offline Ivan

  • Hobby
  • ****
  • Posts: 723
  • Sexo: Masculino
Re: Divisor feito com motor de passo
« Resposta #168 Online: 26 de Agosto de 2009, 11:53 »
Eu ainda não fucei nada sobre a distribuição do erro, mas conceitualmente entendo que uma forma grosseira seria dividir par2 por par1, e o resto do arredondamento é quociente na divisão por 1. Este número também é arredondado:

arredonda (1/((arredonda (par2/par1)) - (par2/par1)))

(perdoem a falta de rigor  ;D )

Se o "dente" atual for múltiplo deste número, acrescenta (ou subtrai, dependendo do sinal) um passo.

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderador
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Divisor feito com motor de passo
« Resposta #169 Online: 26 de Agosto de 2009, 13:22 »
Caro Ivan,

acabei de comprar um kit de desenvolvimento PIC c/ o 16F628, para começar a aprender a mexer com componentes de CNC, e motivado pelo que você já está mastigando, pretendo fazer o divisor como primeira aplicação.
Quero usar um ULN2803, usando 2 portas dele para cada alimentação do motor, e programar em PIC Basic (só fiz coisas em Basic e Pascal :( ) Pretendo usar somente meio-passo.

Muito bom que vc esta aprendendo a lidar com a eletrônica microprocessada. E eu quero aprender mais sobre mecânica...  :)

O programa foi feito em assembler, que é a minha linguagem preferida nesse tipo de aplicação. Dá pra fazer programas pequenos, eficientes e utilizar todo o poder que os microcontroladores oferecem. Só pra ter uma idéia, esse programa usa quase 65% da memória do PIC e faz várias contas (soma, divisão, comparação, multiplicação, subtração) todas com 16 bits de precisão. Acho que gastaria mais memória se usasse outra linguagem, ao menos sem um compilador otimizado.

Eu acredito que usar meio passo tem um lado ruim, apesar do dobro de resolução do motor, possui menor torque. Pois usa alternadamente uma ou duas fases energizadas. Nesse caso, eu prefiro o modo Full Step (duas fases energizadas). De qualquer modo, o Divi-PIC permite voce usar meio passo, wave drive, full step, passo/dir

Quero usar um ULN2803, usando 2 portas dele para cada alimentação do motor

Acho mais recomendável usar transistores discretos (de Junção ou MOSFET), pois são mais robustos. Voce pode trocar por outro mais parrudo se necessário. O ULN só suporta 500mA por porta, voce pode até ligar duas portas em paralelo, mas ainda prefiro os transistores.

Só pra ter uma idéia do erro em um exemplo prático nesta configuração que citou:
Engrenagem 127 dentes 17DP (de um torno Joinville de bancada)
Par1: 127
Par2: 16000 divisões da circunferência
Passos por dente: 125,98
(arredondado para 126, erro 0,0157 passo/dente)
Erro acumulado no último dente = 2 passos

engrenagem DP17, diâmetro primitivo ~ 190mm
circunferência no dp = 597mm
erro na circunferência do dp do último para o primeiro dente = : 7,5 centésimos de mm

Com meio-passo isso obviamente cai pela metade, mas num arranjo pior (ex. motor passo 7,5 graus e/ou redução de menor relação) acho que isso pode incomodar - eu pretendo tentar uma forma de distribuir o erro (quanta pretensão, ainda não sei nem ligar na tomada  ;D ).

Dá para implementar uma compensação de passo, já fiz isso numa máquina que eu montei.

Minha dúvida é se compensa fazer isso na mecânica, onde as coisas em tese são "mais precisas", mas parece que faz sentido ter um esquema de compensação de erro acumulado nas divisões "mais estranhas". Desse modo, é possível uma sistemática de distribuição de erros ao longo do movimento do motor. De modo a minimizar o erro acumulado ao final de uma volta.

Dá também para aumentar a precisão das contas no PIC, aí a coisa pode ir longe... Mas a precisão da mecânica é o limitante, se a relação de redução for elevada (passos por volta do motor x redução do sistema de engrenagens), o erro pode ser bem pequeno. Mas seria aceitável?

Outra coisa, não sei se considerou: ao iniciar o uso, a primeira posição não deve ser simplesmente a posição inicial. O pograminha deve voltar um (ou melhor, alguns) passo(s) e avançar um (alguns) e considerar este como zero - para zerar folgas da redução (e mesmo a histerese do motor para a carga aplicada).

A primeira divisão é a sempre de número 1 (1a. linha do display) e começa em 0 graus, com resolução de 1 grau (2a. linha do display). Requisitos iniciais sugeridos por nosso amigo Rubens....  :)

O Divi-PIC pode movimentar a placa nos dois sentidos (horário e anti-horário), mas não previ um esquema de compensação de folgas / backlash. Mas aceito sugestões do que seria necessário implementar, de qualquer modo, se a movimentação for sempre num sentido, seria desnecessária a compensação de folga, não?

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderador
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Divisor feito com motor de passo
« Resposta #170 Online: 26 de Agosto de 2009, 13:28 »
Olá Luciano,

pelo que vejo ja esta ficando bom e como sujestao para não tero erro maior que um passo teria que dividir o numero de passos usados para dar uma volta com dupla precisão ex:
para uma volta são 8400 passos dividido por 49 o resultado sera 171,4285 então o primeiro avanço sera 171 passos ja o segundo sera 342 e o terceiro tera pela soma mais um passo andando 514 ou seja soma-se o numero com a fraçao e só usa a parte inteira.
eu tive olhando e sei que é possivel fazer o programa com este raciocinio

Sim, é possível fazer algo mais preciso, mas o quão preciso?

Pois existem restrições de memória, de precisão de cálculos... Talvez até precise usar um PIC com mais memória, aritmética com precisão de 24 bits...

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderador
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Divisor feito com motor de passo
« Resposta #171 Online: 26 de Agosto de 2009, 13:42 »
Olá Jorge,

Fico contente vendo que acatou minha sugestão.  ;D

Com certeza, aceito e desejo boas sugestões (que lhe são frequentes)...  :)

Hum ? O que é que a tensão tem a ver com aquecimento ?

Se a tensão sobre o motor for a mínima necessária, a potência dissipada também o será (P=ExI) e também o aquecimento...

Os resistores são dispensáveis quando o motor é alimentado sob tensão nominal. Devem ser devidamente calculados quando este não for o caso.

Desrecomendo a utilização dos diodos em paralelo com os enrolamentos, é andar com o freio de mão puxado ...

Considerando que provavelmente os motores serão alimentados sob baixa tensão, os diodos poderiam ser dispensados na maioria dos casos, mas se forem utilizados, é muito preferível que sejam instalados em anti-paralelo com os transistores, o que os protege e provê recirculação para a fonte, reduzindo muito o efeito de freio dinâmico.

Tb acho. É preferível alimentar o motor com a tensão nominal, evita tb os resistores.

Interessante a idéia de ajustar a tensão de alimentação dos motores, sem precisar de resistores, .... Alguns trasnsistores já vem com diodos de proteção, até dá pra dispensar os externos.

Citar
Fururamente será implementada a possibilidade de salvar os parâmetros na memóriia EEPROM.

Acho que isto é essencial, ter que reconfigurar é um pé ...

Brevemente....


Citar
Se a divisão não for inteira, haverá um erro cumulativo, que será somado a cada divisão. Isso poderia ser melhorado com um programa de ajuste de curva (best fit). Mas não sei se vale a pena num sistema de precisão, acredito que seja melhor trabalhar no sistema de redução mecânica. Sugestões?

Acho que pra ficar perfeito, deveria ser implementado o algoritmo de compensação, de modo a possibilitar a utilização de quaisquer redutores.

Parabéns ! Tô gostando de ver a evolução do projeto !

Brevemente.... Grato pelo elogio.

Offline Ivan

  • Hobby
  • ****
  • Posts: 723
  • Sexo: Masculino
Re: Divisor feito com motor de passo
« Resposta #172 Online: 26 de Agosto de 2009, 14:02 »
Acho que gastaria mais memória se usasse outra linguagem, ao menos sem um compilador otimizado.
então uso o 16F648, que também tem na loja aqui perto ;D
Querer encarar neste momento o assembly ou mesmo um C significa um projeto longo demais, com forte risco de abandono ;D Compilar no Basic PIC Pro também é uma possibilidade - se entendi bem, li que é mais otimizado, não sei se o resultado muda muito.

Citar
Acho mais recomendável usar transistores discretos (de Junção ou MOSFET), pois são mais robustos. Voce pode trocar por outro mais parrudo se necessário. O ULN só suporta 500mA por porta, voce pode até ligar duas portas em paralelo, mas ainda prefiro os transistores.
já élvis, o CI tá aqui na mão... mas agradeço as orientações, nesta primeira brincadeira só quero que "funcione".
Citar
Minha dúvida é se compensa fazer isso na mecânica, onde as coisas em tese são "mais precisas", mas parece que faz sentido ter um esquema de compensação de erro acumulado nas divisões "mais estranhas". Desse modo, é possível uma sistemática de distribuição de erros ao longo do movimento do motor. De modo a minimizar o erro acumulado ao final de uma volta.
Sim, o que vc acha da idéia que coloquei post anterior? Faz sentido? No exemplo de 127d, removeria um passo nos dentes 63 e 126, mantendo o erro total sempre inferior a 1 passo e evitando o acúmulo (o erro no fim da volta passa a ser praticamente zero, ao invés de 2 passos).

Citar
Dá também para aumentar a precisão das contas no PIC, aí a coisa pode ir longe...
não entendi, onde aumentar a precisão aritmética em relação à forma que vc já está fazendo mudaria alguma coisa?

Citar
Mas a precisão da mecânica é o limitante, se a relação de redução for elevada (passos por volta do motor x redução do sistema de engrenagens), o erro pode ser bem pequeno. Mas seria aceitável?
da forma como vc exemplificou acima (200 passos e 1:80), acho que é suficiente para qualquer uso corrente. Mas se for adaptar em um divisor mais convencional, vai ser 1:40 ou 1:60 - e com passo cheio e 1:40 começa a aparecer (um décimo e meio de mm neste exemplo para 1:40 e 200 passos/volta).

Citar
O Divi-PIC pode movimentar a placa nos dois sentidos (horário e anti-horário), mas não previ um esquema de compensação de folgas / backlash. Mas aceito sugestões do que seria necessário implementar, de qualquer modo, se a movimentação for sempre num sentido, seria desnecessária a compensação de folga, não?
Isso eu acho imperativo, uma simples rotina que faça "dois pra lá, dois pra cá" (ah, meus tempos! ;D) antes de posicionar o primeiro dente. Para os subsequentes, como vai sempre pro mesmo lado, não precisa.

Outra coisa que acho importante é uma "trava eletrônica". Para minhas possibilidades atuais, uma trava que seja comandada e liberada pelo sistema é ambicioso demais, mas um sensor de proximidade, chave fim-de-curso etc. que seja acionado pela trava mecânica (indexador, apesar de não concordar com o termo). No mínimo, um botão de "libera" e um led.
A idéia é (se não for uma trava comandada eletronicamente) criar uma etapa em que a intervenção do usuário seja o mais obrigatória possível para evitar tanto que o motor tente mover com a trava acionada (babau pra peça, se ocorrer) quanto para evitar que a usinagem seja feita com o divisor destravado - o que move a peça (perda de precisão, vibração, chatter?), "deszera" as folgas e força a redução e o motor.
« Última modificação: 26 de Agosto de 2009, 16:41 por Ivan »

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderador
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Divisor feito com motor de passo
« Resposta #173 Online: 26 de Agosto de 2009, 19:32 »
Sim, o que vc acha da idéia que coloquei post anterior? Faz sentido? No exemplo de 127d, removeria um passo nos dentes 63 e 126, mantendo o erro total sempre inferior a 1 passo e evitando o acúmulo (o erro no fim da volta passa a ser praticamente zero, ao invés de 2 passos).

Me explique melhor qual a relção que voce está propondo, seria uma coroa com 127D e um sem fim de uma entrada? Teríamos uma redução de 127:1 nas engrenagens, com um motor de 400 passos/volta, e uma redução final de 50800 passos do motor / volta da placa. Com dois passos a menos por volta, localizados nos dentes 63 e 127, teremos "125 dentes" por volta e portanto, uma redução efetiva de 50000 passos por volta da placa!

Cada passo do motor corresponde a um deslocamento angular de 360/50000 =  0,0072 = 0,432 minutos, ou de um deslocamento de 0,0048 mm numa peça (engrenagem sendo fabricada) de 3 polegadas de diâmetro!

Tá de bom tamanho né?  ;D

Outra coisa que acho importante é uma "trava eletrônica". Para minhas possibilidades atuais, uma trava que seja comandada e liberada pelo sistema é ambicioso demais, mas um sensor de proximidade, chave fim-de-curso etc. que seja acionado pela trava mecânica (indexador, apesar de não concordar com o termo). No mínimo, um botão de "libera" e um led.
A idéia é (se não for uma trava comandada eletronicamente) criar uma etapa em que a intervenção do usuário seja o mais obrigatória possível para evitar tanto que o motor tente mover com a trava acionada (babau pra peça, se ocorrer) quanto para evitar que a usinagem seja feita com o divisor destravado - o que move a peça (perda de precisão, vibração, chatter?), "deszera" as folgas e força a redução e o motor.

Usinar com o divisor mecanicamente travado seria resposanbilidade do usuário. Porém, a parte elétrica do divisor pode ser inibida se a trava mecânica estiver acionada.

Acho que o usual (mais simples e barato) seria uma trava com acionamento manual (com um parafuso de aperto, por exemplo) e com intertravamento no circuito divisor. Assim, uma vez travada a placa, o divisor fica inibido eletricamente.

Andei pensando num sistema com uma coroa acionada por dois sem fins posicionados a 180 graus em relação a coroa (eixos paralelos), cada sem fim acoplado a um motor de passo. Desse modo, os dois motores giram de maneira sincronizada para mover a placa. Ao parar a placa, é comandado um aperto para zerar a folga (um dos motores gira em oposição), travando a coroa e a placa. Ivan, voce conseguiria dois sem fim e uma coroa para eu montar uma coisa dessas?

Offline Ivan

  • Hobby
  • ****
  • Posts: 723
  • Sexo: Masculino
Re: Divisor feito com motor de passo
« Resposta #174 Online: 26 de Agosto de 2009, 22:50 »
Me explique melhor qual a relção que voce está propondo, seria uma coroa com 127D e um sem fim de uma entrada? Teríamos uma redução de 127:1 nas engrenagens, com um motor de 400 passos/volta, e uma redução final de 50800 passos do motor / volta da placa. Com dois passos a menos por volta, localizados nos dentes 63 e 127, teremos "125 dentes" por volta e portanto, uma redução efetiva de 50000 passos por volta da placa!

Cada passo do motor corresponde a um deslocamento angular de 360/50000 =  0,0072 = 0,432 minutos, ou de um deslocamento de 0,0048 mm numa peça (engrenagem sendo fabricada) de 3 polegadas de diâmetro!

Gil, mencionei 2 coisas diferentes.

1 - Exemplifiquei a confecção de uma engrenagem de 127 dentes e diametral pitch 17 (DP é a contrapartida americana do sistema módulo), na montagem que vc citou como exemplo (motor 200 passos/volta, redução 80:1, passo cheio).
Neste caso, o erro acumulado da divisão número 127 para a divisão 1 (que é vizinha dela - mais fácil de enxergar como dente 127 para o dente 1) é de 2 passos, o que corresponde no diâmetro primitivo desta engrenagem a 7,5 centésimos de mm - que entendo como aceitável para a maioria das aplicações (talvez não para as mais exigentes).
Mas se for usar uma redução mais comum de menor relação (40:1), o erro fica acima do aceitável sem distribuição (1,5 décimo de mm). Ilustrando melhor, a engrenagem assim confeccionada tem o dente 127 "mais fino" do que o valor correto em 0,15mm - isto é alto para aplicações profissionais.
Ou seja, sem distribuição de erro creio que este divisor pode não atender a finalidades mais exigentes, especialmente considerando que um provável uso seria aproveitar a mecânica de um divisor convencional, com redução 40:1 ou 60:1.

2 - Um rascunho de idéia para distribuição de erro, que consiste conceitualmente desta conta boba:
p : período da correção
par1: o seu "parâmetro 1", ou número de divisões desejadas
par2: o seu "parâmetro 2", ou redução total do sistema, que é (passos/volta) x (relação da redução).

p=round (1/((par2/par1)-(round (par2/par1)))

No exemplo citado em 1 (confeccionar uma engrenagem 127D com o mesmo divisor que vc exemplificou, de redução total 16000: motor 200 passos/volta e redução 80:1), isto seria

p= round (1/(125,984 - round (125,984)))
p=round (1/(125,984 - 126))
p=round (1/-0.016)
p=round (-62.500)
p=-63

ao fazer cada avanço, confirma se o passo atual é múltiplo de p. Se for, "come" um passo para p<0 e acrescenta um passo para p>0.
Neste caso, comeria um passo na divisão no. 63 e 126 (o que chamei de dentes 63 e 126), completando a circunferência com os erros distribuídos, e nenhum dente com erro superior a 1 passo (ou seja, todos os erros menores que 3,25 centésimos medidos no diâmetro primitivo da engrenagem).

Uma outra vantagem é que dependendo da forma de usinar, pode ser mais interessante fazer várias voltas. Supunhetemos que vou fazer uma engrenagem na plaina, e não quero ter que ficar regulando avanço manualmente no carro superior para cada dente. Assim, ao começar a engrenagem, faço o avanço e vou dando um passe em cada dente. Ao concluir a volta inteira, faço novo avanço e começo outra volta. Com o erro distribuído desta forma, não há problema. Sem distribuição do erro, não posso entrar em uma volta subsequente. Verdade que dá pra voltar, mas é mais fácil se perder. :)
« Última modificação: 26 de Agosto de 2009, 23:21 por Ivan »

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderador
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Divisor feito com motor de passo
« Resposta #175 Online: 27 de Agosto de 2009, 06:07 »
Olá Ivan,

Eu dei uma viajada em sua pergunta.  :)

Mas aí vai o raciocínio, usando divisão inteira (com resto).

São 127 divisões, num divisor com redução 16000, então:
Par1=127
Par2=200x80=16000

Logo:
PD = 16000/127 = 125 + 125/127 passos por divisão

Na versão 1.1 do software (sem correção) o Divi-PIC geraria 127 divisões, cada uma com 125 passos do motor. Com erro acumulado de -125 passos por volta. Se aredondar para cima, são 127 divisões com 126 passos cada, gerando um erro acumulado de +2 passos por volta.

Escolhendo o menor erro, 2 passos devem ser descontados uniformemente numa volta (127 divisões).

127 / 2 = 63 + 1/2

Ou seja, nas divisões 63 e 126 é gerado menos um passo. Assim, o divisor deve gerar a seguinte sequência para o motor:

Divisão  |  Passos
------------------
   1-2       126
   2-3       126
    .             .
    .          126
    .             .
  63-64     125
    .             .
    .          126
    .             .
126-127    125
------------------------     
Total: 124 x 126 + 2 x 125 = 15874 passos

Com mais 126 passos temos uma volta completa.

Offline Ivan

  • Hobby
  • ****
  • Posts: 723
  • Sexo: Masculino
Re: Divisor feito com motor de passo
« Resposta #176 Online: 27 de Agosto de 2009, 07:59 »
Na versão 1.1 do software (sem correção) o Divi-PIC geraria 127 divisões, cada uma com 125 passos do motor. Com erro acumulado de -125 passos por volta.
Se entendi bem, a versão 1.1 faz um "trunc", e não um "round" ? (perdoe os termos) Se for isso, no caso 127d o erro acumulado é de quase um dente. Uma engrenagem assim quebra qualquer mecanismo ao operar.

Sobre os 2 sem-fim e a engrenagem, não tenho nada aqui, mas se vc quiser posso tentar arrumar. Mas considero uma solução ruim, por 2 motivos:
1 - Usar 2 motores é uma complexidade desnecessária, (na minha opinião) o mecanismo em elegância estaria muito aquém do código enxuto e otimizado que você está gerando.

2 - Conceitualmente, as engrenagens e o motor servem somente para posicionar. Submeter as engrenagens a esforços desnecessários, possibilidade de danos, desgaste etc. me parece "errado" - em última análise, a precisão do mecanismo é dependente mais da engrenagem e do sem-fim do que de qualquer outra coisa.

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderador
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re: Divisor feito com motor de passo
« Resposta #177 Online: 27 de Agosto de 2009, 08:49 »
Na versão 1.1 do software (sem correção) o Divi-PIC geraria 127 divisões, cada uma com 125 passos do motor. Com erro acumulado de -125 passos por volta.
Se entendi bem, a versão 1.1 faz um "trunc", e não um "round" ? (perdoe os termos) Se for isso, no caso 127d o erro acumulado é de quase um dente. Uma engrenagem assim quebra qualquer mecanismo ao operar.

É feito um truncamento, na verdade eu uso o quociente da divisão (inteira). Não é uma solução "limpa"...  :)

A idéia inicial era fazer algo bem simples, lembra da sugestão do Rubens? Apenas um motor e uma redução gerando exatamente 360 passos por volta.

Mas a melhoria para implementar a compensação é simples e recompensadora.

Sobre os 2 sem-fim e a engrenagem, não tenho nada aqui, mas se vc quiser posso tentar arrumar. Mas considero uma solução ruim, por 2 motivos:
1 - Usar 2 motores é uma complexidade desnecessária, (na minha opinião) o mecanismo em elegância estaria muito aquém do código enxuto e otimizado que você está gerando.

2 - Conceitualmente, as engrenagens e o motor servem somente para posicionar. Submeter as engrenagens a esforços desnecessários, possibilidade de danos, desgaste etc. me parece "errado" - em última análise, a precisão do mecanismo é dependente mais da engrenagem e do sem-fim do que de qualquer outra coisa.

Ok, então devo usar mesmo algum tipo de freio para não forçar o mecanismo divisor?

Offline Ivan

  • Hobby
  • ****
  • Posts: 723
  • Sexo: Masculino
Re: Divisor feito com motor de passo
« Resposta #178 Online: 27 de Agosto de 2009, 14:40 »
Gil,
entendo que o uso de uma trava é necessário sim, e não usaria a própria redução para fazer isto. Pode até ser praticável usar em algumas situações a redução segurando o eixo, como em um modo de avanço constante, para fresar rasgos curvos (mesa divisora) ou "tornear" na plaina, ambos de modo que as forças de corte fiquem contra as folgas. Mas para uso como um divisor propriamente dito, entendo que a trava adicional (indexador) é necessária. Quem sabe o Enoch dá uma opinião sobre isso.

Este é o meu rascunho de roteiro de aprendizado, espero em umas 2 ou 3 semanas ter isto funcionando... :)

gravar e rodar programas no pic - ok
compilar qq coisa em Pic Basic e rodar no pic - ok
acender leds em sequencia 1 a 1
acender leds em sequencia 2 a 2
acender leds em sequencia 2 - 1 - 2 - 1 (meio-passo) - horário
acender leds em sequencia meio-passo anti-horário
criar um contador n e avançar na sequencia de leds n vezes
criar um multiplicador m, em que cada n executa m passos
criar uma rotina para monitorar 2 botões, para avançar ou retroceder n, e executar avanço CW ou CCW
exibir n total e n atual no lcd
criar uma rotina para input de n (utilizar um 3o botao - ack)
criar uma constante r, simbolizando a redução, e m passa a ser r/n
funcionar isto no motor de passo com um ULN2803

verificar como fazer m=m+1 se resto r/n superior a 0,5 e
verificar como fazer a distribuição de erros (limitações arit 16 bits? multiplicar o divisor por 100 antes de dividir e depois dividir por 100? rotinas externas de FP?)

implementar trava para evitar funcionamento indexado
implementar rotina para zerar folgas primeiro passo ou sempre que mudar de sentido

possibilidades:
input de r e gravação na EEPROM
tensão de hold no motor para ajudar a manter a posição? (muda tudo)
modo de avanço constante

Offline marc0

  • CNCMASTER
  • ******
  • Posts: 2788
  • Sexo: Masculino
  • Não dirigimos o vento, podemos ajustar as velas.
    • Máquinas & Equipamentos
Re: Divisor feito com motor de passo
« Resposta #179 Online: 27 de Agosto de 2009, 16:21 »
Olá Ivan;
Acho que o indexador mecânico é imprescindível para trabalhos de usinagem, e mesmo muito bem travado sabemos o que pode acontecer se houver uma "chupada ou trepada" (no sentido mecânico é claro eh eh eh)
Abraços...

 

/** * */