Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

Prévia do material em texto

SÍLVIO PETROLI NETO
AMBIENTES COMPUTACIONAIS
86
Desenvolvimento de sistemas embarcados
4
UNIDADE 4
DESENVOLVIMENTO DE 
SISTEMAS EMBARCADOS
INTRODUÇÃO
O computador é uma máquina digital, que possui um hardware desenvolvido a partir 
dos princípios básicos de eletrônica e que pode ser programado, seguindo do nível mais 
baixo (mais próximo do hardware) até o nível mais alto (mais próximo do programador) 
de programação. Nessa unidade, serão trabalhados os conceitos necessários para o 
desenvolvimento de um hardware com função específica (sistema embarcado). Para 
isso, serão trabalhados os seguintes conceitos:
01. O que são registradores e como eles participam, efetivamente, da programação;
02. A programação de um processador, utilizando microprogramação e linguagem de baixo 
nível (Assembly);
03. Os princípios fundamentais da eletrônica, que deem subsídios para o desenvolvimento 
de um hardware com propósito específico;
04. As principais características de um microcontrolador e seu funcionamento básico;
05. O desenvolvimento de um protótipo, utilizando um Ambiente Integrado de Desenvolvimento. 
Ao utilizar esses conceitos pretende-se que sejam desenvolvidas as seguintes habilidades:
01. Compreender o uso dos registradores e sua importância na programação 
de microcontroladores;
02. Utilizar ambientes integrados de desenvolvimento na programação de baixo nível;
03. Utilizar prototipação na solução de problemas que integram hardware e software;
04. Desenvolver projeto que utilize programação de baixo nível no controle de hardware.
87
4
Ambientes computacionais
U
ni
ve
rs
id
ad
e 
S
ão
 F
ra
nc
is
co
Assim, a partir dos conceitos vistos nessa unidade, será possível desenvolver o protó-
tipo de um sistema embarcado, que realize uma tarefa específica e possa ser utilizado 
de forma independente a um computador. A partir do desenvolvimento desse protótipo é 
possível perceber, com maior amplitude, o funcionamento das máquinas digitais, de que 
forma são concebidas e como são controladas a partir de sua programação.
1. REGISTRADORES E LINGUAGEM DE BAIXO NÍVEL
Fisicamente, sabemos que o processador é um conjunto de transistores, interligados, 
capazes de executar o funcionamento de operações lógicas básicas, que definem, em 
conjunto, operações mais complexas, como as operações aritméticas, por exemplo.
Porém, para entender o funcionamento lógico de um processador e como ele pode ser 
programado, precisamos abstrair o modelo físico e definir um modelo lógico de um pro-
cessador. Isso quer dizer, esquecer por um momento toda a parte de circuito e definir o 
processador como um conjunto de registradores que podem ser manipulados para que os 
valores armazenados neles condizam com os resultados esperados de certas operações.
Tokheim (2013, p. 19) define registrador como:
Um registrador é um conjunto de células de memória arranjadas como um 
único dispositivo. Por exemplo, um registrador de 8 bits pode ser utilizado 
para armazenar informações que serão posteriormente utilizadas, ou o re-
gistrador pode ser projetado para manipular os dados, como no caso do 
registrador de deslocamento. Este último dispositivo pode modificar o conte-
údo dos dados, deslocando-os para a direita ou para a esquerda.
Ou seja, registradores são partes pequenas de memória, fisicamente encapsuladas junta-
mente ao processador, com fim de auxiliar diretamente as operações que o processador 
realiza durante a execução de tarefas. Ainda, os registradores possuem uma alta veloci-
dade de leitura e escrita quando comparada a qualquer outra memória do computador.
Pensando de forma hipotética, já que pensar em um processador real seria muito com-
plexo, os principais registradores podem ser definidos como mostrado na Figura 1, que 
exibe o esquema lógico de um processador, com seus principais registradores. Além 
disso, embora não mostrado na imagem, todos os registradores possuem ligações en-
tre eles, podendo haver transferência de dados de um registrador para outro.
Figura 01. Hierarquia de memória
Fonte: elaborada pelo autor.
88
Desenvolvimento de sistemas embarcados
4
Os principais registradores são, portanto:
 ` RI (Registrador de Instruções) – é o registrador responsável por indicar qual operação 
está em execução no momento;
 ` PC (Programm Counter) – é o registrador responsável por indicar qual o endereço de 
memória em que se encontra a próxima instrução a ser executada. É ele, portanto, quem 
indica o fluxo de execução;
 ` ACC (Acumulador) – é o registrador que participa de todas as operações aritméticas e 
lógicas, armazenando os resultados das operações e, muitas vezes, um dos operadores;
 ` REM (Registrador de Endereço de Memória) – é a interface do processador com o bar-
ramento de endereços da memória. É ele o responsável por armazenar o endereço de 
memória que deve ser lido ou o endereço de memória onde determinado dado deve ser 
armazenado, em operações de leitura e escrita da memória;
 ` RDM (Registrador de Dados de Memória) – de forma análoga ao registrador de endere-
ços, é a interface com o barramento de dados da memória. Em operações de leitura, é 
nele que o valor lido é armazenado e em operações de escrita é ele que contém o valor 
que deverá ser escrito na memória.
Para entender melhor o funcionamento de cada um desses registradores, é necessário 
que tenhamos a definição de um computador hipotético, para o qual possamos definir 
algumas características que nos possibilitem a programação dessa máquina. Para isso, 
será utilizado o computador hipotético Neander, que segundo Weber (2012, p. 80):
O computador hipotético Neander foi criado com intenções didáticas para 
permitir exercitar os conceitos básicos da arquitetura de Von Neumann. Ele 
foi inspirado no computador IAS, projetado por John Von Neumann, e visa 
facilitar ao aprendizado da programação em linguagem binária. Embora com 
dimensões reduzidas e muito primitivo para uso prático, ele é tão simples 
que você̂, sem muito esforço, pode programá-lo e projetá-lo.
Para definir o funcionamento do computador hipotético Neander, é preciso entender 
que ele possui as seguintes características:
 ` Registrador de dados (RDM) de 8 bits;
 ` Registrador de endereços (REM) de 8 bits;
 ` Os valores negativos são representados utilizando-se complemento B (inverte-se o valor 
bit a bit e soma-se 1);
 ` Um apontador de programa (PC) de 8 bits;
89
4
Ambientes computacionais
U
ni
ve
rs
id
ad
e 
S
ão
 F
ra
nc
is
co
A Tabela 1 mostra o conjunto de instruções possíveis para o computador hipotético Neander:
Tabela 01. Instruções do Computador Neander
 ` Um acumulador (ACC) de 8 bits;
 ` O endereçamento de memória acontece de forma direta (o valor físico da memória é indi-
cado como operador nas instruções);
 ` Todo operando é um endereço de memória, não havendo possibilidade de utilizar valores 
