Índice:

UCL - Embedded - Pick and Place: 4 etapas
UCL - Embedded - Pick and Place: 4 etapas

Vídeo: UCL - Embedded - Pick and Place: 4 etapas

Vídeo: UCL - Embedded - Pick and Place: 4 etapas
Vídeo: How to Board Bring-up | Embedded System Project Series #24 2024, Julho
Anonim
UCL - Embutido - Escolha e coloque
UCL - Embutido - Escolha e coloque

Este instrutível explicará como uma unidade de escolha e colocação 2D é feita e como codificá-la.

Etapa 1: Compunets

Compunets
Compunets

1x Adrio Mega

2 motores de passo (usamos o motor de passo JLB, modelo 17H1352-P4130)

Módulo de placa de controlador de unidade de motor de passo 2x L298N Dual H Bridge DC para Arduino

1x servo motor (não temos a mancha neste)

3 resistores de 10k ohm

2x pápulas de nylon

1x fonte de alimentação 12v

Alguma madeira para a moldura

Fios

Etapa 2: construção

Construção
Construção
Construção
Construção
Construção
Construção

A primeira coisa durante a face de construção foi definir o tamanho e a forma do pick and place mashine

Primeiro, construímos a forma básica de madeira. Construímos nosso quadro de escolha e colocação de 50 cm por 25 cm por 30 cm. Tudo, exceto a estrutura, a ponte e o braço de levantamento, foi fabricado com um cortador a laser.

Aqui está um link para todos os arquivos

Então queríamos o sistema de polia. Aqui nós fomos com dois anéis de 50 mm e um anel de 20 mm. Então colocamos um paracord próximo a 20mm com um pouco de cola. Depois disso, apertamos os dois anéis de 50 mm em cada lado do anel de 20 mm.

20mm

50mm

Em seguida, precisamos projetar uma guia deslizante para o braço. Aqui fizemos dois lados e uma placa traseira.

Que então foi colado em forma de U. Em seguida, conectamos isso à ponte.

Placa lateral

Placa traseira

Agora que as partes para mover o braço para cima e para baixo estão prontas. Precisamos movê-lo para frente e para trás.

Ao projetar isso, certificamo-nos de que os dentes se alinham uns com os outros. Portanto, os dois itens foram criados no mesmo local do projeto.

Etapa 3: Código

Código
Código
Código
Código
Código
Código

A programação é bastante simples e consiste em 5 partes

  1. Inclusão de bibliotecas e configuração de variáveis para uso interno e IO
  2. Carregar entradas para Ram
  3. Sekvens, escolhendo o movimento que você deseja.
  4. Controle de posição deslizante / servo
  5. Saída para o mundo

Explicaremos em linhas gerais todas as partes, mas lembre-se de que esta é apenas uma das muitas soluções.

1: Antes da configuração do vazio, incluímos as 2 bibliotecas de que precisamos para este projeto. Stepper e Servo. Usando as bibliotecas incluídas, evita que você aprenda todos os detalhes sobre motores de passo e servo motores.

#incluir

#incluir

const int stepsPerRevolution = 200; // mude isso para ajustar o número de passos por revolução para o seu motor

// inicializa a biblioteca stepper nos pinos 8 a 11:

Stepper XStepper (stepsPerRevolution, 22, 23, 24, 25); Stepper YStepper (stepsPerRevolution, 28, 29, 30, 31); Servo Griper; // cria um objeto servo para controlar um servo

a garra precisa ser anexada na configuração do vazio

void setup () {// inicializa a porta serial: Serial.begin (9600); Griper.attach (9); // anexa o servo no pino 9 ao objeto servo

O resto desta seção é apenas configuração de variáveis e constantes.

2: A primeira coisa no Void Loop é carregar todas as entradas usadas em uma variável. Isso é feito por dois motivos. O primeiro motivo é limitar as tarefas pesadas da CPU de leitura de uma entrada. O segundo motivo, o mais importante, é garantir que, se um Input for usado mais de uma vez, terá o mesmo valor durante toda a varredura. Isso torna a escrita de código consistente muito mais fácil. Esta é uma prática muito comum na programação de PLC, mas também se aplica à programação embarcada.

// ------------------------- Indput para RAM -------------------- Xend = leitura digital (34); Yend = leitura digital (35); Ena = leitura digital (36);

3: Na parte sekvens do código, acabamos de fazer um sekvens com os comandos Switch e case. A parte sekvens apenas fornece sinais para a parte de controle de posição do código. Esta parte pode ser facilmente personalizada para seu aplicativo ou usada como está.

4: A posição do servo é controlada apenas pelo servo liberi, e uma declaração if para a garra aberta e fechada.

O controle de passo é um pouco mais complicado. A função compara o ponto de ajuste (a posição para a qual você deseja que o braço vá) e a posição atual. Se a posição atual for igual a, a função acrescenta à posição e solicita à função Stepper liberi que dê um passo positivo. O oposto é verdadeiro para uma posição alta. se a posição for a mesma do Setpoint, um bit XinPos está saturado e o stepper para.

// SP controle X

if (XstepCountXsp e não Home) {

XstepCount = XstepCount-1; Xstep = -1; XinPos = 0; } if (XstepCount == Xsp) {Xstep = 0; XinPos = 1; }

5: Adicione o final do código os motores são controlados com as funções liberi.

// -------------------- Saída ---------------------- // etapa um passo: XStepper.step (Xstep); // passo um passo: YStepper.step (Ystep);

Griper.write (GripSp);

Etapa 4: feito por

casp6099 - Casper Hartung Christensen

rasm616d - Rasmus Hansen

Recomendado: