Você está na página 1de 48

SISTEMA DE CONTROLO PARA

UM AMOSTRADOR DE EDNA
SUBAQUÁTICO

Miguel Pinto de Magalhães Faro

Departamento de Engenharia Eletrotécnica


Instituto Superior de Engenharia do Porto
19 de setembro de 2022
Candidato: Miguel Pinto de Magalhães Faro, nº 1180507, 1180507@isep.ipp.pt
Orientação científica: Guilherme Amaral Silva, gasilva@inesctec.pt

Empresa: INESCTEC

Orientador: Alfredo Oliveira Martins, aom@isep.ipp.pt

Departamento de Engenharia Eletrotécnica


Instituto Superior de Engenharia do Porto
19 de setembro de 2022
Agradecimentos

Gostaria de agradecer ao meu orientador, o Professor Guilherme Silva, que durante todo o
projeto me apoiou e ajudou em tudo o que precisei e que teve sempre disponibilidade para
atender a todas as minhas dúvidas e problemas, ajudando-me até estes ficarem
completamente resolvidos, elevando este projeto a um nível que nunca teria conseguido
sozinho. O apoio do Professor Guilherme foi também essencial na transmissão de novos
conhecimentos e em me manter incentivado ao longo de todo o trabalho desenvolvido.
Agradeço também ao Professor Alfredo Martins por me dar a oportunidade de fazer parte
da equipa excelente e estimulante do Centro de Robótica e Sistemas Autónomos (CRAS), e
especificamente à possibilidade de colaborar no projeto científico de desenvolvimento do
Biosampler com implementação de novas tecnologias promissoras para a observação do
oceano e sistema aquáticos em geral, que foi desde se sempre uma área que me suscitou
muito interesse e curiosidade. À minha família agradeço também por me terem
proporcionado este percurso académico e sempre apoiado os meus projetos e objetivos.
Todo o trabalho realizado neste projeto de estágio resultou também da dedicação e trabalho
investido durante os 3 anos da Licenciatura em Engenharia Eletrotécnica e de
Computadores (LEEC) do Instituto Superior de Engenharia do Porto (ISEP).

Este trabalho foi apoiado pelo projeto CONNECT2OCEANS financiado pela Fundação da
Ciência e Tecnologia com a referência (PTDC/CTA-AMB/4946/2020)

www.fct.pt
Resumo

O trabalho de estágio realizado está integrado num projeto que visa o desenvolvimento de
um Biosampler para a recolha de amostras de DNA ambiental (eDNA) em ecossistemas
aquáticos. Este sistema tem a capacidade de, autonomamente, recolher amostras de água,
concentrar o material biológico e preservá-lo para posterior análise do eDNA utilizando
tecnologias de nova geração de sequenciação. Este projeto está a ser desenvolvido pelo
Instituto de Engenharia de Sistemas e Computadores, Tecnologia e Ciência (INESC TEC),
em colaboração com o Centro Interdisciplinar de Investigação Marina e Ambiental
(CIIMAR) e o Instituto Norueguês de Investigação de Água (NIVA). O trabalho
apresentado foi desenvolvido no Centro de Robótica e Sistemas Autónomos (CRAS)
localizado no campus do ISEP.
As atividades desenvolvidas durante o projeto de estágio incidiram nos desenvolvimentos
firmware e hardware (PCB) necessários para comandar todos os componentes do
Biosampler, tais como inúmeras válvulas, bombas e motores, assim como a leitura de
sensores auxiliares ao processo como sensores de fluxo e de pressão. O código foi
desenvolvido recorrendo à linguagem C e à plataforma STM32 CUBE IDE. Neste
relatório está documentado todo o processo de aprendizagem, de experimentação e
validação utilizando a plataforma STM32 CUBE IDE e o hardware necessário.
No final foi montada uma versão miniaturizada do sistema, de forma a validar e testar os
componentes e software desenvolvido ao longo do estágio.

Palavras-Chave

Firmware, hardware, EDNA, Linguagem C, STM32 CUBE IDE, eDNA, Biosampler,


CIIMAR, INESC TEC, CRAS, ISEP, PCB, NIVA
Abstract
This internship is part of a project that aims to develop a Biosampler for the collection of
samples of environmental DNA (eDNA) in aquatic ecosystems. This system can
autonomously collect water samples, concentrate the biological material and preserve it for
later eDNA analysis using next-generation sequencing technologies. This project is being
developed by the Institute for Systems and Computer Engineering, Technology and
Science (INESC TEC), in collaboration with the Interdisciplinary Center for Marine and
Environmental Research (CIIMAR) and the Norwegian Institute for Water Research
(NIVA). The work presented was developed at the Center for Robotics and Autonomous
Systems (CRAS) located on the ISEP campus.

The activities developed during the internship project focused on the firmware and
hardware developments (PCB) necessary to control all the components of the Biosampler,
such as numerous valves, pumps and motors, as well as the reading of auxiliary sensors to
the process such as flow and flow sensors. pressure. The code was developed using the C
language and the STM32 CUBE IDE platform. This report documents the entire learning,
experimentation and validation process using the STM32 CUBE IDE platform and the
necessary hardware.

At the end, a miniaturized version of the system was assembled, in order to validate and
test the components and software developed during the internship.

Keywords

Firmware, hardware, EDNA, C Language, STM32 CUBE IDE, EEDNA, Biosampler,


CIIMAR, INESC TEC, CRAS, ISEP, PCB
Índice

1. INTRODUÇÃO ...................................................................................................................................... 1

1.1. CONTEXTUALIZAÇÃO ....................................................................................................................... 2


1.2. OBJETIVOS ........................................................................................................................................ 2
1.3. CALENDARIZAÇÃO ........................................................................................................................... 3
1.4. ESTADO DE ARTE.............................................................................................................................. 4

2. METODOLOGIA ................................................................................................................................... 7

2.1. APRENDIZAGEM DA PLATAFORMA E TESTES PRELIMINARES ............................................................. 7


2.1.1 Primeiro programa (blinker)…………………………………………………………………….7
2.1.2 Segundo modo de funcionamento do programa (LED PWM e USART)…………………...….9
2.1.3 Terceiro modo de funcionamento do programa (voltímetro)………………………………….11
2.1.4 Quarto modo de funcionamento do programa (flowmeter)…………………………………...12
2.2. ESTUDO, VALIDAÇÃO E IMPLEMENTAÇÃO DOS IO EXPANDER’S ...................................................... 13
2.3. PLANEAMENTO E DESENVOLVIMENTO DA PLACA FINAL ................................................................. 17
2.3.1 Análise dos requisitos técnicos e planeamento de IO’s……………………………...17
2.4.2 Circuito de conversão da tensão de atuação em solenoides …………………………20
2.3.3 Teste das bombas e circuitos de conversão de tensão para sinais PWM……….……21
2.3.4 Teste e controlo dos motores de vibração……………………………………………23
2.3.5 Alimentações e circuito tri-state protection para bombas e motores………………...25
2.3.6 Desenho do esquemático em KICKAD……………………………………………...28
2.3.7 Desenho do PCB em KiCkad………………………………………………………...29
2.4. MONTAGEM E VALIDAÇÃO DA PCB ................................................................................................ 30
2.5. ADAPTAÇÃO DO FIRMWARE ANTERIOR AO NOVO HARDWARE E GUI.............................................. 31
2.6. TESTE DO SISTEMA FINAL ............................................................................................................... 33