literais, ou seja, para somar dois números, por exemplo, é preciso que os números a se-
rem somados estejam armazenados na memória;
 ` Existe apenas um conjunto pequeno de instruções e elas podem possuir 0 (zero) ou 1 
(um) operador.
CÓDIGO INSTRUÇÃO COMENTÁRIO
0000 (0H) NOP nenhuma operação
0001 (1H) STA end armazena acumulador – (store)
0010 (2H) LDA end carrega acumulador – (load)
0011 (3H) ADD end Soma
0100 (4H) OR end “ou” lógico
0101 (5H) AND end “e” lógico
0110 (6H) NOT inverte (complementa) acumulador
1000 (8H) JMP end desvio incondicional – (jump)
1001 (9H) JN end desvio condicional – (jump on negative)
1010 (AH) JZ end desvio condicional – (jump on zero)
1111 (FH) HLT término de execução – (halt)
Fonte: elaborada pelo autor, baseado em Weber (2012, p. 82).
Ao conjunto de instruções que um processador é capaz de executar damos o nome de 
Assembly e, no caso do computador Neander, o Assembly é como mostrado na Tabela 
1. É possível perceber que a cada instrução existe um código binário associado e, para 
facilitar o entendimento, esse código está representado também em binário.
Além disso,está definida a instrução que cada código representa e qual operação ele é 
capaz de executar. Percebe-se que algumas instruções não possuem operandos, como 
é o caso da operação NOT (que inverte o valor do que estiver armazenado no acumu-
lador) e da instrução HLT (que indica o final do programa)
Nas instruções que possuem operandos, o operando é representado por end, que indi-
ca o endereço de memória em que se encontra o valor a ser considerado na operação. 
Além disso, operações que necessitem de mais de um operando, como é o caso da 
soma, um deles é sempre representado pelo próprio acumulador. No caso da soma 
90
Desenvolvimento de sistemas embarcados
4
(instrução ADD) por exemplo, uma instrução ADD 05 significa somar o valor atual do 
acumulador com o valor do endereço 05 da memória, armazenando o resultado da 
soma no próprio acumulador.
Perceba que o acumulador (registrador ACC) participa efetivamente de quase todas 
as operações, sendo o responsável pelo armazenamento de um dos operadores em 
muitos casos e sendo o responsável por armazenar o responsável por armazenar o 
resultado de todas as operações aritméticas e lógicas.
Como exemplo, suponha que se deseje fazer uma soma de dois valores quaisquer. Essa 
operação seria representada por Soma = A+B em uma linguagem de alto nível (forma como 
os seres humanos se comunicam). Porém, pensando em baixo nível (Assembly), se for 
utilizado o conjunto de instruções do computador hipotético Neander, essa operação é mais 
complexa, necessitando um volume maior de instruções, como mostrado no Código 1:
01. LDA 80
02. ADD 81
03. STA 82
04. HLT
Observa-se que, a operação que pode ser realizada em apenas uma linha usando alto 
nível, quando escrita em Assembly, necessita de 4 (quatro) linhas. Isso porque, antes de 
se efetuar a soma, um dos operandos (que se encontra previamente armazenado no en-
dereço 81 da memória) deve ser carregado até o acumulador (instrução LOAD). Com um 
dos operandos no acumulador, é possível executar a operação ADD, que, nesse caso, 
soma o conteúdo do acumulador ao conteúdo do endereço 81 da memória, armazenando 
o resultado previamente no próprio acumulador. A partir daí, a operação STR armazena o 
valor do acumulador no endereço 82 de memória e a instrução HLT termina o programa.
Embora mais complexa, é importante perceber que todo programa escrito em lingua-
gem de alto nível será convertido em baixo nível, em um processo conhecido como 
compilação. Isso é necessário porque existem inúmeras instruções de alto nível, porém, 
independente da linguagem, todas podem ser convertidas em uma determinada instru-
ção específica do assembly da máquina na qual o programa está executando e todas 
as instruções de máquina possuem um representante em binário. Assim, o programa 
do Código 1, usando-se a conversão de números binários e a representação de cada 
instrução em um código binário mostrada na Tabela 1, pode ser representado apenas 
em binário, como mostra o Código 2:
Código 1 - Operação de soma usando Assembly Neander
Fonte: elaborado pelo autor.
91
4
Ambientes computacionais
U
ni
ve
rs
id
ad
e 
S
ão
 F
ra
nc
is
co
01. 0010 01010000
02. 0011 01010001
03. 0001 01010010
04. 1111
Para realizar a conversão do código em binário, tudo o que se fez foi apenas converter 
as instruções, segundo valores já conhecidos e mostrados na Tabela 1 e converter os 
valores 80, 81 e 82 para binário.
01. REM<-PC
02. LEIA 
03. RI<-RDM
04. PC<-PC+[deslocamento])
05. Decodificar
06. REM<-(REM+1)
07. LEIA
08 .REM<-RDM
09. LEIA
10. ACC<-RDM
Com o código representado em baixo nível, conforme mostrado no Código 2, o com-
putador é capaz de executar as instruções que, basicamente, trata-se de manipular os 
valores dos registradores. Essa manipulação dos registradores é conhecida como mi-
croinstruções e elas são específicas para cada instrução assembly. Dessa forma, para 
cada instrução do computador, existe um conjunto de microinstruções pré-definidas. O 
Código 3 mostra como são as microinstruções da instrução LDA.
Código 2 - Operação de soma usando Assembly Neander em binário
Fonte: elaborado pelo autor.
Código 3 - Microinstruções para a instrução LDA
Fonte: elaborado pelo autor.
92
Desenvolvimento de sistemas embarcados
4
Orientando-se por essas microinstruções, é possível verificar que o primeiro passo é 
fazer a leitura da instrução que deve ser executada. Essa leitura da instrução é cha-
mada de busca (passos 01 a 03). Na linha 04, o apontador já passa a indicar qual é a 
próxima instrução a ser buscada. Na linha 05 é feita a decodificação da instrução, em 
que se descobre que a instrução a ser executada é a instrução LDA. E, a partir da linha 
06, os passos realizados são os que tem a finalidade de buscar o dado e armazená-lo 
no acumulador (objetivo da instrução LDA).
A intenção maior do capítulo 1 foi mostrar que o processamento se dá a partir da mani-
pulação de registradores, feito no nível de microinstruções (baixo nível), que representa 
diretamente as instruções do assembly de cada computador e que, por sua vez, conse-
gue representar as instruções das linguagens de programação de alto nível.
A partir do capítulo 2, serão trabalhados alguns conceitos visando o desenvolvimento de 
um protótipo de sistema embarcado, visando trabalhar de forma sucinta com eletrônica 
para montagem de um hardware mínimo que possa ser programado.
2. FUNCIONAMENTO BÁSICO DE ELETRÔNICA
As duas grandezas fundamentais da elétrica são a diferença de potencial, que é medida 
em Volt (V) e a corrente, que é medida em Ampère (A). 
Para Gussow (2009, p. 17):
Em virtude da força do seu campo eletrostático, uma carga elétrica é capaz 
de realizar trabalho ao deslocar uma outra carga por atracão ou repulsão. A 
capacidade de uma carga realizar trabalho é chamada de potencial. Quando 
uma carga for diferente da outra, haverá́ uma diferença de potencial entre elas.
E, ainda segundo Gussow (2009, p.17):
O movimento ou o fluxo de elétrons é chamado de corrente. Para se produzir 
a corrente, os elétrons devem se deslocar pelo efeito de uma diferença de 
potencial. A corrente é representada pela letra I. A unidade fundamental com 
que se mede a corrente é o Ampère (A).
Assim, a diferença de potencial entre dois pontos, que chamaremos de V e mediremos 
em Volt (V) causa um deslocamento dos elétrons através de um material condutor e, a 
esse deslocamento, daremos o nome de corrente, que representaremos por I e medire-
mos utilizando ampère (A).
Podemos fazer uma analogia do fluxo elétrico com o fluxo de fluido (HAMBLEY, 2016, 
p.4). Uma bateria se assemelha a uma bomba de água, produzindo um fluxo. O fluxo 
de líquido é análogo ao fluxo de elétrons (corrente) e os canos são como os fios, que 
conduzem esse fluxo e a diferença de potencial equivale à diferença de pressão. Assim, 
da mesma forma que uma diferença de pressão entre duas extremidades de um cano 
provocam o fluxo do líquido, a diferença de potencial gera a corrente.
Além disso, existe outra grandeza que surge da relação entre a diferença de potencial 
(tensão elétrica) e a corrente, que é a resistência. Da mesma forma que canos mais 
finos dificultam a passagem da água, fios mais finos apresentam uma resistência maior 
93
4
Ambientes computacionais
U
ni
ve
rs
id
ad
e 
S
ão
 F
ra
nc
is
co
à passagem da corrente. Para Gussow (2009, p. 51), “a resistência é a oposição ao 
fluxo da corrente. Para se aumentar a resistência de um circuito, são utilizados compo-
nentes elétricos denominados de resistores”. 
A resistência é medida em Ohm (Ω) e chamaremos os materiais que apresentam pouca 
resistência de materiais condutores e materiais que apresentam muita resistência à 
passagem da corrente de isolantes.
A unidade de medida da resistência é uma homenagem ao físico alemão Georg Simon 
Ohm, cuja primeira lei é mostrada na Equação 1:
.V R I=
Na Equação 1, V é a tensão de um sistema, R é a resistência e I a corrente. Então, é 
possível perceber quetensão, corrente e resistência estão diretamente ligadas. Quando 
se aumenta a corrente, a única forma de manter a mesma tensão é diminuindo-se a 
resistência e, ao se aumentar a tensão, a única forma de se manter a corrente estável 
é aumentando-se, também, a resistência.
Com a Lei de Ohm, é possível calcular tensão e corrente de um circuito, desde que se 
conheça a resistência, que depende exclusivamente do componente e/ou do material 
empregado.
Em alguns circuitos, podem existir mais de um componente resistivo. Nesses casos, 
eles podem estar agrupados de duas formas:
1. Resistências em série: a Figura 2 mostra um circuito desse tipo. Para esses casos, 
a resistência equivalente será a soma das resistências, como mostra a Equação 2.
Figura 02. Circuito com resistências em série
Fonte: elaborada pelo autor.
Equação 1 - Lei de Ohm
Fonte: elaborado pelo autor.
94
Desenvolvimento de sistemas embarcados
4
Para esses casos, a corrente é a mesma em todos as resistências e é calculada a partir 
da resistência equivalente, conforme mostra a Equação 3.
120 2
60eq
VI A
R
= = =
E a tensão em cada resistência é calculada utilizando-se o valor de cada resistência e 
a corrente do circuito, conforme mostra a Equação 4.
1 1. 20.2 40V R I V= = =
2 2. 30.2 60V R I V= = =
3 3. 10.2 20V R I V= = =
2. Resistências em paralelo: a Figura mostra um circuito desse tipo. Para esses ca-
sos, o inverso da resistência equivalente será a soma do inverso de cada resistência em 
paralelo como mostra a Equação 5.
Figura 03. Circuito com resistências em paralelo
Fonte: elaborada pelo autor.
1 2 3 20 30 10 60eqR R R R= + + = + + = Ω
Equação 2 - Resistência equivalente em série
Fonte: elaborado pelo autor.
Equação 3 - Cálculo corrente com resistores em série
Fonte: elaborado pelo autor.
Equação 4 - Cálculo das tensões das resistências em série
Fonte: elaborado pelo autor.
95
4
Ambientes computacionais
U
ni
ve
rs
id
ad
e 
S
ão
 F
ra
nc
is
co
e
1 1 1 1 1 1 1 10
1 2 3 60 30 20qR R R R
= + + = + + = Ω
Para esses casos, a tensão é a mesma em todos as resistências e a tensão do próprio 
circuito. Já a corrente em cada resistência é calculada utilizando-se o valor de cada 
resistência e a tensão do circuito, conforme mostra a Equação 6.
1201 2
1 60
VI A
R
= = =
1202 4
2 30
VI A
R
= = =
1203 6
3 20
VI A
R
= = =
Sabendo-se calcular a corrente e a tensão dos circuitos e, conhecendo os principais com-
ponentes eletrônicos, é possível construir protótipos de hardware que podem ser con-
trolados utilizando-se microcontroladores. Os principais componentes da eletrônica são:
Transistores
Um transistor é um componente semicondutor, permite a passagem de energia em 
determinadas situações que podem ser controladas. Eles são a base da computa-
ção, já que ele pode assumir valores ligado ou desligado de acordo com a operação 
que se deseja realizar.
Segundo Duarte (2017, p. 157):
O transistor bipolar foi criado no início dos anos 1950 para substituir a válvu-
la, que desenvolvia a mesma função do transistor, porém com um consumo 
de energia muito maior que o consumo desse novo componente.
A Figura 4 mostra como é um transistor. Verifique que ele possui 3 (três) conexões, duas 
usadas para ligação no circuito e uma de controle.
Equação 5 - Resistência equivalente em paralelo
Fonte: elaborado pelo autor.
Equação 6 - Cálculo das correntes das resistências em paralelo
Fonte: elaborado pelo autor.
96
Desenvolvimento de sistemas embarcados
4
Figura 04. Transistor
Fonte: 123RF. 
Resistores
Um resistor é um componente elétrico que possibilita o controle da resistência em um 
circuito. Com o uso do resistor adequado, é possível controlar o fluxo da corrente que é 
permitida em um determinado circuito. Para Duarte (2017, p. 7):
Em eletricidade, a oposição à passagem de corrente elétrica em um circuito 
é chamada de resistência elétrica (ou resistência) e sua unidade de medida 
é o ohm (Ω). Para que se possa controlar, externamente, o valor da corrente 
que circula em um circuito, é necessário inserir, nesse circuito, uma resistên-
cia de valor conhecido, adequada a cada caso.
Para tornar isso possível, faz-se uso de um componente elétrico, o resistor, 
que é construído com um valor específico de resistência, permitindo o ajuste 
da corrente em cada parte do circuito, de acordo com o desejado.
A Figura 5 mostra um desses componentes. Perceba que ele possui faixas coloridas. 
Essas faixas são utilizadas para indicar a resistência do componente. 
97
4
Ambientes computacionais
U
ni
ve
rs
id
ad
e 
S
ão
 F
ra
nc
is
co
Figura 05. Resistor
Fonte: 123RF. 
Cada faixa e cada cor tem um significado, que pode ser visto na Figura 6.
Figura 06. Tabela de cores - Resistor
Fonte: 123RF. 
98
Desenvolvimento de sistemas embarcados
4
Capacitores
Um capacitor funciona basicamente como uma bateria. Ele armazena energia em determina-
dos momentos e libera essa energia armazenada em outros, dependendo da necessidade.
Para Duarte (2017, p. 31):
O capacitor é um componente capaz de armazenar cargas elétricas. Fisi-
camente, pode ser construído, na sua forma mais simples, por duas pla-
cas metálicas, paralelas (armaduras) e separadas por um material isolante 
(dielétrico) [...].
A Figura 7 mostra diferentes tipos de capacitores cerâmicos usados atualmente.
Figura 07. Capacitor
Fonte: 123RF.
Diodos: são componentes elétricos capazes de permitir o fluxo da corrente elétrica ape-
nas em um determinado sentido. São muito uteis na fabricação de conversores analó-
gicos digitais, por exemplo.
Segundo Duarte (2017, p. 45):
O diodo é um componente eletrônico com dois eletrodos (daí a origem do 
seu nome: di-dois; odo-eletrodo), construído a partir de cristais de material 
semicondutor, capaz de permitir, ou não, a passagem de corrente elétrica, 
conforme o tipo de polarização a que está submetido.
A Figura 8 mostra a imagem de um diodo.
99
4
Ambientes computacionais
U
ni
ve
rs
id
ad
e 
S
ão
 F
ra
nc
is
co
Figura 08. Diodo
Fonte: 123RF.
Leds
Os leds (Light Emitter Diode) funcionam exatamente como os diodos, mas são diodos 
emissores de luz. Assim, são componentes eletrônicos muito uteis em circuitos, já que 
existem várias cores e podem ser controlados (acesos ou apagados) através de controle.
Segundo Duarte (2017, p. 135):
O LED emite luz colorida, de intensidade proporcional à corrente que passa 
por ele, quando submetido à polarização direta. Existem LEDs de diversas 
cores, formatos e tamanhos.
A Figura 9 mostra as principais cores de LEDs encontrados no mercado. 
Figura 09. LED
Fonte: 123RF. 
100
Desenvolvimento de sistemas embarcados
4
Cada cor possui tensão e corrente máximas permitidas de atuação, que podem ser 
vistas na Tabela 2:
Tabela 02. Tensão e corrente LED
COR DO LED TENSÃO (V) CORRENTE (mA)
Vermelho 1.8V a 2.0V 20mA
Amarelo 1.8V a 2.0V 20mA
Laranja 1.8V a 2.0V 20mA
Verde 2.0V a 2.5V 20mA
Azul 2.5V a 3.0V 20mA
Branco 2.5V a 3.0V 20mA
Fonte: elaborada pelo autor.
Além dos componentes apresentados, são comuns em circuitos microcontrolados a 
presença de sensores e atuadores.
Sensores são componentes capazes de captar alguma grandeza física e enviá-la para 
o microcontrolador, como é o caso dos sensores de temperatura, sensores de luminosi-
dade, sensores de proximidade etc.
Atuadores são componentes utilizados para realizar alguma ação a partir dos dados 
emitidos pelo microcontrolador. São exemplos de atuadores os motores, as chaves etc.
Com base nos conceitos vistos, é possível utilizar um microcontrolador, que pode ser 
programado para a realização de atividades diversas, e esse sistema pode ser embar-
cado em equipamentos, que podem ser controlados a partir deles.
3. MICROCONTROLADORES E SISTEMAS EMBARCADOS
Um microcontrolador nada mais é que um pequeno computador, que possui um proces-
sador, memória e um conjunto de pinos de entrada e saída. Sua função é receber dados 
pelos seus pinos de entrada, que podem ser acopladosa sensores de diversos tipos ou 
a teclados, por exemplo, processar esses dados de acordo com uma lógica pré-determi-
nada e emitir dados de saída a partir de pinos também destinados a esse fim. Os pinos 
de saída podem estar conectados a LEDs, atuadores e monitores que receberão essa 
informação e atuarão como resposta ao processamento efetuado.
Segundo Monk (2017, p. 2):
[...] um microcontrolador é um pequeno computador dentro de um chip. Além 
de conter todos os recursos que já estavam presentes nos primeiros compu-
tadores domésticos, um microcontrolador apresenta outras coisas. Ele con-
tém um processador, um ou dois quilobytes de memória RAM[NT] para guar-
dar dados, uns poucos quilobytes de memória EPROM[NT] ou de memória 
flash para armazenar os programas e ainda pinos de entrada e saída. Esses 
pinos de entrada/saída ligam o microcontrolador aos demais componentes 
dos circuitos que você está desenvolvendo.
101
4
Ambientes computacionais
U
ni
ve
rs
id
ad
e 
S
ão
 F
ra
nc
is
co
O intuito do estudo de um microcontrolador, nesse componente curricular, é possibili-
tar a construção de um protótipo, no qual possam ser empregadas técnicas de eletrô-
nica e depois programar esse hardware para efetivar a relação hardware e software 
na solução de problemas.
Será utilizado o Arduino como microcontrolador para os projetos. O Arduino é um 
microcontrolador de baixo custo, com bastante eficiência.
Figura 10. Placa do microcontrolador Arduino
Conector de 
Alimentação
Conexão USB / 
Alimentação
Pinos Digitais
Chave de 
RESET
Entradas 
Analógicas
Conectores de 
Alimentação externa
Microcontrolador
Fonte: elaborada pelo autor.
A Figura 10 mostra uma placa Arduino, modelo UNO. Nela, é possível ver os principais 
componentes da placa:
 ` Conector de alimentação: usado para ligar a placa a uma fonte de alimentação. A placa 
Arduino pode ser alimentada também pela conexão USB, enquanto estiver sendo progra-
mada e deve ser ligada a esse conector de alimentação depois da programação para se 
manter em funcionamento;
102
Desenvolvimento de sistemas embarcados
4
Além desses componentes principais, outro componente merece ser comentado: acima 
do microcontrolador encontra-se um componente prateado, ele é o oscilador, que for-
nece 16 milhões de ciclos por segundo, ou seja, é o responsável pela geração do clock 
do microcontrolador.
Atualmente, existem alguns modelos de placas Arduino, cada uma com uma caracterís-
tica específica. As principais comercializadas atualmente são:
 ` Microcontrolador: é o cérebro da placa. O microcontrolador contém o processador que 
controla todo o processo de execução de instruções, buscando, decodificando e execu-
tando cada uma das instruções que compõe o programa que está armazenado em sua 
memória. Por falar em memória, nesse mesmo CI (Circuito Integrado) estão encapsuladas 
as memórias, tanto a primária como a secundária;
 ` Conectores de alimentação externa: esses pinos são utilizados para alimentar compo-
nentes externos que estejam conectados ao Arduino. Eles fornecem pinos de aterramento 
(GND) e pinos de 5V e de 3.3V;
 ` Entradas analógicas: esses pinos são utilizados para conexão de sensores que for-
neçam valores analógicos, como é o caso de um sensor de temperatura, por exemplo. 
Apesar de terem a propriedade de entradas analógicas, esses pinos podem ser usados, 
também, como entrada e saída digital, caso seja necessário;
 ` Pinos Digitais: são utilizados para conexão de sensores e atuadores que funcionem de 
