Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Suporte rotativo com base em passo controlado por diálogo serial

Componentes e suprimentos

motor de passo 28BYJ48
× 1
X113647 Stepper Motor Driver
× 1
Hub de montagem universal de alumínio Pololu para eixo de 5 mm
× 1
Arduino UNO
× 1
Base de madeira 15 cm x 15 cm
× 1
almofadas de borracha
× 4

Ferramentas e máquinas necessárias

fretsaw
broca com broca de 6 mm para madeira

Sobre este projeto


História completa aqui:http://www.cesarebrizio.it/Arduino/Turntable.html

Este projeto trata de uma plataforma giratória baseada em um motor de passo.

O modelo de passo é 28BYJ48, controlado por meio do driver de motor de passo X113647 (baseado no ULN2003A IC) normalmente adquirido com o motor de passo.

A plataforma pode girar nas duas direções e é controlada por monitor serial ou Tera Term.

Os seguintes comandos são implementados:
  • R =Girar no sentido horário continuamente (ou seja:por várias voltas)
  • r =Girar 360deg; sentido horário
  • L =Girar no sentido anti-horário continuamente (ou seja:por várias voltas)
  • l =Girar 360deg; anti-horário
  • S =Pare de girar

Do ponto de vista mecânico, a montagem é muito simples:basta um quadrado de compensado ou material semelhante, com tamanho em torno de 15cm x 15cm, para a base da mesa.

O centro da mesa estará no cruzamento das diagonais - um orifício de 6 mm será feito exatamente naquele ponto.

O cubo de passo está descentrado:ao colar o cubo no orifício de 6 mm, o contorno do passo pode ser desenhado com um lápis.

Em seguida, um orifício redondo tão apertado quanto possível em torno do contorno do stepper será cortado por uma serra circular, de modo que os dois orifícios de fixação do stepper assentem firmemente na madeira da mesa, de modo que possam ser usados ​​para fixar o stepper ao tabela.

São necessárias almofadas de borracha de 10 mm de altura para permitir a folga necessária (o stepper ficará um pouco embaixo da mesa).

A placa giratória será fixada ao passo graças a um cubo de montagem universal de alumínio Pololu para eixo de 5 mm.

Fontes de informação:

Controle de passo pequeno:http://arduino-info.wikispaces.com/SmallSteppers







Na verdade usei 4 pinos diferentes, mas a ilustração do circuito abaixo reproduz com precisão as conexões. Olhando para a foto acima (o fio vermelho do Arduino substitui "rosa"):
  #define motorPin1 4 // Azul - 28BYJ-48 pino 1 # define motorPin2 5 // Rosa - 28BYJ-48 pino 2 # define motorPin3 6 // Amarelo - 28BYJ-48 pino 3 # define motorPin4 7 / / Laranja - 28BYJ-48 pino 4 // Vermelho - 28BYJ-48 pino 5 (VCC) // Azul - 28BYJ-48 pino GND # define STEPS_PER_TURN 2048 // número de etapas em 360 graus;  


Código

  • O esboço completo em Arduino
O esboço completo em Arduino Arduino
Uma descrição completa do software com comentários
 / * Suporte rotativo baseado em passo controlado por serial dialogCircuit e comentários:Veja http://www.cesarebrizio.it/Arduino/Turntable.htmlCircuit conforme ilustrado aqui:https:// www.tdegypt.com/wp-content/uploads/2017/08/stepper-motor-wiring.png a única exceção é que o esboço usa saídas digitais 4 - 5 - 6 - 7 enquanto o diagrama de Fritzing criado em 23 de dezembro de 2017 modificou --- - por Cesare Brizio Este código de exemplo é de domínio público. Este esboço controla uma plataforma giratória baseada em um motor de passo. O modelo de stepper é 28BYJ48, controlado por meio do X113647 Stepper Motor Driver (baseado no ULN2003A IC) normalmente adquirido com o motor de passo. A plataforma pode girar em ambas as direções e é controlada pelo Monitor Serial ou Tera Term. Os seguintes comandos são implementados:R =Girar no sentido horário continuamente (ou seja:por várias voltas) r =Girar 360 graus; sentido horárioL =girar no sentido anti-horário continuamente (ou seja:por várias voltas) l =girar 360 graus; counter-clockwiseS =Parar de girar Fontes de informação:Controle de passo pequeno:http://arduino-info.wikispaces.com/SmallSteppers*//*----- (Importar bibliotecas necessárias) ----- * / # incluir  / * ----- (Declarar constantes e números de pinos) ----- * // * NUNCA COLOCAR; APÓS A declaração #define !!!! * /// pinos do motor # define motorPin1 4 // Azul - 28BYJ-48 pino 1 # define motorPin2 5 // Rosa - 28BYJ-48 pino 2 # define motorPin3 6 // Amarelo - 28BYJ-48 pino 3 # define motorPin4 7 / / Laranja - 28BYJ-48 pino 4 // Vermelho - 28BYJ-48 pino 5 (VCC) // Azul - 28BYJ-48 pino GND # define STEPS_PER_TURN 2048 // número de etapas em 360deg; int motorSpeed ​​=500; // Velocidades altas (800 e acima) podem causar comportamento errático em 28BYJ-48int motorAccel =400; // Como acima:melhor evitar acelerações extremasint myPos =0; // será usado para definir um ponto de partida para 360deg; rotationsint LeftTurnUp =0; // Alguns sinalizadores para determinar a direção da rotaçãoint RightTurnDown =0; // Alguns sinalizadores para determinar a direção de rotaçãoint Continuous =0; // usado abaixo para discriminar comandos de rotação únicaint EntryByte =0; // para dados seriais de entrada / * ----- (Objetos para controle de passo) ----- * /// Configure o passo como bipolar de 4 fios no pino 4,5,6,7 // NOTA:O a sequência 1-3-2-4 é necessária para o sequenciamento adequado do stepper 28BYJ48AccelStepper (4, motorPin1, motorPin3, motorPin2, motorPin4); void setup () {Serial.begin (9600); stepper.setMinPulseWidth (20); // Configuração aconselhável para evitar que os pulsos do Arduino // sejam muito rápidos para serem decodificados stepper.setMaxSpeed ​​(motorSpeed); stepper.setSpeed ​​(motorSpeed); stepper.setAcceleration (motorAccel); // as duas linhas a seguir redefinem a "etapa zero" para a posição atual stepper.setCurrentPosition (stepper.currentPosition ()); stepper.runToPosition (); Serial.println ("Comandos disponíveis:"); Serial.println ("R =rotação contínua no sentido horário"); Serial.println ("r =360deg; rotação no sentido horário"); Serial.println ("L =rotação contínua no sentido anti-horário"); Serial.println ("l =360deg; rotação no sentido anti-horário"); Serial.println ("S =parar rotação");} void loop () {if (Serial.available ()> 0) {EntryByte =Serial.read (); {if (EntryByte =='R') {Serial.println ("recebido« R »- ativando rotação contínua no sentido horário"); // As duas linhas a seguir permitem enviar comandos em qualquer sequência:// antes da execução, uma parada rápida é realizada stepper.stop (); // Pare o mais rápido possível:define o novo destino stepper.runToPosition (); // Agora parado após a parada rápida // O par de sinalizadores a seguir determina a direção de rotação LeftTurnUp =1; RightTurnDown =0; Contínuo =1; // usado abaixo para discriminar comandos de rotação única stepper.setCurrentPosition (stepper.currentPosition ()); // Defina a etapa 0 "aqui" stepper.setSpeed ​​(motorSpeed); // Comandos anteriores redefiniram a velocidade} if (incomingByte =='L') {Serial.println ("recebidos« L »- ativando rotação contínua no sentido anti-horário"); // As duas linhas a seguir permitem enviar comandos em qualquer sequência:// antes da execução, uma parada rápida é realizada stepper.stop (); // Pare o mais rápido possível:define o novo destino stepper.runToPosition (); // Agora parado após a parada rápida // O par de sinalizadores a seguir determina a direção de rotação RightTurnDown =1; LeftTurnUp =0; Contínuo =1; // usado abaixo para discriminar comandos de rotação única stepper.setCurrentPosition (stepper.currentPosition ()); // Defina a etapa 0 "aqui" stepper.setSpeed ​​(motorSpeed); // Comandos anteriores redefiniram a velocidade} if (incomingByte =='r') {Serial.println ("recebidos« r »- ​​ativando rotação única no sentido horário"); // As duas linhas a seguir permitem enviar comandos em qualquer sequência:// antes da execução, uma parada rápida é realizada stepper.stop (); // Pare o mais rápido possível:define o novo destino stepper.runToPosition (); // Agora parado após a parada rápida // O par de sinalizadores a seguir determina a direção de rotação LeftTurnUp =1; RightTurnDown =0; Contínuo =0; // usado abaixo para discriminar comandos de rotação única stepper.setCurrentPosition (stepper.currentPosition ()); // Defina a etapa 0 "aqui" stepper.setSpeed ​​(motorSpeed); // Comandos anteriores redefiniram a velocidade // Visto que terei que avançar 2047 passos, eu armazeno minha posição // atual como ponto inicial da rotação myPos =stepper.currentPosition (); } if (comingByte =='l') {Serial.println ("recebido« l »- ativando rotação única no sentido anti-horário"); // As duas linhas a seguir permitem enviar comandos em qualquer sequência:// antes da execução, uma parada rápida é realizada stepper.stop (); // Pare o mais rápido possível:define o novo destino stepper.runToPosition (); // Agora parado após a parada rápida // O par de sinalizadores a seguir determina a direção de rotação RightTurnDown =1; LeftTurnUp =0; Contínuo =0; // usado abaixo para discriminar comandos de rotação única stepper.setCurrentPosition (stepper.currentPosition ()); // Defina a etapa 0 "aqui" stepper.setSpeed ​​(motorSpeed); // Comandos anteriores redefiniram a velocidade // Visto que terei que retroceder 2047 etapas, armazeno minha // posição atual como ponto inicial da rotação myPos =stepper.currentPosition (); } if (comingByte =='S') {Serial.println ("recebido« S »- parando a rotação"); // Reinicializa os sinalizadores que determinam a direção de rotação LeftTurnUp =0; RightTurnDown =0; stepper.stop (); // Pare o mais rápido possível:define o novo destino stepper.runToPosition (); // Agora parado após a parada rápida}}} if (Continuous ==1) // rotação contínua {if (LeftTurnUp ==1) // virar à esquerda {stepper.moveTo (10000); // mover muitos passos - mais do que mecanicamente necessário} if (RightTurnDown ==1) // virar à direita {stepper.moveTo (-10000); // move muitos passos - mais do que o necessário mecanicamente} stepper.run (); } if (Contínuo ==0) // rotação contínua {if (LeftTurnUp ==1) // virar à esquerda {stepper.moveTo (myPos + STEPS_PER_TURN); // 1 curva =2048 passo} if (RightTurnDown ==1) // curva à direita {stepper.moveTo (myPos-STEPS_PER_TURN); // 1 turno =2048 passo}} stepper.run ();} 

Esquemas

O circuito completo feito em Fritzing

Processo de manufatura

  1. Motores de passo
  2. Drivers integrados facilitam o design do motor de passo
  3. Ventilador com temperatura controlada
  4. Protótipo da Raspoulette
  5. Torre Sentinela Nerf Autônoma
  6. Biblioteca de motor de passo bipolar
  7. Brinquedo controlado pelo Android usando Raspberry Motor Shield
  8. Swiper - Auto Tinder / Bumble Swiper
  9. O que é um Motor Linear?
  10. O que é um servo motor?