Jump to content

Recommended Posts

Posted

Boas

Foi-proposto realizar um trabalho na cadeira de Instrumentação e electrónica de medidas, mas estou um pouco confuso em relação ao trabalho que poderei realizar.

Ja pensei realizar um termómetro mas acho um pouco básico, também pensei realizar um sensor de nível de um poço que quando a agua chegasse ao fim uma bomba iria começar a encher....

Alguém me poderá ajudar com algumas ideias agradecia imenso.

Posted

Hmmm...

Tudo depende do nível que pretendes. Um termómetro é básico com precisão até meio grau, abaixo disso já não é assim tão básico, uma vez que tens de lidar com o ruído e erros de digitalização no A/D. E se formos falar de temperaturas nos mil e tal graus, não é de todo básico.

Um nível de poço ou está no nível ou não está. Não há mais básico que isso e o ligar uma bomba é mais automação que propriamente instrumentação e medidas.

Eu tive duas cadeiras de instrumentação e em ambas o foco estava em coisas distintas. Na primeira estava no condicionamento de sinal, cálculo e minimização do erro. Na segunda cadeira, embora tenha falado nisso, o professor focou muito mais a parte da filtragem do que propriamente a parte do condicionamento de sinal.

Tu estás em que nível?

Pretendes algo analógico ou algo com um microprocessador pelo meio?

Uma das coisas mais difíceis que tive de medir foi humidade em rolhas de cortiça. Eu não tive grande êxito (devido ao tempo de resposta do dispositivo), mas se conseguires fazer algo similar ao que fiz daria certamente para uma grande nota. Estamos a falar duma gama de Giga até kilo Ohms.

Outra coisa interessante de medir será posição, mais uma vez, aqui tens de entrar em conta com o que o professor pretende. Existem métodos analógicos de medir posição (com resistência normalmente), mas também métodos digitais (com encoders) que trazem novos problemas ao mundo da instrumentação. Se se mede posição, é óbvio que se deve medir aceleração e velocidade e lidar com os problemas nesses cálculos. 🙂

Medir o tamanho das ondas também é um desafio interessante. Aliás, muito interessante. 🙂

Outro desafio (embora talvez seja um pouco fora da instrumentação) é medir a potência consumida duma casa com tudo o resto... isto é, imagina uma casa com alimentação trifásica.

Arranjares um dispositivo que meça a corrente e tensão nas três fases e calcule a potência real, aparente e reactiva. Tens aqui vários problemas de instrumentação como as diferenças de fase devido à medição. Diferenças de fase devido a um transformador (se for esse o método que usares). Precisão na medição de corrente. Isto é interessante além de haver também bastante material pela internet sobre diferentes maneiras de o fazer (e duma application note da ATMEL).

Mas para dar melhores ideias, é melhor saber o que o professor pretende ao certo com o trabalho. Se pretende que vocês mostrem as capacidades ao nível da electrónica analógica, ou digital, ou filtragem de sinais em ambos os campos (analógico ou digital).

Tens ideia do que o professor pretende? Já agora, como é que o professor pretende provar os vossos resultados?

include <ai se te avio>

Mãe () {

}

  • 1 month later...
Posted

Boas após algum tempo conseguir encontrar um trabalho do tipo que o prof pretendia.

O trabalho consiste em programar um arduino com um sensor ultrasónico e um lcd 16x2 que ira medir a distancia dos objectos e apresentar no lcd.

o codigo que realizei e o seguinte.

#include<LiquidCrystal.h>
#include<Ultrasonic.h>
#define TRIGGER_PIN 9
#define ECHO_PIN 8

Ultrasonic Ultrasonic (TRIGGER_PIN,ECHO_PIN);

LiquidCrystal lcd(12,11,5,4,3,2);

void setup()
{
 Serial.begin(9600);
 lcd.begin(16,2);
 lcd.setCursor(0, 0);
 lcd.print("Distancia");
}
void loop()
{
 float cmMsec,inMsec;
 long microsec=Ultrasonic.timing();
 cmMsec = Ultrasonic.convert(microsec, Ultrasonic::CM);
 inMsec = Ultrasonic.convert(microsec, Ultrasonic::IN);
 Serial.print("MS:");
 Serial.print(microsec);
 Serial.print(",CM:");
 Serial.print(cmMsec);
 Serial.print(",IN:");
 Serial.print(inMsec);
 // escrever mensagem para o LCD.

 lcd.setCursor(0,1);
 lcd.print("CM:");
 lcd.print(cmMsec);
 delay(1000);
}