modo digital. Podem ser utilizados, tanto como entrada como saída (isso pode ser contro-
lado por software na hora da programação). Os pinos marcados com o símbolo ~ (3, 5, 6, 
9, 10 e 11) podem ser utilizados como saída analógica, através de um recurso conhecido 
como PWM (Pulse Width Modulation). Uma curiosidade é que o pino 13 está internamente 
conectado a um LED interno do Arduino (L), localizado logo em frente ao pino 13. Toda 
ação realizada com o pino 13 reflete nesse LED;
 ` Chave de RESET: essa chave é utilizada para resetar a placa, levando-a para as configu-
rações de fábrica. É utilizada em casos que se queira desistir da programação realizada;
 ` Conexão USB: tem duas funções e serve, tanto para fazer a conexão do equipamento 
com o computador que será responsável por transmitir a ela o programa quanto como 
alimentação da placa enquanto está conectada ao computador.
 ` UNO: é a mais conhecida e está representada na Figura 10. É bastante indicada para 
iniciantes pois possui uma boa capacidade de processamento e baixo custo;
 ` PRO Mini: é destinada a usuários avançados, que necessitam de alta capacidade de 
processamento e tamanho pequeno;
 ` FIO: é uma placa indicada para aplicações sem fio (wireless);
103
4
Ambientes computacionais
U
ni
ve
rs
id
ad
e 
S
ão
 F
ra
nc
is
co
Para funcionar, a placa Arduino deve ser programada. Essa programação pode ser 
realizada em linguagem C ou então através de programação em blocos. Utilizaremos, 
aqui, a programação em blocos. Qualquer que seja o modo de programação, ele deve 
ser realizado através de um ambiente de desenvolvimento, que deve ser instalado no 
computador. Nesse ambiente, o programa será elaborado e testado e, depois de pronto, 
carregado na placa através de uma interface USB.
4. DESENVOLVIMENTO EM ARDUINO
O Arduino possui um ambiente integrado de desenvolvimento próprio, em versões para 
Windows, Linux ou Mac. Nele, é possível escrever um programa, testá-lo e carregá-lo 
na placa Arduino através da conexão USB.
Porém, a fim de agilidade, trabalharemos com um ambiente de desenvolvimento on-li-
ne, o Tinkercad. É uma ferramenta on-line para desenvolvimento de modelos 3D 
 ` NANO: é utilizado para projetos que necessitam de uma placa bem compacta, 
com custo acessível;
 ` MICRO: principal característica é que tem uma conexão direta com o USB, sendo identifi-
cado pelo computador como um mouse ou teclado;
 ` LEONARDO: possui maior capacidade de processamento que a versão UNO e pode ser 
usado em projetos maiores, embora nãos seja indicado para iniciantes;
 ` MEGA: tem um tamanho maior, com a vantagens de possuir um número maior de pinos 
de entrada e saída;
 ` LILYPAD: utilizado para aplicações vestíveis (em equipamentos como roupa, relógio, óculos 
etc.). É bem pequeno e pode ser facilmente integrado a tecidos e outros materiais; 
 ` DUO: tem o mesmo tamanho e quantidade de portas do MEGA, mas possui um alto poder 
de processamento;
 ` YUN: é basicamente o mesmo que o LEONARDO, mas possui integração com wireless;
 ` ESPLORA: parece um controlador de um videogame e é utilizado para controlar o computador;
 ` ROBOT: vem com roda, alto falante, display, leitor de cartão e sua aplicação está direta-
mente ligada ao desenvolvimento de robôs;
 ` ETHERNET: esse modelo vem com conector RJ45, e pode ser ligado à rede com um cabo 
de rede comum;
 ` PRO: é um modelo destinado a projetos em produção e não protótipos. É mais robusto e 