3. CONCLUSÕES E PERSPETIVAS FUTURAS ................................................................................. 35

3.1. CONCLUSÕES .................................................................................................................................. 35


3.2. PRESPETIVAS FUTURAS ................................................................................................................... 36

REFERÊNCIAS DOCUMENTAIS ............................................................................................................. 37


Índice de Figuras
Figura 1- Calendarização do projeto 1 ............................................................................................... 3
Figura 2- Calendarização do projeto 2 ............................................................................................... 4
Figura 3- Amostrador autónomo “ESP”............................................................................................. 5
Figura 4- Sterivex .............................................................................................................................. 6
Figura 5- Fluxograma função blinker................................................................................................. 8
Figura 6- NUCLEO L476RG ............................................................................................................. 8
Figura 7- Criação do sinal PWM........................................................................................................ 9
Figura 8- Fluxograma função ledpwm ............................................................................................. 10
Figura 9- Fluxograma função voltímetro ......................................................................................... 12
Figura 10- Fluxograma função flowmeter ....................................................................................... 13
Figura 11- Esquema SPI................................................................................................................... 13
Figura 12- Esquema de ligações dos IO expander’s ........................................................................ 14
Figura 13- Placa de teste 1 MCP ...................................................................................................... 15
Figura 14- Placa de teste 4 MCP’s ................................................................................................... 15
Figura 15- Pinout placa de teste 4 MCP’s ........................................................................................ 15
Figura 16- Procedimento de comunicação com os IO Expander’s .................................................. 16
Figura 17- PCB da versão anterior ................................................................................................... 17
Figura 18- Montagem do DC-DC em breadboard............................................................................ 19
Figura 19- Montagem do circuito de atuação em solenoides ........................................................... 21
Figura 20- Esquema do circuito de atuação em solenoides .............................................................. 21
Figura 21- Driver TCS EQI V2 ........................................................................................................ 21
Figura 22- Bomba MDG1000s......................................................................................................... 21
Figura 23- Montagem circuito PWM ............................................................................................... 22
Figura 24- Esquema circuito de conversão para PWM .................................................................... 22
Figura 25- Driver DVR8833 ............................................................................................................ 24
Figura 26- Motor PMD 320-105 ...................................................................................................... 24
Figura 27- Esquema do controlo dos motores de vibração .............................................................. 25
Figura 28- MOSFET Diodes Incorporated DMN2056U-7 .............................................................. 27
Figura 29- MOSFET nexperia PMPB08R6ENX .............................................................................. 27
Figura 30- Esquemático saídas de alimentação controladas ............................................................ 27
Figura 31- Esquemático final em KiCad do sistema 1 ..................................................................... 28
Figura 32- Esquemático final em KiCad do sistema 2 ..................................................................... 28
Figura 33- Esquemático final em KiCad do sistema 3 ..................................................................... 29
Figura 34- Desenho do PCB em Kickad .......................................................................................... 29
Figura 35- Renderização do PCB ..................................................................................................... 30
Figura 36- Fotografia PCB montada ................................................................................................ 30
Figura 37- Pinout final L476RG ...................................................................................................... 31
Figura 38- GUI ................................................................................................................................. 32
Figura 39- Analisador lógico ............................................................................................................ 33
Figura 40- Osciloscópio ................................................................................................................... 33
Figura 41- Protótipo do sistema 2 .................................................................................................... 33
Figura 42- Protótipo do sistema 1 .................................................................................................... 33
Figura 43- Protótipo do sistema 3 .................................................................................................... 34
Índice de Tabelas
Tabela 1- Modos de funcionamento ……………………………………………………………….11
Tabela 2- IO’s da PCB………………………………………………………………………...……20
Acrónimos
ADC - Analog to Digital Converter

CIIMAR - Centro Interdisciplinar de Investigação Marinha e Ambiental

CRAS - Centro de Robótica e Sistemas Autónomos

DAC - Digital to Analog Converter

DC - Direct Current

eDNA - Environmental DNA

GUI - Graphical User Interface

INESC TEC - Instituto de Engenharia de Sistemas e Computadores, Tecnologia e Ciência

IO - Input / Output

ISEP - Instituto Superior de Engenharia do Porto

MOSFET - Metal–Oxide–Semiconductor Field-Effect Transistor

PCB - Printed Circuit Board

PWM - Pulse Width Modulation

SPI - Serial Peripheral Interface

USART - Universal Synchronous/Asynchronous Receiver/Transmitter

xiii
1. INTRODUÇÃO

O trabalho realizado está integrado num projeto de investigação que tem como objetivo
desenvolver um Biosampler autónomo que vai permitir a amostragem e preservação de
eDNA em ambientes aquáticos. As amostras preservadas serão depois processadas em
laboratório para a análise da diversidade e composição biológica através da utilização de
metodologias de sequenciação de nova geração. As atividades do projeto concentraram-
se principalmente nas componentes de comando e controlo do Biosampler, com recurso a
um microcontrolador e a uma placa PCB de interface e desenvolvimento da sua expansão,
de forma que seja realizada a conexão de todos os periféricos do sistema ao
microcontrolador.

O maior desafio no desenvolvimento deste projeto foi a enorme escassez mundial de


microchips, não havendo atualmente no mercado a disponibilidade dos componentes
utilizados para as placas PCB das primeiras versões do Biosampler já desenvolvidas. Por
este motivo, foi necessário encontrar e validar novos componentes disponíveis em stock e
com as mesmas capacidades para projetar novas placas PCB e firmware para o controlo do
Biosampler.

O microcontrolador utilizado integra a arquitetura ARM (referência STM32L476) e é


fabricado pela ST eletronics mas, mais uma vez, não existe stock do microcontrolador em
separado pelo que foi utilizada uma placa de desenvolvimento NUCLEO L476RG com
este mesmo microcontrolador. O presente estágio focou-se focar no desenvolvimento de
uma placa PCB que irá conectar-se à placa NUCLEO, expandindo os seus pinos com
recurso a chips de expansão de inputs/outputs. Esta placa, contem ainda os vários

1
componentes necessários para atuar nas válvulas e motores, como por exemplo transístores
MOSFET e díodos de freewheeling para o controlo de solenoides.

O sistema desenvolvido deverá ser capaz de controlar todos os componentes do


Biosampler, de modo que seja realizada, de forma autónoma, a recolha e preservação de
múltiplas amostras de material biológico e estar preparado para futuras versões em que a
análise do eDNA seja efetuada no próprio sistema.

1.1. CONTEXTUALIZAÇÃO
Este projeto surgiu da necessidade do CIIMAR e NIVA desenvolverem uma nova versão,
mais atualizada e de dimensões mais reduzidas, de um sistema de amostragem de eDNA
inicialmente criado no âmbito do projeto MARINEYE [2], cujo objetivo é recolher e
preservar amostras de material biológico presentes na água de forma autónoma, para serem
posteriormente analisadas em termos de composição biológica em laboratório.

Foi fornecida a placa de desenvolvimento STM32 NUCLEO L476RG, para aprender a


plataforma, começar a desenvolver o código e a validar os componentes do sistema, tal
como para projetar e desenvolver uma placa PCB de expansão, que vai permitir o controlo
de um maior número de periféricos.