Após realizar o código, quando compilo aparecem muitos erros no compilador do arduino que passo a demonstrar.

D:\electro\arduino\arduino-1.0.4\libraries\HCSR04Ultrasonic\Ultrasonic.cpp: In constructor 'Ultrasonic::Ultrasonic(int, int)':

D:\electro\arduino\arduino-1.0.4\libraries\HCSR04Ultrasonic\Ultrasonic.cpp:43: error: 'OUTPUT' was not declared in this scope

D:\electro\arduino\arduino-1.0.4\libraries\HCSR04Ultrasonic\Ultrasonic.cpp:43: error: 'pinMode' was not declared in this scope

D:\electro\arduino\arduino-1.0.4\libraries\HCSR04Ultrasonic\Ultrasonic.cpp:44: error: 'INPUT' was not declared in this scope

D:\electro\arduino\arduino-1.0.4\libraries\HCSR04Ultrasonic\Ultrasonic.cpp: In member function 'long int Ultrasonic::timing()':

D:\electro\arduino\arduino-1.0.4\libraries\HCSR04Ultrasonic\Ultrasonic.cpp:53: error: 'LOW' was not declared in this scope

D:\electro\arduino\arduino-1.0.4\libraries\HCSR04Ultrasonic\Ultrasonic.cpp:53: error: 'digitalWrite' was not declared in this scope

D:\electro\arduino\arduino-1.0.4\libraries\HCSR04Ultrasonic\Ultrasonic.cpp:54: error: 'delayMicroseconds' was not declared in this scope

D:\electro\arduino\arduino-1.0.4\libraries\HCSR04Ultrasonic\Ultrasonic.cpp:55: error: 'HIGH' was not declared in this scope

D:\electro\arduino\arduino-1.0.4\libraries\HCSR04Ultrasonic\Ultrasonic.cpp:58: error: 'pulseIn' was not declared in this scope

D:\electro\arduino\arduino-1.0.4\libraries\HCSR04Ultrasonic\Ultrasonic.cpp: In member function 'bool Ultrasonic::sampleCreate(size_t, ...)':

D:\electro\arduino\arduino-1.0.4\libraries\HCSR04Ultrasonic\Ultrasonic.cpp:79: error: 'va_list' was not declared in this scope

