Aula 03 p02 Dac Adc PWM
Aula 03 p02 Dac Adc PWM
Aula 03 p02 Dac Adc PWM
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
Captura em intervalos
regulares
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
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
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