Robô Pick n Place computadorizado

O completo Escolha e coloque o robô é uma combinação de três subseções

1. Mecanismo robótico

2. Circuito de driver de hardware

3. Controlando software em VC++

Obviamente, a parte principal será o mecanismo que realmente forma o corpo do robô significa braço robótico móvel que pega ou coloca qualquer objeto.

A função do circuito de driver de hardware é acionar todos os três motores e acionar todos os movimentos do robô.

O software de controle também é uma parte importante deste robô porque ele cuidará de todas as ações de controle. As principais funções desta seção são

Gire a mão para um ângulo específico de onde o objeto deve ser escolhido ou colocado

  • Mova a mão para cima ou para baixo para pegar ou colocar o objeto.
  • Abra ou feche o punho dependendo do tamanho do objeto

Primeiro, vamos começar com a parte mecânica

Mecanismo Robótico: –

A figura abaixo mostra a visão 3-D do mecanismo

Robô Pick n Place computadorizado

O mecanismo completo é feito de chapas de madeira, apenas os punhos são de aço. Existem tantas partes, então vamos entendê-las uma por uma.

Base fixa: –A base fixa fornece alojamento completo para o circuito de acionamento, motor CA (ACM1) e todas as conexões. Ele fornece a plataforma para mover e girar a mão.

Roda giratória: – Ele fornece alojamento para movimento manual e motorredutor CC (DCM1). É uma plataforma giratória livremente que gira a mão em um círculo completo de 360 ​​graus. Está diretamente acoplado ao eixo do ACM1.

Mão em movimento: – É acoplado ao DCM1 com plataforma fornecida sobre roda giratória. É permitido mover-se para cima e para baixo livremente no máximo até 90 graus. Na extremidade frontal da mão existem duas empunhaduras, uma é fixa (inferior) e outra é deslizante (superior). A empunhadura deslizante pode deslizar para frente e para trás com o uso do segundo motorredutor CC (DCM2). A extremidade traseira da mão fornece alojamento para o DCM2, que é diretamente acoplado à empunhadura deslizante. Aqui o momento angular (circular) do motor é convertido em movimento linear do punho deslizante gravando ranhuras no punho deslizante de madeira que combinam exatamente com os dentes da engrenagem.

Motor CA (ACM1): – A função deste motor é girar toda a plataforma giratória até algum ângulo específico. Este motor possui velocidade exatamente calibrada de 2 RPM (rotações por minuto) com tensão aplicada de 230 VAC e frequência de 50 Hz. Assim, podemos calibrar o ângulo de rotação com muita facilidade

2 revoluções = 2×360 graus = 720 graus,

Significa que em um minuto o motor girará 720 graus. Agora, em 1 minuto = 60 segundos, o motor gira 720 graus, então vamos calcular quanto ele girará em 1 segundo.

Segundo grau de rotação

60 720

1 720/60 = 12 graus

Portanto, em 1 segundo, o motor girará exatamente 12 graus. Significa que se você fornecer alimentação por 1 segundo, o motor girará apenas 12 graus. Assim, você pode selecionar facilmente as etapas para girar o motor, como 30 graus (30, 60, 90,…) 45 graus (45, 90, 135,…)

Motor de engrenagem CC (DCM1): – É usado para mover a mão para cima e para baixo no limite de um ângulo de 90 graus. As engrenagens embutidas reduzem a velocidade do motor para cerca de 5 RPM a 12 VCC. Então, calculando o ângulo de rotação em 1 segundo

Segundo grau de rotação

60 5×360ó = 1800ó

1 1800/60 = 30ó

Significa que se você fornecer alimentação por 1 segundo, o motor girará apenas 30 graus. Você pode ajustar no máximo 3 etapas de 30, 60 e 90 graus

Motor de engrenagem CC (DCM2): – É usado para abrir ou fechar a alça para pegar o objeto. Você pode aumentar ou diminuir a abertura da alça dependendo do tamanho do objeto. A relação de rotação da engrenagem embutida proporciona velocidade de cerca de 10 RPM. Vamos calcular novamente o ângulo de rotação por 1 segundo

Segundo grau de rotação

60 10×360ó = 3600ó

1 3600/60 = 60ó

Aqui o motor girará 60 graus se a alimentação for fornecida por 1 segundo. Os bosques são gravados de tal forma que quando o motor gira 60 graus o punho se move cerca de 1-2 cm. Então, em última análise, você pode abrir ou fechar a alça em passos de 1 cm (1, 2, 3…), 2 cm (2, 4, 6…).

Circuito de driver de hardware

Circuito de driver de hardware

A figura na guia 1 do circuito mostra o esquema do circuito do driver. É um circuito de chip único e IC UNL2003A é o principal componente dele. Outros componentes são conector fêmea tipo D de 25 pinos, relé C/O simples (RL1, RL2, RL3, RL5) e relé C/O duplo (RL4, RL6).