D:\electro\arduino\arduino-1.0.4\libraries\HCSR04Ultrasonic\Ultrasonic.cpp:79: error: expected `;' before 'ap'

D:\electro\arduino\arduino-1.0.4\libraries\HCSR04Ultrasonic\Ultrasonic.cpp:84: error: 'ap' was not declared in this scope

D:\electro\arduino\arduino-1.0.4\libraries\HCSR04Ultrasonic\Ultrasonic.cpp:84: error: 'va_start' was not declared in this scope

D:\electro\arduino\arduino-1.0.4\libraries\HCSR04Ultrasonic\Ultrasonic.cpp:91: error: expected primary-expression before ')' token

D:\electro\arduino\arduino-1.0.4\libraries\HCSR04Ultrasonic\Ultrasonic.cpp:91: error: 'va_arg' was not declared in this scope

D:\electro\arduino\arduino-1.0.4\libraries\HCSR04Ultrasonic\Ultrasonic.cpp:107: error: 'va_end' was not declared in this scope

D:\electro\arduino\arduino-1.0.4\libraries\HCSR04Ultrasonic\Ultrasonic.cpp: In member function 'float Ultrasonic::unbiasedStdDev(float, size_t)':

D:\electro\arduino\arduino-1.0.4\libraries\HCSR04Ultrasonic\Ultrasonic.cpp:158: error: 'sqrt' was not declared in this scope

Alguém me pode ajudar

Será que o problema esta na biblioteca ultrasonic????

Posted

Viva...

Desculpa dizer isto... mas fazer download duma biblioteca que faz tudo e apresentar como um trabalho feito por ti é pedir por uma nota bem baixa.

O problema está na biblioteca... Onde é que fizeste download disso?

Tens aqui uma biblioteca que funciona.

http://playground.arduino.cc/Code/NewPing

Nota que o teu professor também tem acesso a isto... 😛

include <ai se te avio>

Mãe () {

}

Posted

boas

sera que alguém me poderia ajudar a encontrar uma biblioteca de arduino para o sensor SRF08. já instalei uma do site da arduino mas dá me um erro.

Posted

Boas já consegui resolver o problema o nome da biblioteca e que tinha - como esta( LeoColomb-Arduino-SRF08-c658788 ) foi só retirar os - e funcionou lindamente

Posted

boas tardes.

Alguém me pode ajudar, no seguinte código.

O código consiste em utilizar um sensor SRF08 e em seguida realizar um sequênciador de led's a medida que o objeto esta mais próximo.

No que concerne a distancia o codigo funciona o meu problema esta no leds que não consigo fazer funcionar.

Já realizei o seguinte código:

#include <Wire.h>
#include <SonarSRF08.h>
byte ledPin1=12;
byte ledPin2=11;
byte ledPin3=10;
byte potIn = 1;

SonarSRF08 MySonar;

#define CommandRegister 0x00
int New_Address = 248; // 0xF8
#define ResultRegister  0x02
#define GainRegister 0x1F // configuração ganho analogico
#define RangeLocation 0x18 //configuração gama local

int DEBUG = 1;
char unit = 'c'; // 'i' para polgadas, 'c' para centimetros, 'm' para micro-segundos
float sensorReading = 0;
int time = 70;
int value;


void setup()
{
 pinMode(ledPin1,OUTPUT);
 pinMode(ledPin2,OUTPUT);
 pinMode(ledPin3,OUTPUT);
 MySonar.connect();  
 MySonar.changeAddress(CommandRegister, New_Address, GainRegister, RangeLocation);
 if (DEBUG){
Serial.begin(9600);
Serial.flush();
 }
 New_Address += 4;

}

void loop()
{
 // conjunto de unidades, ganho e localização intervalo para a leitura da distancia
 MySonar.setUnit(CommandRegister, New_Address, unit, GainRegister, RangeLocation);
 // pause
 delay(time);
 // configurar o registo para a leitura
 MySonar.setRegister(New_Address, ResultRegister);
 // ler dados do registo
 sensorReading = MySonar.readData(New_Address, 2);
 value=analogRead(potIn);
Serial.println(value);
if(value>=0 && value <10)
digitalWrite(ledPin1,HIGH);

value=analogRead(potIn);
Serial.println(value);
if(value>=0 && value <5)
digitalWrite(ledPin2,HIGH);

value=analogRead(potIn);
Serial.println(value);
if(value>=0 && value <0)
digitalWrite(ledPin3,HIGH);
 // escrever distancia
 Serial.print("Distancia: ");
 Serial.print(sensorReading);
 Serial.print(" cm ");
 Serial.println();
 // pausa
 delay(1000);
}
Posted

Antes de mais... não achas um pouco estranho entregares um trabalho para uma cadeira de engenharia com bibliotecas tiradas da net?

Depois e ainda mais estranho, como é que um trabalho de instrumentacão e medidas consiste em ligar um sensor digital onde a única coisa que tens de fazer é comunicar com ele via I2C? O que é que estás realmente a aprender de instrumentacão e medidas com este trabalho? :| Para fazer sentido, tinhas de usar o sensor de ultrasons propriamente dito e calcular o tempo que demora até receberes o eco da onda que enviaste. Isto, da maneira que tens é ridículo e fosse eu o professor era merecedor dum zero. Vou supôr que o problema está no teu professor e não no que estás a fazer.

O código que postaste aqui está a ler algo... mas não é o sonar. Olha bem para as condicões que colocaste para ligar os leds e onde guardaste o valor do teu sonar...

include <ai se te avio>

Mãe () {

}

  • 2 weeks later...
Posted

o que e pretendido com este trabalho e calcular o erro relativo e absoluto.

o prof n se importa que seja um trabalho facil de executar o que ele vai valorizar e nos conseguirmos calcular os varios tipos de erros leccionados na cadeira.

Posted

Ok... mas percebeste porque é que os leds não estavam a funcionar? Estás a usar a variável value em vez da variável sensorReading.

Isto a mim confunde-me... se o objectivo do trabalho é medir o erro dum sensor, para quê estar a fazer um sequenciador de LEDs?

Em todo o caso, o meu maior problema é mesmo o uso da IDE do Arduino na Universidade... mas os professores devem saber um pouco mais que eu. Pelo menos, é o que eu espero para o teu bem. 🙂

include <ai se te avio>

Mãe () {

}

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.