Escolar Documentos
Profissional Documentos
Cultura Documentos
Protocolos de Comunicação
Sensores Digitais
Muitos sensores são considerados do tipo digitais não porque possuem
dois distintos estados (0/1), mas porque utilizam as portas da placa de
prototipagem eletrônica para comunicação entre ambos.
Alguns protocolos de comunicação que o Arduino suporta são: interface
serial, One-Wire, SPI e I2C.
One-Wire
SPI
I2C
Exemplo da aula passada
#include <FreqCount.h>
/*Incluir biblioteca FreqCount-1.3.0.zip
no Arduino IDE*/
// pino 5 é o de entrada na biblioteca FreqCount
int valorrpm = 0;
int tempodeciclo = 200; //em milissegundos
int numeroressaltos = 4;
void setup() {
Serial.begin(57600);
FreqCount.begin(tempodeciclo);
}
void loop() {
if (FreqCount.available()) {
unsigned long numeropulsos = FreqCount.read();
valorrpm = (60*numeropulsos*1000)/(tempodeciclo*numeroressaltos);
Serial.print("Rpm: ");
Serial.println(valorrpm);
}
}
Exemplo de código 1
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 10
void printValues() {
Serial.print("Temperature = ");
Serial.print(bme.readTemperature());
Serial.println(" *C");
Serial.print("Pressure = ");
Serial.print(bme.readPressure() / 100.0F);
Serial.println(" hPa");
Serial.print("Humidity = ");
Serial.print(bme.readHumidity());
Serial.println(" %");
Serial.println();
}
Exemplo de código 2
#include <Ultrasonic.h>
#define TRIGGER_PIN 12
#define ECHO_PIN 13
void setup()
{
Serial.begin(9600);
}
void loop()
{
float cmMsec, inMsec; Tensão de Alimentação: 5VDC
long microsec = ultrasonic.timing(); Corrente quiescente: < 2mA
Corrente em funcionamento: 15mA
cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM); Ângulo de medida: < 15°
inMsec = ultrasonic.convert(microsec, Ultrasonic::IN); Distância de detecção: de 2cm a 400cm
Serial.print("MS: "); Resolução: 3mm
Serial.print(microsec);
Serial.print(", CM: ");
Serial.print(cmMsec);
Serial.print(", IN: ");
Serial.println(inMsec);
delay(1000);
}
Exemplo de código 3
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 rtc;
void setup () {
Serial.begin(57600);
#ifdef AVR
Wire.begin();
#else
Wire1.begin(); // Shield I2C pins connect to alt I2C bus on Arduino Due
#endif
rtc.begin();
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// This line sets the RTC with an explicit date & time, for example to set
// January 21, 2014 at 3am you would call:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
}
Exemplo de código 3
void loop () {
DateTime now = rtc.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
Serial.println();
delay(3000);
}
Datalogger e Arduino
Depende do
modelo do
módulo
Datalogger e Arduino
#include <SPI.h>
#include <SD.h>
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.print("Initializing SD card...");
// open the file. note that only one file can be open at a time,
// so you have to close this one before opening another.
File dataFile = SD.open("datalog.txt", FILE_WRITE);
+
Datalogger de RPM #include <SPI.h>
#include <SD.h>
+
Serial.println("Card failed, or not present");
void setup() { // don't do anything more:
Serial.begin(57600); return;
}
FreqCount.begin(tempodeciclo); Serial.println("card initialized.");
}
} void loop() {
// make a string for assembling the data to log:
String dataString = "";
void loop() {
if (FreqCount.available()) { // read three sensors and append to the string:
for (int analogPin = 0; analogPin < 3; analogPin++) {
unsigned long numeropulsos = FreqCount.read(); int sensor = analogRead(analogPin);
dataString += String(sensor);
valorrpm = (60*numeropulsos*1000)/(tempodeciclo*numeroressaltos); if (analogPin < 2) {
Serial.print("Rpm: "); dataString += ",";
}
Serial.println(valorrpm); }
}
// open the file. note that only one file can be open at a time,
} // so you have to close this one before opening another.
File dataFile = SD.open("datalog.txt", FILE_WRITE);
+
Datalogger de RPM com horário
Código em anexo!
Múltiplos Sensores Digitais
É possível compartilhar portas quando há sensores que utilizam mesmo
protocolo (SPI ou I2C).
Para tanto, é necessário que se façam ajustes em software e conexões
físicas.
Exercício
Atividades no Laboratório de montagem e testes do Datalogger de RPM
com horário.
Bibliografia
Bibliografia Básica:
ALVES, José Luiz Loureiro. Instrumentação, controle e automação de
processos. 2.ed. Rio deJaneiro: LTC, 2010.
BALBINOT, Alexandre; BRUSAMARELLO, Valner João. Instrumentação e
fundamentos de medidas. 2.ed. São Paulo: LTC , 2010. v.1
FIALHO, Arivelto Bustamante. Instrumentação Industrial: conceitos,
aplicações e análises. 6. ed. São Paulo: Érica, 2010.
Bibliografia Complementar:
ALBERTAZZI, Armando; SOUZA, André Roberto de. Fundamentos de
metrologia científica e industrial. Barueri: Manole, 2008.
BEGA, Egídio Alberto (org.). Instrumentação industrial. 2.ed. Rio de Janeiro:
Interciência, 2006.
BOLTON, Willian. Mecatrônica: uma abordagem multidisciplinar. 4. ed. Porto
Alegre: Bookman, 2010.
LIRA, Francisco Adval de. Metrologia na indústria. 7.ed. São Paulo: Érica,
2010.
SOISSON, Harold E. Instrumentação industrial. 2.ed. São Paulo: Hemus.
1991.