Conexões: –As saídas do conector D0 a D6 são conectadas diretamente às entradas do UNL2003A e as saídas do chip são fornecidas a um dos terminais da bobina de cada relé. O outro terminal da bobina de cada relé está conectado diretamente à alimentação de 12 V Vcc. O 'terminal comum' (C) do RL1 está conectado a 230 VCA e o terminal 'Normalmente Aberto' (N/O) está conectado ao terminal 'C' do RL2. Ambos os terminais de RL2 (N/C, N/O) estão conectados ao ACM1. Para ambos os relés RL4 e RL6, os terminais N/C e N/O alternativos estão em curto. Um desses pares é conectado ao terra e o outro par recebe uma alimentação CC de 12 V e 5 V através de RL3 e RL5, respectivamente.

Operação: – O chip UNL2003A consiste em 7 pares Darlington e sempre que receber uma lógica alta em sua entrada fornecerá uma lógica baixa em sua respectiva saída. Portanto, sempre que você aplicar uma lógica alta através do PC ao chip, ela fornecerá uma saída baixa correspondente. Como as saídas estão conectadas aos terminais da bobina do relé, os relés serão energizados devido à passagem de corrente pela bobina. Quando o relé é energizado, sua conexão muda de N/C para N/O e ele executará alguma tarefa específica. A tabela abaixo mostra a função de cada relé no circuito.

Retransmissão

Sua função no circuito

RL1

Para iniciar ou parar a rotação do ACM1

RL2

Para mudar a direção do ACM1

RL3

Para iniciar ou parar a rotação do DCM1

RL4

Para mudar a direção do DCM1

RL5

Para iniciar ou parar a rotação do DCM2

RL6

Para mudar a direção do DCM2

Programas em VC++

Programa de software em VC++

Robô Pick n Place computadorizado

O software é escrito na linguagem de programação VC++. Aqui estou considerando que você está muito familiarizado com VC++. Portanto, não estou discutindo aqui como o aplicativo é criado e projetado em VC++. Aqui está o aplicativo.

Possui 14 objetos diferentes

{C}{C}{C}{C}{C}{C}· {C}{C}{C}{C}{C}{C}7 botões

{C}{C}{C}{C}{C}{C}· {C}{C}{C}{C}{C}{C}6 botões de rádio

{C}{C}{C}{C}{C}{C}· {C}{C}{C}{C}{C}{C}1 caixa de grupo.

As funções e propriedades de cada objeto são explicadas na tabela abaixo:.

Sr. Não.

Objeto

Propriedades

Função

1

Caixa de grupo

ID: -IDC_Angle

Fornece agrupamento para todos os botões de opção

Legenda: – Selecione um ângulo de rotação

2

Botão de opção 1

ID: IDC_RADIO1

Seleciona o ângulo de rotação do motor CA em 30 graus.

Legenda: 30 graus.

Opção de grupo: Marcado

3

Botão de opção 2

ID: IDC_RADIO2

Seleciona o ângulo de rotação do motor CA em 60 graus.

Legenda: 60 graus.

4

Botão de opção 3

ID: IDC_RADIO3

Seleciona o ângulo de rotação do motor CA em 90 graus.

Legenda: 90 graus.

5

Botão de opção 4

ID: IDC_RADIO4

Seleciona o ângulo de rotação do motor CA em 120 graus.

Legenda: 120 graus.

6

Botão de opção 5

ID: IDC_RADIO5

Seleciona o ângulo de rotação do motor CA em 150 graus.

Legenda: 150 graus.

7

Botão de opção 6

ID: IDC_RADIO7

Seleciona o ângulo de rotação do motor CA em 180 graus.

Legenda: 180 graus.

8

Botão 1

Código: IDC_CL

Gire o motor CA no sentido horário

Legenda: Girar no sentido horário

9

Botão 2

ID: IDC_ACLK

Gire o motor CA no sentido anti-horário

Legenda: Girar no sentido anti-horário

10

Botão 3

Código: IDC_UP

Mova a mão do robô para cima

Legenda: Mover a mão para cima

11

Botão 4

ID: IDC_DWN

Mova a mão do robô para baixo

Legenda: Mover a mão para baixo

12

Botão 5

ID: IDC_OPN

Abra o aperto da mão

Legenda: Punho Aberto

13

Botão 6

Código: IDC_CLOS

Feche o aperto da mão

Legenda: Aperto Fechado

14

Botão 7

ID:IDC_XIT

Sair do aplicativo

Legenda: Sair do programa

Depois de passar pelo design, vamos passar para a operação do programa.

Operação: – Todos os botões de opção selecionam diferentes ângulos de rotação (de 30 a 180ó) para motor CA (ACM1). Como sabemos, se fornecermos alimentação ao ACM1 por 1 segundo, ele girará 12ó. Então, para girar em passos de 30ó temos que fornecer fornecimento em múltiplos de 2,5 segundos. Então, na verdade, todos esses botões de opção selecionarão o atraso desejado (2,5 segundos ou 5 segundos, 7,5 segundos… da mesma forma) para o qual o ACM1 receberá a alimentação CA.

O botão Girar no sentido horário/anti-horário girará o ACM1 no sentido horário/anti-horário.

{C}{C}{C}{C}{C}{C}· {C}{C}{C}{C}{C}{C}O botão no sentido horário ligará o relé RL1 para o atraso de tempo selecionado pelos botões de rádio

{C}{C}{C}{C}{C}{C}· {C}{C}{C}{C}{C}{C}O botão no sentido anti-horário ligará dois relés RL1 e RL2 por vez, para que o ACM1 gire em outra direção.

Os botões de mover o ponteiro para cima/para baixo ativarão RL3 ou RL3 e RL4 juntos por 0,5 segundo para que o DCM1 gire no sentido horário ou anti-horário e mova o ponteiro para cima ou para baixo.

Os botões de abertura/fechamento da alça ligarão RL5 ou RL5 e RL6 juntos por 0,5 segundo para que o DCM2 gire no sentido horário ou anti-horário ou mova a alça deslizante para frente ou para trás para abrir ou fechar a alça.

Mais uma funcionalidade é adicionada: se alguém quiser girar o ACM1 para qualquer ângulo diferente, como 45 graus, ele pode fazê-lo movendo o mouse mantendo pressionado o botão Esquerdo/Direito do mouse. O motor irá girar até que o mouse se mova.

Código-fonte do projeto

 

Código-fonte do projeto

 

 

###


vazio CMyroboDlg::OnClk
{
// TODO: Adicione seu código do manipulador de notificação de controle aqui
AtualizarDados(VERDADEIRO);
mudar (m_ângulo)
{
caso 0:
{
atraso = 2500;
quebrar;
}
caso 1:
{
atraso = 5000;
quebrar;
}
caso 2:
{
atraso = 7500;
quebrar;
}
caso 3:
{
atraso = 10000;
quebrar;
}
caso 4:
{
atraso = 12500;
quebrar;
}
caso 5:
{
atraso = 15.000;
quebrar;
}
}
AtualizarDados(FALSO);
_outp(0x0378,0x01);
Dormir(delicadamente);
_outp(0x0378,0x00);
}
vazio CMyroboDlg::OnAclk
{
// TODO: Adicione seu código do manipulador de notificação de controle aqui
AtualizarDados(VERDADEIRO);

mudar (m_ângulo)
{
caso 0:
{
atraso = 2500;
quebrar;

}
caso 1:
{
atraso = 5000;
quebrar;
}
caso 2:
{
atraso = 7500;
quebrar;
}
caso 3:
{
atraso = 10000;
quebrar;
}
caso 4:
{
atraso = 12500;
quebrar;
}
caso 5:
{
atraso = 15.000;
quebrar;
}
}
AtualizarDados(FALSO);
_outp(0x0378,0x03);
Dormir(delicadamente);
_outp(0x0378,0x00);

}
vazio CMyroboDlg::OnUp
{
// TODO: Adicione seu código do manipulador de notificação de controle aqui
_outp(0x0378,0x08);
Sono(500);
_outp(0x0378,0x00);
}
vazio CMyroboDlg::OnDwn
{
// TODO: Adicione seu código do manipulador de notificação de controle aqui
_outp(0x0378,0x18);
Sono(500);
_outp(0x0378,0x00);
}
vazio CMyroboDlg::OnOpn
{
// TODO: Adicione seu código do manipulador de notificação de controle aqui
_outp(0x0378,0x10);
Sono(500);
_outp(0x0378,0x00);
}
vazio CMyroboDlg::OnClos
{
// TODO: Adicione seu código do manipulador de notificação de controle aqui
_outp(0x0378,0x30);
Sono(500);
_outp(0x0378,0x00);
}
vazio CMyroboDlg::OnXit
{
// TODO: Adicione seu código do manipulador de notificação de controle aqui
EmOK ;
}
void CMyroboDlg::OnMouseMove(UINT nFlags, ponto CPoint)
{
// TODO: Adicione seu código de manipulador de mensagens aqui e/ou chame default
if((nFlags & MK_LBUTTON) == MK_LBUTTON)
{
_outp(0x0378,0x02);
Sono(250);
_outp(0x0378,0x00);
}
senão if((nFlags & MK_RBUTTON) == MK_RBUTTON)
{
_outp(0x0378,0x06);
Sono(250);
_outp(0x0378,0x00);
}
CDialog::OnMouseMove(nFlags, ponto);
}

###

Diagramas de circuito

u02

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.