Microcontroladores e Aplicações / Sistemas Embarcados

Disciplina Sistemas Embarcados / Microcontroladores e Aplicações do Departamento de Computação da UFSCar, oferecida no modelo ENPE (Ensino Não Presencial Emergencial) e ministrada pelo Prof. Rafael Aroca, do DC-UFSCar – Fevereiro/2021 até Maio/2021.

Aulas teóricas (vídeos)

Aula teóricaConteúdo / Atividades 
1Introdução / visão geral de sistemas embarcados
Aula no YouTube
Slides
 
2Dispositivos, arquiteturas, ferramentas e linguagens
Aula no YouTube
Slides
 
3 Sensores
Aula no YouTube (Parte 1)
Aula no YouTube (Parte 2)
Aula no YouTube (Parte 3)
Slides
 
4 Atuadores
Aula no YouTube (Parte 1)
Aula no YouTube (Parte 2)
Slides
 
5 Comunicação
Aula no YouTube (Parte 1)
Aula no YouTube (Parte 2)
Aula no YouTube (Parte 3)
Slides
 

 

Quizzes

# QuizAcesso ao QuizPrazo
1
Assuntos: aulas 1 e 2

https://forms.gle/5MX2RRTwNTBXN7uC9
13/03/21
2
Assuntos: aulas 3 e 4

10 questões – serão disponibilizadas até 26/03/21
04/04/21
3  
4  

Laboratório remoto

Laboratório remoto em Março/2021, com fonte de alimentação, câmera IP, placa com reles, placa Arduino Mega 2560, ponte H L298, motor de passo, motor DC com encoder, micro-servo motor e sensor de temperatura LM35.

Acesso ao laboratório remoto:

Programação, gravação do microcontroladores e console serial:

http://uc.bipes.net.br:5000/

Câmera:

http://uc.bipes.net.br:8090/cgi-bin/mjpg/video.cgi?subtype=1

 

Pinagem das conexões do AtMega2560 no laboratório remoto (em Mar/2021):

Pino – Arduino Mega 2560Descrição
A0Entrada analógica conectada a
um sensor de temperatura LM35,
com alimentação de 5V
6Rele 1 (Iluminação da bancada remota ou fonte do motor DC)
7Rele 2 (Iluminação da bancada remota ou fonte do motor DC)
8Saída PWM para controle de velocidade do motor DC
9Controle de rotação do motor DC (saída 1)
10Controle de rotação do motor DC (saída 2)
2Encoder – canal A
4Encoder – canal B
12Servo motor: Micro Servo 9g SG90
14,15,16,17Motor de passo (entradas 1,2,3,4)

Atividades práticas usando laboratório remoto

#PrazoDescrição
106/03Acessar o laboratório remoto e criar um programa para piscar o LED com intervalo de 500 milisegundos. Verificar o uso da câmera e ferramenta.

Não é necessário realizar nenhuma entrega – o objetivo é conhecer a ferramenta.
213/03Acessar o laboratório remoto
http://uc.bipes.net.br:5000/

Existe um sensor de temperatura LM35 conectado à porta analógica A0 de um Arduino Mega

Verifique o manual do sensor LM35 e do conversor ADC do AtMega2560 para, a partir da leitura do sensor, converter a leitura “bruta” em temperatura, em graus Celcius

Faça um programa que faz 30 leituras/amostras do sensor, e faz uma  média, apresentado a leitura na tela, através do envio por comunicação Serial

Caso a média da temperatura lida seja superior a 30 graus, acionar um rele no pino digital 13, que aciona um sistema de ventilação

Envie o programa elaborado, por email, para o professor da disciplina
328/03Considerando a pinagem da tabela de conexões do laboratório remoto, implemente um programa que liga a luz da bancada do laboratório remoto, mostrado na foto acima.

Salve a imagem do laboratório com a luz acesa e apagada.

Para entrega, envie um arquivo PDF com duas fotos: uma foto da bancada com a luz apagada, e outra com a luz acesa. Inclua também o código fonte utilizado, no mesmo arquivo PDF.

Entrega através do Google Form:
https://forms.gle/KKratAx4ZYBS9tTP7
431/03Prepare um programa que posiciona o micro-servo motor, conectado ao pino 12 do Arduino Mega, em 6 ângulos diferentes, com a diferença de 20 segundos entre cada posicionamento.

Execute o programa no laboratório remoto, e visualize, através da Câmera 2, o movimento do eixo do motor de passo.

Salve a imagem de cada posição e verifique o ângulo de posicionamento do motor através da ferramenta online, enviando cada imagem capturada e comparando com o instrumento de medida de ângulo virtual:

https://www.ginifab.com/feeds/angle_measurement/

Salve imagens do ângulo medido na ferramenta, e adicione a um arquivo PDF para envio.

