Tacometro com o Arduino, transformar PWM em Sine-Wave e ultilização motor de HD

Boa noite pessoal
"queria saber se tem como fazer um tacometro pelo arduino...
é que tenho um projeto de montar um toca-discos.. e queria usar o Arduino para controlar a velocidade (por hora).
dei uma busca, e achei só esse link: http://labdegaragem.com/profiles/blogs/projeto-tac-metro-com-arduino
esse sistema, mediria com precisão, a velocidade? E ele teria algum problema em "trocas constantes" de velocidade (de 32RPMs para 75RPMs)?
existe outros projetos alternativos que funcionariam melhor?"
também queria saber, como faz para ligar um motor de HD "desmontado"?
consegui alguns, e percebi que você pode desmonta-los até que fique a parte de baixo da carcaça e o motor, com seus contatos embaixo... daria pra liga-lo assim? eu tenho que ter aquele ESC?
tinha perguntado para o meu professor, se dava para transforma-lo em uma hélice para avião... segundo ele, não, por conta que ele não tem um bom torque... se eu rebobina-lo (fazer igual a um motor DC normal, recolocar os fios para sair mais de 2 fios) ele ganha mais torque?
também estou com outra duvida,
existe algum jeito d'eu fazer com que os pulsos mandados das saídas PWM se alternem para criar uma onda alternada (até onde entendi do meu professor, onda alternada é aquela que tem um pico no "+" e outro no "-", me confirmem se estou enganado...)

vlw!!!

Esse sistema funciona, tens apenas de adaptar os receptores de infravermelhos para o que pretendes fazer. Nota que a precisão aumenta com o número de posicões que os teus receptores lerem.

Queres controlar a velocidade por hora? Algum motivo para isso? 75RPM são 4500RPH. Porque falas em RPM se pretendes usar RPH?

O sensor mede qualquer velocidade... tens apenas de garantir que não é rápido demais para a frequência de leitura do Arduino.

Se rebobinar motores fosse simples, certamente que toda a gente o faria. Não te metas nisso e arranja um motor com torque suficiente para a aplicacão que queres.
Para controlares o motor precisas no mínimo dos mínimos dum transistor. Eu aconselho um circuito especifico para isso tipo um L298.

Consegues fazer uma onda com PWM, metes um condensador na saída e vês uma onda a variar com o tempo... mas a frequência é muito baixa e varia entre 0 e 5V.

bubulindo:
Esse sistema funciona, tens apenas de adaptar os receptores de infravermelhos para o que pretendes fazer. Nota que a precisão aumenta com o número de posicões que os teus receptores lerem.

resumindo quanto mais receptores, mais precisão eu tenho?

bubulindo:
Queres controlar a velocidade por hora? Algum motivo para isso? 75RPM são 4500RPH. Porque falas em RPM se pretendes usar RPH?

na verdade quero simular aquele sistema de velocidade dos toca-discos, pelo que eu lembro dos do que meu pai tinha, o sistema era medido em RPM mesmo...

bubulindo:
O sensor mede qualquer velocidade... tens apenas de garantir que não é rápido demais para a frequência de leitura do Arduino.

acho que isso não será problema... bem, só testando mesmo...

bubulindo:
Se rebobinar motores fosse simples, certamente que toda a gente o faria. Não te metas nisso e arranja um motor com torque suficiente para a aplicacão que queres.
Para controlares o motor precisas no mínimo dos mínimos dum transistor. Eu aconselho um circuito especifico para isso tipo um L298.

vi um vídeo de um cara rebobinando um motor de DVD... não me parece ser nada fácil... mas eu acho que consegui entender como faz, é só tirar aquela carcaça, as bobinas e o rotor, refazer as bobinas e puxar uns fios (agora não lembro... mas no vídeo ele explica como é a ligação no ESC) e voltar o resto das peças no lugar, certo?
ai... o pior é que deveria ter comprado isso quando eu comprei o Arduino.. não tem nenhum tipo de ponte H por aqui...

bubulindo:
Consegues fazer uma onda com PWM, metes um condensador na saída e vês uma onda a variar com o tempo... mas a frequência é muito baixa e varia entre 0 e 5V.

na verdade, eu tinha pesando que podia existir um sistema que invertesse a polaridade e depois eu taca ele num amplificador (ou um mini transformador)
bem.. vou tentar arrumar uma caixinha aqui e faço o que falou... obrigado!

Neste caso não é receptores, mas pontos de medida. Se vires o video ele apenas tem um receptor. O que dá precisão é o numero de palhetas que interrompem o feixe IR.
A precisão é depois um meio termo entre um valor alto o suficiente para te dar a precisão que pretendes e baixo o suficiente para não atrapalhar as outras funções do Arduino.

Ok... seja RPM...

A ponte H é mesmo necessário.

Algum motivo para quereres criar uma onda sinusóidal? Onde a vais usar?

quanto a parte do Tacometro, muito obrigado, irei monta-lo o mais rápido possível...:smiley:
quanto a onda, quando entrei no Técnico, puz na cabeça que vou montar um sintetizador analógico até me formar... bem... to começando a ver algo sobre.. tentando aprender algumas coisas mais básicas... agora eu fico pensando numa maneira de produzir uma onda senoidal de maneira fácil... (bem... pelo menos com o Arduino, já tenho o 1 equipamento comprado...kkk)

Ok... mas a onda não tem nada a ver com o projecto da mesa, certo?

Criar uma onda sinusóidal não é muito dificil... o problema é mesmo as frequências que consegues criar com ela. No caso do Arduino não são frequências loucas... embora possas criar algo na gama que é ouvível.

experimenta algo assim:

#include <math.h>

//f(t) = A.sin(2.pi.f.t) 

unsigned long tempo = 0;
unsigned char pwm = 0;
void loop(){
double freq = 0;
if (millis()-tempo >= 100){
   freq = 62.8 * pwm++;
   analogWrite(pino_PWM, freq);
   temp = millis();
}
}

mesa?
até segunda, eu consigo testar esse código... (tá difícil cortar o fone de ouvido do jeito certo para colocar na proto.. acho que vou comprar um falante mesmo...), mas, qual o problema quanto a essa frequência?

Não tem problema nenhum... mas usar sempre a mesma frequência é uma chatice. :stuck_out_tongue:

Lembrei-me agora que o código não está correcto. :blush:

#include <math.h>

//f(t) = A.sin(2.pi.f.t) 

unsigned long tempo = 0;
unsigned char pwm = 0, _pwm = 0;
int temp=0;
void loop(){
double freq = 0;
if (millis()-tempo >= 100){
   freq = 62.8 * pwm++;
   temp = 127 * sin(freq);//-127 a 127
   _pwm = (unsigned char) temp + 127; //0 a 256. 
   analogWrite(pino_PWM, _pwm);
   temp = millis();
}
}

Deve ser algo assim para obter o que pretendes. Não tenho osciloscópio para testar isto.

ah sim!
realmente... não da para fazer muita coisa com uma só frequência...

Uma placa com um DAC (não sei se o Due tem isso) resolve esse problema. E também tem a vantagem do processador funcionar, normalmente, a frequências maiores que 16MHz.

ok, obrigado amigo! :smiley: