Aula 03 p02 Dac Adc PWM

Fazer download em odp, pdf ou txt
Fazer download em odp, pdf ou txt
Você está na página 1de 30

Conversão Analógica Digital

Conversão Digital Analógica


Controle de motores.

Prof. Dr. Roberto Kenji Hiramatsu


Prof. Dr. João Henrique Correia Pimentel
Agenda
Sistemas Analógicos e Digitais
● Sistemas analógicos
– Manipula quantidades físicas de forma analógica
ao longo de uma faixa de operação

Uso de componentes
Operando numa faixa
contínua
Fones de ouvido
Caixas de som Amplificação de
Sinal de antenas

Reguladores de tensão
Fontes reguladas
Sistema digital
● Manipula somente representações no formato
digital
● São na maioria das vezes eletrônicos mas
podem ser mecânicos, magnéticos ou
pneumáticos.
Computadores, smartfones

Antes dos computadores


Calculadores mecânicos
Caixa registradora.
ADC

Captura em intervalos
regulares

Tocci – cap. 11.10


Quanto precisamos de uma saída analógica?

Velocidade Intensidade de iluminação


Motores Converter áudio
DC/AC
A saídas podem ser geradas por conversores
digital analógico – DAC ou por técnica de
PWM
DAC – Digital Analogic Converter – Conversor Digital-Analógico
PWM – Pulse-Width Modulation
Teoria:
Fundo de escala, Resolução e
precisão
● Fundo de escala (fe) 15V em conversão de 4
bits com resolução (K) de 1V
– Saída analógica = K x Saída Digital

A precisão não é somente a incerteza
entorno do degrau mas depende também
dos componentes e tensão que alimenta o DAC

Tocci – 11.3
Quando precisamos de uma
entrada analógica?
● Medida de uma grandeza do mundo real
● Controle

Amplificador de
uC DAC potência

ADC Motores
Sensor Resistências
Modulação por largura de pulso –
(Pulse Width Modulation - PWM)
● No Arduino UNO R3 não temos o DAC
– No entanto existem uC que tem saídas
DAC como o Arduino DUE
● O PWM, que é a modulação da largura
de pulso digital, é “enxergada” como
sinal analógico dependendo da
frequência de operação
– Controle de motores e aquecedores por
exemplo.
– Considere o resultado como media
– Na biblioteca para o UNO R3 opera em
500Hz aproximadamente.
– Não e adequada para reprodução de áudio.

Pinos no Arduino UNO R3

Observe que número aqui representa


Nem todos os pinos tem saída PWM
o temporizador usado
Em outros uC tem que verificar
disponibilidade
Leitura de sinal analógica
● Uso de ADC – quase todos os uC tem este
periférico
– No arduino UNO R3:
● Escala de fundo do ADC é 5V.
● tem ADC de 10bits com resolução de 5V/1024=4,9mV
● Converte em 0,1 milissegundos
● O Arduino UNO R3 tem somente 1 periférico
ADC acessível dos pinos A0 a A6.
Como é o tratamento de um sinal de
sensor para ser lida no ADC
Condicionamento de sinal
Exemplos de termopares para
arduino
Montar o circuito abaixo para
entender o PWM
Código teste

No Arduino os pinos
analógicos são acessados
com prefixo A seguindo do
Número do pino analógico
Acionamento de motores
● Motores DC
– Acionamento usando PWM para gerar uma tensão média
– Normalmente aceita rotação nos dois sentidos por meio de mudança de polaridade
● Motor DC tipo Servomotor
– Usando o PWM para estabelecer ângulo de giro – possui internamente controle PID
para manter a posição
– Usando em Robos
● Motor DC tipo Stepper (motor de passo)
– Usa sequência de pulsos para mudar a posição
– Não permite controle fino dos passos e não permite verificação de posição
● Motores AC
– Criando uma forma de onda com frequência controlada por uC

DACs
Algumas características a pensar no
●Torque motor
– Sg90 → 1.8Kg/cm em máxima
carga (stall)
● Curva de velocidade/torque
● Curva de Potência/torque
– Considere usar do ponto de carga
livre até o ponto de potencia
máxima.
● Corrente de partida

Amplificadores de potencia Motores
Drivers e ponte H para proteger o circuito
Diodos são colocados

eletrônico das tensões


reversas geradas

Esta entrada para


Meia ponte H disponível PWM
tinkercard
Vamos analisar o acionamento de
motor abaixo
● Duplique o projeto de:
– https://www.tinkercad.com/things/iNXi9pq43RE

Eventos gerados por pinos externos
tratamento do encoder
● Interrupções externas são recebidas nos pinos
2 e 3 do Arduino UNO R3 e servem para
atender operações geradas por sinais externos
– O encoder do motor gera pulso que precisam ser
Por se tratar de evento gerado fora do loop normal
medidos o modificador volatile deve ser aplicado para a variável
seja segura durante o acesso normal e por interrupção
Uma interrupção é definida como uma função que é
sempre chamado quando ocorre o evento

O Arduino define attachInterrupt para registrar a interrupção


Exemplo usando servomotor e
biblioteca servo.h
Código exemplo com biblioteca
servo.h
#include <Servo.h>

Servo myservo; // create servo object to control a servo

int potpin = 0; // analog pin used to connect the potentiometer


int val; // variable to read the value from the analog pin

void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
Serial.begin(9600);
}
int antVal=0;
void loop() {
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and
1023)
if(antVal!=val){
antVal=val;
Serial.println(val);
}
val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
}
Proposição 1
● Construa um contador que contagem regressiva mostrando o valor no
display de 7 segmentos e reinicia a qualquer momento.
– O tempo de atualização de cada contagem regressiva deve ser de 2 segundos
– Neste projeto não deve ter nenhuma função de delay.
– Deve ter um esquema de enviar mensagens pela seria indicando o estado de
operação inclusive dos valores
– Para esse processo crie uma função que configura os valores dos segmentos
do display conforme o valor do digito recebido de 0 a 9
– Dica: use um vetor para simplificar a atribuição
– Use um botão em modo pull up para simplificar o circuito de controle do botão
– Crie também um led verde e um vermelho. O Led vermelho ficará piscando
enquanto ocorrer a contagem regressiva e se apagará quando terminar. O led
verde ficará ligado sempre que o contagem regressiva estiver zero.
Proposição 2
● Crie um programa que leia o número de voltas
do disco de encoder e faça um esquema para
que pare mais próximo de um número
predefinido de voltas enviado por serial.
Para pensar
● Usando o circuito de controle do motor mostrado nesta
aula, proponha um projeto com controle de 2 motores
que permita realizar uma volta circular com raio de 50cm.
● Considere para isso uma roda de 65mm de diâmetro e
um chassi entre eixos de 10 cm.
● Dica 1: Desenhe e determine a proporção que cada roda
deve percorrer com base na velocidade da roda mais
rápida.
● Dica 2: Considere que o valor do PWM gera velocidade
proporcional para tensões nas faixas entorno de 6V.
Leituras e videos
● Veja as explicações sobre registro de interrupção

https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/
● https://playground.arduino.cc/Code/Interrupts
● PWM
● Amplificadores
– https://www.electronics-tutorials.ws/amplifier/amplifier-classes.html
Um pouco de teoria de motores DC
http://lancet.mit.edu/motors/motors3.html
Determinando parâmetros de um motor
https://www.youtube.com/watch?v=roINUVVpEbs
https://www.youtube.com/watch?v=gwFE-NkzR-k
Motores tipo stepper e servo
http://www.ni.com/white-paper/14863/en/
Leitura adicional
● Temopares
– http://www.estatica-metrologia.com.br/termopares.p
hp
● Circuito
– http://diego-
bittencourt.blogspot.com.br/2011/09/boa-tarde-
conforme-combinado.html
● LDR
– https://components101.com/ldr-datasheet
roberto.hiramatsu@ufrpe.br

Você também pode gostar