A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Disciplina: Sistemas Embarcados

Apresentações semelhantes


Apresentação em tema: "Disciplina: Sistemas Embarcados"— Transcrição da apresentação:

1 Disciplina: Sistemas Embarcados
Aplicativo de Instrumentação – PROJETO 1 Temperatura/Umidade/Distância/Corrente Prof. Anderson Terroso Disciplina: Sistemas Embarcados Março/2017

2 Exemplo de Aplicativo de Instrumentação
Apresentação Botão Conectar Lista de Pareados Display 7segm - Temp Sensor de Proximidade Scrool - Umidade Distância em formato texto Umidade em formato texto Acelerômetro Gauge para Corrente Acelerômetro em formato texto Corrente em formato texto Botão para fechar o aplicativo

3 Organização da tela - arranjo
1º tab. horiz. 1row/2col 3º tab. horiz. 1row/4col 4º tab. horiz. 1row/1col 2º tab. horiz. 2row/2col 5º tab. horiz. 1row/2col 6º tab. horiz. 1row/2col 7º tab. horiz. 1row/1col

4 Organização da tela - arranjo
Label Botão Conectar ListPicker Label Canvas Canvas + Sprite Imag 1 2 3 4 Slider Label Label Botão Sair

5 Configuração de alguns itens

6 Arquivos de figuras e componentes não visíveis

7 Todas as imagens utilizadas neste aplicativo – números, gauge (duas opções), ponteiro, imagens do sensor de proximidade, reticulado, imagem do acelerômetro e ícone do aplicativo.

8 Programa completo de Instrumentação

9 Rotina principal – a cada interrupção do clock1 é lido o bluetooth.

10 A cada interrupção do clock1 novo dado é lido do bluetooth – foi feito um escalonamento por faixa de valores. Ex.: Se o ValorRecebidoBluetooth < 400, então corresponde a Temperatura, etc..

11 Sensor de Temperatura e Umidade – DHT22

12 DHT22 – Sensor de Temperatura e Umidade

13 Programa para ler temperatura/umidade
#include "DHT.h“ // adicionar a biblioteca DHT.h -> disponível no moodle #define DHTPIN 2 // pino 2 como entrada de DADOS #define DHTTYPE DHT22 // instanciação do componente DHT DHT dht(DHTPIN, DHTTYPE); // passagem dos parâmetros – pino do DADO e o tipo – DHT22 void setup() { Serial.begin(19200); // função para inicializar a comunicação serial a 19200bps dht.begin(); // função para inicializar o sensor de temp/umidade – DHT22 } void loop() delay(2000); // intervalo entre cada leitura float t = dht.readTemperature(); // dht.readTemperature() é a função para ler temp. Serial.println(t); // escreve o valor da temperatura na serial float h = dht.readHumidity(); // dht.readHumidity() é a função para ler umidade. Serial.println(h); // escreve o valor da umidade na serial

14 Exemplo para mostrar a temperatura em display de 7 segmentos
Uma PROCEDURE foi criada para Calcular a Temperatura. Duas variáveis (DezTemp e UnidTemp) armazenam o quociente e o resto da divisão da temperatura recebida por bluetooth. Para mostrar a figura correspondente ao digito usou o seguinte artificio: o nome da Picture é composto pela junção (join) da palavra display_ + valor da DezTemp + .png. OU palavra display_ + valor da UnidTemp + .png.

15 Repare que todas as figuras tem a mesma formação do nome: display_0
Repare que todas as figuras tem a mesma formação do nome: display_0.png - display_1.png OBS.: JOIN pode ser encontrado nos Blocos – Built-in  Text (segunda opção)

16 Uso do Slider para mostrar a Umidade ou Temperatura – o que muda o valor do ponto central é .ThumbPosition. Neste caso alterou-se outros parâmetros como a cor da parte esquerda ao ponto central. Além do texto (Text) que vem logo abaixo do Slider (valor numérico da Umidade ou Temp). Continua a Procedure......

17 Sensor de Proximidade – HC-SR04

18 HC-SR04 – Sensor de Proximidade

19 Sinais do HC-SR04

20 A velocidade do som no ar muda conforme a temperatura.
15°C a velocidade é de 340m/s 20°C a velocidade é de 343m/s 25°C a velocidade é de 346m/s Velocidade do som no ar em cm: cm/s Portanto, o tempo que o som leva para percorrer 1cm em µs pode ser calculado da seguinte forma: 1s = µs cm – µs 1 cm – X µs X = µs

21 tempo = pulseIN(echo, HIGH)
Logo, para percorrer 1cm o som leva 29.41µs. Tempo de ida e volta. Portanto para saber a distância do ultrassom até o anteparo precisa dividir esse tempo por 2. A função do arduino pulseIn determina o tempo que um sinal permanece em HIGH ou LOW. tempo = pulseIN(echo, HIGH) Neste caso quando o sinal no pino echo for para HIGH, a função começa a contar tempo (em µs). Quando o sinal do pino retornar a zero (LOW), tem-se o tempo da janela do pulso.

22 Leitura do Sensor de Proximidade
int trigger = 9; // pino TRIG do sensor ultrassônico int echo = 8; // pino ECHO do sensor ultrassônico float tempo; // para armazenar o tempo de ida e volta do sinal em microsegundos float distancia_cm; // para armazenar a distância em centímetros void setup() { Serial.begin(19200); // inicializa a serial para 19200bps pinMode(trigger,OUTPUT); // configura o pino trigger como saída (OUTPUT) – pulso de start. digitalWrite(trigger,LOW); // inicializa esse pino com valor “0” (LOW) pinMode(echo,INPUT); // configura o pino echo como entrada (janela de tempo). } void loop() digitalWrite(trigger, HIGH); // sobe o sinal de trigger - conforme mostrado no slide “Sinais do HC-SR04” delayMicroseconds(10); // aguarda 10us - conforme mostrado no slide “Sinais do HC-SR04” digitalWrite(trigger, LOW); // desce o sinal de trigger - conforme mostrado no slide “Sinais do HC-SR04” tempo = pulseIn(echo, HIGH); // função pulseIn – retorna o tempo que o sinal echo (pino) fica em alto – janela. distancia_cm = (tempo/29.15)/2; // cálculo da distância em cm – constante e o 2 explicado no slide anterior Serial.println(distancia_cm); // escreve na serial o valor da distância em cm. delayMicroseconds(200); // aguarda 200us para nova leitura.

23 Sensor de Distância - ultrassom
A PROCEDURE CalculaDistancia altera a imagem do Canvas (BackgroundImage) conforme o valor recebido. Como o sensor capta distâncias entre 2cm a 300cm, foi feito um escalonamento de imagens. Abaixo da imagem vai o valor da distância no campo TEXT (feito um JOIN com “cm”.

24 Sensor de Corrente

25 Sensor de Corrente ACS712 Tensão de alimentação = 5V
Tensão de saída varia com o chip. +/- 30A resolução 66mV/A +/- 20A resolução 100mV/A +/- 5A resolução 185mV/A Como o conversor A/D do ATMEGA2560 é 10 bits e a tensão de referência é de 5V, temos o seguinte problema: Resolução_mínima = 5V/1024 = 4,88mV Portanto, para correntes menores que 26,378mA o conversor A/D não consegue ler! 185mV – 1A 4,88mV – xA  x = 26,378mA

26 Esse programa lê o valor do conversor AD e envia via serial (0....1023)
float ValorTensao, ValorCorrente; int LeituraAD0; void setup() { Serial.begin(19200); } void loop() LeituraAD0 = analogRead(0); Serial.println(LeituraAD0); delay(500);

27 Esse programa lê o valor do conversor AD e envia via serial o valor da tensão e corrente
float ValorTensao, ValorCorrente; int LeituraAD0; void setup() { Serial.begin(19200); Serial1.begin(19200); } void loop() LeituraAD0 = analogRead(0); ValorTensao = (LeituraAD0 / ) * 5000; // Valor em mV .:. Vref = 5V ValorCorrente = ((ValorTensao-2500) / 100); // 100mV/A; 2500 simetria +/- Serial.println(ValorTensao); Serial1.print(ValorCorrente); delay(500);

28 Gauge (Canvas) e o ponteiro (ImageSprite)
O ponteiro é um ImageSprite – neste componente foi colocado como imagem um ponteiro. Note que a imagem do ponteiro tem uma metade incolor e a outra pintada de vermelho. Isto porque o centro da imagem será a referência. Para fazer esta imagem rotacionar precisa-se alterar o parâmetro Heading. Se Heading for 0 a imagem fica como mostra na figura. Se for 90, ela apontará para direita (90º), se for 180, ela apontará para cima. OBS.: ImageSprite só muda de posição quando colocado numa área de Canvas. Explicado no próximo slide

29 Applet JAVA para calcular a equação da reta
Ajuste dos parâmetros para o ponteiro (ImageSprite) se adequar ao Gauge (área de Canvas), conforme o valor da corrente elétrica. Para ajustar os parâmetros de corrente ao gauge e consequentemente ImageSprite (Heading), foi necessário encontrar uma equação da reta com os pontos máximos e mínimos. Note que o valor 0 do gauge corresponde a 60º e 220 a 300º. Como o Heading do ImageSprite gira 0º a 360º no sentido anti-horário, temos: – º 0 – º Heading = -1.1 X Applet JAVA para calcular a equação da reta

30 Acelerômetro do próprio celular

31 Dois tipos de sensores inerciais
Acelerômetros: capazes de aferir a aceleração linear na direção de um eixo referencial. Aceleração é a taxa de variação da velocidade no tempo, representada em m/s2 (metro por segundo ao quadrado) no Sistema Internacional; Giroscópios: capazes de medir a velocidade angular em torno de um eixo de referência. A velocidade angular é uma grandeza que representa a taxa de variação da posição angular no tempo, cuja unidade de medida no Sistema Internacional é o rad/s (radiano por segundo).

32 Funcionamento do acelerômetro
Aceleração  a placa central move-se  mudando as capacitâncias (a capacitância é inversamente proporcional à distância entre as placas).                 CA-CB=(-2x)/X02.

33 Simulação de um acelerômetro

34 Canvas (reticulado) + ImageSprite (imagem do acelerômetro)
Como no caso anterior, a área de Canvas foi utilizada para movimentar em “X” e “Y” uma imagem (ImageSprite). As coordenadas vem do acelerômetro do celular. O componente Acelerômetro tem uma função que quando um dos eixos sofre variação, esta função é executada (AccelerationChanged). Neste caso duas coisas são feitas: escrita no campo Text logo abaixo do Canvas o valor de X e Y. Outra coisa que é feita é a movimentação da figura (ImageSprite) na área de Canvas.

35 O acelerômetro varia da seguinte forma:
Ajuste das coordenadas em função da área delimitada pelo Canvas e posição das coordenadas do acelerômetro O acelerômetro varia da seguinte forma: +9, X ,99 Obs.: de pé +9,5, deitado na mesa com tela para cima é 0,0. Se continuar girando vai a -9,99. +9, Y ,99 Idem ao caso mostrado no slide 29 Obs.: Foi feito um ajuste da posição em função da área de Canvas – re-escalonamento.

36 Botão Fechar... Quando clicar em Fechar..., a aplicação é fechada. Caso deseje pode colocar aqui para fechar a conexão bluetooth. O correto é clicar antes em Desconectar e depois em Fechar...


Carregar ppt "Disciplina: Sistemas Embarcados"

Apresentações semelhantes


Anúncios Google