Show Posts
Pages: [1]
1  International / Portugues / Re: Arduino fica maluco motores com microswitch on: December 03, 2012, 07:51:16 pm
Hugo, numa proxima experiencia ou caso tenha que fazer outra placa usarei foto-acopladores é uma boa ideia, com este sistema que tenho montado os tip120 estao a funcionar bem, testei indivualmente aplicando 5v na Base activa os motores e solenoid, tenho que testar os micros e sensor individualmente para ver se activam o atmega e fazem chegar o sinal á saida dos TIP.

Quote
Para que são os delays de 6 segundos?

Para entrar em pausa e nao continuar com o codigo entre o ligar de cada motor porque a peça demora talvez um ou dois segundos a cair, preciso sempre de fazer essas pausas, quando tudo funcionar podem ser ajustadas.
Esquematicamente é simples

amanha faço um video com o projeto todo para que possam perceber
2  International / Portugues / Re: Arduino fica maluco motores com microswitch on: December 02, 2012, 11:01:10 pm
resposta ao fabiohbm007
sim é esse o codigo para esses dois motores, vai ter de ter mais codigo.

para ativar os motores e o soneloid estou a utilizar TIP120 com uma resistencia de 1K ligado ao pino correspondente do arduino
este esquema mas com resistencia de 1K
amanha experimento o teu codigo, principalmente a troca dos "if" por "while"

tiras-te o delay (200) mas esse acho que vai fazer falta
vê a explicaçao que dei ao bubulindo para ele estar lá,  no fundo se nao tivesse aquele atraso o motor ligava e parava logo nem saia do microswitch porque quando ele liga o micro está LOW e logo de seguida tenho a informar que se tiver LOW para parar o motor, é o ma contradiçao se eu nao puser uma pausa entre o arranque do motor , se vires o video antes de eu dizer que carreguei o novo codigo percebes o funcionamento.

Obrigado aos dois
3  International / Portugues / Re: Arduino fica maluco motores com microswitch on: December 02, 2012, 10:36:17 pm
xiiiiiiiiii so agora vi que tinham ajudado, um dia perdido quando podia ter feito algo smiley-mad

respostas ao bubulindo
Quote
Se o primeiro motor desliga com o microswitch, para que é o delay de 200 milisegundos?

na realidade após muitas experiencias foi assim que consegui por o motor a funcionar direito

digitalWrite(motor1,HIGH); //o motor liga
delay (200); //este deley é para não verificar o estado do switchPin1 enquanto ele esta HIGH, portanto é um atraso para quando passar para a linha de baixo o motor rodar até activar o switch e o passar a LOW
if (digitalRead(switchPin1) == LOW)
{
digitalWrite(motor1, LOW);
delay(6000);
}

Quote
o que é o switchpin4? que estado é que normalmente está?
está HIGH, o mecanismo do primeiro motor  deixa cair uma peça e passa a LOW, na verdade ai nao está um switch mas um sensor daqueles de impressora, emissor e recetor.

uso delays por ser mais facil nesta fase que pouco percebo de programaçao e porque no total preciso de ativar 3 motores e 1 soneloid, um de cada vez, nada esta ligado direto ao atmega, é tudo alimentado por um trasformador de 7.5v dos quais tiro os 5v para o atmega com um 7805 filtrado por condençadores
4  International / Portugues / Re: Arduino fica maluco motores com microswitch on: December 01, 2012, 01:46:15 pm
aqui esta o link do video
http://youtu.be/3HsbOb070Bw


32 Views ninguem dá uma dica?
5  International / Portugues / Arduino fica maluco motores com microswitch on: December 01, 2012, 01:11:44 pm
Boas ppl

estou a construir um projeto, parte mecanica ja feita e pcb tambem, estou a usar o atmega328 numa placa que eu fiz o problema esta no codigo sou muito noob e estou-me a passar  smiley-eek

tenho varios motores  que quero que squencialmente  sejam activados e mandados parar por microswitchs quando ponho o codigo para um tudo funciona bem, quando meto o codigo para ligar outro fica tudo maluco.


int motor1 = 3; // motor do alimentador
int switchPin1 = 6;    // switch input para parar motor do alimentador
int switchPin2 = 2;  //switch input para parar motor do tubo
int motortubo = 5;  //motor do tubo


void setup() {
pinMode(motor1, OUTPUT);
pinMode(switchPin1, INPUT);
pinMode(switchPin2, INPUT);
pinMode(motortubo, OUTPUT);
}