1.2. OBJETIVOS
O objetivo principal deste projeto é o desenvolvimento da secção de controlo (firmware e
hardware) de um sistema de aquisição e preservação de amostras de material biológico em
ambientes aquáticos. Este deverá ser mais compacto (com forma cilíndrica) e atualizado
em relação ao protótipo anterior [2], utilizando componentes disponíveis no mercado dos
dias de hoje. O material biológico recolhido e preservado pelo sistema, numa fase
posterior, deverá de ser objeto de análise do eDNA de forma também autónoma. Dada a
complexidade inerente a este objetivo, sentiu-se a necessidade de o subdividir em
múltiplos requisitos, tais como:

• Capacidade de obter e preservar 15 amostras diferentes sem contaminação cruzada;


• Monitorização da pressão e caudal no circuito;
• Controlo do sistema através de um PC utilizando comunicação série;

2
• Redução do volume total do sistema de modo a ser integrado num cilindro facilmente
transportável e com possibilidade de montagem num AUV (Autonomous Underwater
Vehicle);
• Reformular as placas de controlo, de forma a utilizar componentes disponíveis no
mercado;
• Preparar as placas de controlo para futuras funcionalidades do sistema, como o
isolamento, análise e sequenciação do eDNA presente nas amostras coletadas;

1.3. CALENDARIZAÇÃO
Em termos de calendarização o projeto foi desenvolvido através da implementação de
diferentes tarefas durante o período de março a início de setembro 2022 de acordo com o
mapa apresentado abaixo.

Figura 1- Calendarização do projeto 1

3
Figura 2- Calendarização do projeto 2

1.4. ESTADO DE ARTE


A amostragem de eDNA (DNA ambiental), é uma prática cada vez mais comum nos dias
de hoje, devido à sua natureza não invasiva de monitorização da biodiversidade marinha,
com especial interesse na deteção de espécies invasivas, de espécies produtoras de toxinas
e de espécies patogénicas, essencial ao controlo da qualidade da água perigosas. O método
manual de amostragem incluí a recolha de um determinado volume de água a diferentes
profundidade na coluna de água. Normalmente são utilizadas garrafas Niskin de forma
individual ou em configuração de roseta (Kopf et al. 2015). Após a recolha da água, a
amostra é filtrada manualmente a bordo do navio ou num laboratório em terra. Todo este
procedimento é muito dispendioso, promove a deterioração da amostra, devido aos tempos
de processamento, e aumenta o risco de contaminação da amostra devido aos vários passos
de manuseamento. Neste sentido é urgente desenvolver sistemas autónomos com
capacidade de automatizar todos os procedimentos relativos à colheita e preservação de
amostras de eDNA para análise da estrutura e diversidade das comunidades biológicas.

Embora este seja um processo extremamente importante e útil, é também complexo e


delicado, pelo que requer um tempo de desenvolvimento e custos consideráveis. Estes
fatores sempre foram vistos como desvantagens na sua concretização, até que começaram
a surgir sistemas como o “Environmental Sample Processor ESP” [1] (figura 3), em que o

4
processo de recolha de amostras para análise molecular começou a ser automatizado.
Esta tecnologia abriu portas para os cientistas conseguirem recolher amostras dos
ambientes marinhos e de água doce de forma autónoma, sem restrições relativas à
logística complexa de organização de campanhas oceanográficas e sem a necessidade de
recorrer a equipas altamente especializadas para a realização das amostragens in situ.

Figura 3- Amostrador autónomo “ESP”

eDNA consiste em vestígios de DNA deixados por organismos nos ambientes que estes
interagem. O DNA poderá estar dentro de células de bactérias, microalgas e outras
células/tecidos de plâncton, como resíduos celulares deixados por organismos maiores (e.g.
peixes, mamíferos marinhos). Para amostrar o eDNA, a água do ambiente a analisar deve
ser filtrada, deixando no filtro os conteúdos descritos acima para posterior análise. Para
realizar esta filtragem, usam-se filtros estéreis, normalmente “sterivex”, que consiste num
sistema fechado com um filtro no seu interior com um poro de 0.2 m e com duas portas
para entrada e saída do fluído a filtrar, como se pode observar na figura 4.

5
Figura 4- Sterivex

Após o processo de filtração, o conteúdo biológico concentrado no filtro terá de ser


preservado ou analisado de imediato em termos de isolamento e sequenciação do DNA.
Quando a amostra é preservada, os biosmapler’s têm de estar equipados com um circuito
de fluído preservante que é bombeado para os sterivex depois da recolha da amostra.

Para o controlo de todos os componentes do biosampler é necessário a integração de uma


placa eletrónica com um microcontrolador, programado para atuar em válvulas, bombas e
motores e fazer a leitura de sensores, como sensores de pressão, caudal e temperatura. O
presente trabalho de estágio focou-se no desenvolvimento de uma nova geração da PCB e
respetivo firmware que servirá para atualizar a secção de controlo do sistema de recolha e
preservação de eDNA previamente desenvolvido pela equipa do INESC-TEC e CIIMAR
[2]. Esta atualização irá permitir avanços em termos de implementação de novos passos
autónomos no processo de análise do eDNA.

6
2. METODOLOGIA

2.1. APRENDIZAGEM DA PLATAFORMA E TESTES PRELIMINARES


2.1.1 Primeiro programa (blinker)

De forma a iniciar a aprendizagem da plataforma STM32 [3], foi proposto fazer um


programa “blinker” utilizando a placa de desenvolvimento STM32 “NUCLEO L476RG”.

Para o desenvolvimento deste primeiro programa, recorrendo ao seu datasheet e a vários


repositórios de informação online, começou-se com a configuração do microcontrolador no
compilador “STM32 CUBE IDE” [4], que foi muito mais rápida e eficiente comparada
coma dos microcontroladores AVR, visto utilizar uma interface gráfica (UI) muito
completa e intuitiva para o utilizador. Com as configurações selecionadas na UI, o
compilador gera automaticamente o código de configuração, sem ter de se alterar
manualmente os inúmeros registos de configuração do microcontrolador.

Com as principais configurações feitas, neste caso definir o clock e o pino ao qual está
ligado o led como saída, procedeu-se ao desenvolvimento do código que vai controlar este
pino. Para tal foi utilizada a camada de abstração de hardware “HAL”, o que permite
controlar o hardware do microcontrolador através de comandos de alto nível, sem ter de

7
manualmente mudar registos no microcontrolador, poupando muito tempo no
desenvolvimento do código.

Neste programa inicial foi utilizado o comando “HAL_GPIO_TogglePin” para alternar o


estado do pino ligado ao led e o “HAL_Delay(500)” para pausar a execução do programa
durante 500 milissegundos.

Colocando ambos os comandos dentro


de um ciclo “while(1)”, como é
possível observar no fluxograma,
obteve-se o resultado que se
procurava: o led em questão começou
a piscar com uma frequência de 2 Hz,
depois de ter compilado e carregado o
programa utilizando ligação USB.
Figura 5- Fluxograma função blinker
Como referido o software foi
desenvolvido para a placa de desenvolvimento STM 32 “NUCLEO L476RG”, que é uma
placa compatível com os conectores do Arduíno UNO e já com alguns periféricos
integrados, como dois botões e 3 leds programáveis, bem como todos os componentes
necessários para seu o microcontrolador (STM32L476, baseado no ARM Cortex M4)
funcionar devidamente. Esta placa, também, já integra um programador, o ST-LINK
debugger/programmer, que está projetado para ser fisicamente removido da placa assim
que o processo de desenvolvimento terminar, ficando apenas a parte necessária para a

Figura 6- NUCLEO L476RG


8
execução das funções programadas.

Este primeiro programa não exigiu qualquer tipo de montagem visto ter utilizado o led
LD2 embutido na placa, já internamente conectado ao pino PA5 do microcontrolador,
utilizando a resistência de proteção adequada.

2.1.2 Segundo modo de funcionamento do programa (LED PWM e USART)

Esta segunda parte do programa permitiu a aprendizagem da geração de sinais PWM


(Pulse Width Modulation) e comunicação série USART através da porta USB. Estas
funcionalidades vão ser úteis para o controlo de bombas, motores e leds de sinalização no
sistema final.

PWM é um tipo de modulação que pode ser vista como uma forma digital de originar
“resultados” analógicos. Esta permite replicar qualquer valor de tensão dentro de um dado
intervalo, alternando entre os valores máximos e mínimos desse intervalo (normalmente o
valor lógico LOW e HIGH, neste caso 0 e 5 volt). A percentagem de tempo em que este se
encontra com valor HIGH, em relação à duração de um período, é denominada de duty-
cycle. Este é o parâmetro utilizado para alterar o valor médio de saída.

Para gerar sinais PWM é necessário um timer, que foi configurado para incrementar o seu
contador a partir de 0 e atingindo o seu valor máximo de 255, voltar a 0, recomeçando a
contagem.

Utilizando as variáveis representadas na figura como OCRn A e B podemos variar o duty-


cycle dos sinais gerados visto que o sinal se inicia em estado HIGH (5V) e quando o
contador do timer atinge o valor do OCCR, o sinal PWM passa a LOW (0V). Quando o
timer atinge o valor máximo (255), o sinal PWM volta a ficar HIGH e o timer recomeça a
contagem do 0, repetindo se o processo.

9 Figura 7- Criação do sinal PWM


A frequência do sinal gerado é controlada com o clock do timer que pode ser manipulado
utilizando prescaler’s, que subdividem a fonte de clock do microcontrolador para obter os
valores desejados de clock do timer.

Para comunicação com o microcontrolador, de forma a alterar os valores de duty-cycle do


sinal PWM gerado a partir do PC, utilizou-se a comunicação série através da interface
USART2, ligada à porta mini USB do programador ST-LINK. Do lado do PC, foi utilizado
o programa “Terminal” para estabelecer a comunicação, de forma a enviar e receber
palavras para o controlo e debug das funções do programa. A comunicação série é um tipo
de comunicação assíncrona, em que é enviado apenas um bit de cada vez de forma
sequencial e utiliza duas ligações elétricas, uma para enviar e outra para receber dados (Tx
e Rx, respetivamente).

Em termos de funcionamento desta função, ela segue o fluxograma da figura 8, permitindo


alternar entre 5 sinais PWM diferentes, conforme o número que é enviado por USART,
sendo um dos modos um “loop” que varia o duty-cycle do sinal.

Figura 8- Fluxograma função ledpwm

10
Na tabela 1 estão os diferentes sinais PWM que a função pode gerar, dependendo do input
fornecido pela USART.

Input USART = “0” Duty-cycle = 0%

Input USART = “1” Duty-cycle = 40%

Input USART = “2” Duty-cycle = 60%

Input USART = “3” Duty-cycle = 100%

Input USART = “4” Duty-cycle 0 – 100%, 100-0% (loop)

Tabela 1- Modos de funcionamento

Para obter uma representação visual do sinal criado, foi ligado ao pino do timer utilizado
um led. Desta forma, quando o duty-cycle aumentar o brilho do led vai aumentar,
conseguindo validar o funcionamento correto do programa.

2.1.3 Terceiro modo de funcionamento do programa (voltímetro)

Neste modo, o microcontrolador envia por USART a tensão lida à entrada do seu ADC
(Analog to Digital Converter), uma funcionalidade que se vai revelar muito útil para a
leitura dos sensores de pressão do sistema, logo indispensável de ser validada. Para tal foi
utilizado um potenciómetro ligado como divisor de tensão entre a massa e os 3.3v (valor
máximo do ADC), desta forma, rodando o potenciómetro, o valor lido deverá variar entre 0
e 3.3v. No entanto o ADC foi configurado para colocar a medição do valor em formato
binário com 12 bit de comprimento (resolução), que em formato decimal irá resultar num
valor entre 0 e 4092 (corresponde a 0 e 3.3v respetivamente).

Deste modo, como está presente no fluxograma a seguir, o programa terá primeiramente
que converter o valor para volt, multiplicando por 3.3 e dividindo por 4096 e
posteriormente enviar o valor resultante por USART.

11
Para evitar estar
continuamente a enviar as
medições por USART, o
algoritmo apenas envia uma
nova medição quando deteta
uma mudança no valor da
tensão (quando se roda o
potenciómetro). No entanto,
foi preciso criar uma janela
de “deadzone”, para não
deixar que pequenas
variações de tensão
causadas por ruído na fonte
ou imprecisões de leitura
sejam suficientes para ativar
uma nova medição.

Figura 9- Fluxograma função voltímetro

2.1.4 Quarto modo de funcionamento do programa (flowmeter)

Este modo do programa tem o objetivo de fazer a leitura e reset dos flowmeter’s (sensores
de caudal) a utilizar no sistema. O sensor a utilizar funciona por impulsos, ou seja, cada
impulso corresponda a uma pequena quantidade de líquido que passou pelo sensor,
definida pelo fabricante. Neste caso, o sensor utilizado vai ser o “BTFlowmeter 97479415”
que conta com 7000 impulsos por litro, logo cada impulso corresponde a 1/7000L = 0,14
mililitros. Para se fazer a contagem dos impulsos, liga-se o sensor a um pino de interrupção
externa (EXTI1) e na rotina de interrupção vamos simplesmente incrementar a variável
“flowmeter_count”, que é inicializada a 0, e pode ser colocada a 0 (reset) a qualquer altura,
para reiniciar a contagem de fluído. Em termos de funcionamento com a USART, neste
modo envia-se um “0” para fazer reset à medição e um “1” para imprimir o valor atual de

12
fluído medido (desde o último reset), como é possível observar nos fluxogramas da figura
10:

Figura 10- Fluxograma função flowmeter

De notar que quando o flowmeter envia um impulso, ativa a interrupção externa EXTI1, o
que faz o program counter saltar para a sua rotina de interrupção (fluxograma da direita), e
no fim desta, volta para a main, retomando na linha onde estava antes da interrupção.

2.2. ESTUDO, VALIDAÇÃO E IMPLEMENTAÇÃO DOS IO EXPANDER’S


Os chips de expansão de IO são dos componentes mais importantes no projeto, visto serem
uma das razões pela qual está a ser desenvolvida
esta nova placa, uma vez que os expansores de
IO utilizados nas versões anteriores não se
encontram em stock.

Foi então proposto usar o chip de expansão de


IO de 8bit “MCP23S08” [5] utilizando o
protocolo de comunicação SPI. Este protocolo de

Figura 11- Esquema SPI


13
comunicação é síncrono, ao contrário do USART mencionado anteriormente, e utiliza uma
topologia MASTER-SLAVE em que o dispositivo master (microcontrolador) está ligado a
todos os dispositivos slave (chips de expansão) através de um barramento comum
constituído por 3 linhas: SCK - Linha de Clock, MOSI– Linha de Slave In, MISO– Linha
de Slave out, complementado pelas linhas de chip select, como é possível observar na
figura 11.

Existem duas principais formas de identificar o slave, com o qual se quer comunicar:
utilizando as linhas de chip select, como no exemplo da figura 11, com uma linha para
cada slave que quando ligada à massa ativa esse slave, ou utilizando endereçamento por
hardware (quando suportado), em que cada slave tem um endereço definido pelo estado
lógico de dois ou mais dos seus pinos (0-ligado à massa, 1-ligado a Vcc) e quando uma
mensagem for enviada pelo master, apenas o slave com o endereço de destino da
mensagem a vai interpretar. Os chips escolhidos suportam esta segunda opção e visto
terem 2 bit de endereçamento, permite ligar até 4 dispositivos desta forma.

Visto que irão ser necessários cerca de 90 IO’s para controlo de todas as válvulas, ativação
de bombas e outros periféricos, nenhum destes métodos parece favorável. O primeiro exige
uma linha de chip select dedicada a cada expansor de IO, o que irá utilizar muitos outputs
no microcontrolador, e o segundo método só permite a ligação de 4 dispositivos, o que
resulta num total insuficiente de 32 IO’s (8 por chip). Assim surgiu a ideia de combinar os
dois, agrupando os chips em grupos de 4, em que cada chip tem um endereço diferente e
cada um destes grupos de chips é controlado por uma linha de chip select, como é possível
visualizar na figura 12, que mostra como foram ligados na placa desenvolvida, de modo a
proporcionar um total de 96 IO’s utilizando apenas 3 linhas de chip select.

Figura 12- Esquema de ligações dos IO expander’s

14
Para validar esta ideia foram montadas duas placas de testes, uma com um grupo completo
de 4 expansores e uma com apenas um e tentou-se controlar cada output individualmente
usando apenas duas linhas de chip select (uma para cada placa).

Figura 13- Placa de teste 1


Figura 14- Placa de teste 4 MCP’s
MCP

Figura 15- Pinout placa de teste 4 MCP’s

Para conseguir comunicar com os estes componentes, foi necessário estudar o seu
datasheet, tal como fazer alguns testes para entender o seu comportamento e modo de
comunicação em SPI. Concluiu-se, deste processo, que cada ação do componente requer 5
passos: em primeiro lugar, deve-se ativar a linha de chip select para o componente
desejado, ligando-a à massa; os próximos 3 passos consistem no envio de 3 palavras de 8
bit, a primeira com o endereço do chip com que se quer comunicar e com a indicação de
escrita ou leitura, a segunda com o registo a alterar no componente e a terceira com o novo
valor a colocar nesse registo. Por fim, desativa-se a linha de chip select e a comunicação

15
está efetuada. Na figura 16 estão resumidos os passos necessários, tal como um exemplo,
que consiste em alterar o estado do pino 0 do slave com o endereço “00” para HIGH.

Figura 16- Procedimento de comunicação com os IO Expander’s

De notar que, por defeito, estes chips estão configurados para não utilizar o endereçamento
por hardware, pelo que, para tal, ao ligar o sistema é preciso ativar um certo bit (HAEN) no
seu registo de configuração (IOCON), como está explícito no exemplo apresentado, para
além das outras configurações como as de direção dos pinos utilizando o registo IODIR.

16
Para realmente alterar o valor dos pinos do expansor de IO, utiliza-se o registo GPIO em
que cada um dos seus bits corresponde a um pino de saída do expansor.

2.3. PLANEAMENTO E DESENVOLVIMENTO DA PLACA FINAL


Esta parte deve ser subdividida em tópicos, dado que aborda diversas tarefas, como análise
de requisitos técnicos, planeamento de IO’s e funcionalidades, elaboração e validação de
circuitos, resolução de problemas face a versão anterior da placa e, por fim, desenho do
esquemático e do PCB em KiCkad.

2.3.1 Análise dos requisitos técnicos e planeamento de IO’s

Os requisitos técnicos da nova PCB consistem em manter todas as funcionalidades


da placa anterior (apresentada na figura 17), alterando os componentes que não
existem em stock, como o microcontrolador, em separado, e os expansores de IO.
Acrescenta-se, também, todos os IO’s necessários para as funcionalidades futuras
do sistema, que consistem em ter três recipientes extra, onde poderá ser
automatizado o processo de isolamento do DNA a partir das amostras preservadas
nos sterivex, que é a funcionalidade primária do sistema.

Figura 17- PCB da versão anterior

C
Começando pelas funcionalidades importadas da placa anterior, será necessário
conseguir controlar 3 manifolds, com 6 saídas (uma para cada sterivex de
preservação de DNA, com uma saída por manifold reservada para limpeza), tendo
também uma válvula de saída para cada sterivex, o que exige um total de 18 IO’s
para manifolds mais 18 para as válvulas de saída. Para além destes, irão ser

17
necessários mais dois para as válvulas de entrada de água e de líquido de
preservação no sistema e outros 3 para atuar no pino “ENABLE” dos drivers das
bombas atuais (as duas dos líquidos mencionados e uma de ar, para limpeza do
sistema).

Em relação às novas funcionalidades, de isolamento DNA, os investigadores do


CIIMAR tentaram reduzir e simplificar ao máximo os passos deste procedimento,
para que possa ser mais exequível a sua automatização. No entanto, como este é um
processo inerentemente complexo e sempre realizado em laboratório, exige um
grande número de funcionalidades do sistema e requer que se deixe algumas
funcionalidades extra, caso o processo na prática exija por exemplo mais passos
que o planeado. Desta forma, cada um dos 3 recipientes de análise deve estar
preparado para admitir doses específicas de 5 líquidos diferentes e ter uma válvula
de saída (que exige mais 18 válvulas e 5 bombas). Também deve ter a capacidade
de serem limpos da mesma forma que os sterivex, com ar comprimido (mais 3
válvulas), estarem circundados por um eletroíman e terem uma manga de
aquecimento para controlar com precisão a sua temperatura (mais 6 IO´s, dois por
recipiente). Será, igualmente, acrescentada uma nova funcionalidade, comum tanto
à parte futura de isolamento, como à parte atual de filtragem e preservação: a
capacidade de controlar motores de vibração, que irão ser falados em mais detalhe,
posteriormente, e irão utilizar 4 IO’s, para ativar os seus drivers. Por último, 3 IO’s
irão ser utilizados para controlar 3 saídas de alimentação de com tensão
selecionável por meio de um jumper entre 5v e 24v.

Somando todos estes IO’s temos um total de 79, logo, escolheu-se utilizar, como já
referido, 3 grupos de 4 expansores de IO, obtendo 96 IO’s e reservando as 16
saídas extra para a parte de isolamento de DNA, a implementar futuramente.

Em termos de alimentação, o sistema é alimentado via uma entrada geral de 24v e


conta com dois conversores DC – DC, um para alimentar componentes como a
placa núcleo e os expansores de IO com 5v e outro destinado a alimentar os
motores de vibração, a 3.3v, enquanto as restantes bombas e válvulas trabalham
com a tensão nativa do sistema, os 24v.

18
Figura 18- Montagem do DC-DC em breadboard

Os expansores de IO tiveram um papel fundamental em deixar a grande maioria


dos pinos da placa núcleo não utilizados, para que possam fazer as funções mais
avançadas, como geração de sinais PWM (7 outputs) para motores e bombas,
leitura de sinais analógicos provenientes dos sensores de pressão (5 inputs), leitura
dos impulsos gerados pelos flowmeters (sensores de medição de caudal) recorrendo
a pinos de interrupção externa (9 inputs, um para cada possível bomba), portas de
comunicação como I2C para leitura de um conjunto de sensores de temperatura
(duas portas, uma extra), 3 portas USART (uma delas com RS232) para
comunicação com um PC e 4 pinos, que podem ser programados para qualquer
umas das funções acima.

Desta forma, todos os pinos dos expansores de IO e do microcontrolador estão


atribuídos e podem ser utilizados, podendo tirar o máximo partido de ambos em
fases futuras do projeto, estando já preparada do ponto de vista eletrónico e de
controlo para um aumento substancial da complexidade e dimensão do sistema. Na
tabela 2 podemos observar uma tabela efetuada para mostrar, de forma organizada,
todas as saídas e entradas da placa, tal como as especificações elétricas de cada e
nome de cada pino.

19
Tabela 2- IO’s da PCB

2.3.2 Circuito de conversão da tensão de atuação em solenoides

Todas as válvulas/solenoides do sistema, incluindo as válvulas integradas nos


manifolds, devem ser atuadas com uma tensão de 24v, no entanto, os expansores de
IO que as controlam operam a uma tensão de 5v, pelo que foi necessário usar um
transístor a funcionar como interruptor, que vai fornecer 24v à válvula quando for
excitado com os 5v provenientes do expansor de IO. O transístor escolhido foi o
MMBF170Q [6] e trata-se de um MOSFET com limites operacionais de corrente e
tensão de 500 mA e 60v, respetivamente, mais que suficientes para a aplicação em
causa. Para limitar a corrente na gate do transístor utilizou-se uma resistência de
10kohm. E para prevenir a formação de altas tensões aos terminais das solenoides,
devido à sua indutância, foi essencial a implementação de um díodo de
freewheeling no circuito (o 1N4151), em paralelo com a solenoide. Nas figuras 19 e
20 é possível observar o circuito resultante, tanto no seu esquemático em KiCad,
como montado numa placa perfurada utilizada para validação.

20
3Figura 20- Esquema do circuito de atuação Figura 19- Montagem do circuito de atuação
em solenoides em solenoides
3

2.3.3 Teste das bombas e circuitos de conversão de tensão para sinais PWM

As bombas de fluídos a utilizar no sistema são as “TCS micropumps MDG1000s”


[7], alimentadas pelo driver “TCS EQI V2” [8]. Estas são bombas de alta precisão
de dosagem e capazes de pressões até 8 BAR com um caudal máximo de 0,58 litros
por minuto. Já os seus drivers podem ser alimentados até 30v (utilizou-se 24v) e
suportam uma corrente máxima de operação de 2A.

E
s
o
Figura 22- Bomba MDG1000s Figura 21- Driver TCS EQI V2
S
Estes drivers têm duas opções para o controlo de velocidade: utilizando um
potenciómetro embutido (em que as bombas trabalham a uma velocidade fixa) ou
utilizando a entrada analógica, variando a sua tensão entre 0 e 5v onde 5v
corresponde à velocidade/caudal máxima(o). Para criar este sinal analógico

21
poderíamos utilizar um DAC (conversor digital analógico) para criar um sinal
verdadeiramente analógico. No entanto, podemos recorrer mais uma vez às
funcionalidades PWM do microcontrolador, para criarmos um “falso” sinal
analógico que terá um valor de tensão interpretado pelo driver tanto maior quanto o
seu duty-cycle. No entanto, existe um problema que apareceu na parte de validação
destes componentes, uma vez que o valor de tensão equivalente ao estado HIGH do
sinal PWM é de 3.3v. Logo, mesmo com o duty-cycle a 100%, a tensão
interpretada não passará deste valor, pelo que as bombas não irão operar a mais do
que cerca de 66% da sua velocidade máxima.

Por este motivo, foi necessário desenvolver e validar outro circuito de


transformação, com o mesmo princípio do utilizado para o controlo das solenoides.
Mas desta vez, para alterar o valor de tensão máximo do sinal PWM dos 3,3v
fornecidos pelo microcontrolador para 5v, a tensão correspondente à velocidade
máxima no driver.

O transístor utilizado foi o mesmo que nos circuitos das solenoides, o MMBF170Q
e utilizando também a mesma resistência de 10kohm na sua gate. No entanto, foi
utilizada uma segunda resistência do mesmo valor, ligada ao dreno, a funcionar
como uma resistência de pull-up na saída do circuito (dreno do transístor) que pode
ser conectada, através de um jumper, tanto á fonte de 5v como à de 3.3v, caso se
queira manter a tensão original do sinal em alguma saída. Nas figuras 23 e 24 é
possível observar o circuito, tanto no seu esquemático em KiCad, como montado na
placa de testes utilizada para validação.

Figura 24- Esquema circuito de conversão para PWM Figura 23- Montagem circuito PWM

22
De notar que, devido à natureza do circuito apresentado, o sinal PWM final vai
estar inversamente polarizado em relação ao original pelo que é necessário inverter
a polaridade de todos os sinais PWM gerados pelo microcontrolador, nas
configurações do mesmo.

Com o grande número de bombas que poderão ser necessárias na parte futura do
projeto (parte de isolamento de DNA), também foi necessário pensar numa forma
de reduzir o número de sinais PWM diferentes que o microcontrolador vai ter de
gerar, de forma a tentar conservar o máximo número de pinos do mesmo. Para isto,
e visto que não há falta de IO’s digitais devido aos expansores de IO, surgiu a ideia
de controlar todas as bombas a usar futuramente com um único sinal PWM e
alternar entre elas utilizando os pinos de “ENABLE” do driver, por sua vez ligados
aos expansores de IO. Esta alternativa é viável visto que, para os processos de
isolamento de DNA estas bombas não irão funcionar em simultâneo. No entanto, as
bombas primárias do sistema, como as de água, líquido de preservação e ar,
utilizam PWM’s individuais, para além dos pinos de “ENABLE”, de forma a
proporcionar um controlo o mais preciso possível e possibilitar o seu uso em
simultâneo, mesmo com velocidades diferentes.

2.3.4 Teste e controlo dos motores de vibração

Tal como já foi mencionado na parte do planeamento dos IO’s, uma das novas
funcionalidades desta placa é estar preparada para o controlo de motores de
vibração, que irão ser montados um em cada conjunto de 5 sterivex e futuramente
mais um por cada recipiente de isolamento de DNA, o que dá um total de 6
motores.

Foi proposto utilizar os motores PMD 320-105, próprios para vibração, que
possuem uma tensão nominal de cerca de 3v e quando testados em laboratório
apresentaram um consumo de cerca de 0,8A em carga.

Tendo em conta estes valores e dado o número de motores a controlar, foi


escolhido o driver Pololu DVR8833 [9], a montar externamente (fora da placa

23
principal) que é um driver duplo, ou seja, é possível ligar dois motores por driver,
com controlo independente o que significa que com apenas 4 drivers todos os
motores podem ser controlados individualmente.

Figura 25- Driver DVR8833 Figura 26- Motor PMD 320-105

No entanto, isto significa que iriamos precisar de ter mais oito pinos de PWM no
microcontrolador, pelo que seguindo a mesma ideia que a utilizada para o controlo
de bombas, vamos tentar diminuir o número de sinais PWM necessários, mesmo
que isto implique um aumento de pinos digitais necessários (em abundância devido
aos expansores de IO). Esta consiste em utilizar apenas dois sinais PWM, comuns a
todos os drivers (um para cada canal/motor do driver) e 4 linhas de ENABLE, que
irão ligar ou desligar o driver a que estão conectadas. Desta forma, é possível
controlar individualmente cada motor embora venha com a limitação de só poder
ter até dois motores a funcionar com velocidades diferentes em simultâneo.

Na figura a seguir temos o esquema de ligações tal como a lógica de controlo de


cada motor individualmente, ou de vários em simultâneo, contando com dois
motores extra que possam vir a ser necessários no futuro:

24
Figura 27- Esquema do controlo dos motores de vibração

2.3.5 Alimentações e circuito tri-state protection para bombas e motores

Durante o processo de programação do microcontrolador, os seus pinos assumem


um estado chamado “tri-state”, que é um estado de alta impedância que não é
considerado nem como estado lógico 1 (HIGH), nem como 0 (LOW). Na versão
anterior do sistema, um dos problemas que surgiu durante a fase de testes foi que os

25
drivers utilizados para o controlo de motores e bombas ficam “confusos” com este
estado, tanto no seu pino de ENABLE como no pino de controlo de velocidade,
causando as bombas e motores a comportarem-se de forma aleatória e errática
durante o processo de programação do microcontrolador. De forma a resolver este
problema, decidiu-se manter as alimentações de todos os drivers do sistema
desligadas até ao programa começar a sua execução.

Para colocar a ideia em prática, visto existirem duas tensões de alimentação


diferentes, 24 e 3.3v, foram utilizados dois transístores, para o controlo das
alimentações dos drivers. No entanto, não foi possível utilizar os mesmos
transístores utilizados nos circuitos mencionados anteriormente, visto que cada
bomba pode consumir até 2A e podem existir até 9 bombas no sistema e estes
transístores têm um limite de 0,5A, o que não é suficiente nem para uma única
bomba.

Logo, após alguma pesquisa foram escolhidos os dois transístores (MOSFET), o


“nexperia PMPB08R6ENX” [10] para a parte de 24v, com um limite de corrente no
dreno de 15A e tensão de rutura entre dreno e source de 30v, sendo assim suficiente
para alimentar a maioria das bombas do sistema em simultâneo (cerca de 8). Já para
a parte dos 3,3v, para os drivers dos motores de vibração foi escolhido o transístor
“Diodes Incorporated DMN2056U-7” [11], com um limite de corrente no dreno de
4A e tensão de rutura entre dreno e source de 20v, o que seria suficiente para
alimentar até 5 motores em simultâneo, no entanto, visto que o conversor DC-DC
que proporciona os 3,3v tem um limite de 3A, só irá ser possível utilizar cerca de 4
motores em simultâneo.

Em termos de ligações, em ambos os circuitos foram utilizadas novamente


resistências de 10kohm. Para limitar a corrente na gate, ligou-se o ground dos
drivers ao dreno dos transístores, com o ground do sistema (da fonte) ligado às suas
sources. Assim, só quando o microcontrolador excitar os transístores (já durante o
funcionamento do programa e não durante o processo de programação) é que os
drivers vão ser alimentados. Nas figuras 28 e 29 é possível observar o esquemático
em KiCad dos dois circuitos:

26
Figura 29- MOSFET nexperia Figura 28- MOSFET Diodes Incorporated
PMPB08R6ENX DMN2056U-7

De notar que os conectores das figuras são apenas representativos, na verdade o


circuito de 24v possui um barramento de 10 conectores, enquanto que o circuito de
3.3v conta com 4 conectores. Em adição a estes, temos também dois conectores de
24v ligados diretamente à fonte, sem passar pelo transístor. Devido ao facto das
cargas do circuito serem indutivas (motores), tal como as solenoides, é necessário
utilizar díodos de freewheeling em paralelo com as cargas, daí a utilização dos
díodos D52 e D70 nos esquemáticos.

Existem, também, 3 conectores de alimentação com tensão selecionável através de


um jumper, entre 5 e 24v e controlados individualmente com os expansores de IO
ligados a transístores iguais aos dos circuitos utilizados para o controlo das
solenoides (logo, com um limite de 0,5A). Na figura 30, temos o esquemático desta
parte da placa e é possível observar que foram utilizados mais uma vez díodos de
freewheeling, caso seja preciso atuar em motores ou solenoides e resistências de
10kohm nas gates dos transístores.

27
Figura 30- Esquemático saídas de alimentação controladas
2.3.6 Desenho do esquemático em KICKAD

Nas figuras 31, 32 e 33 está representado o esquemático final em KiCad com todos
os módulos e componentes do sistema dividido em 3 partes:

Figura 31- Esquemático final


em KiCad do sistema 1

Figura 32- Esquemático final


em KiCad do sistema 2

28
Figura 33- Esquemático final em KiCad do sistema 3

2.3.7 Desenho do PCB em KiCad

Nas figuras 34 e 35 é possível observar o projeto da PCB, com todas as suas


ligações tal como uma renderização do modelo 3D final da placa.

Figura 34- Desenho do PCB em KiCad

29
Figura 35- Renderização do PCB

2.4. MONTAGEM E VALIDAÇÃO DA PCB


Depois da placa ter sido fabricada, foram soldados todos os componentes e conectores e
acoplada a placa NUCLEO, como se pode verificar na figura 36.

Figura 36- Fotografia PCB montada

30
Depois, procedeu-se à fase de validação da placa, começando por ligar a fonte de 24v e
analisar o seu consumo para detetar possíveis curtos-circuitos. Estando esta parte validada,
procedeu-se para a validação dos expansores de IO e todos os circuitos controlados por
estes, seguidos da validação da porta USART3 utilizando o chip MAX232 para
comunicação com o PC. Depois de todos estes componentes validados e a funcionar
corretamente, adaptou-se o programa inicial aos pinos da placa desenvolvida e testou-se
todas as funcionalidades do programa, de forma a validar a criação de sinais PWM para
bombas e motores (modo ledpwm), leitura de impulsos com interrupção externa para os
flowmeter (modo flowmeter) e leitura de sinais analógicos (modo voltímetro) para os
sensores de pressão.

2.5. ADAPTAÇÃO DO FIRMWARE ANTERIOR AO NOVO HARDWARE E GUI


De momento apenas são necessárias as funcionalidades já existentes na versão anterior do
firmware, pelo que este vai ser utilizado como base, sendo adaptado à nova placa e
microcontrolador, e mais tarde, quando for necessário fazer uso das novas capacidades da
placa, o firmware será atualizado para tal.

Como o microcontrolador utilizado é diferente, foi necessário criar um projeto para o novo
microcontrolador (STM32 L476RG) e importar as configurações do projeto anterior para o
novo manualmente. São
exemplos destas configurações as
tarefas utilizadas em FREERTOS
(Free Real Time Operating
System) e as suas prioridades,
configurações do ADC, dos
timers e das comunicações SPI e
USART. Foi também necessário
alterar as configurações de todos
os pinos para coincidirem com as
entradas da PCB desenvolvida. O
pinout final do microcontrolador
pode ser observado na figura 37:

Figura 37- Pinout final L476RG

