Pessoal, criei o tópico com o intuito de coletar ideias de todos, para desenvolvimento do meu TCC, estou me formando em Eng. Elétrica e disposto a fazer uma maquete em arduino para defender um projeto junto a banca examinadora.

A ideia é a seguinte:

Um sensor óptico detecta uma presença e movimenta um servomotor, outro sensor pisca uns leds, movimenta um outro motor cc. Parece coisa bem simples, mas estou com dificuldade logo no começo do programa.

Vou tentar fazer um descritivo funcional do que preciso.

Legenda

Sensor Óptico 01 _ (SO1)

Sensor Óptico 02 _ (SO2)

Sensor Óptico 03 _ (SO3)

Motor CC _ (M1)

Servo Motor 01 _ (SM1)

Passo 1- Quando ligar o arduino o SM1 precisa estar em 10° e todos os led desligados.

Passo 2- Quando o SO1 passar de 0 para 1 será preciso acender um led1 e energizar o M1 e permanecer assim até que SO1 passe de 1 para 0.

Passo 3- Quando o SO2 passar de 0 para 1 preciso movimentar SM1 para 10º assim que o SO2 passar de 1 para 0 movimentar SM1 para 90° e permanece nessa posição até que SM1 passar de 0 para 1 novamente.

O passo 3 só ocorre se SO3 estiver em 1 caso contrário o SM1 permanece em 10°

Sempre que SM1 estiver em 90° deve piscar o led2.

Bem pessoal basicamente é isso, estou com muita dificuldade, os passos 1 e 2 não tive problema porem o passo 3 me complicou bastante, já li bastante coisa, já tive essa matéria na faculdade mas mesmo assim não consegui e gostaria muito do apoio e ajuda dos demais colaboradores.

Caso não tenha explicado direito posso tentar explicar melhor com um video talves.

A ideia seria ir postando fotos da maquete sendo construída até a apresentação do TCC.

Desde já agradeço e conto com o apoio.

Abraços

Exibições: 686

Responder esta

Respostas a este tópico

Qual a dificuldade?

Algoritmo, linguagem, hardware, soluções (não vi a apresentação do problema/escopo, apenas das soluções sugeridas por vc), etc?

Fale mais sobre o seu trabalho, se possível coloque aqui o artigo de proposta (pré-proposta), explique mais os objetivos e o escopo,... Do jeito que está o tópico, parece que você está pedindo para alguém te enviar um código pronto para fazer este controle.

Nos ajude a te ajudar! :D

Desculpe se não ficou claro, é meu primeiro post aqui e peço desculpas.

O que é o escopo.

Elaborar uma maquete simulando um sistema de aspersão de polímero em vagões.

O que o sistema de Aspersão de Polímero em Vagões.

É um sistema que asperge uma mistura (tipo um gel), em vagões de trem carregados de minério de ferro evitando que esse minério se desprenda na viagem pelo vento, provocando poluição e perda de material.

Como funciona o Sistema.

De um lado e de outro da linha férrea são instaladas 2 tubulações articuladas responsáveis por aplicar o gel sobre os vagões. Através de um sensor é detectada a chegada da composição (Locomotiva e Vagões), automaticamente são acionados os compressores bombas, válvulas que irão preparar o gel para ser aplicado. Outro sensor detecta a presença da locomotiva, logo após sua passagem os braços articulados descem e aplicam o gel que é aspergido pelos compressores de ar. Assim que acaba de passar todos os vagões as tubulações articuladas voltam ao estado elevado e o sistema é desligado.

Hardware.

Estou pensando em controlar todo esse sistema em um Arduino UNO, a articulação dos braços utilizar servomotores, detecção de composição locomotiva e vagões sensores ópticos, ilustrar as bombas energizando um motor 5vcc e  para ilustrar o a aspersão leds piscando bem rápido.

Dificuldades.

As tubulações ficam sempre levantadas e após a passagem da locomotiva elas abaixam, porem dependendo do tamanho da composição surgem outra locomotiva entre os vagões, acontecendo isso a tubulação tem que levantar, parar de aspergir e esperar a passagem, após a passagem a tubulação abaixa e continua seu trabalho até passar o último vagão.

Elaborar essa condição na linguem C do arduino me complicou e essa é minha dificuldade.

Desde já agradeço o auxilio e a compreensão. 

Mande a parte do código que você já fez, assim fica mais fácil completar.

#Nicholas Garcia, segue o código que estou trabalhando, como disse tenho dificuldade na programação.

//TCC Aspersão

#include <Servo.h>

const int Sensor1 = 2; // identifica aproximação da composição
const int Sensor2 = 3; // identifica a presença da locomotiva
const int Sensor3 = 4; // identifica presença da composição
const int Motor = 5; // identifica motor do Agitador
const int Led1 = 6; // Led para simular Aspersão
const int servo = 10; // Identifica pino do servo

Servo servoMotor; // declara um objeto tipo Servo

int angulo = 10; // controla a posicao do eixo

void setup() {
pinMode(Sensor1, INPUT); // Declara porta 2 como entrada
digitalWrite(Sensor1, HIGH); // Declara porta 2 com nível lógico 1

pinMode(Sensor2, INPUT); // Declara porta 3 como entrada
digitalWrite(Sensor2, HIGH); // Declara porta 3 com nível lógico 1

pinMode(Sensor3, INPUT); // Declara porta 4 como entrada
digitalWrite(Sensor3, HIGH); // Declara porta com nível lógico 1

pinMode(Motor, OUTPUT); // Declara porta 5 como Saída

pinMode(Led1, OUTPUT); // Declara porta 6 como Saída


servoMotor.attach(servo); // conecta o motor ao pino de controle
servoMotor.write(angulo); // gira o servo ate o ponto inicial
}

void loop() {
if(digitalRead(Sensor1) == HIGH) { // Composição detectada
digitalWrite (Motor,LOW);
}else{
digitalWrite (Motor,HIGH);
delay(10000);
}
if(digitalRead(Sensor2) == HIGH) { // Locomotiva Detectada
if(angulo = 10) {
delay(15);
}
} else {
if(digitalRead(Sensor2) == LOW) { // Fim de locomotiva
if(angulo = 90) {
delay(15);
}
}
}
if(digitalRead(Sensor3) == HIGH) { // Inicio de composição
if(angulo = 90) {
delay(15);
}
} else {
if(digitalRead(Sensor3) == LOW) { // Fim de composição
if(angulo = 10) {
delay(15);
}}}}

Falta a parte que pisca os led e a movimentação do servo tambem não está correta de acordo com o que preciso. 

Abraço e obrigado pela atenção.

Ao escrever o digitalWrite num pino de entrada você está ciente que ele está ativando o resistor pull-up interno? 

Reparei que na sua logica, a cada loop, o Sensor3 está definindo o angulo do servo, e com isso ele ignora as condições do Sensor2.

Recomendo que você analise melhor as condições para contornar alguns erros, por exemplo, quando o Sensor2 está em 1, o servo deve estar em 90º, porem, se o Sensor3 nesse mesmo instante estiver em 0, o servo vai para 10º, independente do estado do Sensor2.

Estude as condições do seu projeto e faça o IF usando mais condições (com || ou &&).

Estou refazendo o código, obrigado pelo auxilio, tá quase, estou só apanhando com a articulação agora. Já, já posto o código.

Abraço.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço