Descrição dos Subsistemas
Esta seção tem por objetivo apresentar as descrições de cada um dos subsistemas que compõe o sistema eletrônico do projeto em geral. Aqui são apresentadas as funções de cada subsistema, assim como as conexões feitas entre o hardware selecionado. Também são explicados de que forma esses subsistemas atuam para exercer suas funções
Subsistema de Monitoramento de Direção e Velocidade do Vento
Pode-se dividir este subsistema em duas partes separadas, a placa principal de medição de direção e o módulo medidor de velocidade, a conexão entre as duas se dará pela utilização de fios AWG e conectores MOLEXkk. O funcionamento das partes se dará pela seguinte forma:
Placa Principal: Medidor de Direção
Esta placa contém o conversor DC-DC, transceptor RS-485, circuito de medição de direção e o microcontrolador utilizado.
O conversor DC-DC recebe na entrada a tensão vinda da bateria e a converte para a tensão de alimentação de 5V. Todos os componentes do circuito são alimentados por essa tensão provida em sua saída.
A comunicação RS-485 através do MAX485 ocorre através das linhas diferenciais A e B, onde a diferença de tensão entre essas linhas determina os dados transmitidos. Quando a tensão em A é maior que em B, o transceptor envia um "1" lógico, e quando a tensão em B é maior que em A, envia um "0" lógico.
Tabela Verdade RS485: - A > B => Nível Alto(1); - A < B => Nível Baixo(0);
A direção da comunicação é controlada pelos pinos RE (Receiver Enable) e DE (Driver Enable). Quando RE está em nível baixo e DE está em nível alto, o transceptor está transmitindo dados. Quando RE está em nível baixo e DE está em nível baixo, o transceptor recebe dados. Esse controle permite que o MAX485 alterne entre os modos de transmissão e recepção, tornando a comunicação bidirecional.
Tabela Verdade MAX485
RE | DE | Função |
---|---|---|
0 | 1 | Transmitindo |
1 | 0 | Recebendo |
Dentro do circuito integrado do MAX485 o valor do pino **RE** é invertido automaticamente, ou seja, basta colocar os dois pinos ligados à mesma saída do microcontrolador e quando a saída do microcontrolador for:
- 0 => Recebendo;
- 1 => Transmitindo;
Para a medição da direção do vento se utilizará um imã acoplado ao eixo rotativo, este eixo estará no centro de um quadrado formado por 4 sensores de efeito hall lineares igualmente espaçados e montados na direção de cada uma das direções cardeais, Norte, Sul, Leste e Oeste. Estes sensores irão regular um sinal de tensão de acordo com a intensidade do campo magnético do imã percebido pelo sensor, ou seja, de acordo com a distância entre o sensor e o imã. Cada sensor estará conectado a um pino de entrada analógica do microcontrolador.
O microcontrolador irá:
-
Receber os sinais de tensão dos sensores de efeito hall, convertê-los para um valor digital, através do ADC, e realizar um cálculo de interpolação entre as duas maiores medições levando em conta suas respectivas direções.
-
Receber os pulsos vindos do sensor encoder de velocidade e, utilizando interrupções no pino de entrada, realizar o cálculo da velocide do vento.
Os valores calculados estarão à disposição do transmissor que irá requisitá-los à um intervalo fixo.
Os valores de velocidade de conversão do ADC do arduino nano não são um impedimento na aplicação do circuito, pois a taxa de aquisição desses valores será baixa em comparado à taxa de conversão do ADC de 9600 [amostras/s] .
Medição da Velocidade
Esta medição será feita por: uma roda perfurada acoplada ao eixo rotativo da velocidade do vento e um sensor encoder que entrega sinais de tensão à placa medidora de direção do vento.
Receberá a alimentação vinda da placa principal e enviará os pulsos de tensão de acordo com a passagem da roda perfurada.
A saída do encoder estará ligada a um pino de entrada digital do arduino. Este pino digital está equipado com a interrupção no valor do pino, assim sendo possível o cálculo da velocidade instantânea do vento.
Diagrama da Arquitetura
Abaixo está um diagrama que resume bem a arquitetura do sistema:
Esquemáticos
Para melhor análise do circuito foram feitos dois esquemáticos, discutidos a seguir:
Conexões Ideais
Este esquemático mostra a conexão virtual, ideal entre os componentes do circuito, sem levar em consideração os conectores e soquetes utilizados no circuito:
Conexões Reais
Para a montagem do circuito, seja utilizando placas perfurada ou PCBs a utilização de conectores e soquetes contribuem para a estrutura do sistema, como discutido na descrição de hardware, então montou-se um esquemático que mostra a ligação dos conectores que estarão ligados aos componentes em questão.
Subsistema da Estação Meteorológica
O subsistema de Estação Meteorológica é responsável pela leitura de grandezas físicas como a Temperatura, Umidade, Pressão e Radiação Solar, a fim de fornecer dados para análise climática. A Figura abaixo ilustra as conexões entre os componentes escolhidos para concepção do subsistema.
Bloco Microcontrolador
O Arduino Nano é utilizado como a unidade de controle central do subsistema, responsável por gerenciar a coleta de dados dos sensores e processar as informações recebidas.
Ele comunica-se com os sensores através de conexões analógicas, realizando leituras contínuas das grandezas físicas monitoradas, como temperatura, umidade, pressão e radiação UV. O Arduino também realiza o tratamento dos sinais, podendo, se necessário, enviar os dados para dados para o sistema de transmissão.
Bloco de Conexão Externa
O bloco da conexão externa indica quais conexões o subsistema terá com os demais subsistemas. Os pinos "BAT+" e "BAT-" indicam a entrada de tensão fornecida pelas baterias do sistema de alimentação. Já os pinos "A" e "B" são referentes aos pinos necessários à comunicação com o subsistema de transmissão.
Bloco do Conversor DC-DC
O conversor DC-DC recebe em suas entradas a tensão fornecida pelas baterias do sistema de alimentação, que é de 12V, através dos pinos "BAT+" e "BAT-". A tensão obtida na saída, de 5V, é referenciada através dos pinos "5V" e "GND". Essa tensão obtida na saída do Conversor, por sua vez, é utilizada para alimentação dos sensores, do transceptor e do Arduino.
Bloco de Sensoriamento
O sensor utilizado para este bloco é o BME280, que possui 4 conexões: Vin (alimentação de 3.3V, conforme o datasheet), GND (conectado ao 0V), SCL (conexão para ajuste de clock, ligada ao pino analógico do microcontrolador), e SDA (pino responsável pelo tratamento de dados, conectado a outro pino analógico do microcontrolador).
Bloco de Radiação
O Sensor de Radiação Ultravioleta (UV) detecta raios UV na faixa de 240-370 nm, com resposta rápida e controle analógico. Possui três conexões: VCC (alimentação de 5V, conectada ao pino VCC do Arduino), GND (conectada ao GND do Arduino), e SIG (sinal analógico de saída, que varia conforme a intensidade da radiação UV, conectado ao pino A2 do microcontrolador).
A intensidade da radiação UV medida pelo sensor varia conforme a luz incidente A seguir, é apresentada uma tabela de valores de radiação UV para diferentes níveis de intensidade, que pode ser utilizada para correlacionar os dados obtidos pelo sensor com as categorias de exposição à radiação UV.
Diagrama de Alto Nível
O diagrama a seguir exemplifica o funcionamento geral do subsistema
Subsistema de Monitoramento do Recipiente
O subsistema de Monitoramento do recipiente será responsável por monitorar, de forma constante, o nível de água presente no recipiente e a sua temperatura. Este subsistema também será responsável por notificar quando o recipiente estiver com determinada porcentagem da sua capacidade cheia ou completamente ocupado. A imagem a seguir mostra como se dão as conexões entre o hardware selecionado para concepção do subsistema.
Bloco de conexão externa
O bloco da conexão externa indica quais conexões o subsistema terá com os demais subsistemas. Os pinos "BAT+" e "BAT-" indicam a entrada de tensão fornecida pelas baterias do sistema de alimentação. Já os pinos "A" e "B" são referentes aos pinos necessários à comunicação com o subsistema de transmissão.
Bloco do Conversor DC-DC
O conversor DC-DC recebe em suas entradas a tensão fornecida pelas baterias do sistema de alimentação, que é de 12V, através dos pinos "BAT+" e "BAT-". A tensão obtida na saída, de 5V, é referenciada através dos pinos "5V" e "GND". Essa tensão obtida na saída do Conversor, por sua vez, é utilizada para alimentação dos sensores, do transceptor e do Arduino.
Bloco do Sensor Ultrassônico
O sensor ultrassônico, além dos pinos de alimentação "5V" e "GND", possui outros dois pinos, chamados "TRIG" e "ECHO", que são ligados a dois pinos digitais do Arduino. São estes dois pinos que controlarão a emissão e recepção da onda sonora, em intervalos constantes de tempo, definidos através de um rotina programada no microcontrolador do Arduino.
O tempo em que a onda leva para ser emitida pelo sensor, refletida pelo obstáculo, neste caso a água, e ser novamente captada pelo sensor é convertido, através de cálculos também especificamente programados no micrcontrolador, em uma distância. E essa distância por sua vez, pode ser convertida em unidades de volume, dependendo do formato do recipiente.
Bloco do Sensor de Temperatura
O sensor de temperatura DS18B20 possui um funcionamento bastante simples. Além dos pinos de alimentação "5V" e "GND", o sensor possui apenas mais um pino, referenciado no esquemático como pino "DQ", que é o ligado ao pino digital do Arduino, e é responsável pela transmissão dos dados captados pelo sensor. Como mencionado na descrição de hardware, o sensor já converte a leitura analógica de temperatura em dados digitais, que apenas precisam ser lidos pelo microcontrolador. A utilização do resistor de pull-up de 4,7 kΩ se dá pela razão do pino de aquisição de dados ser um coletor aberto de um transistor NPN na estrutura interna do sensor, que tem seu emissor ligado ao GND.
Bloco da Transcepção de Sinais
O CI MAX485 é o principal responsável por enviar os dados captados pelo subsistema de Monitoramento do recipiente para o subsistema de transmissão.
A comunicação RS-485 ocorre através das linhas diferenciais dos pinos A e B, onde a diferença de tensão entre essas linhas determina os dados transmitidos. Quando a tensão em A é maior que em B, o transceptor envia um "1" lógico, e quando a tensão em B é maior que em A, envia um "0" lógico.
A direção da comunicação é controlada pelos pinos RE (Receiver Enable) e DE (Driver Enable). Quando RE está em nível baixo e DE está em nível alto, o transceptor está transmitindo dados. Quando RE está em nível baixo e DE está em nível baixo, o transceptor recebe dados. E se RE estiver em nível alto e DE em nível baixo o tranceptor fica no estado de alta impedância.
Dentro da lógica interna do circuito integrado do MAX485, o valor do pino RE é invertido automaticamente. O pino RE pode ser curto-circuitado com o pino DE e ligados a mesma saída do micrcontrolador, pois assim se terá o seguinte funcionamento:
Saída do micrcontrolador:
- "0" => RE = "1" e DE = "0" => Recepção habilitada
- "1" => RE = "0" e DE = "1" => Transmissão habilitada
Os pinos RO (Receiver Output) e DI (Driver Input) do MAX485 precisam ser conectados aos pinos RX e TX do microcontrolador porque são responsáveis pela troca de dados entre o microcontrolador e o barramento RS-485.
Diagrama de Alto Nível
O diagrama a seguir exemplifica o funcionamento geral do subsistema
Subsistema de Controle da Comporta
O subsistema de Controle da comporta será responsável por identificar a ocorrência de chuvas e realizar a abertura da comporta do recipiente para coleta de água. O sistema deve ser capaz de fechar a comporta quando não estiver mais chuvendo ou quando determinado nível de água for atingido no recipiente. Também deve permitir que o usuário acione a abertura e o fechamento da comporta de forma remota caso o funcionamento autônomo apresente falhas.
Bloco de conexão externa
O bloco da conexão externa indica quais conexões o subsistema terá com os demais subsistemas. Os pinos "BAT+" e "BAT-" indicam a entrada de tensão fornecida pelas baterias do sistema de alimentação. Já os pinos "A" e "B" são referentes aos pinos necessários à comunicação com o subsistema de transmissão.
Bloco do Conversor DC-DC
O conversor DC-DC recebe em suas entradas a tensão fornecida pelas baterias do sistema de alimentação, que é de 12V, através dos pinos "BAT+" e "BAT-". A tensão obtida na saída, de 5V, é referenciada através dos pinos "5V" e "GND". Essa tensão obtida na saída do Conversor, por sua vez, é utilizada para alimentação dos sensores, do transceptor e do Arduino.
Bloco da Transcepção de Sinais
O CI MAX485 é o principal responsável por enviar os dados captados pelo subsistema de Monitoramento do recipiente para o subsistema de transmissão.
A comunicação RS-485 ocorre através das linhas diferenciais dos pinos A e B, onde a diferença de tensão entre essas linhas determina os dados transmitidos. Quando a tensão em A é maior que em B, o transceptor envia um "1" lógico, e quando a tensão em B é maior que em A, envia um "0" lógico.
A direção da comunicação é controlada pelos pinos RE (Receiver Enable) e DE (Driver Enable). Quando RE está em nível baixo e DE está em nível alto, o transceptor está transmitindo dados. Quando RE está em nível baixo e DE está em nível baixo, o transceptor recebe dados. E se RE estiver em nível alto e DE em nível baixo o tranceptor fica no estado de alta impedância.
Dentro da lógica interna do circuito integrado do MAX485, o valor do pino RE é invertido automaticamente. O pino RE pode ser curto-circuitado com o pino DE e ligados a mesma saída do micrcontrolador, pois assim se terá o seguinte funcionamento:
Saída do micrcontrolador:
- "0" => RE = "1" e DE = "0" => Recepção habilitada
- "1" => RE = "0" e DE = "1" => Transmissão habilitada
Os pinos RO (Receiver Output) e DI (Driver Input) do MAX485 precisam ser conectados aos pinos RX e TX do microcontrolador porque são responsáveis pela troca de dados entre o microcontrolador e o barramento RS-485.
Bloco do sensor de chuva
Como mencionado na Descrição de Hardware, para detecção da ocorrência de chuva será utilizado o sensor FC-37 em conjunto com o módulo de controle YL-83. No esquemático é mostrada apenas a conexão do módulo de controle com a placa arduino Nano, pois os pinos "S1" e "SGND" que parecem desconectados na verdade serão conectados ao sensor FC-37 para identificar a mudança de tensão na trilha resistiva do sensor.
Como também mencionado na descrição de Hardware, O sensor de chuva FC-37 é composto por uma placa de circuito impresso que possui uma série de trilhas de metal expostas. Quando a água flui sobre o sensor, esta forma uma ponte entre as trilhas, alterando a resistência elétrica do circuito e, consequentemente, a tensão observada entre elas. A variação da tensão na trilha resistiva segue a seguinte lógica:
Sem água => A resistência da trilha é alta, não havendo corrente elétrica, o que implica em uma alta tensão observada entre as extremidades da trilha.
Com água => A resistência da trilha se torna baixa, permitindo fluxo de corrente elétrica, o que implica em uma queda de tensão observada entre as extremidades da trilha
Essa variação de tensão será medida pelo módulo YL-83, que a identificará como presença de fluxo de água ou não. O mesmo é alimentado pela tensão de 5V, através dos pinos "5V" E "GND" e os pinos "D0" e "A0", são, respectivamente os pinos que carregam a informação em formato digital e analógico.
O módulo de controle YL-83 possui um potênciometro para ajustar a sensibilidade da variação de tensão observada no sensor FC-37, permitindo diferenciar, por exemplo, a presença de uma simples gota na trilha de um fluxo mais constante de água, como seria o caso de uma chuva.
Bloco Motor de passo
O funcionamento do motor de passo é basicamente o que irá ditar a abertura ou fechamento da comporta do recipiente. O controle do motor é feito a partir das conexões entre o Arduino, o módulo driver e o motor.
O motor apenas recebe as conexões "2A","1A","2B" e "1B", que são, respectivamente os terminais das bobinas "A" e "B" do motor. O controle do que chega até esses terminais é feito efetivamente entre o Arduino e o driver. Este é alimentado pela tensão de 5V, através dos pinos "5V" e "GND", porém também recebe a tensão de 12V, provida pelos terminais "BAT+" e "BAT-", que será utilizada para alimentação do motor propriamente dito.
Os pinos "STEP" e "DIR" controlam, respectivamente, o passo e a direção de rotação do motor. Cada pulso no pino "STEP" indica um passo na rotação do motor (um pulso = um passo). Enquanto a direção de rotação é definida pelo nível lógico do pino "DIR" ( "0" => giro em uma direção, "1" => giro na direção contrária). Logo esses pinos realizam as funções de:
- Controlar o fluxo de corrente nas bobinas do motor de acordo com os pulsos STEP.
- Alternar a direção da corrente nas bobinas com base no sinal DIR.
Os pinos "MS1", "MS2" e "MS3" definem o tamanho do "micro-passo" do motor, que pode ser de 1, 1/2, 1/4, 1/8 e 1/16, dependendo do nível lógico observado nesses pinos. A definição do micro-passo define a resolução dos níveis de passos de rotação do motor. Por exemplo, um motor de passo comum com 200 passos por rotação possui um passo completo de 1,8° (360° / 200 passos). Com micro-passo, esses passos podem ser subdivididos em frações menores, aumentando a precisão e suavidade na rotação.
Os níveis de micro-passo seguem o seguinte funcionamento a partir dos níveis lógicos dos pinos "MS1", "MS2" e "MS3":
MS1 | MS2 | MS3 | Modo de passo | Divisão |
---|---|---|---|---|
Baixo | Baixo | Baixo | Passo completo | 1 |
Alto | Baixo | Baixo | Meio Passo | 1/2 |
Baixo | Alto | Baixo | 1/4 de Passo | 1/4 |
Alto | Alto | Baixo | 1/8 de Passo | 1/8 |
Alto | Alto | Alto | 1/16 de Passo | 1/16 |
O pino "EN" ativa ou desativa a saída do motor, seguindo o seguinte funcionamento:
-
Baixo ("0"): Ativa as saídas do driver para controlar o motor. O driver começa a enviar corrente para as bobinas do motor e o motor pode ser movimentado.
-
Alto ("1"): Desativa as saídas, colocando-as em estado de alta impedância (desligadas). Neste estado, o motor não recebe corrente e as bobinas ficam "desenergizadas".
O pino "RST" é usado para restaurar o driver ao seu estado inicial, de acordo com o nível lógico aplicado:
-
Baixo ("0"): o pino RST reinicializa o driver. Nesse estado o driver restaura a posição inicial do motor e redefine o contador interno de passos e micro-passos.
-
Alto ("1"): o driver funciona normalmente
O pino "SLEP" é utilizado para colocar o driver em um estado de baixa energia, seguindo o seguinte funcionamento de acordo com seu nível lógico:
-
Baixo ("0"): Nesse estado o driver entra no modo de "dormir" (sleep), desligando a maioria dos circuitos internos do driver para economizar energia. Durante este estado as saídas para as bobinas do motor são desativadas e assim o motor é desenergizado e perde torque.
-
Alto ("1"): o driver sai do modo "sleep" e volta ao estado ativo
Na configuração utilizada no esquemático, os pinos "RST" e "SLEP" são curto-circuitados para que o modo de um interfira dirtamente no outro, isto é, se o driver for resetado, também deve entrar no modo de economia de energia.
Diagrama de Alto Nível
O diagrama a seguir exemplifica o funcionamento geral do subsistema
Subsistema de Transmissão
O subsistema de Transmissão será responsável por requisitar os dados obtidos dos outros subsistemas e enviá-los para a análise da equipe de Software pelo protocolo *Message Queuing Telemetry Transport* (MQTT). O subsistema também receberá comandos do usuário para o controle da comporta.
Conexões
A figura a seguir mostra como se dão as conexões entre o hardware selecionado para concepção do subsistema.
Conexão dos subsistemas e condicionamento do sinal
O bloco de conexão dos subsistemas tem como objetivo receber os dados enviados dos outros subsistemas pelas conexões de sinal "A" e "B", além de fazer a conexão dos terminais da bateria para os outros subsistemas.
As conexões de sinal são enviadas para o bloco de condicionamento do sinal que consiste no transceptor RS485, o MAX485, que recebe os sinais A e B de comunicação vindos dos outros subsistemas e os converte para comunicação serial, pinos conectados ao "TX" e "RX" da ESP32. O CI também têm uma entrada que identifica a direção da comunicação, que será ligada a um pino digital da ESP32.
Conexões da bateria e conversor DC-DC
O subsistema possui conexão direta com a bateria, representada pelos terminais "BAT+" e "BAT-". Os terminais estão ligados a um divisor resistivo para verificar a tensão de operação da bateria, o divisor foi projetado para transformar o a tensão da bateria de até 12V em até 3,3V visando o mínimo de consumo possível.
Os terminais "BAT+" e "BAT-" também estão conectados no conversor DC-DC, que é responsável por converter a tensão de 12V da entrada. A tensão obtida na saída, de 5V, é referenciada através dos pinos "VCC" e "GND". Essa tensão obtida na saída do conversor é utilizada para alimentação do transceptor e da ESP32.
Microcontrolador
O microcontrolador ESP32 irá controlar a requisição de dados dos outros subsistemas pelo pino "RE_DE" e irá receber os dados do transceptor por meio do protocolo de comunicação UART. Os dados recebidos serão enviados por MQTT.
Ademais, a ESP32 deve ler a tensão da bateria, definida pelo pino "V_BAT", e converter para um sinal digital que será enviado com os demais dados obtidos. Para conversão será utilizado o *Analog to Digital Converter* (ADC), que converte sinais analógicos em digitais.
Comunicação
A figura a seguir representa um diagrama que resume como é realizada a comunicação entre cada bloco do subsistema e os seus respectivos barramentos de alimentação.
Protocolo RS485
O protocolo RS485 será utilizado para realizar a comunicação interna entre os subsistemas. O RS485 utiliza um par diferencial para transmitir dados, suportando comunicação multiponto de até 32 dispositivos no mesmo barramento, com distâncias que podem chegar a 1200 metros, dependendo da taxa de transmissão. O protocolo opera em modo half-duplex, onde os dispositivos se alternam para transmitir e receber dados, o controle da comunicação é feita pelo pino "RE_DE" do transceptor.
Protocolo UART
O protocolo UART (Universal Asynchronous Receiver/Transmitter) será utilizado para a comunicação entre o transceptor e o microcontrolador. O protocolo opera de forma assíncrona, ou seja, não necessita de um sinal de clock compartilhado entre os dispositivos, utilizando apenas linhas de transmissão (TX) e recepção (RX) para a troca de dados.
Protocolo MQTT
O protocolo MQTT será utilizado para a comunicação remota entre o sistema e o usuário. O MQTT é um protocolo de comunicação assíncrono que utiliza o modelo publish/subscribe para trocar mensagens entre dispositivos. O protocolo funciona pro meio de dois componentes principais, o broker e os clientes. O broker é o intermediário central que recebe mensagens de clientes publishers e as entrega a clientes subscribers interessados, o broker gerencia tópicos e garante a entrega das mensagens. Os clientes podem ser publishers (quem envia mensagens) ou subscribers (quem recebe mensagens), ou ambos, eles se conectam ao broker e interagem com ele através de tópicos.
Versionamento
Versão | Data | Modificação | Autor |
---|---|---|---|
1.0 | 11/11/2024 | Documento inicial criado. | Matheus Félix |
1.1 | 11/11/2024 | Inclusão do controle de versões. | Matheus Félix |
1.2 | 23/11/2024 | Inclusão da descrição do subsistema de monitoramento do vento. | Pedro Zago |
1.3 | 23/11/2024 | Inclusão da descrição do subsistema de transmissão. | Tiago Caixeta |
1.4 | 23/11/2024 | Inclusão da descrição do subsistema da estação meteorológica. | Pablo Santos |
1.5 | 23/11/2024 | Inclusão da descrição do subsistema de monitoramento do recipiente. | Matheus Félix |
1.6 | 23/11/2024 | Inclusão da descrição do subsistema de controle da comporta. | Matheus Félix |
1.7 | 24/11/2024 | Revisão do arquivo. | Matheus Félix |
1.8 | 25/11/2024 | Ajustes finais do arquivo. | Matheus Félix |
1.9 | 04/12/2024 | Ajustes texto. | Pablo Santos |