31
Uma parte que é completamente diferente da versão anterior é a comunicação e atuação
nos expansores de IO, pelo que foi necessário adicionar as inicializações e configurações
necessárias para estes componentes, tal como uma função (chamada MCPcontrol) que
recebendo por parâmetro em qual dos pinos se pretende atuar , realiza os procedimentos
abordados no tópico 2.5, atuando nas válvulas ou outros periféricos ligados a estes.

Também foi necessário adaptar a parte de comunicação USART do programa à nova


interface gráfica (GUI), desenvolvida com a ajuda do professor orientador de estágio em
QT [12] e apresentada na figura 38:

Figura 38- GUI

Esta apresenta várias melhorias em relação à versão anterior, como botões interativos
conforme os estados das válvulas e bombas, armazenados em memória; Representação
gráfica dos estados de todas as válvulas do sistema e com a funcionalidade de importação
de todos os estados sempre que se estabelece ligação ao PC. Permite o controlo dos
manifolds, válvulas auxiliares, válvulas de entrada e bombas (com slider para selecionar a
sua velocidade), tal como representação em tempo real das medições dos sensores de
pressão e de caudal. A parte de integração das funcionalidades da Interface Gráfica com o

32
firmware desenvolvido e debug dos problemas que foram aparecendo durante a fase de
testes foi uma das partes mais trabalhosas e que consumiu mais tempo, mas com alguma
ajuda e recurso a ferramentas de resolução de problemas presentes no laboratório como o
osciloscópio (figura 40) e o analisador lógico (figura 39), eventualmente conseguiu-se
colocar tudo a funcionar como esperado.

Figura 40- Osciloscópio Figura 39- Analisador lógico

2.6. TESTE DO SISTEMA FINAL


Para realmente testar a placa, de forma o mais real possível, montou-se no laboratório uma
versão miniaturizada do sistema, constituída por uma válvula de entrada, uma bomba, um
sensor de pressão, um sensor de fluxo, um manifold ligado a um grupo de 5 sterivex e uma
válvula auxiliar de saída para cada sterivex, como se pode ver nas figuras 41, 42 e 43:

Figura 42- Protótipo do sistema 1 Figura 41- Protótipo do sistema 2


33
Figura 43- Protótipo do sistema 3

Utilizou-se também 6 recipientes de vidro: um para cada sterivex e um de esgoto. Depois,


utilizando a interface gráfica, tentou-se distribuir o líquido pelos vários recipientes, de
forma a simular a filtração de água, para validar a atuação nas válvulas, na bomba e a
leitura correta das quantidades de fluído com o flowmeter. Para alimentação geral do
sistema utilizou-se uma fonte de bancada regulada para 24v.

Este teste foi bem-sucedido, tirando umas pequenas fugas pelos sterivex, pelo que o
próximo passo será montar o sistema completo e fazer um teste real a coletar amostras de
eDNA de um ecossistema aquático.

34
3. CONCLUSÕES E
PERSPETIVAS FUTURAS

3.1. CONCLUSÕES

Este capítulo visa a exposição das conclusões retirados após o desfecho do projeto desenvolvido
que contemplou o desenvolvimento de um Biosampler para a recolha de amostras de DNA
ambiental (eDNA) em ecossistemas aquáticos.

Foram atingidos os objetivos propostos, visto que o sistema é capaz de amostrar e preservar 15
amostras diferentes sem contaminação cruzada e é possível monitorizar as pressões e os caudais na
interface gráfica, num PC através de comunicação série. Além disso, placa eletrónica desenvolvida
utiliza agora componentes disponíveis no mercado, o que possibilita a produção ilimitada deste
sistema, que será necessário para enviar os protótipos do mesmo para a “NIVA” na Noruega. Do
ponto de vista do controlo, o sistema está também preparado para lidar com as válvulas, bombas e
outros periféricos que serão necessários para implementar futuramente a parte de isolamento de
eDNA autónomo.

Findo o projeto, retira-se um balanço positivo do trabalho desenvolvido, uma vez que permitiu
desenvolver e testar um protótipo de um Biosampler, que se distingue dos restantes por estar
preparado, do ponto de vista do controlo, para realizar o isolamento do eDNA de forma
automatizada utilizando tecnologias de nova geração de sequenciação.

35
O desenvolvimento deste projeto foi uma ótima oportunidade para aplicar os conceitos e ideias
abordados ao longo de 3 anos de licenciatura, nas diferentes unidades curriculares que a
constituem. Foram também adquiridos novos conhecimentos práticos muito úteis na área, como a
plataforma STM32 CUBE IDE, conceção de PCB´s, utilização de FREERTOS, protocolo SPI,
entre outros.

Como é de esperar num projeto desta duração e complexidade, foram encontradas algumas
dificuldades, destacando-se o tempo limitado para o desenvolvimento do trabalho de estágio e a
utilização de várias plataformas e programas que nunca tinha abordado.

3.2. PERSPETIVAS FUTURAS

Depois de realizar os testes ao sistema, ficaram evidentes alguns problemas no desenvolvimento do


PCB pelo que é importante ter em consideração os seguintes pontos de melhoria quando se fizer
uma próxima versão da placa: colocar resistências de limitação de corrente apropriadas ao
periférico que vão alimentar, trocar o conector das válvulas de entrada para um que suporte uma
maior corrente e tentar projetar uma PCB mais compacta, visto que esta ficou com dimensões um
pouco grandes, cerca de 4 vezes maior que a versão anterior.
De futuro pretende-se também montar uma versão completa do sistema e realizar testes
subaquáticos para validar filtração de eDNA tal como implementar a parte de isolamento autónomo
de DNA, para o qual a PCB desenvolvida já está preparado.

36
Referências Documentais
[1] Scholin C, Doucette G, Jensen S, Roman B, Pargett D, Marin R III, et al. Remote detection
of marine microbes, small invertebrates, harmful algae, and biotoxins using the Environmental
Sample Processor (ESP). Oceanography 2009; 22: 158

[2] Ribeiro, H., Martins, A., Gonçalves, M., Guedes, M., Paola Tomasino, M., Dias, N., Dias,
A., Paula Mucha, A., Carvalho, M. F., Marisa Almeida, C. R., Ramos, S., Miguel Almeida, J., Silva,
E., & Magalhães, C. (2019). Development of an autonomous biosampler to capture in situ aquatic
microbiomes. https://drioi.org/10.1371/journal.pone.0216882

[3] https://www.st.com/en/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus.html

[4] https://www.st.com/en/development-tools/stm32cubeide.html

[5]https://ww1.microchip.com/downloads/en/DeviceDoc/MCP23008-MCP23S08-Data-Sheet-
20001919F.pdf

[6] https://www.diodes.com/assets/Datasheets/MMBF170Q.pdf

[7] https://www.micropumps.co.uk/TCSMGD1000range.htm

[8]https://www.micropumps.co.uk/DATA/pdf/IM060%20-%20Instructions%20EQi%20V2-
MG1%20REV%203.pdf

[9]https://www.ti.com/lit/ds/symlink/drv8833.pdf?ts=1662394654500&ref_url=https%253A%252F%
252Fwww.google.com%252F

[10] https://www.nexperia.com/products/mosfets/small-signal-mosfets/PMPB08R6EN.html

[11] https://www.diodes.com/assets/Datasheets/DMN2056U.pdf

[12] https://www.qt.io/download

37

Você também pode gostar