NASZ/Semana II
_Relatos gravados..._
Ao final do dia, estávamos satisfeitos com o progresso que alcançamos, mas reconhecíamos que havia muito a ser corrigido e aprimorado antes da apresentação final do projeto na semana seguinte. Portanto, concluímos que continuaríamos trabalhando nele ao longo do fim de semana, visando obter um resultado final ainda melhor.
Seguimos sobrevivendo...
Sexta-feira, 27 de outubro...
No último dia da Semana II, nos reunimos no laboratório para dar continuidade ao desenvolvimento do projeto e caminhar em direção à etapa final. Nosso foco era finalizar o protótipo e trabalhar na apresentação agendada para segunda e terça-feira da Semana III, marcando o encerramento da disciplina de Laboratório de Física 1.
Conforme mencionado em nossa última reunião, enfrentamos desafios significativos relacionados à programação do Arduino. No entanto, graças aos esforços de nossa integrante Ana Vitória, que analisou o problema em sua casa, começamos a sexta-feira em uma posição mais avançada do que estávamos desde a segunda-feira, com toda nossa equipe trabalhando desde às 15h . Agora tínhamos uma programação funcional, a qual aprimoramos ainda mais, incluindo detalhes que havíamos deixado de lado devido aos problemas iniciais. Uma das melhorias incluiu a otimização da integração do sensor com o motor no Arduino. Este já demonstrando o resultado que esperávamos. Outra mudança feita foi deixarmos de lado o Driver e a pilha, pois decidimos alimentar o motor apenas com o Arduino mesmo.
No laboratório, após a avaliação dos testes e a valiosa orientação da professora Marisa, decidimos integrar um potenciômetro para controlar a velocidade do motor, e consequentemente, a velocidade de rotação do nosso disco. Isso nos permitiria utilizar os dados coletados para estabelecer uma conexão com o fundamento físico em que baseamos nosso projeto, que é a rotação mecânica, como por exemplo, a partir da coleta dos dados obtidos na rotação, calcular o tempo que esse processo demorou.
Ao final do dia, estávamos satisfeitos com o progresso que alcançamos, mas reconhecíamos que havia muito a ser corrigido e aprimorado antes da apresentação final do projeto na semana seguinte. Portanto, concluímos que continuaríamos trabalhando nele ao longo do fim de semana, visando obter um resultado final ainda melhor.
⚙PROTÓTIPO FINAL
Material utilizado:
01 Arduino Uno
01 Protoboard
01 Sensor de Obstáculo Reflexivo Infravermelho IR
01Motor de engrenagem 3V 12V com eixo duplo
01 Potenciômetro
Cabos Jumper macho-macho e macho-fêmea
Montagem:
1.Motor
-Conecte um dos terminais do motor ao terminal central do potenciômetro.
-Conecte o outro terminal ao 5V na protoboard.
2.Potenciômetro
-Conecte o terminal negativo do potenciômetro ao GND.
-Conecte o terminal positivo ao 5V na protoboard.
3.Sensor IR
-Conecte o pino VCC do sensor ao 5V na protoboard.
-Conecte o pino GNG do sensor ao GND.
-Conecte o pino OUT do sensor na D2 (entrada digital 2).
⚙ ESQUEMA DE MONTAGEM
Não há o sensor utilizado disponível na plataforma Tinkercad, porém, fizemos o seguinte esquema de montagem :
⚙ CÓDIGO
O código controla o o sensor de obstáculo reflexivo IR, fazendo com que a cada 20 voltas a contagem pare e seja dado o tempo de cada volta.
// Define o pino do sensor IR
const int sensorPin = 2;
// Variáveis para a velocidade do motor, contagem de voltas e tempo
int count = 0;
int lastState = LOW;
unsigned long startTime = millis();
void setup() {
// Inicializa a comunicação com o Monitor Serial
Serial.begin(9600);
}
void loop() {
// Verifica o estado do sensor IR
int sensorState = digitalRead(sensorPin);
if (sensorState == HIGH && lastState == LOW) {
count++;
Serial.print("Voltas: ");
Serial.println(count);
}
// Verifica se o contador atingiu 50 voltas
if (count == 20) {
Serial.println("Motor Desligado");
// Calcula o tempo total
unsigned long endTime = millis();
unsigned long totalTime = endTime - startTime;
// Calcula o tempo por volta
unsigned long timePerRevolution = totalTime / count;
// Calcula o tempo por volta em minutos
float timePerRevolutionInMinutes = timePerRevolution / 60000.0;
// Exibe o tempo por volta no Monitor Serial
Serial.print("Tempo por volta: ");
Serial.print(timePerRevolution);
Serial.print(" milissegundos, ou ");
Serial.print(timePerRevolutionInMinutes);
Serial.println(" minutos.");
}
lastState = sensorState;
}
⚙RESULTADO FINAL
Seguimos sobrevivendo...
Comentários