Prezados bom dia!
Estou tentando desenvolver meu TCC usando o Arduino Uno,vai ser um projeto muito ousado e gostaria de controlar ele via internet criando um WEB SITE alguem pode me ajudar
Tags:
boa tarde Eduardo!!!
Estou com um problemão no meu projeto.
Fiz um for para que o braço parasse na posição correta e de acordo com a subida do braço esse for ia decrementando perfeitamente. mas quando eu ligo o motor de 127v o arduino desliga o motor sem o sensor estar atuado. sem o motor funciona com o motor não funciona (fiz uma interface de potencia para acionar os reles pois o motor tem que girar nos dois sentidos )outro caso grave que esta acontecendo é que quando eu ligo o motor de 127v aparece um erro na porta serial e ai tem que tirar o cabo usb da uma confusão.
o erro esta dando quando ligo o motor que é no for de subida dali pra baixo ele nao funciona mais da erro na serial
então volta a afirmar com o motor desligado o codigo funciona e quando ligo o motor o codigo nao funciona !!!
para melhor entendimento do projeto o site do tcc segue abaixo na parte de footos
www.leandroggrossi.wix.com/luizalfredo
caso possa me ajudar mais uma vez ficarei muito grato
#include <Servo.h> // BIBLIOTECA
Servo servo1; // SERVO DA PINÇA
Servo servo2; // SERVO DO GIRO DO BRAÇO
void setup() // INICIO DO PROGRAMA
{
servo1.attach(3); // output SERVO 1 LIGADO NA PORTA DIGITAL
servo2.attach(5); // output SERVO 1 LIGADO NA PORTA DIGITAL
pinMode(2, OUTPUT); // avanço de garra (Define as portas como saída)
pinMode(4, INPUT); // sensor de avanço de garra
digitalWrite(4, HIGH); // sensor de avanço de garra
pinMode(13, OUTPUT); // descida do braço
pinMode(12, OUTPUT); // subida do braço
pinMode(7, INPUT); // sendor de subida do braço
digitalWrite(7, HIGH); // sendor de subida do braço
pinMode(6, OUTPUT); // recuo de garra da garra
pinMode(8, INPUT); // sensor de recuo de garra de garra
digitalWrite(8, HIGH); // sensor de recuo de garra de garra
pinMode(10, OUTPUT); // movimento do braço na horizontal direita
pinMode(9, OUTPUT); // movimento do braço na horizontal esquerda
pinMode(11, INPUT); // sensor da horintal da garra
digitalWrite(11, HIGH);
Serial.begin(4800); // PORTA SERIAL (Definição da velocidade de transmissão)
//FIM DO FOR
} //FIM DO VOID SETUP
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void loop()
{
int caso = Serial.read();
switch (caso) //COMANDO DE SELEÇÃO DE MÚLTIPLA ESCOLHA (onde há um dado a ser avaliado. É representado por uma variável de memória.)
{
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX CASO 'Q' PRIMEIRA POSIÇÃO DE SUBIDA XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
case 'q':
servo1.write(0); // servo do braço para 0 grau
servo2.write(0); // servo da pinça para 0 grau
Serial.println(" SERVO DA PINCA E DO BRACO A ZERO GRAU ");
delay(2000);
Serial.println(" PINCA ABERTA 20 GRAUS ");
servo2.write(20);
delay(2000);
//----------- AVANÇO DE GARRA--------------------------------------------------------------------------
Serial.println("AVANCO DE GARRA ");
digitalWrite(2,HIGH); // avanço de garra
while (digitalRead(2)==HIGH) // testa sensor de avanço de garra
{
while(digitalRead(4)==LOW) //testa condição do botao
{
digitalWrite(2,LOW);
}
}
Serial.println("SENSOR ATUADO ");
//------------------------------------------------------------------------
delay(2000);
Serial.println("CAPTURANDO OBJETO ");
servo2.write(0); // fecha garra
delay(2000);
Serial.println("MOTOR DE SUBIDA ACIONADO ");
//------------------------------------------------------------------------------------------------------------------------------------------
digitalWrite(12,HIGH); // ajustando posição
delay(500);
digitalWrite(12,LOW);
delay(1000);
//----------------------------------------------------------RECUO DE GARRA----------------------------------------------------------------
Serial.println("RECUO DE GARRA "); // lendo dados da porta serial
digitalWrite(6,HIGH); // recuo de garra
while (digitalRead(6)==HIGH) // testa sensor de recuo de garra de garra
{
while(digitalRead(8)==LOW) // testa condição do sensor
{
digitalWrite(6,LOW);
}
}
Serial.println("SENSOR ATUADO ");
//----------------------------------------------------------------------------------------------------------------------------------------
delay(2000);
Serial.println("MADANDO PINÇA PRA 90 GRAUS ");
servo1.write(90); //manda da garra para 90 graus
delay(2000);
//------------------------------------------------------LIGA MOTOR DE SUBIDA E DECREMENTA-------------------------------------------------------------
Serial.println("PREPARANDO PARA LIGAR MOTOR");
delay(3000);
digitalWrite(12,HIGH);
Serial.println("MOTOR DE SUBIDA DO BRAÇO LIGADO "); // ESCREVENDO NA TELA
//tinha um for aqui...
Serial.println("PREPARANDO PARA LIGAR MOTOR");
delay(3000);
digitalWrite(12,HIGH);
Serial.println("MOTOR DE SUBIDA DO BRAÇO LIGADO "); // ESCREVENDO NA TELA
for(int i=0;i<3;i++) // (CONTADOR INÍCIO;EXPR;INCREMENTO DO CONTADOR)Este tipo de comando de repetição deve ser utilizado quando se sabe a quantidade
{
while(digitalRead(7) == HIGH);
delay(3000);
while(digitalRead(7) == LOW);
}
while(digitalRead(7) == HIGH);
Serial.println("SENSOR ATUADO ");
digitalWrite(12,LOW);
Serial.println("MOTOR DE SUBIDA DO BRAÇO DESLIGADO ");// ESCREVE A MENSAGEM NA TELA
//------------------------------------------------------------- BRAÇO NA HORIZONTAL NA ESQUERDA ----------------------------------------------------------
delay(3000);
Serial.println("BRAÇO MOVIMENTANDO NA HORIZOTAL (lado direito) ");
delay(200);
Serial.println("MANDANDO GARRA PARA 180 GRAUS ");
servo1.write(180); // mandando a pinça pra 180 graus
delay(2000);
digitalWrite(10,HIGH); // liga motor da horizontal movimento da garra na horizontal
delay(5000);
while (digitalRead(10)==HIGH) // testa a condiçao do botao
{
while(digitalRead(11)==LOW)
{
digitalWrite(10,LOW);
}
}
//-------------------------------------------------------- AVANÇO DE GARRA------------------------------------------------------------------------------------------------------
delay(2000);
Serial.println(" AVANCO DE GARRA ");
digitalWrite(2,HIGH); // avanço de garra
while (digitalRead(2)==HIGH) // testa sensor de avanço de garra
{
while(digitalRead(4)==LOW) //testa condição do botao
{
digitalWrite(2,LOW);
}
}
Serial.println("SENSOR ATUADO ");
//------------------------------------------------------------------------------------------------------------------
delay(2000);
Serial.println("AJUSTANDO POSICAO ");
digitalWrite(13, HIGH); //ajustando a posiçao
delay(200);
digitalWrite(13, LOW);
delay(2000);
Serial.println(" DEIXANDO OBJETO ");
servo2.write(20); //abrindo garra
//----------------------------------------------------------------recuo de garra-------------------------------------------------------------------------------
delay(2000);
Serial.println(" RECUO DE GARRA ");
delay(200);
digitalWrite(6,HIGH); // RECUO DA GARRA
while (digitalRead(6)==HIGH) // testa sensor de recuo de garra de garra
{
while(digitalRead(8)==LOW) //testa condição do botao
{
digitalWrite(6,LOW);
}
}
delay(200);
Serial.println(" SENSOR ATUADO ");
//movimento para a direita---------------------------------------------------------------------------------------------
delay(2000);
Serial.println(" BRAÇO MOVIMENTANDO NA HORIZOTAL (lado esquerdo) ");
digitalWrite(9,HIGH); // liga motor da horizontal movimento para a direita da garra na horizontal
delay(5000);
while (digitalRead(9)==HIGH) // testa a condiçao do botao
{
while(digitalRead(11)==LOW)
{
digitalWrite(9,LOW);
}
}
Serial.println(" SENSOR ATUADO ");
servo1.write(90);
//--------------------------------------------------------------------------------------
//------------------------------DESCIDA DO BRAÇO ----------------------------------------------------------------------
Serial.println("PREPARANDO PARA LIGAR MOTOR");
delay(3000);
digitalWrite(13,HIGH);
Serial.println("MOTOR DE SUBIDA DO BRAÇO LIGADO "); // ESCREVENDO NA TELA
for(int i=0;i<3;i++) // (CONTADOR INÍCIO;EXPR;INCREMENTO DO CONTADOR)Este tipo de comando de repetição deve ser utilizado quando se sabe a quantidade
{
while(digitalRead(7) == HIGH);
delay(3000);
while(digitalRead(7) == LOW);
}
while(digitalRead(7) == HIGH);
Serial.println("SENSOR ATUADO ");
digitalWrite(13,LOW);
Serial.println("MOTOR DE SUBIDA DO BRAÇO DESLIGADO ");// ESCREVE A MENSAGEM NA TELA
Serial.println("xxxxxxxxxxxxxxxxxxxxxx FIM DO CICLO xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ");
delay(500);
Serial.println("_______________________________ENGENHARIA DE CONTROLE E AUTOMACAO_________________________________________________ ");
break;
Oi Leandro...
parece sintoma de queda de energia no arduíno..
porém, você disse que "...sem o motor funciona com o motor não funciona... "
imagino que você tenha desconectado a alimentação dos relês no arduíno... correto?
caso este "...sem o motor funciona..." seja apenas retirando dos relês os fios de alimentação do motor, aí acho que deve-se dar uma verificada nesse esquema de ligação dos seus relês.
Não encontrei nenhum esquema de cirquito no seu site =(
abraço.
blz Eduardo ontem conversei com um professor de eletrica e ele disse que pode ser retorno de corrente e que é pra nos colocarmos um acoplador óptico TIL 111 isolando todo o Arduino.e quanto aos relês eles não foram desligados. so desliguei a tensão 127v então quando o Arduino manda o sinal, o relê traca e código funciona... OBS: falta atualizar a parte elétrica mesmo no site...
Mesmo assim vou testar com esse acoplador e dar uma verificada nos relês, como vc disse.
meu caro muito obrigado. e ainda vou te dar noticias do trabalho.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por