menos suscetível a problemas de conexão;
 ` TER: é um computador completo, no qual é possível instalar um sistema operacional, 
por exemplo.
104
Desenvolvimento de sistemas embarcados
4
feitos em CAD e, também, um simulador de circuitos elétricos. A ferramenta é manti-
da pela Autodesk e, além de ser gratuita, é bem fácil de utilizar. É uma grande ferra-
menta para o aprendizado, já que não necessita que se adquira nenhum equipamento 
ou componente eletrônico. 
Link para baixar o ambiente integrado de desenvolvimento do Arduino: https://www.arduino.
cc/en/software. Acesso em: 25 mar. 2022.
Link de acesso ao Tinkercad: 
Faremos o desenvolvimento de nosso protótipo utilizando essa ferramenta. Para isso, 
primeiramente acesse o endereço do Tinkercad e clique em Entrar. Será apresentada 
a tela da Figura 11.
Figura 11. Login Tinkercad
Fonte: captura de tela realizada pelo autor.
Disponível em: https://www.tinkercad.com. Acesso em: 25 mar. 2022.
SAIBA MAIS
105
4
Ambientes computacionais
U
nive
rs
id
ad
e 
S
ão
 F
ra
nc
is
co
Clique em Personal Accounts e escolha entrar com o Google. Lembre-se de utilizar seu 
e-mail institucional para entrar usando a sua conta de e-mail da USF (que é uma conta 
Google). A partir daqui você já estará logado e pronto para utilizar a ferramenta. Nela, 
é possível criar projetos em 3D, blocos de código, circuitos etc. Escolha circuitos, como 
mostrado na Figura 12.
Figura 12. Tinkercad Circuitos
Fonte: captura de tela realizada pelo autor.
Agora, clique em “criar novo circuito” e será apresentada a tela da Figura 13. Nela, é 
possível alterar o nome do projeto, clicando no nome dele a atualizando. 
Figura 13. Tela para elaboração de circuito Tinkercad
Fonte: captura de tela realizada pelo autor.
106
Desenvolvimento de sistemas embarcados
4
Clique duas vezes sobre o nome atual (Brave Duup-Habbi) e altere para “Meu primeiro 
projeto’. Além disso, você pode ver uma lista de componentes, que estão organizados 
em componentes básicos, exclusivos para Arduino etc. Acima da lista de componentes, 
existem botões para programar o circuito (se for um circuito com Arduino), para iniciar 
a simulação (testar o funcionamento do circuito e é possível enviar o projeto para uma 
imagem ou um arquivo, por exemplo. 
Antes de desenvolver um protótipo, será necessário conhecer dois componentes princi-
pais do Tinkercad. O primeiro deles é a “Placa de ensaio pequena”, que está disponível 
na lista de componentes básicos. A Figura 14 mostra uma placa dessas. 
Figura 14. Placa de ensaio pequena
Fonte: captura de tela realizada pelo autor.
Utilizaremos essa placa para organizar nossos componentes e interligá-los. A linha in-
dicada por um + é utilizada para alimentar a placa. Todos os furos nessa linha estão in-
terligados e serão alimentados ao se ligar qualquer um deles a uma fonte de energia. O 
mesmo acontece com a linha indicada por um “-“, que será utilizada para aterramento. 
Já as linhas a, b, c, d, e são interligadas na vertical, ou seja, na coluna 1, a linha a está 
ligada com a linha b e a linha b com a linha c e a linha c com a linha d, e assim suces-
sivamente, porém não existe ligação entre a coluna 1 e a coluna 2. O mesmo acontece 
com as linhas f, g, h, i e j, que estão interligadas na coluna 1 e nas demais colunas, 
porém, cada coluna é independente e não há ligação entre elas.
Como exemplo, a Figura 15 mostra um circuito para acender um LED. Perceba que, 
além do LED, existe a necessidade de se ter uma fonte de energia e um resistor, para 
controlar a corrente e tensão no LED.
107
4
Ambientes computacionais
U
ni
ve
rs
id
ad
e 
S
ão
 F
ra
nc
is
co
Figura 15. Circuito para acender um LED
Fonte: elaborada pelo autor.
Como fonte de energia foi utilizada uma bateria de 9V. Percebam a ligação do terminal 
positivo da bateria na linha +, energizando-a e, de forma análoga, a ligação do terminal 
negativo com a linha – da placa. Foram utilizadas cores diferentes para os cabos por 
conta de melhor entendimento.
Além do LED é necessário utilizar também um resistor, para controlar a passagem de 
corrente sobre o LED. Como mostrado na Tabela 2, a corrente máxima para um LED 
vermelho é de 2mA, ou seja 0,02A. Com essa informação, e utilizando a Equação 1, 
obtém-se o valor da resistência, como mostrado na Equação 7.
9 2. 350
0,02
VV R I R
I
−
= =〉 = = = Ω
Sem o resistor, tensão e correntes seriam grandes o suficiente para queimar o LED, 
como mostrado na Figura 16.
Figura 16. LED queimado
Fonte: captura de tela realizada pelo autor.
Equação 7 - Cálculo de valor da resistência
Fonte: elaborado pelo autor.
108
Desenvolvimento de sistemas embarcados
4
Usando a placa Arduino, é possível controlar o LED, ligando-o a um determinado pino 
do Arduino e controlando esse pino para que o LED possa, piscar, aumentar e diminuir 
intensidade etc.
A Figura 17 mostra um circuito de controle de LED usando o Arduino. Nela, é possível 
perceber que o LED continua ligado a um resistor, só que agora o resistor pode ter um 
valor menor, de 150Ω. Isso acontece porque a tensão fornecida pelo pino do Arduino é 
de 5V, diferente dos 9V fornecidos pela bateria.
Figura 17. Arduino controlando LED
Fonte: captura de tela realizada pelo autor.
Se não for colocado o resistor, o Arduino tem um dispositivo de controle interno que vai 
adaptar a tensão e corrente ao consumo do dispositivo e ele deve continuar funcionando, 
mas o correto é prever a corrente máxima e ajustá-la com a utilização do resistor adequado.
Porém, ao simular o circuito da Figura 18, nada deve acontecer, já que o ponto 2, no 
qual o LED está ligado, ainda não está energizado. Esse processo de controle dos pinos 
é feito, no caso do Arduino, por programação. Clicando no botão código, será possível 
manipular o programa para que fique como o mostrado na Figura 28.
109
4
Ambientes computacionais
U
ni
ve
rs
id
ad
e 
S
ão
 F
ra
nc
is
co
Figura 18. Programa para piscar LED
Fonte: captura de tela realizada pelo autor.
Na Figura 28, o programa define o pino 2, que é o pino em que o LED está ligado como 
nível lógico ALTO (ligado), em seguida, aguarda 1s e define o pino 2 como nível BAIXO 
(desligado), o que apaga o LED, aguardando mais 1s. Isso faz com que o LED ligado 
ao pino 2 pisque em intervalos de 1s. Como todo programa do ARDUINO executa em 
loop, o LED ficará piscando enquanto o equipamento estiver ligado.
Agora, suponha que, em vez de apenas acender ou apagar o LED, o que desejamos 
é que seu brilho aumente até um determinado nível e depois diminua gradativamente 
até se apagar. Para isso, não precisamos alterar o circuito em si. Apenas alterando o 
programa, é possível obter esse novo modo de funcionamento do circuito, conforme 
mostrado na Figura 19.
Figura 19. Programa para esmaecer LED
Fonte: captura de tela realizada pelo autor.
110
Desenvolvimento de sistemas embarcados
4
Agora, foram colocados dois controles de contagem, um para cima (que conta de 0 a 255) 
e outro de contagem para baixo (que conta de 255 até 0). A cada valor da contagem, esse 
valor é transmitido ao LED, que agora está no pino 3. Houve a necessidade de se mudar o 
pino porque uma contagem não é um valor digital (alto e baixo), e sim um valor analógico. 
Então, deve-se usar um dos pinos de saída marcados com o símbolo “~”, que podem atu-
ar como pinos de saída analógica também. Esses pinos analógicos convertem uma faixa 
de valor em níveis de energia, sendo que 0 representa o menor valor (sem energia) e 255 
representa o maior valor (nível máximo = 5V). Mudando-se esses valores, o brilho do LED 
aumenta a medida que um valor maior é passado para o pino 3 e, da mesma forma, o 
brilho diminui a medida que menores valores são passados para o pino 3.
O Tnkercad traz diversos exemplos prontos de uso do Arduino controlando diversos 
componentes. A Figura 20 traz um exemplo pronto do Tinkercad que mostra o microcon-
trolador controlando um motor. 
Figura 20. Arduino controlando motor
Fonte: captura de tela realizada pelo autor.
O código desse exemplo pode ser visto na Figura 21. Perceba que ele também utiliza 
um pino de saída analógica (nesse caso o pino 9) e envia para esse pino valores de 0 
a 180, que representa quantos graus o motor deve girar. 
111
4
Ambientes computacionais
U
ni
ve
rs
id
ad
e 
S
ão
 F
ra
nc
is
co
Figura 21. Programa para controlar motor
Fonte: captura de tela realizada pelo autor.
O exemplo se assemelha muito ao mostrado na Figura 19, alterando-se apenas a faixa 
de valores, que no caso do LED era ade 0 a 255 para valores de 0 a 180 e, também, o 
comando, que era acender o LED e agora é girar o motor.
Assim, é possível perceber que, usando o Tinkercad, é possível fazer simulações bem 
reais do funcionamento do Arduino e de demais componentes eletrônicos, possibilitan-
do o desenvolvimento de protótipos de sistemas embarcados microcontrolados.
A partir dos exemplos mostrados, é possível pensar em projetos de automação indus-
trial, automação residencial,controles de entrada e saída de ambientes, controles de 
segurança, entre outros. 
112
Desenvolvimento de sistemas embarcados
4
OBJETO DE APRENDIZAGEM
CONCLUSÃO
O processador é, de forma básica, um conjunto de circuitos eletrônicos que podem ser 
programados utilizando linguagem de baixo nível. Sendo o computador, também, uma 
máquina de vários níveis, é possível que a programação seja feita em alto nível, e con-
vertida para a linguagem de baixo nível pelo próprio computador.
Porém, o entendimento de como funciona o hardware e da programação de baixo nível 
e suas microinstruções controladoras de valores dos registradores internos ajuda na 
compreensão da máquina em si e faz com que sua programação seja mais eficiente.
De forma análoga ao funcionamento do computador, os microcontroladores podem ser 
programados para controlar componentes eletrônicos, que vão desde sensores, que 
abastecem esses microcontroladores com dados de entrada, até atuadores que são 
controlados por esses microcontroladores para efetuar determinadas tarefas, interagin-
do com o meio em que estão inseridos.
A partir disso, são criados sistemas embarcados, que estão cada vez mais presentes 
em nosso cotidiano, controlando desde nossos carros e casas até mesmo nossas rou-
pas e assessórios.
Espera-se que esse estudo possa ter auxiliado na compreensão do computador e de 
como um software está intimamente ligado ao hardware, sempre na busca de melhorar 
o seu desempenho.
Fonte: adaptado do site https://miro.com/app/board/uXjVOSR2Izs=/?openNote. Acesso em 28/03/2022.
113
4
Ambientes computacionais
U
ni
ve
rs
id
ad
e 
S
ão
 F
ra
nc
is
co
REFERÊNCIAS BIBLIOGRÁFICAS
DUARTE, Marcelo de A. Eletrônica Analógica Básica. Barueri, SP: Grupo GEN, 2017. Disponível em: ht-
tps://integrada.minhabiblioteca.com.br/#/books/9788521633679/. Acesso em: 15 mar. 2022.
GUSSOW, Milton. Eletricidade Básica. [S. I.], Grupo A, 2009. Disponível em: https://integrada.minhabibliote-
ca.com.br/#/books/9788577804290/. Acesso em: 14 mar. 2022.
HAMBLEY, Allan R. Engenharia Elétrica - Princípios e Aplicações. 6. ed. Barueri, SP: Grupo GEN, 2016. 
Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788521633266/. Acesso em: 14 mar. 2022.
MONK, Simon. Programação com Arduino. [S. I.], Grupo A, 2017. Disponível em: https://integrada.minhabi-
blioteca.com.br/#/books/9788582604472/. Acesso em: 15 mar. 2022.
 
TOKHEIM, Roger. Fundamentos de Eletrônica Digital - V2. [S. I.], Grupo A, 2013. Disponível em: https://
integrada.minhabiblioteca.com.br/#/books/9788580551952/. Acesso em: 12 mar. 2022.
WEBER, Raul F. Fundamentos de Arquitetura de Computadores - V8 - UFRGS. [S. I.], Grupo A, 2012. 
Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788540701434/. Acesso em: 12 mar. 2022.

Mais conteúdos dessa disciplina