AULA 5 - Microcontroladores - Engenharia: mudanças entre as edições
imported>Fargoud (Criou página com '[ << Página do curso ==Portas Analógicas== É possível ler grandezas analógicas com o Arduino, além de valores digitais. Para isto, existem 6 Portas analóg...') |
imported>Fargoud |
||
| (42 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
| Linha 1: | Linha 1: | ||
[[MIC2| << Página do curso ]] | |||
=PLANO DE AULA= | |||
==Portas Analógicas | <blockquote style="background:#EEEEFF; border: 1px solid green; margin-left: 0px; margin-right: 0px; padding: 1em;"> | ||
<br> | |||
'''CARGA HORÁRIA: 5 h '''<br> | |||
CARGA HORÁRIA TEÓRICA: 2 h CARGA HORÁRIA PRÁTICA: 3 h | |||
<br> | |||
==MATERIAIS== | |||
'''Por aluno: ''' | |||
* 1 placa Arduino Uno | |||
* cabo de comunicação/alimentação USB | |||
* 1 computador PC com software Arduino IDE instalado | |||
* 1 proto ''shield'' para montagens | |||
* 1 potenciômetro; | |||
* 1 resistor de 200 Ω | |||
* 1 resistor de 10kΩ | |||
* 1 led vermelho; | |||
* 1 sensor de temperatura NTC; | |||
* 1 sensor de temperatura LM35; | |||
* 1 sensor de luminosidade fotoresistor LDR; | |||
* 1 chave push-button; | |||
* cabos fêmea-macho | |||
==METODOLOGIA== | |||
* Exposição dialogada dos conteúdos disponíveis, em projetor multimídia. | |||
* Navegação assistida em outros sites e portais, de conteúdos relacionados. | |||
* Montagens práticas e desenvolvimento em computador de aplicativos. | |||
* Testes de verificação e validação. | |||
<br> | |||
</blockquote> | |||
=Portas Analógicas= | |||
É possível ler grandezas analógicas com o Arduino, além de valores digitais. | É possível ler grandezas analógicas com o Arduino, além de valores digitais. | ||
| Linha 32: | Linha 66: | ||
[[image: adc.jpg|center]] | [[image: adc.jpg|center]] | ||
A frequência de amostragem '''''fs''''' depende da velocidade do microcontrolador Atmega (normalmente, 16 MHz), do número de bits da palavra, da velocidade de clock do conversor A/D. | |||
Um valor típico é de 125 KHz / 13 bits por amostra = 9600 amostras por segundo. | |||
| Linha 44: | Linha 82: | ||
Serial.begin(9600); | Serial.begin(9600); | ||
} | } | ||
void loop() | void loop() | ||
{ | { | ||
float valt; | float valt; | ||
int val = analogRead(0); | int val = analogRead(0); | ||
valt = (val*5.0)/1023; | valt = (val*5.0)/1023; | ||
Serial.println(valt); | Serial.println(valt); | ||
} | } | ||
===EXEMPLO 2: lendo dados do potenciômetro para temporizar acionamento de led=== | ===EXEMPLO 2: lendo dados do potenciômetro para temporizar acionamento de led=== | ||
[[image:analog2.jpg|center]] | [[image:analog2.jpg|center]] | ||
=Sensores= | |||
A leitura de valores analógicos é fundamental, porque a maioria dos sensores e transdutores fornece valor analógico, como saída. | |||
[[image: MIC2sensores.png|center]] | |||
O que é um [https://www.electronicshub.org/different-types-sensors/ sensor]? | |||
O que é um transdutor? | |||
=Circuitos com Sensores e Arduino= | |||
===EXEMPLO 3: lendo um NTC e utilizando a equação de Steinhart-Hart === | ===EXEMPLO 3: lendo um NTC e utilizando a equação de Steinhart-Hart === | ||
Termistor é um resistor cuja resistência varia em função da temperatura (Kelvin). | |||
Há duas categorias de termistores: '''PTC''' (''positive thermal coefficient''), que aumenta sua resistência elétrica com o aumento da temperatura e o '''NTC''' (''negative thermal coefficient''), que diminui a resistência elétrica com o aumento da temperatura. | |||
[[image:analogntcptc.jpg|center]] | |||
Vale ressaltar que Termistores não são polarizados. | |||
====Especificações e características:==== | |||
– Tensão de operação: 3,3 ou 5VDC | |||
– Faixa de medição: -55°C a 125° celsius | |||
– Precisão: ±1% | |||
– Dissipação típica constante: 2mW/° celsius | |||
====Experimento:==== | |||
Utilizar o Termistor NTC 10K (Sensor de Temperatura) em conjunto com o Arduino e medir a temperatura ambiente. | |||
Como a temperatura é medida em função da resistência do NTC, é necessário utilizar-se a [http://www.analogica.com.br/arquivos/nt-011-termistores.pdf equação de Steinhart-Hart] para correção do valor lido: | |||
[[image:analog3.jpg|center]] | [[image:analog3.jpg|center]] | ||
| Linha 65: | Linha 142: | ||
Porém, como tudo no Arduino, existe uma biblioteca específica para uso com o termistor, a ''Thermistor.h''. | |||
Aí, o problema se resume a incluir a biblioteca e rodar seus métodos. Por exemplo: | |||
Biblioteca Thermistor.h: | |||
* [https://drive.google.com/file/d/1g-4T3zU4QwoU317Lw1hED_JTQw3hJ45G/view?usp=drive_link Thermistor.zip] | |||
#include <Thermistor.h> //inclusão da biblioteca | |||
Thermistor temp(0); //objeto do tipo Thermistor, conectado à porta analógica A0 | |||
void setup() { | |||
Serial.begin(9600); //inicializa a Serial | |||
delay(1000); | |||
} | |||
void loop() { | |||
int temperature = temp.getTemp(); //VARIÁVEL QUE RECEBE TEMPERATURA CALCULADA PELA BIB. | |||
Serial.print("Temperatura: "); //IMPRIME O TEXTO NO MONITOR SERIAL | |||
Serial.print(temperature); //IMPRIME NO MONITOR SERIAL A TEMPERATURA MEDIDA | |||
Serial.println("*C"); //IMPRIME O TEXTO NO MONITOR SERIAL | |||
delay(1000); //INTERVALO DE 1 SEGUNDO | |||
} | |||
===EXEMPLO 4: lendo o sensor de temperatura LM35 === | |||
LM35 é um | |||
[[image:analogLM35.jpg|center]] | |||
'''Código:''' | |||
void setup() | |||
{ | |||
Serial.begin(9600); | |||
} | |||
void loop() | |||
{ | |||
float temp=analogRead(0); | |||
float temperatura = 100*temp*(5.0/1023); | |||
delay(100); | |||
Serial.print("Temperatura [oC]: "); | |||
Serial.println(temperatura); | |||
} | |||
===EXEMPLO 5: Acionando leds em função da luminosidade do local === | |||
Utilizaremos agora um '''fotoresistor''', ou LDR. | |||
[[image: MIC2ldr.png|center]] | |||
Um código simples, apenas para acionar o LDR seria: | |||
int ldr = A0;//Atribui A0 a variável ldr | |||
int valorldr = 0;//Declara a variável valorldr como inteiro | |||
void setup() { | |||
Serial.begin(9600);//Inicialização da serial, com taxa de 9600 bps | |||
} | |||
void loop() { | |||
valorldr=analogRead(ldr);//Lê o valor do sensor ldr e armazena na variável valorldr | |||
Serial.print("Valor lido pelo LDR = ");//Imprime na serial a mensagem Valor lido pelo LDR | |||
Serial.println(valorldr);//Imprime na serial os dados de valorldr | |||
} | |||
Agora, vamos usar o LDR para acionar lâmpadas de emergência, representadas aqui por leds. Valores dos resistores: R<sub>1</sub> ≅ 200 Ω e R<sub>3</sub> = 10 kΩ. | |||
[[image: MIC2ldr3.png|center]] | |||
const int limite_claridade= 716; // 70% do valor de fundo de escala de 1023 | |||
const int led = 4; // pino digital do led | |||
void setup() { | |||
pinMode(led, OUTPUT); | |||
pinMode(chave, INPUT); | |||
Serial.begin(9600); | |||
} | |||
void loop() { | |||
int sensor=analogRead(3); | |||
Serial.print("Valor lido pelo LDR = ");//Imprime na serial a mensagem Valor lido pelo LDR | |||
Serial.println(sensor);//Imprime na serial os dados de valorldr | |||
if (sensor <= limite_claridade) | |||
digitalWrite(led, HIGH); | |||
else | |||
digitalWrite(led, LOW); | |||
} | |||
[https:// | Neste outro exemplo, quando diminui a luminosidade no fotoresistor, o Arduino aciona a [https://br-arduino.org/2014/12/sensores-analogicos-no-arduino-uma-experiencia-inicial-incluindo-funcoes.html lâmpada de emergência], no caso, led. | ||
---- | ---- | ||
Edição atual tal como às 15h19min de 18 de setembro de 2025
PLANO DE AULA
CARGA HORÁRIA: 5 h
CARGA HORÁRIA TEÓRICA: 2 h CARGA HORÁRIA PRÁTICA: 3 h
MATERIAIS
Por aluno:
- 1 placa Arduino Uno
- cabo de comunicação/alimentação USB
- 1 computador PC com software Arduino IDE instalado
- 1 proto shield para montagens
- 1 potenciômetro;
- 1 resistor de 200 Ω
- 1 resistor de 10kΩ
- 1 led vermelho;
- 1 sensor de temperatura NTC;
- 1 sensor de temperatura LM35;
- 1 sensor de luminosidade fotoresistor LDR;
- 1 chave push-button;
- cabos fêmea-macho
METODOLOGIA
- Exposição dialogada dos conteúdos disponíveis, em projetor multimídia.
- Navegação assistida em outros sites e portais, de conteúdos relacionados.
- Montagens práticas e desenvolvimento em computador de aplicativos.
- Testes de verificação e validação.
Portas Analógicas
É possível ler grandezas analógicas com o Arduino, além de valores digitais.
Para isto, existem 6 Portas analógicas para ENTRADA de dados:
- A0 (pino 14),
- A1 (pino 15),
- A2 (pino 16),
- A3 (pino 17),
- A4 (pino 18) e
- A5 (pino 19).
Não é necessário definir-se na função setup( ) se as portas serão usadas como entrada, ou saída.
A função de leitura das portas analógicas é a analogRead( PORTA )
O microcontrolador do Arduino dispõe de um Conversor Analógico-Digital (ADC) de 10 bits, o que significa capacidade de quantificar 1024 patamares de valor: 0 a 1023.
Ou seja, as tensões analógicas de entrada, que devem variar de 0 a 5 V, são quantificadas como:
- 0 - correspondente ao valor de 0 V (GND)
- 1 - correspondente ao valor de 1x(5 V - 0 V)/1024 = 0,0048828125 V
- 2 - correspondente ao valor de 2x(5 V - 0 V)/1024 = 0,009765625 V
- 3 - correspondente ao valor de 3x(5 V - 0 V)/1024 = 0,0146484375 V
- ...
- 1023 - correspondente ao valor de 5 V (VCC)
O programador deve saber como interpretar o número digital da conversão. Desta forma, podem ser lidos os mais variados sensores, desde que eles gerem um sinal de tensão de até 5V (limite permitido).
A frequência de amostragem fs depende da velocidade do microcontrolador Atmega (normalmente, 16 MHz), do número de bits da palavra, da velocidade de clock do conversor A/D.
Um valor típico é de 125 KHz / 13 bits por amostra = 9600 amostras por segundo.
EXEMPLO 1: lendo dados de um potenciômetro
Para ler os valores diretamente em Volts:
void setup()
{
Serial.begin(9600);
}
void loop()
{
float valt;
int val = analogRead(0);
valt = (val*5.0)/1023;
Serial.println(valt);
}
EXEMPLO 2: lendo dados do potenciômetro para temporizar acionamento de led
Sensores
A leitura de valores analógicos é fundamental, porque a maioria dos sensores e transdutores fornece valor analógico, como saída.
O que é um sensor?
O que é um transdutor?
Circuitos com Sensores e Arduino
EXEMPLO 3: lendo um NTC e utilizando a equação de Steinhart-Hart
Termistor é um resistor cuja resistência varia em função da temperatura (Kelvin).
Há duas categorias de termistores: PTC (positive thermal coefficient), que aumenta sua resistência elétrica com o aumento da temperatura e o NTC (negative thermal coefficient), que diminui a resistência elétrica com o aumento da temperatura.
Vale ressaltar que Termistores não são polarizados.
Especificações e características:
– Tensão de operação: 3,3 ou 5VDC
– Faixa de medição: -55°C a 125° celsius
– Precisão: ±1%
– Dissipação típica constante: 2mW/° celsius
Experimento:
Utilizar o Termistor NTC 10K (Sensor de Temperatura) em conjunto com o Arduino e medir a temperatura ambiente.
Como a temperatura é medida em função da resistência do NTC, é necessário utilizar-se a equação de Steinhart-Hart para correção do valor lido:
Porém, como tudo no Arduino, existe uma biblioteca específica para uso com o termistor, a Thermistor.h.
Aí, o problema se resume a incluir a biblioteca e rodar seus métodos. Por exemplo:
Biblioteca Thermistor.h:
#include <Thermistor.h> //inclusão da biblioteca
Thermistor temp(0); //objeto do tipo Thermistor, conectado à porta analógica A0
void setup() {
Serial.begin(9600); //inicializa a Serial
delay(1000);
}
void loop() {
int temperature = temp.getTemp(); //VARIÁVEL QUE RECEBE TEMPERATURA CALCULADA PELA BIB.
Serial.print("Temperatura: "); //IMPRIME O TEXTO NO MONITOR SERIAL
Serial.print(temperature); //IMPRIME NO MONITOR SERIAL A TEMPERATURA MEDIDA
Serial.println("*C"); //IMPRIME O TEXTO NO MONITOR SERIAL
delay(1000); //INTERVALO DE 1 SEGUNDO
}
EXEMPLO 4: lendo o sensor de temperatura LM35
LM35 é um
Código:
void setup()
{
Serial.begin(9600);
}
void loop()
{
float temp=analogRead(0);
float temperatura = 100*temp*(5.0/1023);
delay(100);
Serial.print("Temperatura [oC]: ");
Serial.println(temperatura);
}
EXEMPLO 5: Acionando leds em função da luminosidade do local
Utilizaremos agora um fotoresistor, ou LDR.
Um código simples, apenas para acionar o LDR seria:
int ldr = A0;//Atribui A0 a variável ldr
int valorldr = 0;//Declara a variável valorldr como inteiro
void setup() {
Serial.begin(9600);//Inicialização da serial, com taxa de 9600 bps
}
void loop() {
valorldr=analogRead(ldr);//Lê o valor do sensor ldr e armazena na variável valorldr
Serial.print("Valor lido pelo LDR = ");//Imprime na serial a mensagem Valor lido pelo LDR
Serial.println(valorldr);//Imprime na serial os dados de valorldr
}
Agora, vamos usar o LDR para acionar lâmpadas de emergência, representadas aqui por leds. Valores dos resistores: R1 ≅ 200 Ω e R3 = 10 kΩ.
const int limite_claridade= 716; // 70% do valor de fundo de escala de 1023
const int led = 4; // pino digital do led
void setup() {
pinMode(led, OUTPUT);
pinMode(chave, INPUT);
Serial.begin(9600);
}
void loop() {
int sensor=analogRead(3);
Serial.print("Valor lido pelo LDR = ");//Imprime na serial a mensagem Valor lido pelo LDR
Serial.println(sensor);//Imprime na serial os dados de valorldr
if (sensor <= limite_claridade)
digitalWrite(led, HIGH);
else
digitalWrite(led, LOW);
}
Neste outro exemplo, quando diminui a luminosidade no fotoresistor, o Arduino aciona a lâmpada de emergência, no caso, led.
| Uso da comunicação serial | AULA 5 - Leitura e escrita nas portas analógicas | PWM e acionamento motores >> |
|---|









