collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Ajuda Elevador (para PIC LINGUAGEM C) download image  (Lida 12135 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline Dilan Granjo

  • Mini Robot
  • *
  • Mensagens: 4
Ajuda Elevador (para PIC LINGUAGEM C) download image
« em: 01 de Dezembro de 2010, 20:56 »
Boa Noite, eu preciso de ajuda num projecto para Automação e comando, o trabalho é a criação de um programa de um elevador com 3 andares com o seguinte funcionamento...(para PIC LINGUAGEM C)

Funcionamento
PONTO 1- O Elevador é activado através do switch colocado em ON situado no comando a distância, quando isto acontece será activado um LED de cor Verde para indicar a activação do comando a distância e para demonstrar que estamos prontos para operar com o elevador.
PONTO 2 – Temos dois tipos de sensor:
- O Interno – Esta colocado dentro da cabine do elevador para ser detectado pelos sensores externos.
- O Externo – Neste elevador existem 3 (R/C; 1ºAndar; 2º Andar), eles vão detectar a presença do sensor interno e enviaram uma mensagem para o autómato a localizar a cabine.
PONTO 3 – O Rés-do-chão, 1º Andar, 2º Andar tem 3 botões respectivamente, sendo que teremos que pressionar um deles para que a cabine se movimente.
PONTO 4 – A cabine está ligado a um motor de 24V que desloca a cabine (depois de pressionados os botões) para o andar desejado.
PONTO 5 – Existe um Botão de Emergência para o caso de existência de algum problema com o elevador, este Botão ira parar todo o circuito impedindo que o elevador continue a sua marcha. Ele estará sinalizado com um LED vermelho que ira piscar em modo intermitente
« Última modificação: 01 de Dezembro de 2010, 21:01 por Dilan Granjo »

Offline Sérgio_Sena

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.649
    • Electronic Gear for Musicians
Re: Ajuda Elevador (para PIC LINGUAGEM C) download image
« Responder #1 em: 01 de Dezembro de 2010, 22:02 »
Procuras alguém que te faça o programa?

Qual a experiência que tens de programação em PIC ?

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Ajuda Elevador (para PIC LINGUAGEM C) download image
« Responder #2 em: 01 de Dezembro de 2010, 22:03 »
Então, precisas de uma ponte H para controlar o motor, para controlo muito grosseiro podes só ligar e desligar o motor e mudar o sentido de rotação, mas para um controlo mais preciso e suave deves usar pwm.
O botão de emergência o melhor é usar um pino que suporte interrupção, e quando esse pino é activado na interrupção metes o led a piscar e páras o motor.
O pseudo código muito grosseiro deve ser algo assim:
Código: [Seleccione]
//função que trata da interrupção
Parar motor imediatamente!
Piscar led

//Função main
Enqanto(botão não pressionado){
  Ver se foi pressionado o botão do comando, se sim parar o ciclo infinito;
  }
Ler os botões da cabine;
Ler o sensor para ver em que andar nos encontramos;
Se andar selecionado é superior ao actual, andar para cima;
Se andar selecionado é inferior ao actual, andar para baixo;

Enquanto(andar destino diferente de andar lido pelo sensor){
  Ler o sensor do andar;
  Quando valor do sensor igual a andar desejado, parar motor;
  }

Acho que será algo assim.
Tens aqui código para um elevador de 5 andares, com pouco trabalho alteras para 3:
http://tams-www.informatik.uni-hamburg.de/applets/hades/webdemos/95-dpi/pic16f84-elevator5/elevator.html
PS.: Sou o Tiago.
« Última modificação: 01 de Dezembro de 2010, 22:04 por senso »
Avr fanboy

Offline Dilan Granjo

  • Mini Robot
  • *
  • Mensagens: 4
Re: Ajuda Elevador (para PIC LINGUAGEM C) download image
« Responder #3 em: 01 de Dezembro de 2010, 22:29 »
Procuras alguém que te faça o programa?

Qual a experiência que tens de programação em PIC ?

Nenhuma e sim precisava de alguém que me fizesse o programa :S

Offline Dilan Granjo

  • Mini Robot
  • *
  • Mensagens: 4
Re: Ajuda Elevador (para PIC LINGUAGEM C) download image
« Responder #4 em: 01 de Dezembro de 2010, 22:31 »
Então, precisas de uma ponte H para controlar o motor, para controlo muito grosseiro podes só ligar e desligar o motor e mudar o sentido de rotação, mas para um controlo mais preciso e suave deves usar pwm.
O botão de emergência o melhor é usar um pino que suporte interrupção, e quando esse pino é activado na interrupção metes o led a piscar e páras o motor.
O pseudo código muito grosseiro deve ser algo assim:
Código: [Seleccione]
//função que trata da interrupção
Parar motor imediatamente!
Piscar led

//Função main
Enqanto(botão não pressionado){
  Ver se foi pressionado o botão do comando, se sim parar o ciclo infinito;
  }
Ler os botões da cabine;
Ler o sensor para ver em que andar nos encontramos;
Se andar selecionado é superior ao actual, andar para cima;
Se andar selecionado é inferior ao actual, andar para baixo;

Enquanto(andar destino diferente de andar lido pelo sensor){
  Ler o sensor do andar;
  Quando valor do sensor igual a andar desejado, parar motor;
  }

Acho que será algo assim.
Tens aqui código para um elevador de 5 andares, com pouco trabalho alteras para 3:
http://tams-www.informatik.uni-hamburg.de/applets/hades/webdemos/95-dpi/pic16f84-elevator5/elevator.html
PS.: Sou o Tiago.


Tiago o link que me envias-te não consigo abrir manda-me o mozilla abaixo :S ah isso é que é um pseudo codigo, pois mas isso eu nao posso entregar :( precisava de um programasito para mostrar algo :( usanod a pic que esta na imagem)

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Ajuda Elevador (para PIC LINGUAGEM C) download image
« Responder #5 em: 01 de Dezembro de 2010, 22:33 »
Tenho de reportar esse erro ao TigPt, por alguma razão o forum adiciona http://www. a todos os links e isso dá cabo da coisa, o código que está nesse link é este:
Código: [Seleccione]
// Elevator controller (5 floors) with PIC16F84 for Hades webdemos.
// Also demonstrates how to implement state-machines as C programs.
//
// 22.12.05 - first version (picclite+hitide)
//
// (c) 2005 fnh  hendrich@informatik.uni-hamburg.de

#include "htc.h"


// the push-buttons that request the elevator target floor
// we map BUTTON_0=RA4 etc. to keep the schematics simple..
//
#define BUTTON_0  RA4
#define BUTTON_1  RA3
#define BUTTON_2  RA2
#define BUTTON_3  RA1
#define BUTTON_4  RA0

// the sensors that indicate which floor the elevator car
// has reached. Again we map 0-4 1-3 etc. to avoid signal
// crossing in the schematics.
//
#define SENSOR_0  RB4
#define SENSOR_1  RB3
#define SENSOR_2  RB2
#define SENSOR_3  RB1
#define SENSOR_4  RB0

// two output ports used to control the elevator motor
// (on/off) and motor direction (up/ndown).
//
#define MOTOR_ON  RB6
#define UP_NDOWN  RB7

// the elevator states: parked means waiting (at floor < i >),
// up_to and down_to imply moving to the corresponding floor.
// We force an encoding that allows you to watch the state
// during the simulation (upper nibble=1/2/4: parked/up/down),
// lower nibble=floor index, 0xff=error
//
enum elevator_state {
  PARKED_0  = 0x10,
  PARKED_1  = 0x11,
  PARKED_2  = 0x12,
  PARKED_3  = 0x13,
  PARKED_4  = 0x14,
 
  UP_TO_1   = 0x21,
  UP_TO_2   = 0x22,
  UP_TO_3   = 0x23,
  UP_TO_4   = 0x24,

  DOWN_TO_3 = 0x43,
  DOWN_TO_2 = 0x42,
  DOWN_TO_1 = 0x41,
  DOWN_TO_0 = 0x40,
 
  UNKNOWN   = 0xff,
};

enum motor_state {
  STOP      = 0x00,
  MOVE_UP   = 0xc0,
  MOVE_DOWN = 0x80,
};


// global variables for state-machine state and motor control
//
unsigned char state = PARKED_0;
unsigned char motor = STOP;



// inidicate an error by lighting the LED on port B.5
// (note that RB5 is also used to reset the SR-flipflops,
// but the short strobes should not be visible on a real LED.
void
error(void)
{
  motor = STOP;
  for(;;) {
  RB5 = 1;
  }
}


void
main(void)
{

  GIE   = 0;    // disable interrupts
  TRISA = 0x1f; // all inputs
  TRISB = 0x1f; // RB7..RB5 outputs, RB4..RB0 inputs
 
  for( ;; ) {
 
  switch( state ) {
    case PARKED_0:
      if (BUTTON_1 | BUTTON_2 | BUTTON_3 | BUTTON_4) {
        state = UP_TO_1;
        motor = MOVE_UP;
      }
      else {
        motor = STOP;
      }
      break;
     
      case PARKED_1: 
        if (BUTTON_2 | BUTTON_3 | BUTTON_4) {
          state = UP_TO_2;
          motor = MOVE_UP;
        }
        else if (BUTTON_0) {
          state = DOWN_TO_0;
          motor = MOVE_DOWN;
        }
        else {
          motor = STOP;
        }                 
      break;

      case PARKED_2: 
        if (BUTTON_3 | BUTTON_4) {
          state = UP_TO_3;
          motor = MOVE_UP;
        }
        else if (BUTTON_0 | BUTTON_1) {
          state = DOWN_TO_1;
          motor = MOVE_DOWN;
        }
        else {
          motor = STOP;
        }                 
      break;

      case PARKED_3: 
        if (BUTTON_4) {
          state = UP_TO_4;
          motor = MOVE_UP;
        }
        else if (BUTTON_0 | BUTTON_1 | BUTTON_2 ) {
          state = DOWN_TO_2;
          motor = MOVE_DOWN;
        }
        else {
          motor = STOP;
        }                 
      break;
         
      case PARKED_4: 
        if (BUTTON_0 | BUTTON_1 | BUTTON_2 | BUTTON_3) {
          state = DOWN_TO_3;
          motor = MOVE_DOWN;
        }
        else {
          motor = STOP;
        }                 
      break;
     
    case UP_TO_1:
      if (SENSOR_2 | SENSOR_3 | SENSOR_4) {
        error();
      }
      if (BUTTON_2 | BUTTON_3 | BUTTON_4) {
        state = UP_TO_2;
        motor = MOVE_UP;
      }
      else if (SENSOR_1) {
        state = PARKED_1;
        motor = STOP;
      }
      else {
        motor = MOVE_UP;
      }
      break;

    case UP_TO_2:
      if (BUTTON_3 | BUTTON_4) {
        state = UP_TO_3;
        motor = MOVE_UP;
      }
      else if (SENSOR_2) {
        state = PARKED_2;
        motor = STOP;
      }
      else {
        motor = MOVE_UP;
      }
      break;

    case UP_TO_3:
      if (BUTTON_4) {
        state = UP_TO_4;
        motor = MOVE_UP;
      }
      else if (SENSOR_3) {
        state = PARKED_3;
        motor = STOP;
      }
      else {
        motor = MOVE_UP;
      }
      break;

    case UP_TO_4:
      if (SENSOR_4) {
        state = PARKED_4;
        motor = STOP;
      }
      else {
        motor = MOVE_UP;
      }
      break;
     
    case DOWN_TO_3:
      if (BUTTON_2 | BUTTON_1 | BUTTON_0) {
        state = DOWN_TO_2;
        motor = MOVE_DOWN;
      }
      else if (SENSOR_3) {
        state = PARKED_3;
        motor = STOP;
      }
      else {
        motor = MOVE_DOWN;
      }
        break;

    case DOWN_TO_2:
      if (BUTTON_1 | BUTTON_0) {
        state = DOWN_TO_1;
        motor = MOVE_DOWN;
      }
      else if (SENSOR_2) {
        state = PARKED_2;
        motor = STOP;
      }
      else {
        motor = MOVE_DOWN;
      }
        break;

    case DOWN_TO_1:
      if (BUTTON_0) {
        state = DOWN_TO_0;
        motor = MOVE_DOWN;
      }
      else if (SENSOR_1) {
        state = PARKED_1;
        motor = STOP;
      }
      else {
        motor = MOVE_DOWN;
      }
        break;

    case DOWN_TO_0:
      if (SENSOR_0) {
        state = PARKED_0;
        motor = STOP;
      }
      else {
        motor = MOVE_DOWN;
      }
        break;
 
      default:
        error();
         
  } // end switch(state)
 
  // a variant of the elevator circuit uses extra SR-flipflops
  // to make sure that the (short) pulses generated by the
  // floor-sensors are picked up by this program loop.
  // To reset the flipflops, we generate a short-pulse on RB5
  // now. We can do this here, because we have just handled
  // one iteration of the state-machine state update.
  // The single pulse is too short to make the error LED
  // light up visibly.
  RB5   = 1;
  RB5   = 0;
 
  // now activate the motor corresponding to the current
  // state. We just need RB7 and RB6, but the other bits
  // are inputs anyway.
  PORTB = motor;

    // finally, reset the watchdog timer.   
  CLRWDT(); 
  }

}

// we don't use interrupts in this program.
//
static void interrupt
isr(void)
{
 if(T0IF) {        // timer interrupt
  error();
  }
  else if(INTF) { 
  error();
  }
}

E o link em condições:
Código: [Seleccione]
http://tams-www.informatik.uni-hamburg.de/applets/hades/webdemos/95-dpi/pic16f84-elevator5/elevator.html
Avr fanboy

Offline Sérgio_Sena

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.649
    • Electronic Gear for Musicians
Re: Ajuda Elevador (para PIC LINGUAGEM C) download image
« Responder #6 em: 01 de Dezembro de 2010, 22:58 »
Procuras alguém que te faça o programa?

Qual a experiência que tens de programação em PIC ?

Nenhuma e sim precisava de alguém que me fizesse o programa :S


Em que ano estás da escola ?

Há muita ajuda aqui no forum, e por toda a internet.
Não sei ao certo se a ajuda que tu queres, a vais ter da maneira que queres.

StarRider

  • Visitante
Re: Ajuda Elevador (para PIC LINGUAGEM C) download image
« Responder #7 em: 02 de Dezembro de 2010, 02:29 »
Procuras alguém que te faça o programa?

Qual a experiência que tens de programação em PIC ?

Nenhuma e sim precisava de alguém que me fizesse o programa :S

Hum... wrong answer !

Offline Sérgio_Sena

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 1.649
    • Electronic Gear for Musicians
Re: Ajuda Elevador (para PIC LINGUAGEM C) download image
« Responder #8 em: 02 de Dezembro de 2010, 10:25 »
Procuras alguém que te faça o programa?

Qual a experiência que tens de programação em PIC ?

Nenhuma e sim precisava de alguém que me fizesse o programa :S

Hum... wrong answer !


Wrong mesmo.

Vamos ver o q ele responde a seguir. Isto é tipo batalha naval.

Offline Daniel_Soares

  • Mini Robot
  • *
  • Mensagens: 4
Re: Ajuda Elevador (para PIC LINGUAGEM C) download image
« Responder #9 em: 11 de Abril de 2012, 11:18 »
Boa tarde. Eu gostaria de saber se era possivel alguem me ajudar a fazer um projecto de um elevador com 5 pisos. A minha PIC e a 18F452.Aguardo uma resposta em breve obrigado.

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Ajuda Elevador (para PIC LINGUAGEM C) download image
« Responder #10 em: 11 de Abril de 2012, 14:24 »
Já está por ai código, adicionar andares é trivial.
Avr fanboy

Offline Daniel_Soares

  • Mini Robot
  • *
  • Mensagens: 4
Re: Ajuda Elevador (para PIC LINGUAGEM C) download image
« Responder #11 em: 11 de Abril de 2012, 19:42 »
Mas nao da para compilar. Por isso mesmo e que eu pedi ajuda eu queria algo tipo isto:

while(true)
      { 
          if (input(PIN_D1)==0) num_andar_proximo=1; //ANDAR 1º                   
          if (num_andar_presente > num_andar_proximo)
           {
            output_high(PIN_B2);
            delay_ms (t);
            output_low(PIN_B2);
            num_andar_presente=num_andar_proximo;
           }
Queria algo tipo o codigo que ta em cima. Fazer comparações entre eles.

Offline Daniel_Soares

  • Mini Robot
  • *
  • Mensagens: 4
Re: Ajuda Elevador (para PIC LINGUAGEM C) download image
« Responder #12 em: 12 de Abril de 2012, 15:40 »
Senso queria-te fazer uma pergunta se não consegues arranjar um trabalho em linguagem C em que apareça num LCD os seguintes parâmetros:
Temperatura, humidade, luminosidade, pulverizadade, horas e data.
Nao e para mim e para um colega meu, que e para entregar no final do Curso
Aguardo uma resposto em breve..

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Ajuda Elevador (para PIC LINGUAGEM C) download image
« Responder #13 em: 12 de Abril de 2012, 15:42 »
Não leves a mal, mas....
Ninguem vai fazer um trabalho para outra pessoa, pelo menos de graça não.
Imagino que aprenderam a fazer algumas dessas coisas nas aulas, depois é pegar em tudo e juntar num projecto só.
Avr fanboy

Offline Daniel_Soares

  • Mini Robot
  • *
  • Mensagens: 4
Re: Ajuda Elevador (para PIC LINGUAGEM C) download image
« Responder #14 em: 12 de Abril de 2012, 15:44 »
Eu perguntei tipo para me dares umas dicas, nao queria que me fizesses o trabalho tas a perceber.
Mas obrigado na mesma