Fala galera, tudo certo?

Estou com um servo motor um pouco diferente e preciso de um help pra controlá-lo pelo Arduino.

Como mostrado na imagem, ele tem um motor simples 12v e o potenciômetro ao lado, esse potenciômetro possui uma engrenagem que, conforme o motor gira, o potenciômetro gira também, assim pode-se saber em que posição o mesmo está. Ele é um motor de rotação normal, mas funciona somente de 0º à 180º.

Eu fiz um programa básico no Arduino para que pudesse ver os valores dele totalmente aberto (0º) e totalmente fechado (180º). Suas medidas foram 520 quando 0º e 215 quando 180º. Esses dois valores ficaram variando cerca de 2 valores, tanto pra mais quando pra menos.

Preciso saber o seguinte, como posso fazer o mapeamento dele? Seria algo tipo:

map(ValorPotenciometro, 215, 520, 0, 180); ?

E outra dúvida, ele vai receber sinal de um tacômetro, onde em 4000RPM ele iniciaria seu trabalho de abertura, e quando chegasse em 9000RPM deveria ficar totalmente aberto (Exemplo).
No caso, eu teria que fazer algum tipo de "segundo mapeamento" ou daria pra usar "if/else" ou "for". E conforme essa RPM fosse reduzindo, o motor giraria ao contrário para ir fechando novamente.

Algo como:


if (x >= 9000); // Motor 100% aberto, ou em 0º
if (x <= 4000); // Motor 0% aberto, ou em 180º

Só que de 4000 à 9000RPM ele tem que ir abrindo aos poucos conforme a RPM vai aumentando.


Desculpem minhas perguntas, mas estou começando agora com Arduino então tenho algumas dúvidas amadoras rs

Agradeço desde já.

Exibições: 3235

Responder esta

Respostas a este tópico

É bem parecido com esse, mas só tem potenciômetro e motor, sem componentes, esse servo da foto só saem 3 fios, no meu são 5, sendo 2 da alimentação do motor e 3 do potenciômetro.

Veja o circuito que existe dentro de um servomotor comum:

http://www.seattlerobotics.org/encoder/200009/S3003C.html

Esse meu não tem nada, somente o motor mesmo e o potenciômetro, ele tem uns 20 anos haha

Ele é bem antigo. Pra fazer ele funcionar vou ter que alimentar o potenciômetro com o Vcc do arduino e ver o valor que deu, no caso ele me deu o valor 215 em 0º e 520 em 180º, a partir daí terei que fazer funcionar. Conforme esse 215 vai se aproximando do 520, o motor vai girando de grau em grau até chegar no 520, onde estaria posicionado em 180º

Cara, é legal desenvolver isso e saber como tudo funciona no final das contas... mas será que vale a pena?

Penso nisso pois a um tempo atrás tentei fazer um ESC (pra bldc) e só quebrei a cabeça, no final das contas comprei um ESC xingling...

Como é um sistema antigo e obsoleto, não quero perder a originalidade do sistema, a ideia é somente alterar os valores de inicio e fim da abertura da válvula, no módulo que controla este servo não existe um meio de alterar, minha ideia é eliminar esse módulo original e utilizar somente o servo desse sistema. Mas toda ideia é bem vinda! :D

Pessoal, agora não sei mais o que fazer, pra teste, queria controlar o servo com um potenciômetro, como esses exemplos de servos comuns, como no caminho tem o driver não sei como fazer. Os valores do potenciômetro do servo consegui fazer a leitura de 0 a 1023, como tem o driver L298N no meio do caminho, não sei como utilizar a livraria do servo. Estou utilizando somente o IN1 e IN2 do driver. Como posso fazer esse controle? Outra coisa que descobri após uns testes, ele não trabalha de 0º à 180º, o giro é algo em torno de 45º, não fiz a medida correta mas é próximo a isso. Se eu conseguir controlar ele por um potenciômetro, creio que abrirá bem mais minha mente para fazer funcionar baseado na RPM. No caso de controlar ele pelo potenciômetro, eu teria que usar duas entradas analógicas? Uma pra cada potenciômetro? E caso a do servo estiver diferente do potenciômetro, ele gire para igualar ao valor. Não sei se minha lógica está correta, mas creio que seja algo assim.

Edmilson, pelo que entendi, você quer controlar o YPVS de uma yamaha (rd350?) com Arduino?

Se for isso, acho que você pode pegar a placa de um outro servo e implantar nesse seu motor dc.

Seria algo infinitamente mais fácil de construir. O Arduino iria ter um sensor de rpm, e dependendo da rpm ele define a posição do servo, ou se for controlar por potenciômetro, seria mesma coisa, o Arduino lê o potenciômetro e define a posição do servo. Atualmente como você quer controlar o motor dc e você tem um potenciômetro trabalhando como 'encoder', você tem que criar uma função que leia o potenciômetro de controle ou rpm, defina a posição do motor dc via ponte H com aceleração em pwm e outra função que leia o potenciômetro do motor e confira se é a mesma posição que você definiu no controle.

Exatamente isso, porém é uma DT200R. A rpm talvez eu faça o Arduino contar pelo próprio CDI, se não der certo farei um sensor IR ou algo parecido.

Essa programação que você disse que eu não sei por onde começar, mas a minha ideia é bem essa mesmo. Mas como tem o driver que utiliza dois pinos digitais no arduino para fazer o controle do motor, não sei como fazer tal programação.

Utilizando uma placa de outro servo seria uma boa ideia, pois ela é pequena, mas o motor é 12V, teria algum problema?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço