15 de maio de 2021

Do bit Ao Byte

Embarcados, Linux e programação

Sensor de poeira e fumaça DSM501A

Sensor de poeira e fumaça DSM501A

Eis um daqueles sensores que chamam a atenção, principalmente para makers, que veem os “ossos” do dispositivo. Esse sensor de poeira e fumaça DSM501A é um dispositivo de fácil interação, com saída PWM, fácil de configurar e alimentar. Podemos interfaceá-lo diretamente com a MCU desejada, bastando seguir o wiring disposto mais adiante. Se está procurando por um sensor de gás, fumaça e álcool, veja o artigo do MQ-6.
Bora começar.

Características do sensor de poeira e fumaça DSM501A

O datasheet do produto pode ser visto nesse link. Ele acompanha um conector de 5 fios, cujas cores disponho na tabela de wiring, conforme sua utilização.

Ele pode ser utilizado em purificadores de ar, ares-condicionados, monitores de qualidade do ar, ventiladores, minas de extração de minério,  medição de índice de poeira lunar ou o que mais sua criatividade e limites permitirem.

Esse sensor quantifica a densidade de partículas, com alta precisão para partículas com diâmetro acima de 1 mícron. Ele possui um aquecedor interno, usado como sistema de captura de ar (ar quente sai, ar frio entra, assim é feita a troca).

Internamente ele possui um LED, um detector, um OPAMP, 2 drivers de circuito e um aquecedor. No datasheet se vê também as saídas para interconexão.

Sensor de poeira e fumaça DSM501A - wiring

Especificações técnicas

Direto à tabela AMR (Absolute Maximum Ratings), temos as seguintes indicações:

  • Alimentação de -0.3 à 7V
  • Temperatura de operação de -10 à 65 Celsius
  • Armazenamento de -20 à 80 Celsius.
  • Corrente de trabalho de 90mA

Claro que essa tabela indica o limite para que o sensor funcione gemendo, então são os limites não recomendados de operação, mas toleráveis.

A alimentação ideal é de 5V com tolerância de 0.5V pra mais ou menos.

A sensibilidade em 5V a 25 Celsius com partículas de diâmetro acima de 1 micro é de 15.000/283ml.

Pinout do sensor de poeira e fumaça DSM501A

O pinout independe da cor do fio, obviamente, mas as cores facilitam a identificar a ordem. Se por alguma razão os fios de seu sensor vierem em cores diferentes, siga a ordem da tabela.

Número do pinoNome do pinoDescrição
1Controle 1Saída de controle 1
2Vout 2saída de tensão 2
3VCCAlimentação (5V)
4Vout 1Saida de tensão 1
5GNDGND

Olhando de frente para o conector macho, com os trilhos de encaixe para cima, o pino 1 fica à esquerda. As cores deverão condizer com a ordem disposta na tabela.

Vout 2

Essa é a porta de saída normal. Essa porta detecta partículas que estão acima de 1 micrômetro.

Vout 1

A sensibilidade de Vout 1 é duas vezes e meia mais lento que Vout 2. Isso significa que o tamanho da partícula é 2.5 micrômetros.

Essa saída também é ajustável e você pode configurar o nível de tamanho da partícula.

Controle 1

Esse pino é o que ajusta a sensibilidade de Vout 1.

Para ajustar o controle, usamos (ou não) resistores conforme a tabela:

Valor do resistorDescrição
AbertoSensibilidade acima de 2.5 micrômetros
100Kmetade da sensibilidade
27KIgual a sensibilidade de Vout 2 (acima de 1 micrômetro

Aplicações

Como já citado, seu aquecedor interno gera uma corrente de ar pela troca. Com detecção de partículas acima de 1 micrômetro ele pode detectar fumaça de cigarro, poeira doméstica, pólen, esporos e mofo.

Instalação

O sensor DSM501A deve ser instalado verticalmente e também deve ser mantido longe de qualquer corrente artificial de ar. Deve-se ter atenção ao ambiente de instalação, afim de evitar contato com partículas adesivas como óleo e outros engordurantes. Logo, não é um item de cozinha, para avisar quando o arroz está “pronto”.

Manutenção

A manutenção depende do ambiente em que o dispositivo está sendo utilizado, da intensidade de partículas etc. Mas as lentes precisam ser limpas ao menos 1 vez a cada 6 meses para melhor eficiência. A fumaça de cigarro é uma das piores para contaminação do sensor.

Molhe um lado de um cotonete, limpe a lente e seque-a com o outro lado do cotonete.

Atenção aos trimpots

Tem dois trimpots bonitinhos, azuis com bolinhas amarelas. NÃO MEXA NOS TRIMPOTS. Eles vêm calibrados de fábrica e o próprio datasheet recomenda não mexer nos ajustes.

Wiring do sensor de poeira e fumaça DSM501A

A alimentação pode ser pega do 5V do Arduino, sem problemas. Então, conectamos o VCC e o GND diretamente ao Arduino. Coloque o pino 2 (Vout) ao pino 8 do Arduino.

Sketch para o DSM501A

Nesse sketch vamos utilizar uma função do Arduino pouco aplicada: a pulseIn. Não que seja um “recurso secreto”, mas ela cabe mais em situações como a desse sensor.

Esse sketch é sabe-se lá de quem, mas como não havia nada no datasheet para orientar a leitura, procurei por exemplos de uso. Minha “não” surpresa é que tudo o que encontrei saiu de um mesmo lugar, cujo autor original é desconhecido, por isso não serei injusto em dar mérito a alguém, mas também não tomarei para mim o mérito.

A partir desse sketch podemos variar tanto a leitura quanto criar o plano de ação da MCU.

#include <Arduino.h>
#include <string.h>

byte buff[2];
int pin = 8; //DSM501A input D8

unsigned long duration;
unsigned long starttime;
unsigned long endtime;

unsigned long sampletime_ms     = 30000;
unsigned long lowpulseoccupancy = 0;

float ratio                     = 0;
float concentration             = 0;

void setup(){
    Serial.begin(9600);
    pinMode(8, INPUT);
    starttime = millis();
}

void loop(){
    duration = pulseIn(pin, LOW);
    lowpulseoccupancy += duration;
    endtime = millis();
    if ((endtime - starttime) > sampletime_ms){
        ratio = (lowpulseoccupancy - endtime + starttime + sampletime_ms) / (sampletime_ms * 10.0); // Integer percentage 0=>100
        concentration = 1.1 * pow(ratio, 3) - 3.8 * pow(ratio, 2) + 520 * ratio + 0.62;             // using spec sheet curve
        Serial.print("lowpulseoccupancy:");
        Serial.print(lowpulseoccupancy);
        Serial.print("\n");
        Serial.print("ratio:");
        Serial.print("\n");
        Serial.print(ratio);
        Serial.print("DSM501A:");
        Serial.println(concentration);
        Serial.print(";\n\n");

        lowpulseoccupancy = 0;
        starttime = millis();
    }
}

Onde comprar o sensor DSM501A?

Esse sensor é mais um produto do nosso parceiro UsinaInfo. O link para o sensor de poeira e fumaça DSM501A é esse.

Espero que o artigo tenha ajudado a sanar dúvidas, caso esteja interessado no sensor. Também sugiro a compra com nosso parceiro, pois além de ser uma loja tradicional e confiável, provê material que torna possível a criação de artigos tutoriais como esse.

Até a próxima!

Revisão: Ricardo Amaral de Andrade