Esta é uma aplicação do Arduino em pesquisa acadêmica. Trata-se da identificação paramétrica de um sistema eletromecânico em malha aberta, um motor acoplado a um tacogerador, cuja variável de interesse é a velocidade do sistema.
Os dois motores DC, um ativo funcionando como motor e outro passivo funcionando como tacogerador, são acoplados elasticamente por um sistema de polias e correia. O papel do Arduino nesta etapa do projeto de pesquisa é de impostar um sinal PRBS (pseudo-random binary signal- sinal binário pseudo-randômico), ler a tensão de saída condicionada do sistema e enviar ambos os sinais via porta serial para o PC a cada período de aquisição.
O circuito de acionamento e condicionamento dos sinais de entrada e saída para o Arduino é ilustrado abaixo.
Para garantir a aquisição de dados dentro do período projetado, foi utilizada a biblioteca TimerOne, gerando a interrupção a cada período de aquisição. Segue o código abaixo.
/*
Programa para aquisição de dados de dois canais para o MTG - Sistema Motor Tacogerador
*/
#include "TimerOne.h"
int motor = 0;
int taco = 0;
int inPin = 0; // selecione o pino de entrada (sinal TACO)
int outPin = 9; // selecione o pino de saída (sinal MOTOR)
int i = 0; // inicializa o valor do sinal de saída
int ts = 20; // período de aquisição em MILISEGUNDOSint tmin = 500; // tempo mínimo para atraso
int tmax = 2000; // tempo máximo para atrasoint atraso1 = 0; // atrasos
int atraso2 = 0;int vmin = 2; // tensão mínima
int vmax = 3; // tensão máximavoid setup()
{
Serial.begin(9600); // inicializa a porta serial
pinMode(outPin, OUTPUT); // declara o pino outpin como saída
Timer1.initialize(ts*1000); // inicializa timer1, e seta o período aquisição
Timer1.attachInterrupt(callback); // chama a interrupção a cada tempo de aquisição
}
// ________________________________________________________// Interrupção de aquisição
void callback()
{
taco = analogRead(inPin); // lê a entrada analógica (sinal TACO)
Serial.print(motor); // escreve na serial o valor do sinal MOTOR
Serial.print(","); //
Serial.println(taco); // escreve na serial o valor do sinal TACO
}
// ________________________________________________________
void loop()
{motor = int((1024/5)*vmin); // calcula o valor de vmin
Timer1.pwm(outPin, motor); // joga valor para a saída
atraso1 = random(tmin,tmax); // atraso 1
delay(atraso1);
motor = int((1024/5)*vmax); // calcula o valor de vmax
Timer1.pwm(outPin, motor); // joga valor para a saída
atraso2 = random(tmin,tmax); // atraso 2
delay(atraso2);
}
A próxima etapa do projeto é fazer o algoritmo de identificação rodar no Arduino. Aguardem novos resultados.
Comentar
Como vc faz a conexão para o matlab receber os dados do arduino?
Achei o vídeo relacionado com o tópico, conforme comentado abaixo [Identificação do Sistema MTG - Arduino e MatLab]: http://www.youtube.com/watch?v=MMnsUW20Ixg
Esta página original antes da possível correção:
Olá. O link para o vídeo [Documentário Édipo Rei] http://www.youtube.com/watch?v=xxNdcAVk_jc neste post(*) esta correto?
(*) http://labdegaragem.com/profiles/blogs/identifica-o-de-sistema-elet...
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!
Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)