Escolar Documentos
Profissional Documentos
Cultura Documentos
_______________________________________________
Turma TM18
Julho de 2021
Agradecimentos:
Gostaria de começar por agradecer ao coordenador do curso e engenheiro, Professor Jorge Cipriano, pelo apoio,
ajuda, motivação, dedicação e pela disponibilidade prestada durante o meu percurso escolar, no desenvolvimento
desta prova de aptidão profissional e ao facto de me ter apoiado e ter “desvendado” de forma intuitiva, a área da
3 PROVA DE APTIDÃO PROFISSIONAL – Nirav TM18 | YOUR RC
eletricidade e eletrónica, o que fez com que eu me apaixonasse pela área e prosseguisse os estudos na área da
4 PROVA DE APTIDÃO PROFISSIONAL – Nirav TM18 | YOUR RC
Índice:
1º capítulo – Introdução 9
Motivação 9
Objetivos 10
Descrição 11
Enquadramento 12
Desenvolvimento da prova 13
Recursos utilizados 15
Estrutura do relatório 16
4º capítulo – Comunicações 20
Comunicação UART 20
Comunicação via Bluetooth 21
Módulo Bluetooth HC-05 21
6º capítulo – Impressão 3D 30
A impressão 3D 30
Características da impressão 3D 31
7º capítulo – Motores DC 32
Motores utilizados 32
Servo motores 32
Controlo dos servo motores 32
Constituição de um servo motor 33
Análise do servo motor 34
Torque 34
Motor DC 35
Análise do motor DC 35
Controlo PWM 36
L293D shield 38
Vista geral do shield 39
Funcionamento do L293D 39
Esquema eletrónico do shield 41
Índice de ilustrações:
Figura 1 - APP desenvolvida para testes.............................................................................................................................................13
Figura 2 - Desenvolvimento do protótipo...........................................................................................................................................13
Figura 3 - Impressão da estrutura........................................................................................................................................................14
1º capítulo - Introdução
Motivação:
Esta prova foi realizada devido ao meu enorme gosto pela eletrónica, robótica e pela criação de kits. Foi
escolhida a ideia de construir um carro robot devido à possibilidade de se criar um kit e pela sua reduzida
dimensão e custos monetários, o que permite criar um kit relativamente mais barato do que os Legos e Meccanos e
também por ser um projeto apelativo para os jovens. A componente eletrónica, o desenvolvimento da estrutura e
das placas de circuito impresso permitiu tirar-me da minha “zona de conforto” e permitiu me descobrir novas
ideias e criar desafios, relativamente ao controlo dos motores DC, programação e desenvolvimento do sensor
ultrassónico e da estrutura em si que implicou ser uma dificuldade. A criação do protótipo também se revelou
essencial devido à sua complexidade, pelos recursos utilizados e pela programação desenvolvida pelas seguintes
8 PROVA DE APTIDÃO PROFISSIONAL – Nirav TM18 | YOUR RC
fases:
9 PROVA DE APTIDÃO PROFISSIONAL – Nirav TM18 | YOUR RC
Objetivos:
O objetivo principal desta prova de aptidão profissional consiste em desenvolver e criar um kit de montagem no
qual seja possível substituir facilmente partes da estrutura ou componentes eletrónicos para crianças e jovens
interessados pela área da eletrónica e robótica e criar uma ferramenta de ensino para os mesmos. Pretendo também
colocar em prática os conhecimentos adquiridos nas disciplinas de eletricidade e eletrónica, aplicações de
mecatrónica, tecnologia mecatrónica e desenho técnico durante os 3 anos do curso e dar a conhecer o Curso
Técnico de Mecatrónica. Pretendo também colocar em prática as seguintes competências:
Movimentos variados;
Desvio e recuo na presença de um obstáculo;
Movimentação do sensor dependendo da direção pretendida (esquerda/direita).
Enquadramento:
Esta prova de aptidão profissional engloba os conhecimentos adquiridos nas disciplinas técnicas do curso dos 3
anos letivos frequentados. Para a criação da estrutura, os conhecimentos adquiridos na disciplina de desenho
técnico e de tecnologia mecatrónica foram indispensáveis para o uso dos programas AutoCAD e Fusion360. Os
conteúdos lecionados nas disciplinas de eletricidade/eletrónica e aplicações de mecatrónica foram um grande
apoio para a criação da estrutura eletrónica, escolha e dimensionamento dos componentes e para o
dimensionamento geral do projeto.
Este projeto prova-se inovador na área dos kits de montagem da classe Lego/Meccanno, pois consegue ser um
elo único entre os kits de montagem tradicionais e a prototipagem eletrónica e a programação. Possui também uma
componente didática para aqueles que gostariam de descobrir mais sobre a área da eletrónica, mecânica e
programação, bem como podendo ser aplicada em escolas como uma ferramenta de ensino prática.
11 PROVA DE APTIDÃO PROFISSIONAL – Nirav TM18 | YOUR RC
Desenvolvimento da prova:
Esta prova de aptidão profissional foi realizada faseadamente e sempre com o objetivo de adicionar ideias e
alternativas que possam vir a surgir.
Na primeira fase procedeu se à criação de um código de programação e uma APP no MIT APP inventor,
utilizando os componentes disponíveis e foram efetuados testes da aplicação e do código da programação com o
objetivo de verificar eventuais falhas e adicionar ideias ao produto existente.
Para os testes foi utilizada uma plataforma com motores disponível na escola com o módulo de ponte em H
L298N que mais tarde viria a ser substituído pelo Shield L293D no protótipo elaborado na fase seguinte.
Na quinta e última fase foram concebidos uma marca e um logótipo para completar o kit, foram desenvolvidas
placas de circuito impresso para substituir as existentes e foram efetuadas as últimas modificações.
Para a realização desta Prova de Aptidão Profissional foram utilizados os seguintes componentes:
Um microcontrolador ATmega 328P integrado numa placa Arduino Uno com o objetivo de funcionar
como “cérebro” do carro, capaz de comunicar com o sensor, com a antena Bluetooth e com o shield
L293D;
Foi utilizado o shield L293D para controlar os motores DC e do servo motor colocado na frente do carro;
Uma PCB shield desenvolvida com base no shield L293D adquirido para a fase de testes;
Um sensor ultrassónico para utilizar como radar e evitar a colisão do carro face a obstáculos;
Um servo motor para efetuar a movimentação do sensor ultrassónico consoante a direção do carro;
Baterias Li-ion 18650 para a alimentação do circuito eletrónico geral.
Nos últimos anos, tem-se observado um acelerado crescimento do potencial de sistemas robóticos. Um robô
autónomo é um sistema mecânico versátil que verifica, de forma autónoma o seu ambiente e interage com o
mesmo através dos atuadores e sensores nele colocados. As tarefas executadas no seu espaço de trabalho são
controladas por computador, sendo sua principal característica a ligação inteligente entre a perceção e a ação.
Entende-se como inteligência a capacidade do robô de se adaptar às mudanças que ocorrem no seu ambiente de
trabalho.
Os robôs móveis são robôs dotados de um sistema de locomoção que os torna capazes de navegar, através do seu
ambiente de trabalho, interagindo com este ambiente na realização de tarefas pelo uso de recursos próprios de
recolha de informação e tomada de decisão.
O robô desenvolvido para esta prova baseia se nos conceitos acima referidos, e foi criado devido à união entre os
robôs controlados via Bluetooth e a utilização de sensores, nomeadamente o sensor ultrassónico utilizado para
detetar e desviar se dos obstáculos.
A utilização de robôs autónomos em ambientes industriais é cada vez mais frequente, podendo os mesmos
desempenhar inúmeras funções de forma autónoma, reduzindo os custos e recursos humanos para a empresa e o
seu reduzido custo de manutenção torna os cada vez mais apelativos para as empresas.
O robô AGV da Seat (figura 6) funciona como um exemplo da evolução da robótica industrial num espectro de
anos. Com este projeto, a Seat melhora a sua eficiência e avança com o objetivo de tornar Martorell uma fábrica
mais inteligente através da “Internet of Things”, em ambientes industriais onde a automação e a digitalização de
processos são essenciais. Nos últimos anos, a Seat aplicou inovações tecnológicas em todo o seu ciclo de
produção, como os próprios AGV, integrados na linha de produção para o transporte de peças, o uso de drones
para entrega urgente de peças e robots colaborativos que, combinados com uma gestão de dados mais eficiente,
graças ao uso de inteligência artificial, “big data” e “blockchain”, permite processos mais eficazes, flexíveis e
ágeis.” [1]
Durante a Segunda Guerra Mundial o primeiro robô móvel surge como o resultado de avanços técnicos
em campos de pesquisa relativamente novos como ciência da computação e cibernética. Eles eram na
sua maioria bombas voadoras. Como exemplos temos as bombas inteligentes que detonam apenas a uma
1939
determinada distância do alvo, o uso de sistemas de guiagem e o controle por radar. Os foguetes V1 e
V2 possuíam um "autopiloto" primitivo e sistemas de detonação automáticos. Estes foram os
predecessores dos mísseis de cruzeiro.
O seguidor de traços de Stanford foi um robô móvel capaz de seguir uma linha branca, utilizando uma
câmara. Era ligado via rádio a um mainframe que realizava o processamento necessário. Por volta da
mesma época (1966-1972), o Instituto de Pesquisa de Stanford estava a construir e a realizar pesquisas
1970
no Shakey, um robô que recebeu o seu nome devido à sua movimentação brusca. O Shakey detinha uma
câmara, um detetor de distância, sensores de toque e um link de rádio. Foi o primeiro robô capaz de
analisar as suas ações.
O interesse do público nos robôs aumenta, resultando em robôs que poderiam ser utilizados para uso
doméstico. Estes robôs eram voltados para o entretenimento ou educação. Alguns dos exemplos incluem
1980
o RB5X, que ainda existe, e a série HERO. O seguidor de linha de Stanford é agora capaz de navegar
entre obstáculos e fazer mapas de seu ambiente.
Os robôs Dante I e Dante II são desenvolvidos pela Universidade Carnegie Mellon. Ambos são robôs
1994
com membros utilizados para explorar vulcões ativos.
Em março a empresa Boston Dynamics exibe a nova geração do BigDog - um robô militar em
2008
desenvolvimento.
Após a conclusão do protótipo, o código da programação foi alterado e reformulado, bem como a estrutura e as
ligações entre os componentes. Foi também adquirido um módulo para efetuar o carregamento das baterias LI-ION
(Lythium Ion) 18650.
Comunicação UART:
O Arduino permite a utilização de inúmeras interfaces de comunicação. Graças a estas, os projetos
desenvolvidos podem comunicar com outros sistemas, sensores, antenas ou com o computador. [2]
O seu princípio de funcionamento baseia-se no envio série de uma sequência de bits, que são
transformados em informação. Um conjunto de dados (data frame) é transmitido da seguinte forma:
A transmissão começa com o start bit, marcado como BS na figura. É sempre um bit que é zero lógico. Depois,
dependendo da configuração, existem 7, 8 ou 9 data bits (marcados de B0-B7) que são as informações a ser
enviadas. O stop bit (indicado como BK) é um bit um lógico.
Para que a transmissão funcione corretamente, deve ser definida a mesma velocidade de transferência de dados
em ambos os sistemas – conhecida como baud-rate ou taxa de transmissão. Esta especifica o número de bits
transmitidos por segundo. O valor utilizado neste projeto foi de 9.600 bits/s.
Como por exemplo, na fase de testes foi efetuada uma ligação entre o Arduino e uma antena Bluetooth HC-05, e
foi montado segundo o seguinte esquema:
A comunicação Bluetooth é um padrão global de comunicação sem fios e com um baixo consumo de energia,
que permite a transmissão de dados entre dispositivos. No entanto, os diapositivos têm de estar próximos entre
eles, num raio não superior a 10 metros. O Bluetooth é um elo entre o hardware e o software e permite que este
procedimento ocorra entre os mais variados tipos de aparelhos. A transmissão de dados é efetuada por ondas de
radiofrequência, que permite que um dispositivo detete o outro independentemente das suas posições, sendo
necessário apenas que ambos estejam dentro do limite de proximidade de 10 metros.
Para que seja possível atender aos mais variados tipos de dispositivos, o alcance máximo do Bluetooth foi
dividido em três classes:
Módulo HC-05:
O módulo HC-05 é um módulo que permite a comunicação entre o Arduíno com um diapositivo através de
Bluetooth. O módulo Bluetooth HC-05 é usado para a comunicação wireless entre o Arduíno e outro dispositivo
com Bluetooth, como, por exemplo, um smartphone utilizado neste projeto como comando.
As informações recebidas pelo módulo são enviadas ao Arduíno via porta série Pinos. O alcance do módulo é
igual ao alcance da comunicação Bluetooth, que é de aproximadamente 10 metros, dependendo do meio
envolvente.
Este módulo pode funcionar em modo master e slave, ou seja, permite que outros dispositivos se conectem a ele
e permite que ele próprio se conecte a outros dispositivos Bluetooth.
O módulo possui cinco pinos: VCC (alimentação de 3,6 V a 5 V), GND, RX e TX, o RX e o TX são usados para
comunicação com o microcontrolador, via porta série e o Enable e o Key utilizados para acionar os comandos AT
(AT commands).
Arduino IDE:
O Arduíno Integrated Development Environment (IDE) é uma aplicação multiplataforma escrita em Java. É
esquematizado para introduzir a programação com o desenvolvimento de software. Inclui um editor de código com
recursos de realce de sintaxe, parênteses correspondentes e identificação automática, sendo capaz de compilar e
carregar programas para a placa com um único clique. Nas placas replicadas é necessário selecionar a placa e o
microcontrolador para compilar e carregar os códigos e utilizar drivers adicionais, caso necessário.
PinMode() - Configura o pino especificado para funcionar como uma entrada ou saída.
void setup() {
pinMode(13, OUTPUT); // configura o pino digital 13 como saída
}
digitalWrite() - Aciona um valor HIGH ou LOW em um pino digital. Se o pino for configurado como saída (OUTPUT)
com a função pinMode(), sua tensão será acionada para o valor correspondente: 5V para o valor HIGH, 0V (ou ground)
para LOW.
void loop() {
digitalWrite(13, HIGH); // ativa o pino digital 13
delay(1000); // espera por um segundo
digitalWrite(13, LOW); // desativa o pino digital 13
delay(1000); // espera por um segundo
}
digitalRead() - Lê o valor de um pino digital especificado, que pode ser HIGH ou LOW.
void loop() {
val = digitalRead(inPin); // lê o pino de entrada
digitalWrite(ledPin, val); // aciona o LED com o valor lido do botão
}
Funções pré-definidas:
void setup() – A função setup() é chamada quando se inicia um sketch. Utiliza-se para inicialr variáveis, configurar o
modo dos pinos (INPUT ou OUTPUT), inicializar bibliotecas, etc. A função setup() será executada apenas uma vez, apoós
a placa ser alimentada ou acontecer um reset.
void setup() {
// Inicializa a porta serial
Serial.begin(9600);
// configura o pino 3 como INPUT
pinMode(buttonPin, INPUT);
}
void loop() {
if (digitalRead(buttonPin) == HIGH) {
Serial.write('H');
}
else {
Serial.write('L');
}
delay(1000);
}
Ciclos de repetição:
for - O comando for é usado para repetir um bloco de código envolvido por chaves. Um contador de incremento é
geralmente utilizado para terminar o loop. O comando for é útil para qualquer operação repetitiva, e é usado
frequentemente com vetores para operar em coleções de dados ou pinos.
while - Um loop while irá repetir se continuamente, e infinitamente, até a expressão dentro dos parênteses (), se torne falsa.
Algo deve mudar a variável testada, ou o loop while nunca irá terminar.
while (condição) {
// código a ser executado repetidamente
}
Decisão:
IF – O comando if funciona com uma condição e executa-se o comando a seguir ou um bloco de comandos delimitados por
chaves, se a condição é verdadeira ('true').
if (condição) {
//comando(s)
}
IF/ELSE – A combinação if…else permite um maior controlo sobre o fluxo de código que o comando mais básico if, por
permitir que testes sejam agrupados em conjuntos. Uma cláusula else (se presente) será executada se a condição do
comando if resulte em false.
if (condição1) {
// faz coisa A
}
else if (condição2) {
// faz coisa B
}
else {
// faz coisa C
}
24 PROVA DE APTIDÃO PROFISSIONAL – Nirav TM18 | YOUR RC
switch/case – Tal como o comando if, o comando switch case controla o fluxo do programa permitindo ao programador
especificar um código diferente para ser executado em várias condições. Em particular, um comando switch compara o
valor de uma variável aos valores especificados nos comandos case. Quando um comando case é encontrado cujo valor é
igual ao da variável, o código para esse comando case é executado.
A palavra-chave break interrompe o comando switch, e é tipicamente usada no final de cada case. Sem um comando
break, o comando switch irá continuar a executar as expressões seguintes (desnecessariamente) até encontrar um break, ou
até o final do comando switch ser alcançado.
switch (var) {
case valor1:
// comando(s)
break;
case valor2:
// comando(s)
break;
default:
// comando(s)
break;
}
Outros comandos:
AnalogRead - Lê o valor de um pino analógico especificado. A placa Arduino possui um conversor analógico-digital 10 bts
de 6 canais (8 canais nos Mini e Nano, 16 no Mega, 7 canais em placas MKR). Isso significa que este irá mapear tensões
entre 0 e a tensão operacional (5V or 3.3V) para valores inteiros entre 0 e 1023. No Arduino UNO, por exemplo, isso
permite uma resolução entre leituras de: 5 volts / 1024 unidades, ou .0049 volts (4.9 mV) por unidade.
analogRead(pino)
AnalogWrite - Aciona uma onda PWM num pino. Pode ser usada para variar o brilho de um LED ou acionar um
motor a diversas velocidades. Após a função analogWrite() ser chamada, no pino haverá uma onda quadrada
com o duty cycle (ciclo de trabalho) especificado até a próxima chamada de analogWrite() (ou uma chamada de
digitalRead() ou digitalWrite() no mesmo pino). A frequência do sinal PWM na maioria dos pinos é
aproximadamente 490 Hz. No Uno, os pinos 5 e 6 usam uma frequência de aproximadamente 980 Hz.
analogWrite(pino, valor)
setup() – Inserida no inicio, na qual pode ser usada para inicializar configuração;
loop() – Chamada para repetir um bloco de comandos ou esperar até que seja desligada.
Este software revelou se essencial para a realização desta prova pois, sem ele não seria possível desenhar e
conceber a estrutura do carro e seria necessário utilizar outra plataforma afiliada do Fusion360, como por exemplo
o AutoCAD que é uma plataforma dirigida a arquitetos e utilizada mais em design de estruturas e planeamento das
mesmas.
Comandos base:
Line – permite desenhar uma ou mais linhas para criar um desenho 2D;
Extrude – permite efetuar a extrusão do desenho 2D, de modo a ter um desenho 3D;
Trim – permite cortar as linhas desenhadas de modo a ter um desenho sem excessos;
Rectangle – permite criar um retângulo ou quadrado;
Circle - permite criar um círculo;
Push-Pull – similar ao comando extrude, permitindo aumentar ou diminuir desenhos 3D existentes.
O MIT APP inventor é uma das ferramentas mais fáceis de utilizar para que alguém com o mínimo
conhecimento de programação possa criar uma aplicação. Esta ferramenta faculta um editor de interface gráfico
PROVA DE APTIDÃO PROFISSIONAL – Nirav TM18 | YOUR RC
27
através do simples "arrasto" de componentes, como é o caso de botões, labels, recursos, listas entre outros.
Figura 16 - Interface do software MIT APP inventor
O MIT APP inventor foi uma das primeiras plataformas a ser explorada no início desta prova devido à elevada
importância que revelou ser para este projeto e foi uma das áreas onde revelava mais dificuldades. Antes iniciar a
construção do protótipo, a aplicação foi a primeira parte a ser concluída e foi alvo de testes utilizando um projeto
disponível na escola.
Figura 17 - Aplicação
desenvolvida
Easy EDA:
29 PROVA DE APTIDÃO PROFISSIONAL – Nirav TM18 | YOUR RC
O Easy EDA (Electronic Design Automation) é uma ferramenta de design e desenvolvimento de placas de
Figura 19 - Interface Easy EDA
O fabrico da placa foi auxiliado pelo Professor Sérgio e pelo conteúdo lecionado no módulo de fabrico de placas
de circuito impresso.
A impressão 3D:
A impressão 3D é um conjunto de tecnologias de fabricação aditiva, em vez de subtrativa, em que o modelo é
obtido, por deposição de camadas sucessivas de material a partir de um modelo digital 3D criado num software. [3]
Existem vários tipos de processos aditivos de metais, como Sinterização Seletiva a Laser (SLS), Sinterização de
Metal Direta por Laser (DMLS), Sinterização Seletiva de Metais (SLM). No caso mais comum, o processo SLS, a
impressão 3D é feita seletivamente por sinterização, formando uma massa sólida de material pelo calor, sem
chegar à liquefação. A principal vantagem do processo SLS é a precisão e a sua alta capacidade para reproduzir
geometrias complexas. As peças obtidas por este processo possuem boas características mecânicas. Este processo
pode usar uma grande variedade de materiais que são:
Plástico PLA – Um dos materiais mais utilizados no mundo da impressão 3D por ter excelente custo
benefício e durabilidade.
Plástico ABS – Assim como o PLA, o ABS é um material bastante popular. Apresenta boa resistência
mecânica e térmica, sendo bastante utilizado em protótipos.
Plástico PET – Material translúcido, rígido, bem leve e com grande resistência a impactos. Bastante usado
para testes de forma em protótipos por conta da translucidez.
A impressora utilizada para produzir as peças da prova foi a Ender 5 (figura 19) desenvolvida pela Creality, em
Shenzen, na China. A impressora em si não ocupa muito espaço, o que a torna altamente eficaz e apetecível para o
mercado. Possui uma mesa de impressão de 22x22cm e tem algumas características que a tornam única,
nomeadamente a capacidade de resumir a impressão em caso de falta de energia, a sua relação custo-benefício e o
seu ruido de 55db.
As peças necessárias para a estrutura da prova foram desenhadas no Fusion 360, como referido no 4º capítulo e o
processo de impressão efetua-se da seguinte forma:
7º capítulo – Motores DC
Nesta prova foram utilizados motores DC com redutores para controlo do carro e um servo motor para executar
Os servomotores são dispositivos de alta qualidade e excelente para as suas necessidades, seja em
aeromodelismo ou em projetos de robótica com microcontroladores. Os servomotores são utilizados em várias
aplicações quando se deseja movimentar algum objeto de forma precisa e controlada.
Servo motores:
Circuito de controlo – Normalmente formado por circuitos integrados e geralmente composto por um
oscilador e um por um controle PID (Controlo Proporcional Integrativo e Derivativo) que recebe um sinal
do potenciómetro (posição do eixo) e o sinal de controle aciona o motor no sentido necessário para
posicionar o eixo na posição desejada.
Potenciómetro – É um potenciómetro acoplado ao eixo do servo. A qualidade do potenciómetro interfere
na precisão, estabilidade e vida útil do servo motor.
Sistema de Acionamento – O sistema de acionamento é constituído por um motor DC (corrente contínua).
Engrenagens – Reduzem a rotação do motor, transferem mais torque (binário) ao eixo principal de saída e
movimentam o potenciómetro junto com o eixo. O torque do servo motor utilizado na prova varia de
1.2Kg/cm a 2Kg/cm.
Potenciómetro
Motor DC
Circuito
integrado
Torque:
O torque é uma medida de força que se pode aplicar a um objeto a girar ao redor de um eixo. Assim como a
força, que faz um objeto acelerar em cinemática linear, o torque faz com que um objeto adquira aceleração
angular.
O torque é uma grandeza vetorial. O sentido do vetor torque depende do sentido da força no eixo. O torque
derivado do servo motor SG90 utilizado nesta prova varia de 1.2Kg/cm a 2.0Kg dependendo da tensão aplicada no
mesmo.
Motor DC:
Um motor CC (motor de corrente contínua), é uma máquina capaz de converter energia elétrica em energia
mecânica.
A base do funcionamento de um motor CC está assente nas interações entre os seus polos. Ao fazer passar
corrente pela bobina/ímanes que se encontram agarrados ao estator cria-se um campo indutor. O rotor contém uma
bobina na sua constituição, cuja passagem de corrente nos seus enrolamentos cria um campo magnético. Desta
35forma, a interação entre os campos magnéticos do rotor
PROVA DEestator
e do APTIDÃO PROFISSIONAL
origina o movimento –doNirav [3] | YOUR RC
TM18
motor.
Figura 30 - Representação interna de um
motor DC
Voltagem: 3-6VDC
Corrente: 0.3A a 1A
Rpm: 100rpm
Torque: 1 kg/cm
Motor DC
Durante a realização desta prova, foram efetuados inúmeros testes relativos ao funcionamento dos motores. No
teste abaixo representado, foi elaborado um código de programação com o objetivo de controlar um motor DC
com um potenciómetro e observar a sua forma de onda no valor mínimo e máximo de rotação, abaixo
representada.
Controlo PWM:
O controlo PWM ou Pulse Width Modulation (modulação por largura de impulso), é um controlo mais preciso,
permite um controlo de baixa velocidade com precisão, e uma eficiência energética acima dos 90%.
O método de controlo PWM consiste em ligar e desligar uma carga, neste caso o motor, a uma frequência fixa
através de um comutador, fazendo com que seja aplicada no motor uma tensão média proporcional à relação entre
o intervalo de tempo em que o comutador está fechado (Ton), e o período da frequência de comutação (T). A esta
relação dá-se o nome de Duty Cycle (D).
void loop(){
pinoanalog();
}
Com o objetivo de poder controlar os motores de uma forma eficiente e facilitar o desenvolvimento do código da
programação, o circuito do carro foi dimensionado utilizando o Shield L293D que nada mais é do que uma ponte
em H similar ao L298N, e possui algumas vantagens extra que o L298N não possui, tais como:
O chip L293D possui internamente duas Pontes em H e suporta uma corrente de saída de até 600mA por canal,
ou seja, será possível controlar até 2 motores com 600mA cada, visto que neste shield temos 2 chips. A tensão
suportada de 4,5 a 36V.
Principais características:
Entradas dos
motores 1 e 2 Ponte em H
L293D
2 canais para os
servo motores
Ligação de
alimentação
externa
Ligação com os
pinos analógicos Ligação com os
e de alimentação pinos digitais
Ponte em H
Shift register L293D
Entrada dos
motores 3 e 4
Figura 37 - Shield L293D
Funcionamento do L293D:
O Circuito Integrado L293D é um CI fácil de se encontrar e que possui uma grande eficiência no controlo de
motores. Através dos seus dois circuitos denominados de Ponte em H, este possibilita o controlo de dois motores
simultaneamente através de um sinal externo gerado por um microcontrolador como o Arduino.
Fundamentalmente, a Ponte H é constituída por quatro chaves de contacto e uma fonte de alimentação. Cada
uma destas consegue controlar um Motor DC e o seu respetivo sentido de rotação, demonstrado no esquema
abaixo representado.
Figura 40 - CI L293D
Além dos pinos de alimentação, temos os pinos Enable 1 e 2 que fornecem a velocidade dos motores e estão
associados ao Arduino, os pinos Output 1, 2, 3 e 4 utilizados para a ligação dos motores e os pinos Input 1, 2, 3 e 4
utilizados para realizar o controlo do sentido de rotação dos motores através de um microcontrolador como o
Arduino.
O Motor Shield integra também um CI 74HC595 que é um registador de deslocamento que proporciona uma
saída paralela de 8 bits através de uma entrada digital, entrada essa que constitui três pinos, clock, latch e data.
Figura 41 - CI 74HC595
1. Arduino;
2. Circuito integrado L293D 1;
3. Circuito integrado 74HC59 (shift register);
4. Circuito integrado L293D 2;
5. Array de resistências;
6. Circuito de iluminação de funcionamento;
7. Ligação dos pinos do Arduino para o shield.
PCB desenvolvida:
Conforme abordado no capítulo dos programas desenvolvidos, o shield controlador dos motores foi replicado e
adaptado
42 consoante a necessidade para a realização PROVA
deste projeto, e o desenvolvimento
DE APTIDÃO PROFISSIONAL da –mesma foi efetuada
Nirav TM18 | YOUR naRC
plataforma EasyEDA. A placa consiste em 2 layers (camadas) e foi criada para facilitar as ligações eletrónicas do
Figura 43 – Desenvolvimento físico do shield
Findo o processo de soldadura do shield, colocam se os circuitos integrados nos seus respetivos suportes e
procede-se à limpeza do mesmo com álcool isopropílico para retirar a sujidade deixada pelo processo de soldadura
e do fluxo de solda.
Como melhoria futura, tenho como objetivo melhorar o dimensionamento da placa e utilizar componentes SMD
(surface mount device) para economizar o espaço na placa, bem como utilizar um layout mais simplificado.
Arduino Uno:
Um microcontrolador é um pequeno computador incorporado num único circuito integrado no qual contem um
núcleo processador, memória e periféricos programáveis de entrada e saída. A memória de programação pode ser
RAM que, muitas vezes, é incluída no chip.
A Plataforma Arduíno é baseada numa plataforma open source, criada por Massimo Banzi e David Cuartielles,
projetada para a realização de projetos de prototipagem eletrónica de hardware e software. A marca Arduíno
disponibiliza no total treze modelos (Arduíno Uno; Arduíno Mega; Arduíno Leonardo; Arduíno Diecemilnove;
Arduíno Nano; Arduíno Diecimila; Arduíno Mini; Arduíno Extreme; Arduíno BT; Arduíno NG; Arduíno NG Plus;
LilyPad Arduíno; Serial Arduíno, etc.). Pode ser usado para o desenvolvimento de objetos interativos
independentes, ou ainda para ser conectado a um computador host (hospedeiro).
O microcontrolador Arduino escolhido para a realização deste projeto foi o Arduino UNO, devido à sua
compatibilidade com o motor shield, apresentado no 7º capítulo. Este possui 13 pinos digitais que podem ser
saídas ou entradas (dos 6 podem ser usados como saídas PWM), 8 entradas analógicas, um cristal oscilador de 16
MHz, um conector USB e um botão que serve para reiniciar o microcontrolador e uma memória de 32Kbytes.
Comunicação do Arduino:
Entradas e saídas do Arduino:
Programação do Arduino:
O um
Cada Arduino
dos 14Uno pode
pinos ser programado
digitais do Uno podem comseroutilizados
software como
Arduino
uma(download).
entrada ou umaSimplesmente selecionea-se
saída, utilizando-se as
"Arduino Uno" no menu Tools > Board.
funções pinMode(), digitalWrite(), e digitalRead(). Eles operam a 5V. Cada pino pode fornecer ou receber um
O ATmega328
máximo no Arduino
de 40mA e tem Unopull-up
um resistor vem pré-gravado com um bootloader
interno (desconectado quedelhe
por padrão) permite enviar um código novo
20-50kΩ.
sem
O Unoa utilização de umanalógicas,
tem 6 entradas programador de hardware
etiquetadas externo.
de A0 Ele comunica
a A5, cada uma tem 10utilizando o protocolo
bits de resolução original
(i.e. STK500
1024 valores
(referência, arquivos C header).
diferentes). Por padrão, elas medem de 0 a 5V, embora seja possível alterar o limite superior utilizando o pino
AREF e a função analogReference().
O HC-SR04 é um Sensor de Distância composto por um emissor e um recetor, com capacidade de medir
distâncias de ~2cm até ~4m, com uma precisão de aproximadamente 3mm. Este sensor emite sinais ultrassónicos
que refletem no objeto a ser atingido e retornam ao sensor, indicando a distância do alvo.
A velocidade do sinal ultrassónico emitida pelo Sensor HC-SR04 corresponde à velocidade do som, que é de
aproximadamente 340 m/s, assim, se o sensor estiver a uma distância x do objeto, o sinal percorrerá uma distância
equivalente a 2x, ou seja, a onda é enviada pelo sensor e rebatida no obstáculo, logo ela percorre 2 vezes a
distância procurada.
Por exemplo, se o objeto estiver a 10cm de distância, e se a velocidade do som for de 340 m/s ou 0.034 cm/µs a
onda ultrassónica terá de viajar durante 294 u segundos. A distância é calculada através da seguinte fórmula:
t × 0.034
d= e o seu funcionamento baseia-se no seguinte esquema:
2
Programas desenvolvidos:
Neste capítulo será demonstrada a conceção da aplicação Bluetooth na plataforma MIT App Inventor e serão
demonstrados os seguintes testes e experiências efetuadas:
Aplicação Android;
Acionamento dos motores via APP.
A aplicação para o funcionamento do projeto “Your RC” tem como principal objetivo enviar caracteres, de
maneira a que seja possível deslocar o robot nas principais direções como frente, trás, esquerda e direita.
A primeira fase desta aplicação consiste no desenvolvimento de um aspeto visual. Para tal, a programação no
MIT App Inventor fornece duas opções de “Designer” e “Blocks”, onde é possível, personalizar ao gosto do
criador, o design da aplicação e definir o comportamento de cada um dos componentes que constituem a
aplicação.
No lado esquerdo da interface está representada uma aba que contem as várias pastas com elementos que são
possíveis de usar. Essas pastas têm vários elementos como botões, imagens, caixas de texto, sensores ou até
elementos de conectividade como o Bluetooth.
Para o desenvolvimento desta aplicação, foram necessários uma lista e cinco botões, a lista correspondendo à
ativação do Bluetooth, os primeiros quatro botões correspondem a realização dos movimentos para quatro direções
que são frente, trás esquerda e direita e o restante corresponde à conectividade Bluetooth.
Para além dos botões foi necessária a ferramenta “BluetoothClient” para estabelecer a ligação Bluetooth. Para
além da personalização da aplicação também é preciso definir o comportamento de cada um dos componentes que
constituem a aplicação. Coma já foi referido anteriormente, o MIT App Inventor detém outra área chamada
“Blocks” onde se pode definir o comportamento de cada um dos componentes.
Nessa mesma área existe uma fração onde estão explicitas todas as funcionalidades de cada componente que foi
escolhido e várias ferramentas para combinação desses componentes como por exemplo blocos de controlo, de
texto, de variáveis, entre outros.
Para a ligação do módulo Bluetooth funcionar corretamente com aplicação é preciso colocar os blocos de lista
“Bluetooth” e blocos de conectividade do “BluetoothClient”, ou seja, quando o botão de lista for pressionado, o
mesmo vai abrir uma lista dos todos módulos Bluetooth que já foram emparelhados ao telemóvel, ou seja, depois
de ter escolhido o Bluetooth que corresponde ao projeto a aplicação chama o respetivo “BluetoothClient” para
ligar ao módulo Bluetooth. A constituição dos blocos pode ser visualizada na figura 44.
De seguida será demonstrado o processo que é formado para que robot execute, por exemplo o deslocamento
para frente. Para este processo funcionar enquanto o botão for acionado é chamado o “BluetoothClient” que vai
enviar o caracter que foi predefinido na caixa de texto, como no meu caso é caracter representado pelo “F”.
Quando não existir o acionamento do botão, volta a chamar o “BluetoothClient” para enviar outro caracter, que no
meu caso é representado pelo caracter “S” para parar o carro.
Este processo é constituído por um conjunto de blocos chamados de “TouchDown”, quando existe o
acionamento do botão vai realizar o deslocamento de um efeito para frente, e o “TouchUp”, é utilizado quando não
existir o acionamento do botão. Esse processo também é repetido para as outras direções, apenas havendo uma
alteração do botão que será pressionado e alteração dos caracteres que vão ser enviados.
Botões de comando
Figura 53 - Representação da
aplicação
2ª fase – Controlo dos motores DC via Bluetooth com o shield L293D -Teste
Com o objetivo de testar o funcionamento dos motores via Bluetooth, foi criado um um código de programação
para o efeito que veio a ser implementado no protótipo desenvolvido na primeira fase da prova.
Este circuito tem como função de comandar o motor DC através de uma aplicação Android via Bluetooth,
carregando em botões colocados na aplicação.
Os botões têm associados caracteres, que no caso são o “F”, “B”, “L”,”R” e o “S”. Estes caracteres são enviados
via Bluetooth até ao Arduíno, a partir do momento que estes caracteres chegam ao Arduíno, ele converte-os em
funções pré-programadas.
De seguida procede-se a programação dos caracteres a serem recebidos. Os dados recebidos pela variável “char”
são organizados de forma a corresponderem a um “void” criado para direcionar os motores. Por exemplo, o
caracter “F” é recebido pela porta série, e vai acionar o “void frente()” que por sua vez vai colocar os motores a
andarem para a frente. Para tal, foi utilizado o comando switch/case e break, que funciona como o comando
IF/ELSE e tem com função controlar o fluxo do programa permitindo ao programador especificar um código
diferente para ser executado em várias condições. Em particular, um comando “switch” compara o valor de uma
variável aos valores especificados nos comandos “case”. Quando um comando “case” é detetado cujo valor é igual
ao da variável, o código para esse comando “case” é executado. A programação acima representada está integrada
no “void loop” que nada mais é do que um comando que é executado infinitamente. Este processo repete-se para
as restantes variáveis.
Por último estão representados os “voids” correspondentes às direções que o carro pode ter. Cada “void” possui
uma direção única e exclusiva que pode ser acionada pelo caracter recebido na porta série. Abaixo está
representado o “void frente()” que coloca os quatro motores do carro a girarem no sentido anti-horário, de modo a
moverem o carro para a frente e coloca a velocidade a 255, correspondente ao nível máximo. O mesmo
procedimento é adotado para as restantes direções.
Figura 57 - Representação do
"void frente"
Para auxiliar a parte teórica acima representada, foi desenvolvido o seguinte fluxograma que representa o
funcionamento do código:
A Your RC vem reforçar a importâncias das PME no mercado nacional, tendo uma ferramenta para implementar
o produto (os kits) para o mercado nacional, fornecendo assim um produto inovador e low-cost para os amantes da
área da eletrónica e robótica.
Como complemento, também foi criado um manual de instruções de forma a facilitar o processo de montagem e
programação para os compradores, disponível em anexo.
O segundo passo consiste em montar os motores, com fios previamente soldados, na estrutura e passar os fios
para a placa superior através dos orifícios criados para o efeito. Por fim, monta-se as rodas e afixa-se a placa
inferior.
O terceiro passo consiste em montar o suporte das baterias, o Arduino UNO e colocar o shield acoplado ao
Arduino. Procede se também à ligação da parte da alimentação, através de um botão principal que vai ligar e
desligar a alimentação a todos os componentes eletrónicos.
De seguida, procede-se à montagem do suporte para o módulo Bluetooth na retaguarda do carro e à organização
das ligações na sua totalidade utilizando fita em espiral. A fase seguinte irá consistir em montar o suporte para o
servo motor e o sensor ultrassónico na frente do carro.
Por fim, coloca-se o suporte para o servo motor, que foi impresso previamente em 3D e coloca-se o sensor
ultrassónico no respetivo suporte. O último passo consiste em efetuar as respetivas ligações do servo motor e do
sensor ao Arduino e organizar as ligações usando fita em espiral.
Como o robot por si não se poderia ser considerado um kit, foi criado um carregador para as baterias 18650 de
iões de lítio, bem como a PCB que foi elaborada uma placa baseada no shield L293D com a função de controlar os
motores e as restantes ligações. Foi desenhada na plataforma EasyEDA e fabricada em Shenzen, na China, como
referido no capítulo dos motores DC.
Constituição do kit:
Conforme referido anteriormente, o kit é constituído pelo robot, pelo seu respetivo carregador das baterias e o
respetivo shield controlador dos motores. Numa seguinte fase, o kit também acompanhará a respetiva placa micro
controladora para substituir o Arduino UNO fornecido atualmente.
O kit inclui também os respetivos sensores, motores, rodas, fios e outros materiais para ser montado na integra
sem ser necessário adquirir mais materiais. O kit pode facilmente ser modificado, consoante as ideias do seu
aquiridor.
Sensor ultrassónico
Servo motor
Módulo Bluetooth HC-05
Leds
Motores DC
Shield L293D
Baterias 18650
O esquema acima demonstrado é uma simplificação do esquema de ligações implementado neste projeto. Desta
forma é possível interpretar mais facilmente as ligações dos variados componentes descritos anteriormente no 7º e
8º capítulo.
De seguida é declarado o servo pelo comando “Servo servo1”, que liga o servo motor diretamente ao
microcontrolador Arduino. Também são declarados os pinos referentes ao sensor ultrassónico (ECHO e
TRIGGER) através do comando “const” que converte os valores obtidos pelo sensor ultrassónico para números
apenas legíveis e o valor da mesma não pode ser modificado, e o comando “ int” que armazena os números obtidos
pelo sensor ultrassónico. De seguida, é declarada a variável “long” que corresponde ao armazenamento do
comando “duracao” e ao contrário da variável “int”, permite armazenar variáveis de 32 bits (4 bytes). Por último é
declarada
Apósa variável “char”das
a declaração quevariáveis
corresponde por comandos
e dos receção dosadicionais,
dados. procede-se à identificação dos motores DC
posicionados no shield L293D através do comando específico do mesmo. No comando, declara se o número do
motor e a frequência de funcionamento que varia de 1KHz a 64KHz. Adiciona se também uma variável “ char” que
é responsável pelo armazenamento dos caracteres recebidos da aplicação.
O passo seguinte consiste em criar um “void” para cada direção que o carro pode tomar e os procedimentos em
todas elas são idênticos. Em primeiro lugar definimos a velocidade dos motores 1,2,3 e 4 individualmente através
do comando “motor1.setSpeed(255)” e definimos o sentido de rotação dos motores, também individualmente
através da função motor1.run(direção), podendo a direção ser para a frente ou para trás (FORWARD ou
BACKWARD). Define se também a posição de rotação do servo motor de acordo com a direção pretendida
através da função “servo1.write(155)” e cria se uma função adicional que permite com que o carro possa parar e
andar para atrás na presença de um obstáculo, sendo isto possível através de uma condição elaborada com o
comando IF que é, na sua integra um comando que verifica uma condição e executa o comando a seguinte ou um
bloco de comandos delimitados por chaves, se a condição “distancia” for inferior ou igual a 30. O mesmo
processo repete se para as restantes direções.
Para imobilizar o carro, é efetuado um “void” similar ao acima representado, sem ter a condição da distância
pois, não é necessário e coloca-se o servo motor na sua posição inicial.
Como se pode contemplar através do fluxograma, existem 5 transições possíveis para efetuar uma função no
projeto. Se nenhuma dela se verificar, volta à posição de imobilização até haver uma receção de um comando
correspondente a cada uma das funções.
A empresa:
Criada em 2002, a Generis rapidamente se tornou uma empresa líder em Portugal no mercado de medicamentos
genéricos. Em 2006, adquire a sua primeira instalação fabril, com o objetivo de implementar uma estratégia de
crescimento sólida e sustentada. Hoje, a Generis® faz parte do Grupo Aurobindo, presente em mais de 20 países,
verticalmente integrado desde a I&D à comercialização. O Grupo detém 26 fábricas com os mais recentes
equipamentos e exporta para mais de 150 países.
Funções desempenhadas:
As principais funções desempenhadas foram:
Trabalhos efetuados:
Máquinas:
A máquina abaixo demonstrada é a Marchesini Integra e a sua função é embalar e empacotar blisters. No início
da linha é depositado o produto bruto (comprimidos ou cápsulas), que por sua vez é embalado num blister formado
64 PROVA DE APTIDÃO PROFISSIONAL – Nirav TM18 | YOUR RC
pela máquina através de processos térmicos e mecânicos. Mais adiante, os blisters formados são empacotados em
Aplicação do
Central de controlo alumínio e selagem
Entrada do produto do blister Saída do produto
da máquina Formação das
bruto final (caixa)
caixas e
empacotamento
Deposito do
produto bruto no
PVC formado em
blister
Além desta máquina, a Generis possui mais 5 máquinas de embalamento de comprimidos, cápsulas e saquetas.
Na área do fabrico, existem mais 8 máquinas que produzem comprimidos, pó de saquetas e efetuam o enchimento
de cápsulas. Dentro dessa área, também existem máquinas para efetuar o revestimento de comprimidos.
Desta forma, conclui-se o relatório da Prova de Aptidão Profissional, onde é possível concluir que os objetivos
definidos no início da prova foram concluídos, nomeadamente o funcionamento do carro e a adição do sensor
ultrassónico, a nível de programação e o desenvolvimento da estrutura a nível prático, bem como a criação do
respetivo kit. Figura 79 - Linha Marchesini
Integra
A nível de competências, adquiri conhecimentos de programação em C++, desenvolvimento, dimensionamento
de esquemas eletrónicos e desenho de placas de circuito impresso.
A nível de contratempos, foram detetados alguns erros que foi necessário corrigir, nomeadamente na
alimentação do shield L293D e a nível do módulo Bluetooth onde é necessário retirar os pinos TX e RX para
inserir o código na placa Arduino.
Foram também aplicados todos os conhecimentos adquiridos em sala de aula nos 3 anos do curso, bem como
todo o conteúdo lecionado nas aulas de Eletricidade e Eletrónica, Desenho Técnico, Aplicações de Mecatrónica e
Tecnologia Mecatrónica para fortalecer a qualidade do produto final.
Relativamente à formação em contexto de trabalho, resta dizer que foi uma das melhores experiências
profissionais que alguma vez tive. Obtive conhecimentos outrora totalmente desconhecidos para mim, por
exemplo, AVAC, infraestruturas, máquinas de fabrico e embalamento de comprimidos e cápsulas, entre outros.
65
Desenvolvi também laços com as pessoas com quem PROVA
tive aDEoportunidade
APTIDÃO PROFISSIONAL
de trabalhar e –que
Nirav TM18 | YOUR
dispuseram do seuRC
tempo para fazerem com que a minha formação fosse um êxito.
Referências
3 - Impressão 3D - https://tecnoblog.net/240402/como-funciona-impressora-3d/