Inclua, também, no PDF, o código fonte utilizado e uma tabela relacionando o ângulo medido com a ferramenta online (link acima) com o valor x ajustado no programa, através do comando servo.write(x). Finalmente, faça um gráfico, a partir da tabela, relacionado o ângulo configurado via programação, e o ângulo medido na ferramenta online de medida de ângulos.

Junte todas informações mencionadas em um único arquivo PDF e envie pelo link abaixo:

Entrega através do Google Form:
https://forms.gle/KKratAx4ZYBS9tTP7
503/04Esta atividade é dividida em diversas partes, para facilitar o teste com o motor de corrente contínua (DC ou CC).

Parte 1:
Utilize as funções analogWrite(pino, valor) para geração de sinal PWM e digitalWrite(pino, valor) para controle da direção de rotação do motor de corrente contínua. Experimento rotação horário e anti-horária, em diferentes velocidades.

Parte 2:
Implemente a funcionalidade de leitura do encoder do motor CC e envio pela porta serial (Serial.prinln()) a leitura da medida do encoder.

Dica: Estude o código disponível no link abaixo, para facilitar a sua implementação:
https://www.arduinoecia.com.br/motor-dc-com-encoder-arduino


Parte 3:
Após implementar a leitura do encoder, controle o motor para girar lentamente e verifique a contagem de pulsos do encoder. Estime o número de pulsos por volta deste Encoder.

Parte 4:
Ajuste o programa para informar a velocidade de rotação do motor, enviando a velocidade para o console serial.

Através da função analogWrite(pino, valor), controle o motor para girar em diversas velocidades (pelo menos 10) e anote o valor ajustado na função analogWrite(pino, valor) e a velocidade medida.

Faça um gráfico tendo no eixo X o valor ajustado na função analogWrite, e no outro eixo, a medida real de velocidade.

Faça o mesmo gráfico, mais uma vez, porém para rotação do motor em sentido oposto à rotação do primeiro gráfico.

Discuta suas observações e compare os resultados experimentais com modelo teórico de motores de corrente contínua comentados na aula teórica.

Compile todas informações solicitadas em um arquivo PDF e envie pelo link abaixo.

Dica: note que a ponte H L298 está conectada aos pinos 8, 9 e 10 do Arduino Mega, conforme tabela acima. Contudo, esta ponte H recebe uma alimentação de 6V de uma fonte de bancada (lado direito da foto acima, indicando 6v) que não está ligada de forma permanente. Esta fonte de alimentação tem seu controle de liga/desliga através de um rele (pino 6 ou 7 – verifique). Dessa forma, para controlar o motor DC através da ponte H, você deve primeiro acionar o rele que fornece energia para a ponte H / motor. Note também que a placa de reles está com lógica invertida, então é necessário enviar um sinal baixo (LOW) para que o rele acione.

Entrega através do Google Form:
https://forms.gle/KKratAx4ZYBS9tTP7
610/04Parte 1:
Motor de passo
Utilizando a pinagem detalhada na tabela acima, implemente um programa que move o motor de passo (motor com ponteiro verde na montagem do laboratório remoto). Verifique a máxima velocidade possível antes do motor começar a “perder passos”.

Parte 2:
Controle “P” em malha fechada – velocidade
Com base nas implementações anteriores, implemente um programa que monitora a velocidade angular do motor de corrente contínua e realiza controle proporcional (P) de velocidade, em malha fechada. Dessa forma, seu programa deve monitorar constantemente a velocidade, e controlar a saída PWM para que o motor receba tensão proporcional ao erro (erro = velocidade atual – velocidade desejada). Este algoritmo deve se repetir continuamente, para que o sistema mantenha a velocidade controlada, independente dos distúrbios que possam ocorrer.

Parte 3:
Controle “P” em malha fechada – posição
Com base nas implementações anteriores, implemente um programa que monitora a posição angular do motor de corrente contínua e realiza controle proporcional (P) de posição, em malha fechada. Dessa forma, seu programa deve monitorar constantemente a velocidade, e controlar a saída PWM para que o motor receba tensão proporcional ao erro (erro = velocidade atual – velocidade desejada). Este algoritmo deve se repetir continuamente, para que o sistema mantenha a velocidade controlada, independente dos distúrbios que possam ocorrer.

Teste diferentes valores para o ganho proporcional (Kp) e velocidade do loop de controle (delay entre cada interação). Anote os resultados, e se possível, plote gráficos. Junte todas observações em uma arquivo PDF e envie no link abaixo.

Entrega através do Google Form:
https://forms.gle/KKratAx4ZYBS9tTP7
7breveMotor de passo e comunicação serial
Envio / recepção de comandos via serial para o microcontrolador
Breve

 

 

Notas

Em breve – notas dos quizzes e entregas já realizadas

 

Feedback anônimo

Caso queira deixar alguma crítica ou sugestão, de forma anônima, utilize o formulário abaixo. Não é necessário se identificar:

https://forms.gle/DhESmcD4ujdUGcdc7

Outras informações

Em breve – código do laboratório remoto no github

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s