Apostila Arduino e Como Se Faz
Apostila Arduino e Como Se Faz
Apostila Arduino e Como Se Faz
WWW.ELETROGATE.COM 1
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Sumário
Sumário ......................................................................................................................................... 2
Parte I - Revisão de circuitos elétricos e componentes básicos.................................................. 3
Introdução ................................................................................................................................ 3
Revisão de circuitos elétricos ................................................................................................... 4
Carga e corrente elétrica ...................................................................................................... 5
Tensão elétrica...................................................................................................................... 5
Potência e energia ................................................................................................................ 6
Conversão de níveis lógicos e alimentação correta de circuitos ........................................ 6
Revisão de componentes eletrônicos ...................................................................................... 8
Resistores elétricos ............................................................................................................... 8
Capacitores ......................................................................................................................... 10
Parte II - Seção de Exemplos Práticos ........................................................................................ 15
Exemplo 1 - Usando potenciômetro para fazer leituras analógicas ................................. 15
Exemplo 2 - Divisor de tensão ............................................................................................ 18
Exemplo 3 - Entradas e saídas digitais - push-button + led............................................... 20
Exemplo 4 - Sensor de luz LDR ........................................................................................... 23
Exemplo 5 - Acionando o Micro Servo 9g SG90 TowerPro................................................ 26
Exemplo 6 - Sensor de temperatura NTC ........................................................................... 29
Exemplo 7 - Sensor Óptico Reflexivo TCRT5000 ................................................................ 33
Exemplo 8 - Sensor de Distância Ultrassônico HC-SR04 .................................................... 36
Exemplo 9 – Ponte H Dupla L298N..................................................................................... 41
Exemplo 10 – Kit Chassi 2 Rodas ........................................................................................ 51
Exemplo 11 – Kit Braço Robótico ....................................................................................... 64
Considerações finais ............................................................................................................... 67
WWW.ELETROGATE.COM 2
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Todos os conteúdos da Parte I são focados na apostila Arduino Robótica, tendo em vista
a utilização adequada dos componentes e da realização prática de montagens pelos
usuários. No entanto, recomenda-se a leitura das referências indicadas ao final de cada
seção para maior aprofundamento.
Algum conhecimento prévio é bem-vindo, mas não é necessário para utilização do kit.
Caso seja seu primeiro contato, nós recomendamos que antes de fazer as montagens
você leia esses três artigos do http://blog.eletrogate.com/
https://blog.eletrogate.com/o-que-e-arduino-para-que-serve-vantagens-e-
como-utilizar/
http://blog.eletrogate.com/programacao-arduino-parte-1/
http://blog.eletrogate.com/programacao-arduino-parte-2/
WWW.ELETROGATE.COM 3
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
A apostila Arduino Robótica, bem como todas as outras apostilas que tratam de Arduino
e eletrônica em geral, tem como conhecimento de base as teorias de circuitos elétricos
e de eletrônica analógica e digital.
Em todo circuito você vai ouvir falar das grandezas elétricas principais, assim, vamos
aprender o que é cada uma delas.
WWW.ELETROGATE.COM 4
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
A grandeza mais básica nos circuitos elétricos é a carga elétrica. Carga é a propriedade
elétrica das partículas atômicas que compõem a matéria, e é medida em Coulombs.
Sabemos da física elementar que a matéria é constituída de elétrons, prótons e neutros.
A carga elementar é a carga de 1 elétron, que é igual a 1,602 x10-19 C.
Do conceito de carga elétrica advém o conceito de corrente elétrica, que nada mais é do
que a taxa de variação da carga em relação ao tempo, ou seja, quando você tem um fluxo
de carga em um condutor, a quantidade de carga (Coulomb) que atravessa esse condutor
por unidade de tempo, é chamada de corrente elétrica. A medida utilizada para corrente
é o Ampére(A).
Aqui temos que fazer uma distinção importante. Existem corrente elétrica contínua e
alternada:
Com o Arduino UNO, lidamos como correntes elétricas contínuas, pois elas fluem sempre
em uma mesma direção. É diferente da corrente e tensão elétrica da tomada de sua casa,
que são alternadas.
Ou seja, os seus circuitos com Arduino UNO sempre serão alimentados com grandezas
contínuas (corrente e tensão contínuas).
Tensão elétrica
O mais comum é você ver apenas “tensão” nos artigos e exemplos com Arduino. Assim,
definindo formalmente o conceito: Tensão elétrica é a energia necessária para mover
uma unidade de carga através de um elemento, e é medida em Volts (V).
WWW.ELETROGATE.COM 5
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Potência e energia
A tensão e a corrente elétrica são duas grandezas básicas, e juntamente com a potência
e energia, são as grandezas que descrevem qualquer circuito elétrico ou eletrônico. A
potência é definida como a variação de energia (que pode estar sendo liberada ou
consumida) em função do tempo, e é medida em Watts (W). A potência está associada
ao calor que um componente está dissipando e a energia que ele consume.
Nós sabemos da vida prática que uma lâmpada de 100W consome mais energia do que
uma de 60 W. Ou seja, se ambas estiverem ligadas por 1 hora por exemplo, a lâmpada de
100W vai implicar numa conta de energia mais cara.
A potência se relaciona com a tensão e corrente pela seguinte equação:
P= V x I
Essa é a chamada potência instantânea. Com essa equação você saber qual a potência
dissipada em um resistor por exemplo, bastando que saiba a tensão nos terminais do
resistor e a corrente que flui por ele. O conceito de potência é importante pois muitos
hobbystas acabam não tendo noção de quais valores de resistência usar, ou mesmo saber
especificar componentes de forma adequada.
Um resistor de 33 ohms de potência igual a 1/4W, por exemplo, não pode ser ligado
diretamente em circuito de 5V, pois nesse caso a potência dissipada nele seria maior que
a que ele pode suportar.
Vamos voltar a esse assunto em breve, por ora, tenha em mente que é importante ter
uma noção da potência dissipada ou consumida pelos elementos de um circuito que você
vá montar.
Por fim, a energia elétrica é o somatório da potência elétrica durante todo o tempo em
que o circuito esteve em funcionamento. A energia é dada em Joules (J) ou Wh (watt-
hora). A unidade Wh é interessante pois mostra que a energia é calculada multiplicando-
se a potência pelo tempo (apenas para os casos em que a potência é constante).
Essa primeira parte é um pouco conceitual, mas é importante saber de onde vieram toda
a terminologia que você sempre vai ler nos manuais e artigos na internet. Na próxima
seção, vamos discutir os componentes básicos de circuito que compõem o Kit Arduino
Robótica.
Conversão de níveis lógicos e alimentação correta de circuitos
WWW.ELETROGATE.COM 6
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
É muito comum que hobbistas e projetistas em geral acabem por cometer alguns erros
de vez em quando. Na verdade, mesmo alguns artigos na internet e montagens
amplamente usadas muitas vezes acabam por não utilizar as melhores práticas de forma
rigorosa. Isso acontece muito no caso dos níveis lógicos dos sinais usados para interfacear
o Arduino com outros circuitos.
Isso significa que quando você quiser usar o seu Arduino UNO com um sensor ou CI que
trabalhe com 3.3V, é preciso fazer a adequação dos níveis de tensão, pois se você enviar
um sinal de 5V (saída do Arduino) em um circuito de 3.3V (CI ou sensor), você poderá
queimar o pino daquele componente.
Em geral, sempre que dois circuitos que trabalhem com níveis de tensão diferentes forem
conectados, é preciso fazer a conversão dos níveis lógicos. O mais comum é ter que
abaixar saídas de 5V para 3.3V. Subir os sinais de 3.3V para 5V na maioria das vezes não
é necessário pois o Arduino entende 3.3V como nível lógico alto, isto é, equivalente a 5V.
O divisor de tensão é a solução mais simples, mas usar um CI conversor é mais elegante
e é o ideal. O divisor de tensão consiste em dois resistores ligados em série (Z1 e Z2) , em
que o sinal de 5V é aplicado a o terminal de um deles. O terminal do segundo resistor é
ligado ao GND, e o ponto de conexão entre os dois resistores é a saída do divisor, cuja
tensão é dada pela seguinte relação:
WWW.ELETROGATE.COM 7
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Um divisor de tensão muito comum é fazer Z1 igual 330 ohms e Z2 igual 680 ohms. Dessa
forma a sáida Vout fica sendo 3.336 V. Como no Kit Arduino Robótica não há resistor de
680ohms, você pode ligar um de 330ohms como Z1 e dois de 330ohms como Z2. Os dois
de 330 ligados em série formam um resistor de 660 ohm, o que resulta numa saída de
3.33V.
Vamos exemplificar como fazer um divisor de tensão como esse na seção de exemplos
da parte II da apostila.
Resistores elétricos
WWW.ELETROGATE.COM 8
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
menor será a corrente elétrica que fluirá por ele e pelo condutor a ele conectada. A
unidade de resistência elétrica é o Ohm(Ω), que é a unidade usada para especificar o valor
dos resistores.
Os resistores mais comuns do mercado são construídos com fio de carbono e são
vendidos em várias especificações. Os resistores do Kit são os tradicionais de 1/4W e 10%
de tolerância. Isso significa que eles podem dissipar no máximo 1/4W (0,25 watts) e seu
valor de resistência pode variar em até 10%. O resistor de 1KΩ pode então ter um valor
mínimo de 900Ω e um valor máximo de 1100Ω.
Em algumas aplicações você pode precisar de resistores com precisão maior, como 5%
ou 1%. Em outros casos, pode precisar de resistores com potência maior, como 1/2W ou
menor, como 1/8W. Essas variações dependem da natureza de cada circuito.
Em geral, para as aplicações típicas e montagens de prototipagem que podem ser feitos
com o Kit Arduino Robótica, os resistores tradicionais de 1/4W e 10% de tolerância são
suficientes.
Outro ponto importante de se mencionar aqui é a Lei de Ohm, que relaciona as grandezas
de tensão, corrente e resistência elétrica. A lei é dada por:
V =R x I
Ou seja, se você sabe o valor de um resistor e a tensão aplicada nos seus terminais, você
pode calcular a corrente elétrica que fluirá por ele. Juntamente com a equação para
calcular potência elétrica, a lei de Ohm é importante para saber se os valores de corrente
e potência que os resistores de seu circuito estão operando estão adequados.
Para fechar, você deve estar se perguntando, como saber o valor de resistência de um
resistor? Você tem duas alternativas: Medir a resistência usando um multímetro ou
determinar o valor por meio do código de cores do resistor.
Se você pegar um dos resistores do seu kit, verá que ele possui algumas faixas coloridas
em seu corpo. Essas faixas são o código de cores do resistor. As duas primeiras faixas
dizem os dois primeiros algarismos decimais. A terceira faixa colorida indica o
multiplicador que devemos usar. E a última faixa, que fica um pouco mais afastada, indica
a tolerância.
WWW.ELETROGATE.COM 9
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Na figura 2 apresentamos o código de cores para resistores. Cada cor está associada a
um algarismo, um multiplicador e uma tolerância, conforme a tabela. Com a tabela você
pode determinar a resistência de um resistor sem ter que usar o multímetro.
Capacitores
Os capacitores são os elementos mais comuns nos circuitos eletrônicos depois dos
resistores. São elementos que armazenam energia na forma de campos elétricos. Um
WWW.ELETROGATE.COM 10
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
São usados para implementar filtros, estabilizar sinais de tensão, na construção de fontes
retificadores e várias outras aplicações.
O importante que você deve saber para utilizar o Kit é que os capacitores podem ser de
quatro tipos:
Eletrolíticos,
Cerâmicos,
Poliéster,
Tântalo.
Capacitor eletrolítico
WWW.ELETROGATE.COM 11
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Capacitores cerâmicos
Capacitores cerâmicos não possuem polaridade, e são caracterizados por seu tamanho
reduzido e por sua cor característica, um marrom claro um tanto fosco. Possuem
capacitância da ordem de pico Farad. Veja nas imagens abaixo um típico capacitor
cerâmico e sua identificação:
Diodos e Leds
Diodos e Leds são tratados ao mesmo tempo pois tratam na verdade do mesmo
componente. Diodos são elementos semicondutores que só permitem a passagem de
corrente elétrica em uma direção.
São constituídos de dois terminais, o Anodo (+) e o catodo (-), sendo que para que possa
conduzir corrente elétrica, é preciso conectar o Anodo na parte positiva do circuito, e o
Catodo na parte negativa. Do contrário, o diodo se comporta como um circuito aberto.
WWW.ELETROGATE.COM 12
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Na figura 4, você pode ver que o componente possui uma faixa indicadora do terminal
de catodo. O diodo do kit Arduino Robótica é um modelo tradicional e que está no
mercado há muitos anos, o 1N4007.
O LED é um tipo específico de diodo - Light Emitter Diode, ou seja, diodo emissor de luz.
Trata-se de um diodo que quando polarizado corretamente, emite luz para o ambiente
externo. O Kit Arduino BEGINNIG vem acompanhado de leds na cor vermelha, verde e
amarelo, as mais tradicionais.
Nesse ponto, é importante você saber que sempre deve ligar um led junto de um resistor,
para que a corrente elétrica que flua pelo led não seja excessiva e acabe por queimá-lo.
Além disso, lembre-se que por ser um diodo, o led só funciona se o Anodo estiver
conectado ao polo positivo do sinal de tensão.
Para identificar o Anodo do Led, basta identificar a perna mais longa do componente,
como na imagem abaixo:
WWW.ELETROGATE.COM 13
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Os sensores do Kit Arduino Robótica, quais sejam: Sensor de Luz LDR e sensor de temperatura
NTC, juntamente com o Micro Servo 9g SG90 TowerPro, também terão uma seção de exemplo
dedicada a cada um deles.
WWW.ELETROGATE.COM 14
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
O potenciômetro nada mais do que um resistor cujo valor de resistência pode ser
ajustado de forma manual. Existem potenciômetros slides e giratórios. Na figura abaixo
mostramos um potenciômetro giratório dos mais comumente encontrados no mercado.
Em ambos, ao variar a posição da chave manual, seja ela giratória ou slide, o valor da
resistência entre o terminal de saída e um dos outros terminais se altera. O símbolo do
potenciômetro é mostrado na seguinte imagem:
WWW.ELETROGATE.COM 15
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Arduino UNO;
Protoboard;
Potenciômetro 10K;
Jumpers de ligação;
WWW.ELETROGATE.COM 16
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Diagrama do circuito
Carregue o código abaixo no Arduino e você verá as leituras no Monitor serial da IDE
Arduino.
void setup()
{
Serial.begin(9600); // monitor serial - velocidade 9600 Bps
delay(100); // atraso de 100 milisegundos
}
void loop()
{
sensorValue = analogRead(sensorPin); // leitura da entrada analógica A0
voltage = sensorValue * (5.0 / 1024); // cálculo da tensão
WWW.ELETROGATE.COM 17
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Na função void Setup(), nós inicializamos o terminal serial com uma taxa de transmissão
de 9600 kbps. Na função void Loop(), primeiro faz-se a leitura da entrada analógica A0
com a função analogRead(SensorPin) e armazenamos a mesma na variável sensorValue.
Em seguida, aplicamos a fórmula para converter a leitura (que é um número entre 0 e
1023) para o valor de tensão correspondente. O resultado é armazenado na variável
Voltage e em seguido mostrado na interface serial da IDE Arduino.
Referência:
• https://www.arduino.cc/en/Tutorial/ReadAnalogVoltage
Esse exemplo é para ilustrar como usar um divisor de tensão. Sempre que você precisar
abaixar um sinal lógico de 5V para 3.3V você pode usar esse circuito. Explicamos o divisor
de tensão na seção de introdução, mais especificamente, quando conversamos sobre
conversão de níveis lógicos.
Esse circuito será útil sempre que você tiver que abaixar as saídas do Arduino de 5V para
3.3V.
Lista de materiais:
WWW.ELETROGATE.COM 18
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Diagrama do circuito:
Esse é um diagrama com dois divisores de tensão. O primeiro é composto por três
resistores, sendo cada um de 330. Assim, o resistor Z1 é de 330 e o resistor Z2 é a
associação série dos outros dois, resultando numa resistência de 660. Dessa forma, a
tensão de saída do divisor é:
O segundo divisor é formado por dois resistores de 1K, dessa forma, a tensão de saída é
a tensão de entrada dividida pela metade:
O código para o exemplo 2 é uma extensão do código usada na seção anterior para ler
valores de tensão do potenciômetro. Nesse caso, nós fazemos a leitura de dois canais
analógicos (A0 e A1), fazemos as conversões para as tensões e mostramos os resultados
de cada divisor na interface serial.
Referências:
• https://www.arduino.cc/en/Tutorial/ReadAnalogVoltage
• http://www.ufjf.br/fisica/files/2013/10/FIII-05-07-Divisor-de-tens%C3%A3o.pdf
• http://www.sofisica.com.br/conteudos/Eletromagnetismo/Eletrodinamica/assoc
iacaoderesistores.php
WWW.ELETROGATE.COM 19
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Carregue o código abaixo e observe os dois valores no Monitor Serial da IDE Arduino.
void setup()
{
Serial.begin(9600); // monitor serial - velocidade 9600 Bps
delay(100); // atraso de 100 milisegundos
}
void loop()
{
sensorValue1 = analogRead(sensorPin1); // leitura da entrada analógica A0
sensorValue2 = analogRead(sensorPin2); // leitura da entrada analógica A1
voltage1 = sensorValue1 * (5.0 / 1024); // cálculo da tensão 1
voltage2 = sensorValue2 * (5.0 / 1024); // cálculo da tensão 2
Serial.print("Tensao do divisor 1: "); // imprime no monitor serial
Serial.print(voltage1); // imprime a tensão 1
Serial.print(" Tensao do divisor 2: "); // imprime no monitor serial
Serial.println(voltage2); // imprime a tensão 2
delay(500); // atraso de 500 milisegundos
}
Esses dois componentes são trabalhados por meio das entradas e saídas digitais do
Arduino. Neste exemplo vamos fazer uma aplicação básica que você provavelmente vai
repetir muitas vezes. Vamos ler o estado de um push-button e usá-la para acender ou
apagar um led. Ou seja, sempre que o botão for acionado, vamos apagar ou acender o
Led.
Lista de materiais:
WWW.ELETROGATE.COM 20
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Esse pequeno código abaixo mostra como ler entradas digitais e com acionar as saídas
digitais. Na função void Setup(), é preciso configurar qual pino será usado como saída e
qual será usado como entrada.
Na função void Loop(), fizemos um if no qual a função digitalRead é usada para saber se
o pushButton está acionado ou não. Caso ele esteja acionado, nós acendemos o Led, caso
ele esteja desligado, nós desligamos o led.
WWW.ELETROGATE.COM 21
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
void setup()
{
pinMode(PinButton, INPUT); // configura D8 como entrada digital
pinMode(ledPin, OUTPUT); // configura D7 como saída digital
Serial.begin(9600); // monitor serial - velocidade 9600 Bps
delay(100); // atraso de 100 milisegundos
}
void loop()
{
if ( digitalRead(PinButton) == HIGH) // se chave = nivel alto
{
digitalWrite(ledPin, HIGH); // liga LED com 5V
Serial.print("Acendendo Led"); // imprime no monitor serial
}
else // senão chave = nivel baixo
{
Referências:
digitalWrite(ledPin, LOW); // desliga LED com 0V
Serial.print("Desligando led"); // imprime no monitor serial
}
https://www.arduino.cc/reference/en/language/functions/digital-io/digitalread/
delay(100); // atraso de 100 milisegundos
} https://www.arduino.cc/reference/en/language/functions/digital-io/digitalwrite/
WWW.ELETROGATE.COM 22
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Fotoresistor (LDR)
É importante considerar a potência máxima do sensor, que é de 100 mW. Ou seja, com
uma tensão de operação de 5V, a corrente máxima que pode passar por ele é 20 mA.
Felizmente, com 8K ohms (que medimos experimentalmente com o ambiente bem
iluminado), que é a resistência mínima, a corrente ainda está longe disso, sendo
0,625mA. Dessa forma, podemos interfacear o sensor diretamente com o Arduino.
*Nota: Nas suas medições, pode ser que você encontre um valor de resistência mínimo
diferente, pois depende da iluminação local.
Especificações do LDR:
Modelo: GL5528
Diâmetro: 5mm
Tensão máxima: 150VDC
Potência máxima: 100mW
WWW.ELETROGATE.COM 23
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Este sensor de luminosidade pode ser utilizado em projetos com Arduino e outros
microcontroladores para alarmes, automação residencial, sensores de presença e vários
outros.
Nesse exemplo, vamos usar uma entrada analógica do Arduino para ler a variação de
tensão no LDR e, consequentemente, saber como a luminosidade ambiente está se
comportando. Veja na especificação que com muita luz, a resistência fica em torno de
10-20 KΩ, enquanto no escuro pode chegar a 1MΩ.
LDR;
Resistor de 10k;
1 Arduino UNO;
Protoboard;
Jumpers de ligação;
Diagrama do circuito:
WWW.ELETROGATE.COM 24
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
void setup()
{
pinMode(ledPin, OUTPUT); // configura D13 como saída digital
Serial.begin(9600); // monitor serial - velocidade 9600 Bps
delay(100); // atraso de 100 milisegundos
}
void loop()
{
Leitura = analogRead(AnalogLDR); // leitura da tensão no pino analogico A0
VoltageLDR = Leitura * (5.0/1024); // calculo da tensão no LDR
Serial.print("Leitura sensor LDR = "); // imprime no monitor serial
Serial.println(VoltageLDR); // imprime a tensão do LDR
WWW.ELETROGATE.COM 25
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Nesse caso, definimos uma tensão de limiar, a partir da qual desligamos ou ligamos um
led para indicar que a intensidade da luz ultrapassou determinado valor. Esse limiar pode
ser ajustado por você para desligar o led em intensidades diferentes de luz ambiente.
É importante que o sensor esteja exposto à iluminação ambiente e não sofra interferência
de fontes luminosas próximas, mas que não sejam parte do ambiente.
Referências:
https://maker.pro/education/using-an-ldr-sensor-with-arduino-a-tutorial-for-beginners
http://blog.eletrogate.com/controle-de-luminosidade-com-arduino-e-sensor-ldr/
Ou seja, o servo motor é um atuador rotativo para controle de posição, que atua com
precisão e velocidade controlada em malha fechada. De acordo com a largura do pulso
aplicado no pino de controle PWM, a posição do rotor é definida (0 a 180 graus). Os
pulsos devem variar entre 0,5 ms e 2,5 ms.
WWW.ELETROGATE.COM 26
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
No caso dos servomotores digitais, mais caros e mais precisos, o controle da posição do
rotor utiliza um encoder digital.
A figura abaixo mostra um típico servo motor analógico. Trata-se do Micro Servo Tower
Pro SG90 9G que acompanha o kit Arduino Robótica.
Os Servos são acionados por meio de três fios, dois para alimentação e um
correspondente ao sinal de controle para determinar a posição. Em geral, os três fios
são:
• Marrom: GND,
• Vermelho: Alimentação positiva,
• Laranja: Sinal de controle PWM.
Lista de materiais:
Antes de mais nada, vamos separar os componentes que precisamos para montar o
servomotor junto com o Arduino. A nossa lista de componentes é a seguinte:
WWW.ELETROGATE.COM 27
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Diagrama do circuito:
void setup()
{
myservo.attach(6); // configura pino D6 - controle do Servo
}
void loop()
{
val = analogRead(potpin); // leitura da tensão no pino A0
val = map(val, 0, 1023, 0, 179); // converte a leitura em números (0-179)
myservo.write(val); // controle PWM do servo
delay(15); // atraso de 15 milisegundos
}
WWW.ELETROGATE.COM 28
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Para atualizar a posição do servo a cada iteração do loop, nós chamamos o método
write() do objeto servomotor, passando como parâmetro o valor lido do potenciômetro
traduzido para a escala de 0-179. Assim, sempre que mexermos no potenciômetro, o
servo motor irá atuar e atualizar a sua posição.
Referências:
http://blog.eletrogate.com/servo-motor-para-aplicacoes-com-arduino/
http://blog.eletrogate.com/kit-braco-robotico-mdf-com-arduino/
https://www.arduino.cc/en/Tutorial/Knob
https://www.allaboutcircuits.com/projects/servo-motor-control-with-an-
arduino/
http://www.instructables.com/id/Arduino-Servo-Motors/
WWW.ELETROGATE.COM 29
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Assim, o princípio para medir o sinal de um termistor é o mesmo que usamos para medir
o sinal do LDR. Vamos medir na verdade, a queda de tensão provocada na resistência do
sensor.
O termistor que acompanha o kit é do tipo NTC, como o próprio nome diz. Esse é o tipo
mais comum do mercado.
O grande problema dos termistores é que é necessária fazer uma função de calibração,
pois a relação entre temperatura e resistência elétrica não é linear. Existe uma equação,
chamada equação de Steinhart-Hart que é usada para descrever essa relação (vide
referências).
O código que vamos usar nesse exemplo utiliza a equação de Steinhart-Hart conforme a
referência 1.
Lista de materiais:
WWW.ELETROGATE.COM 30
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Antes de mais nada, vamos separar os componentes que precisamos para montar o
NTC junto com o Arduino. A nossa lista de componentes é a seguinte:
Diagrama do circuito:
WWW.ELETROGATE.COM 31
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
void setup()
{
Serial.begin(9600); // monitor serial - velocidade 9600 Bps
beta = (log(RT1 / RT2)) / ((1 / T1) - (1 / T2)); // calculo de beta
Rinf = R0 * exp(-beta / T0); // calculo de Rinf
delay(100); // atraso de 100 milisegundos
}
void loop()
{
Vout = Vin * ((float)(analogRead(0)) / 1024.0); // calculo de V0 e leitura de A0
Rout = (Rt * Vout / (Vin - Vout)); // calculo de Rout
TempKelvin = (beta / log(Rout / Rinf)); // calculo da temp. em Kelvins
TempCelsius = TempKelvin - 273.15; // calculo da temp. em Celsius
Serial.print("Temperatura em Celsius: "); // imprime no monitor serial
Serial.print(TempCelsius); // imprime temperatura Celsius
Serial.print(" Temperatura em Kelvin: "); // imprime no monitor serial
Serial.println(TempKelvin); // imprime temperatura Kelvins
delay(500); // atraso de 500 milisegundos
}
WWW.ELETROGATE.COM 32
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
O sensor ótico reflexivo TCRT5000 é um dos mais populares para utilização em projetos
com Arduino. O sensor é fabricado pela Vishay, uma tradicional fabricante de
componentes eletrônicos. Recomendamos fortemente, a leitura do datasheet do sensor:
https://www.vishay.com/docs/83760/tcrt5000.pdf
Tensão direta do LED emissor é de 1,25 V com uma corrente máxima de 60 mA. A
corrente máxima do fototransistor é de 100 mA.
WWW.ELETROGATE.COM 33
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Lista de materiais:
Arduino UNO R3;
Protoboard;
Sensor TCRT5000;
Led vermelho 5mm;
Resistor de 330;
Resistor de 10K;
Jumpers para ligação no protoboard;
Diagrama de Circuito:
O terminal Anodo (A) positivo do LED infravermelho está ligado por meio de um resistor
de 330R ao VCC (5V) e o seu terminal catodo (K) negativo está ligado em GND. O Coletor
(C) do fototransistor está ligado ao resistor de 10K (que esta conectado no VCC) e
também na entrada digital D7 do Arduino. Essa entrada é que vamos usar para identificar
se o sensor percebeu algum objeto ou não. O Emissor (E) do fototransistor está ligado ao
GND.
O LED vermelho para indicação do Sensor, tem o terminal Anodo (A) positivo conectado
à um resistor de 330R que está conectado à porta digital D8 do Arduino. O terminal
catodo (K) negativo está ligado ao GND.
WWW.ELETROGATE.COM 34
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Código:
void setup()
void loop()
else // senão
O código para utilização do sensor TCRT5000 é bem simples. Com o circuito montado,
basta monitorar o estado do pino no qual a saída do sensor (coletor do fototransistor)
está ligada. Se esse pino estiver em nível baixo, é porque algum objeto está presente
dentro do raio de medição do sensor ( a luz infra-vermelha do LED esta sendo refletida).
Se o pino estiver em nível alto, então não há objeto nenhum no raio de medição do
sensor.
Nesse exemplo, a presença do sensor é identificada pelo acionamento de um led, ou
seja, sempre que um objeto for identificado pelo sensor, o led ficará aceso.
WWW.ELETROGATE.COM 35
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Referências:
http://blog.eletrogate.com/sensor-optico-tcrt5000-com-arduino/
http://www.instructables.com/id/Using-IR-Sensor-TCRT-5000-With-Arduino-
and-Program
WWW.ELETROGATE.COM 36
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Sensor HC-SR04
Por meio desse pulso de saída cujo tempo é igual a duração entre emissão e recepção,
nós calculamos a distância entre o sensor e o objeto/obstáculo, por meio da seguinte
equação:
(𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝐷𝐷çã𝑇𝑇𝑇𝑇𝑇𝑇𝐷𝐷𝐷𝐷𝐷𝐷𝐷𝐷𝑜𝑜𝑇𝑇𝑇𝑇𝐷𝐷𝐷𝐷í𝑇𝑇𝐷𝐷𝑑𝑑𝑑𝑑𝑇𝑇𝑜𝑜𝑇𝑇𝐷𝐷𝐷𝐷𝑇𝑇𝐷𝐷𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝐷𝐷𝑇𝑇𝑇𝑇)
𝐷𝐷𝐷𝐷𝐷𝐷𝐷𝐷𝐷𝐷𝐷𝐷𝐷𝐷𝐷𝐷𝐷𝐷 =
2
Repare que as unidades devem estar coerentes para o resultado da conta ser correto.
Assim, se a velocidade do som é dada em metros/segundo, o tempo de duração do sinal
de saída deve estar em segundos para que possamos encontrar a distância em metros.
Lista de Materiais:
Para este exemplo você vai usar os seguintes componentes:
WWW.ELETROGATE.COM 37
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Protoboard;
Jumpers de ligação;
Sensor ultrassônico HCSR-04
Diagrama de circuito:
A montagem é bem direta, basta interligar o sensor com o Arduino. Não há necessidade
de conversão de níveis lógicos ou ligação de componentes externos.
Código :
As variáveis declaradas são para determinar os pinos de trigger (pino 2) e de leitura do
sensor (pino 3). Temos três variáveis do tipo float utilizadas para medir o tempo do pulso
no output do sensor e calcular a distância. Na função void setup(), inicializamos o pino 2
como saída e o 3 com entrada. Além disso, configuramos a comunicação serial para 9600
de baud rate.
Na função void loop(), onde o programa será executado continuamente, executa-se três
passos básicos:
1. Enviar pulso de 10us para o pino de trigger do sensor. Isto é feito com a função
DisparaPulsoUltrassonico();
WWW.ELETROGATE.COM 38
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
void setup()
void loop()
WWW.ELETROGATE.COM 39
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
void DisparaPulsoUltrassonico()
Referências:
https://create.arduino.cc/projecthub/dusnoki/arduino-ultrasonic-sensor-hc-sr04-full-
build-and-code-73614d
http://blog.eletrogate.com/sensor-ultrassonico-hc-sr04-com-arduino/
WWW.ELETROGATE.COM 40
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Então, por meio de comutação de chaves, a ponte H consegue fazer com que um motor
gire nos dois sentidos. Como no módulo Ponte H L298N essa comutação não é feita de
forma física, existe um chip (L298N) embarcado na placa que faz essa comutação de
chaves de forma eletrônica, que é mais eficiente do que uma comutação mecânica.
As especificações do chip L298, que faz todo o controle da ponte H, pode ser conferido
clicando neste link: https://www.st.com/resource/en/datasheet/l298.pdf.
WWW.ELETROGATE.COM 41
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Abaixo será explicado com maiores detalhes como funciona a placa e como usar:
Vcc:
Este borne é responsável pela alimentação dos motores, com isso a tensão colocada
neste borne de Vcc será copiada para os motores. Por isso, muita atenção: Se você
possui um motor que opera somente até 12V, por exemplo, não alimente Vcc com mais
de 12V, pois danificará o motor.
• Observação: Esta placa possui um regulador de tensão do modelo 78m05, e a
tensão máxima dele é 35V, mas a margem segura para uso é abaixo de 20V,
sendo o recomendado 12V. Por isso, se for usar tensão de alimentação Vcc
acima de 12V, não use a porta VLogic para alimentar outros circuitos, e para
tensões acima de 20V, desative o regulador de tensão (como será demonstrado
WWW.ELETROGATE.COM 42
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
GND:
É o GND da placa, que deverá ser o mesmo GND do Arduino ou de outro
microcontrolador. Por isso, é importante interligar os GNDs sempre com fios. Serão
demonstrados na seção de exemplos.
Vlogic:
Este borne é responsável pela alimentação lógica da ponte H. O chip L298N presente na
placa recebe comandos do Arduino, e para ele conseguir operar os comandos e atuar
na saída ele precisa de operar como um componente lógico (como o Arduino), e para
isso precisa atuar em uma faixa bem restrita de tensão, que no caso é 4.5V a 7V. Como
foi dito a placa possui um regulador de tensão de 5V, que a função dele é justamente
fazer a regulação de Vcc para a alimentação lógica do chip em 5V. Por isso, se o
regulador estiver ativo, este pino Vlogic terá a tensão de 5V, pois, é a tensão presente
na saída do regulador.
É possível desativar o regulador de tensão e fazer a alimentação lógica do chip por
conta própria, através do borne Vlogic. Em algumas situações é necessário desativar o
regulador de tensão e fazer a alimentação lógica através de Vlogic, essas situações
serão abordadas e explicadas na seção de exemplos de uso da placa.
• Importante: Como dito, quando o regulador de tensão está ativo, a tensão
VLogic está sendo regulada em 5V automaticamente, logo, este borne terá 5V.
Essa tensão é para uso interno do chip e pode ser aproveitada para alimentar
algum circuito ou microcontrolador que use até 5V, com a limitação de corrente
de aproximadamente 200mA. Porém, se o regulador de tensão estiver acionado,
JAMAIS alimente este pino, pois causará danos a placa.
Regulador Vlogic:
Este jumper é responsável por ativar ou desativar o regulador de tensão da alimentação
de Vlogic. Quando o jumper está encaixado entre os terminais, o regulador de tensão
está ativado e a Vlogic como a ser regulado em 5V a partir da tensão de Vcc. Por isso, é
muito importante saber manusear esse jumper do regulador. Caso ficou dúvidas sobre
o funcionamento do regulador, releia a parte Vlogic.
Atv_A:
Este jumper é responsável por desativar ou ativar o motor A para ser controlado pelo
Arduino ou outra placa.
WWW.ELETROGATE.COM 43
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Este jumper funciona da seguinte forma: um dos terminais possui 5V (ou a tensão de
alimentação VLogic), e o outro terminal é o que vai para o chip L298N. A placa possui
um resistor de pull-down no outro resistor, o que significa que quando o jumper é solto,
o terminal ficará com nível lógico baixo, e o chip entenderá que é necessário desabilitar
o motor A. Mas quando o jumper é colocado entre os terminais, o 5V é ligado ao
terminal de sinal pelo jumper. Com isso, o sinal de nível alto é enviado ao chip L298n e
ele entende que os motores devem estar habilitados para os acionamentos.
Atv_B:
Este jumper é responsável por desativar ou ativar o motor B para ser controlado.
O funcionamento é exatamente idêntico ao jumper Atv_A.
Entradas:
As entradas de controle da placa possuem os pinos IN1, IN2, IN3 e IN4, sendo que a
entrada IN1 e IN2 são as entradas que controlam os bornes do motor A, e as entradas
IN3 e IN4 controlam os bornes do Motor B. Para controlar os motores, acione os pinos
da seguinte forma:
Motor A e Motor B:
Estes bornes são de fato onde os motores DC são conectados. A posição dos fios do
motor na conexão com o borne altera o sentido de rotação do motor. Se for invertido
os fios no borne, o sentido de rotação também é invertido no acionamento. Essa é uma
boa dica para alterar a rotação dos motores, caso estejam girando em um sentido não
desejado.
Perceba também, que como juntando o borne de Motor A e Motor B possuímos 4
conexões, podemos usar essa ponte para controlar 1 motor de passo. Se o motor for de
WWW.ELETROGATE.COM 44
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
A montagem a ser feita dependerá muito da tensão disponível, por isso, aqui será
abordado 4 tipos comuns de ligações que podem ser feitas:
Esta conexão é destinada para ser feita usando a própria alimentação do cabo USB, para
fins de testes ou alguma aplicação onde é importante testar o sistema constantemente
e precisa fazer mudanças no código. É importante que a conexão seja feita com o motor
sem carga e consumindo baixa corrente. Para isso, deve remover o jumper do regulador
de tensão e conectar os 5V do Arduino tanto em Vcc quanto em Vlogic. Fazendo a
conexão abaixo:
WWW.ELETROGATE.COM 45
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
6V de alimentação externa
Com um suporte de 4 pilhas AA, e usando pilhas alcalinas na montagem, temos um total
de 6V na alimentação da ponte H. A montagem é similar a anterior, mas com um
detalhe: O fio do suporte de pilhas não pode ser ligado diretamente ao pino 5V do
Arduino UNO, porque o microcontrolador Atmega 328P só suporta até 5,5V, então,
para contornar isso, usaremos um diodo na montagem. Este diodo tem a função de
WWW.ELETROGATE.COM 46
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
provocar uma queda de tensão de aproximadamente 0,7V em cima dele, e com isso, a
tensão no microcontrolador do Arduino seria de 5,3V, estando no intervalo de
operação.
Para uma margem ainda maior de segurança, insira dois diodos em série.
Para uma tensão externa entre 7V e 20V, é recomendado fazer uma alimentação
separada entre a ponte H e o Arduino, sendo que até 12V, você pode usar o borne
VLogic para alimentar alguns circuitos que necessitam de 5V e demandam baixa
corrente. Nesta montagem é necessário manter o jumper do regulador de tensão, já
que o circuito Vlogic será alimentado pela saída do regulador de tensão interno.
WWW.ELETROGATE.COM 47
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
É possível, em até 12V, fazer uma alimentação única entre o Arduino e a ponte H,
colocando a mesma tensão de 12V no pino de Vin do Arduino e no borne Vcc da ponte
H.
Para uma alimentação de 20V até 46V -que é o limite máximo - é extremamente
necessário remover o jumper do regulador de tensão. Este procedimento é necessário
porque este regulador só opera em uma margem segura abaixo de 20V, e acima disso
ele poderá sobreaquecer e danificar (principalmente acima de 35V). Logo, é necessário
remover o jumper e fazer a alimentação de Vlogic com o 5V do Arduino.
WWW.ELETROGATE.COM 48
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
WWW.ELETROGATE.COM 49
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
// Iremos fazer uma classe para facilitar o uso da ponte H L298N na manipulação dos motores na função
Setup e Loop.
class DCMotor {
int spd = 255, pin1, pin2;
public:
void Pinout(int in1, int in2){ // Pinout é o método para a declaração dos pinos que vão controlar
o objeto motor
pin1 = in1;
pin2 = in2;
pinMode(pin1, OUTPUT);
pinMode(pin2, OUTPUT);
}
void Speed(int in1){ // Speed é o método que irá ser responsável por regular a velocidade
spd = in1;
}
void Forward(){ // Forward é o método para fazer o motor girar para frente
analogWrite(pin1, spd);
digitalWrite(pin2, LOW);
}
void Backward(){ // Backward é o método para fazer o motor girar para trás
digitalWrite(pin1, LOW);
analogWrite(pin2, spd);
}
void Stop(){ // Stop é o metodo para fazer o motor ficar parado.
digitalWrite(pin1, LOW);
digitalWrite(pin2, LOW);
}
};
DCMotor Motor1, Motor2; // Criação de dois objetos motores, já que usaremos dois motores, e eles já
estão prontos para receber os comandos já configurados acima.
void setup() {
Motor1.Pinout(5,6); // Seleção dos pinos que cada motor usará, como descrito na classe.
Motor2.Pinout(9,10);
}
void loop() {
Motor1.Speed(200); // A velocidade do motor pode variar de 0 a 255, onde 255 é a velocidade máxima.
Motor2.Speed(200);
WWW.ELETROGATE.COM 50
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Lista de Materiais
WWW.ELETROGATE.COM 51
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
O primeiro passo é soldar os fios soltos aos terminais do motor (peça ajuda a um adulto,
caso você seja criança). Para isso, vamos soltar o motor de sua caixa de redução,
removendo a alça que une os dois
Após isso, retire-o e faça a ligação de fios aos terminais do motor com solda, e também
é recomendado passar um pouco de cola quente em cima da solda para evitar algum
curto ou contato indesejado.
WWW.ELETROGATE.COM 52
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Faça a solda para os dois motores. E depois, volte com os motores para as suas
respectivas caixas de redução (as caixas amarelas) e coloque a alça transparente, e
assim, os motores já estão prontos para serem usados.
Com o ferro de solda ainda ligado, solde a chave gangorra no suporte de pilhas, para
podermos desligar o carrinho e economizar energia. O procedimento será bem simples,
basta colocar a chave on/off no final do fio vermelho do suporte e soldar em um dos
dois terminais, e pegar um outro fio disponível (pode ser um jumper macho/macho que
veio junto ao kit) e soldar no outro fio. Se quiser também, uma possibilidade é cortar o
fio vermelho ao meio, descascar só um pouco cada ponta, e fazer como nos passos
anteriores; a desvantagem fica sendo a limitação será o limite para posicionar a chave
para desligar na montagem do carrinho.
WWW.ELETROGATE.COM 53
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Com tudo soldado, volte a montagem da estrutura do carrinho. Observe que a peça
maior do carrinho parece de madeira. Se trata de uma película protetora, pois a case é
de acrílico transparente. Se quiser deixar o seu carrinho mais estético, remova a película
marrom de ambos os lados, só puxando, como na imagem abaixo.
WWW.ELETROGATE.COM 54
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
WWW.ELETROGATE.COM 55
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
O próximo passo será a instalação da roda boba, e para isso precisaremos das seguintes
peças da imagem abaixo:
WWW.ELETROGATE.COM 56
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Onde iremos, inicialmente, fazer as conexões dos motores 1 e 2. Inicialmente não será
necessário preocupar a posição dos fios do motor no borne. Para instalar o motor, basta
WWW.ELETROGATE.COM 57
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
afrouxar com uma chave de fenda ou Philips o borne, encaixar o fio do motor e apertar.
Faça para os dois motores.
A montagem deve estar da seguinte forma:
Perceba pela foto acima que há um parafuso no módulo ponte H. Esse parafuso está
ligado com uma arruela ao chassi. Ela foi adicionada porque isso fará com que
possamos dispensar o uso de colas e o deixar bem fixo, mas se quiser, pode usar fita
dupla face para prender a ponte H ao chassi. Com a ponte H instalada e os motores
conectados, faremos a instalação do suporte de pilhas.
Coloque uma dupla face nas costas do suporte e então ele foi f na parte debaixo do
chassi, da seguinte forma:
WWW.ELETROGATE.COM 58
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
WWW.ELETROGATE.COM 59
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
O jumper colocado é para ser usado sendo colocado na porta GND do Arduino. Agora só
está faltando uma bateria de 9V, para fornecer energia ao Arduino. Essa alimentação
separada foi escolhida porque as 4 pilhas possuem uma disponibilidade de energia um
pouco baixa, e separando as alimentações fará que a durabilidade energética do robô
aumente.
Coloque uma fita dupla face na bateria de 9V e instale-a exatamente embaixo (no
chassi) do módulo ponte H. O resultado previsto é este:
A imagem abaixo demonstra em como deve estar a montagem do robô, se caso não
estiver, revise os outros passos.
WWW.ELETROGATE.COM 60
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Para melhorar um pouco a estética e facilitar o uso, a chave on/off foi instalada bem na
frente do carrinho, e colada com cola quente. Para isso foi preciso alongar um pouco
mais o fio.
Coloque um pouco de fita dupla face na parte inferior da placa Arduino e encaixe ela na
parte superior da placa, da seguinte forma:
WWW.ELETROGATE.COM 61
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Colocando a placa na parte central. As conexões da ponte H com o Arduino deverão ser
feitas da seguinte forma:
Observações:
- É extremamente importante que os GND estejam ligados juntos, isso significa
que temos que ligar o GND da ponte H com o GND do Arduino. (Estamos
fazendo isso com o jumper que foi colocado junto com o GND da bateria no
borne da ponte H. Esse GND foi ligado na porta GND do Arduino).
- Remova a alimentação da bateria de 9V ao colocar o cabo USB,.
WWW.ELETROGATE.COM 62
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
// Iremos fazer uma classe para facilitar o uso da ponte H L298N na manipulação dos motores na função
Setup e Loop.
class DCMotor {
int spd = 255, pin1, pin2;
public:
void Pinout(int in1, int in2){ // Pinout é o método para a declaração dos pinos que vão controlar
o objeto motor
pin1 = in1;
pin2 = in2;
pinMode(pin1, OUTPUT);
pinMode(pin2, OUTPUT);
}
void Speed(int in1){ // Speed é o método que irá ser responsável por regular a velocidade
spd = in1;
}
void Forward(){ // Forward é o método para fazer o motor girar para frente
analogWrite(pin1, spd);
digitalWrite(pin2, LOW);
}
void Backward(){ // Backward é o método para fazer o motor girar para trás
digitalWrite(pin1, LOW);
analogWrite(pin2, spd);
}
void Stop(){ // Stop é o metodo para fazer o motor ficar parado.
digitalWrite(pin1, LOW);
digitalWrite(pin2, LOW);
}
};
DCMotor Motor1, Motor2; // Criação de dois objetos motores, já que usaremos dois motores, e eles já
estão prontos para receber os comandos já configurados acima.
void setup() {
Motor1.Pinout(5,6); // Seleção dos pinos que cada motor usará, como descrito na classe.
Motor2.Pinout(10,11);
}
void loop() {
Motor1.Speed(200); // A velocidade do motor pode variar de 0 a 255, onde 255 é a velocidade máxima.
Motor2.Speed(200);
E com isso o robô deve ir para frente, para trás girar e parar, e repetir este ciclo. Altere
o código para gerar mais funções.
WWW.ELETROGATE.COM 63
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
WWW.ELETROGATE.COM 64
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Tome bastante cuidado ao montar e sempre deixe as articulações não muito apertadas
e nem muito frouxas, sempre com uma folga o suficiente para o braço deslizar da forma
correta.
Lista de Materiais:
Para este exemplo você vai usar os seguintes componentes:
Protoboard;
Jumpers de ligação;
4 micro servos 9G
4 potenciômetros
1 Arduino Uno
Diagrama de circuito:
Depois que o braço robótico estiver montado, faça essa montagem com os servos e os
potenciômetros.
WWW.ELETROGATE.COM 65
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Código :
Para entender o código, basta notar que primeiro definimos as portas analógicas em
que são ligados os potenciômetros, que nesse exemplo é A0, A1, A2 e A3.
Após isso são criados os objetos servos, para controlar cada parte do braço robótico, e
uma variável auxiliar para receber o valor dos pinos analógicos.
No loop, a gente lê o valor dos pinos analógicos e já converte esse valor para um ângulo
de 0 até 179°, e escreve esse valor no objeto servo, que irá mover o servo. E faz isso
para cada servo motor. Assim quando cada potenciômetro for girado, as articulações do
braço robótico irão mexer.
#define potpin1 0
#define potpin2 1
#define potpin3 2
#define potpin4 3
#include <Servo.h>
int val; // variable to read the value from the analog pin
void setup()
{
myservoBase.attach(5); //Associa cada objeto a um pino pwm
myservoGarra.attach(6);
myservoAltura.attach(9);
myservoProfundidade.attach(10);
}
void loop()
{
val = map(analogRead(potpin1), 0, 1023, 0, 179);
myservoBase.write(val);
delay(100);
}
WWW.ELETROGATE.COM 66
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Considerações finais
Essa apostila tem por objetivo apresentar alguns exemplos básicos sobre como utilizar os
componentes do Kit Arduino Robótica, a partir dos quais você pode combinar e fazer
projetos mais elaborados por sua própria conta.
Nas seções de referências de cada exemplo e nas referências finais, também tentamos
indicar boas fontes de conteúdo objetivo e com projetos interessantes. Sobre isso ponto,
que consideramos fundamental, gostaríamos de destacar algumas fontes de
conhecimento que se destacam por sua qualidade.
O fórum oficial Arduino possui muitas discussões e exemplos muito bons. A comunidade
de desenvolvedores é bastante ativa e certamente pode te ajudar em seus projetos. No
Project Hub poderá encontrar milhares de projetos com Arduino.
Instructables: https://www.instructables.com/
O Maker pro é outro site referência no mundo em relação aos projetos com Arduino. Há
uma infinidade de projetos, todos bem explicados e com bom conteúdo.
WWW.ELETROGATE.COM 67
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
Referências gerais
Vitor Vidal
Engenheiro eletricista, mestrando em eng. elétrica e apaixonado por eletrônica,
literatura, tecnologia e ciência. Divide o tempo entre pesquisas na área de sistemas de
controle, desenvolvimento de projetos eletrônicos e sua estante de livros.
Gustavo Murta
Técnico em eletrônica, formado em Curso superior de TPD, com pós-graduado em
Marketing. Trabalhou por muitos anos na IBM na área de manutenção de
computadores de grande porte. Aposentou-se, podendo curtir o que mais gosta:
estudar e ensinar Tecnologia. Hobbista em eletrônica desde 1976. Gosta muito de
Fotografia e Observação de aves.
Gustavo Nery
Cursando Engenharia de Controle e Automação pela UFMG. Apaixonado por eletrônica,
computação e tecnologias na área de sistemas embarcados. Nos tempos livres me
divido entre desenvolver pesquisa na universidade, adquirir novos conhecimentos e
estar com a família.
WWW.ELETROGATE.COM 68
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
WWW.ELETROGATE.COM 69
Downloaded by Edi Silva ([email protected])
lOMoARcPSD|19047529
WWW.ELETROGATE.COM 70
Downloaded by Edi Silva ([email protected])