void loop(){
digitalWrite(motor1,HIGH);
delay(200);
if (digitalRead(switchPin1) == LOW)
{
digitalWrite(motor1, LOW); // desliga o motor do tubo
delay(6000);
}

//até aqui tudo bem a intençao é por o motor a dar uma volta e parar quando bater no microswitch, funciona direitinho com este codigo

depois de do motor1 parar quero que ligue outro e meto o seguinte codigo


if (digitalRead(switchPin4) == LOW)
{
  digitalWrite(motortubo,HIGH);
  delay(50);
  digitalWrite(motortubo,LOW);
  delay(6000);
  }

mas o que acontece é que o primeiro motor trabalha continuamente e o segundo por vezes liga, a intençao do segundo é dár so um impulso por isso tem um delay de 50

alguma alma caridosa para dar uma ajuda? se for preciso faço um video para demonstrar o que acontece, desde ja obrigado
6  International / Portugues / Re: como parar motor com micro switch on: November 30, 2012, 05:55:40 pm
Ola Bubulindo, peço desculpa nao ter dito mais nada, nao tenho tido tempo e algum que ia tendo ia aplicando na parte mecanica do meu projeto e a confeçao da placa, esta parte está toda feita, agora falta a parte da programaçao, para mim muito mais dificil porque sou mesmo noob no assunto ebora toda a programaçao seja facil para quem perceba um pouco do assunto.

A primeira opçao que postas-te deverá ser a ideal mas fiquei todo baralhado da minha cabeça  smiley-eek pelo que tenho andado a tenter perceber vejo partes do codigo como "if (digitalRead(switchPin1) == HIGH" e tu espetas-me com "if (ligar_o_motor == TRUE)" será a mesma coisa? assim como isto "unsigned char switch_antes = 0;" está-me a fazer uma confusao danada heheh, podes substituir isso por algo real? é mais macil para eu perceber.

Basicamente o que eu preciso é que o motor trabalhe e pare numa certa posiçao para isso uso um microswitch, continua o resto do codigo e que basicamente sao outros motores que tem que parar tambem com outros microswitchs mas quando commeçar o loop novamente o primeiro motor tem que fazer o mesmo ou seja dar uma volta e parar.

desde ja obrigado pela ajuda
7  International / Portugues / Re: como parar motor com micro switch on: August 21, 2012, 07:34:35 am
então ninguem me consegue ajudar, parece simples para os entendidos, mara mim é um caso complicado, pretendo ter um motor a trabalhar que pare ao activar um microswitch, só que tem de ter um atrazo na paragem para sair do espaço onde activou o micro.
8  International / Portugues / como parar motor com micro switch on: August 19, 2012, 01:32:49 pm
Olá, pretendo em certa parte do codigo por um motor a trabalhar e quando ele activar um microswitch parar, depois no loop continua o resto do código e quando chega normalmente ao motor ele tem que trabalhar ate atingir o micro switch novamente.

O que tento fazer é quando o micro switch esta em low pára o motor se calhar até é conveniente dar um atraso na paragem para deixar o motor novamente em HIGH.

int switchPin = 2;
int motor = 5;

void setup() {
pinMode(motor, OUTPUT);
pinMode(switchPin, INPUT);

digitalWrite(switchPin, HIGH);
}

void loop() {
digitalWrite(motor, HIGH); // Vai ligar o motor 
  if (digitalRead(switchPin) == LOW) {
    digitalWrite(motor, LOW);   // o motor para
     }

depois continua com o resto do codigo, sei que isto não esta bem
9  International / Portugues / Re: fazer pausa ate que determinada entrada passe a LOW on: August 10, 2012, 06:52:55 am
tentei o que o HugoPT disse e nao resultou, ficava parado nessa parte, mesmo que o switchPin2 passase a LOW, nao andava mais, faltava á frente o == HIGH.

De momento ficou assim:

 while(digitalRead(switchPin2) == HIGH) { }
  if (digitalRead(switchPin2) == LOW)
  {
  digitalWrite(motortubo, HIGH); // liga o motor do tubo
  delay(6000);                  // fica ligado 6segundos
  digitalWrite(motortubo, LOW); // desliga o motor do tubo
  }

Resumindo adicionei a linha while(digitalRead(switchPin2) == HIGH) { }, e apaguei o ELSE .

Bubulindo, mais tarde coloco o codigo como postaste e depois deixo feedback, sou muito novato nisto mas já li por ai que nao se deve usar o DELAY, mas não percebi o porquê,  smiley-eek

obrigado a todos
10  International / Portugues / fazer pausa ate que determinada entrada passe a LOW on: August 10, 2012, 04:15:41 am
Boas sou iniciante no arduino e na programaçao, estou a desenvolver um mecanismo e tenho um microswitch ligado.

o código está assim:

if (digitalRead(switchPin2) == LOW)
  {
  digitalWrite(motortubo, HIGH); // liga o motor
  delay(6000);                  // fica ligado 6segundos
  digitalWrite(motortubo, LOW); // desliga o motor do tubo
  }
  else
{
    digitalWrite(motortubo, LOW); // Aqui é que a porca torce o rabo

  }

preciso que se o switchPin2 estiver HIGH ele fique á espera sem avançar mais o programa até que fique LOW

desde ja agradeço alguma ajuda
Pages: [1]