Índice:

Motor de passo controlado por luz + suporte / suporte de parede: 6 etapas
Motor de passo controlado por luz + suporte / suporte de parede: 6 etapas

Vídeo: Motor de passo controlado por luz + suporte / suporte de parede: 6 etapas

Vídeo: Motor de passo controlado por luz + suporte / suporte de parede: 6 etapas
Vídeo: Controlando Motor de Passo com Arduino - Curso de Arduino #31 2024, Novembro
Anonim
Motor de passo controlado por luz + suporte / suporte de parede
Motor de passo controlado por luz + suporte / suporte de parede

Este suporte é usado para abrigar um motor de passo controlado por Arduino, projetado para controlar automaticamente uma cortina de acordo com o nível de luz na sala. Você também pode adicionar uma tela LCD para imprimir o nível de luz. O equipamento 3D é apenas para demonstração, um equipamento real pode ser necessário para aplicações práticas, como a cortina, mas também qualquer outra aplicação que você possa imaginar.

Etapa 1: Ingredientes

Para iniciar este projeto você precisará;

- 2 conjuntos de chips Arduino - Um escudo do motor Arduino - Uma tela LCD Arduino - 1 placa de ensaio - 1 motor de passo bipolar - 1 bateria D - 1 resistor dependente de luz - 1 resistor de 10k Ω - 10 fios macho-macho - 6 macho - fios fêmea - acesso a uma impressora 3D

Etapa 2: construção do Arduino

Construção do Arduino
Construção do Arduino

Primeiro alinhe a blindagem do motor com os pinos do Arduino e, uma vez que eles estejam alinhados, coloque-o firmemente. Em seguida, conecte os fios do motor de passo nos pinos 8, 9, 10 e 11 da blindagem do motor. Depois disso, conecte a bateria D nos slots, conforme mostrado no diagrama. Em seguida, você deseja obter os 6 fios (macho para fêmea) para a tela LCD e conecte-os à outra unidade Arduino conforme mostrado no diagrama de circuito. Em seguida, configure o LDR conforme mostrado acima, com o resistor conectado à linha negativa. Ao adicionar o LDR, no lado com o resistor, adicione as conexões A0 e no lado oposto, adicione 1 entrada de 5 V para cada placa que você está usando, então se você estiver usando 2 placas, você vai querer que cada uma delas tenha um pino de 5 V e A0 indo para o LDR.

Conecte todos os fios de forma que sejam iguais ao diagrama - 2 entradas para o LDR - 2 saídas do LDR e um resistor conectado ao aterramento - 8 fios para o LCD, 1 5 V, 1 terra e 6 entradas - 4 fios conectando ao stepper- 2 conexões para a bateria- O aterramento da placa de ensaio deve ser conectado

Etapa 3: codificando o Arduino

Codificando Arduino
Codificando Arduino

Aqui está um código de amostra para alterar o status da engrenagem com base no LDR

Este é o código que permitiria ao projeto controlar automaticamente uma cortina. A foto acima explica os diferentes caminhos através das instruções IF aninhadas em termos de a cortina subir, descer ou ficar onde está. (clique na imagem para vê-la na íntegra, pois há problemas de formatação)

# defineLDRA0 // Define a variável "LDR" para A0 pin # include// Inclui o código do motor de passo

constintstepsPerRevolution = 200; // Quando o motor de passo é ativado, sua rotação completa é igual a 200 passos

SteppermyStepper (stepsPerRevolution, 8, 9, 10, 11); // Define a entrada para o stepper como pinos 8, 9, 10, 11

voidsetup () {myStepper.setSpeed (60); // Define a velocidade com que o motor executa um rotationpinMode (LDR, INPUT); // Define a variável "LDR" como uma entrada Serial.begin (9600); // Inicia uma leitura serial }

voidloop () {intlightlevel = analogRead (LDR); // Define a variável "lightlevel" como uma ação que lê o valor de "LDR" Serial.print ("Light Level:"); Serial.println (lightlevel); // Imprime o valor de "lightlevel" com a legenda acima

/ * Agora há um loop que detecta o nível de luz em cada ponto do caminho * 3 opções estão disponíveis, subir, descer, ficar na mesma posição * É projetado para que se o nível de luz permanecer o mesmo, ele irá permanece o mesmo, senão vai mudar * ou seja, se for 950, vai para 952, nada vai acontecer, mas se fosse de 950 para 600 puxaria a cortina para cima e vice-versa * Cada degrau é representado por uma letra na frente da etapa para rastrear onde ela está no loop por meio do monitor serial * /

if (lightlevel> = 900) {Serial.println ("A"); // Qual passo está no loopmyStepper.step (3 * stepsPerRevolution); // O stepper faz 3 revoluções para frente. Se for negativo, ele retrocede o atraso (30000); // Deixa por 5 minutos intlightlevel = analogRead (LDR); // Define a variável "lightlevel" como a última leitura do LDRSerial.print ("Light Level:"); // Imprime o texto na frente da variável Serial.println (lightlevel) // Imprime o valor do nível de luz

if (lightlevel> = 900) {Serial.println ("B"); myStepper.step (0); delay (10000); intlightlevel = analogRead (LDR); Serial.print ("Light Level:"); Serial.println (nível de luz);

if (lightlevel> = 900) {Serial.println ("C"); myStepper.step (3 * -stepsPerRevolution); delay (500); intlightlevel = analogRead (LDR); Serial.print ("Light Level:"); Serial.println (nível de luz);}

else {Serial.println ("D"); myStepper.step (3 * -stepsPerRevolution); delay (10000); intlightlevel = analogRead (LDR); Serial.print ("Light Level:"); Serial.println (lightlevel);}}

else {Serial.println ("E"); myStepper.step (3 * -stepsPerRevolution); delay (10000); intlightlevel = analogRead (LDR); Serial.print ("Light Level:"); Serial.println (lightlevel);

if (lightlevel> = 900) {Serial.println ("F"); myStepper.step (0); delay (500); intlightlevel = analogRead (LDR); Serial.print ("Light Level:"); Serial.println (nível de luz);}

else {Serial.println ("G"); myStepper.step (0); delay (10000); intlightlevel = analogRead (LDR); Serial.print ("Light Level:"); Serial.println (lightlevel);}}

}

else {Serial.println ("H"); myStepper.step (0); atraso (10000); intlightlevel = analogRead (LDR); Serial.print ("Nível de luz:"); Serial.println (nível de luz);

if (lightlevel> = 900) {Serial.println ("I"); myStepper.step (3 * stepsPerRevolution); delay (10000); intlightlevel = analogRead (LDR); Serial.print ("Light Level:"); Serial.println (nível de luz);

if (lightlevel> = 900) {Serial.println ("J"); myStepper.step (3 * -stepsPerRevolution); delay (500); intlightlevel = analogRead (LDR); Serial.print ("Light Level:"); Serial.println (nível de luz);}

else {Serial.println ("K"); myStepper.step (3 * -stepsPerRevolution); delay (10000); intlightlevel = analogRead (LDR); Serial.print ("Light Level:"); Serial.println (lightlevel);

}}

else {Serial.println ("L"); myStepper.step (0); atraso (10000); intlightlevel = analogRead (LDR); Serial.print ("Nível de luz:"); Serial.println (nível de luz);

if (lightlevel> = 900) {Serial.println ("M"); myStepper.step (0); delay (500); intlightlevel = analogRead (LDR); Serial.print ("Light Level:"); Serial.println (nível de luz);}

else {Serial.println ("N"); myStepper.step (0); atraso (10000); intlightlevel = analogRead (LDR); Serial.print ("Nível de luz:"); Serial.println (nível de luz);

}}

}

}

Etapa 4: Opcional: Tela LCD

Isso imprimiria o nível de luz detectado pelo LDR na tela LCD.

#incluir

  • // Adiciona a biblioteca de cristal líquido com código adicional # define ldr A0 // Define a variável "ldr" para o pino A0

    LiquidCrystal lcd (8, 9, 4, 5, 6, 7); // inicializa a biblioteca com os números dos pinos da interface

    voidsetup () {// código que é executado uma vez no startlcd.begin (16, 2); // configura o número de colunas e linhas do LCD respectivamentepinMode (ldr, INPUT); // Define o ldr como uma entrada pinSerial.begin (9600); // Inicia a comunicação com o monitor serial

    }

    voidloop () {// código que será repetido continuamenteSerial.println (analogRead (ldr)); // Imprime a leitura que o ldr pega (um número entre 0-1023) no monitor seriallcd.setCursor (6, 0); // define o cursor para a coluna 6, linha 0lcd.print (analogRead (ldr)); // Imprime esta leitura no LCD screendelay (1000); // Atrasa o próximo comando por um segundo

    }

    Etapa 5: peças impressas

    Use os seguintes arquivos para imprimir o suporte e equipamento. Você pode personalizar o equipamento para seus próprios fins e pode usar o suporte para montá-lo em uma parede ou como uma tela. Como o equipamento 3D é fraco, um equipamento real pode ser usado como seu substituto, desde que corresponda à cortina que controlaria.

    Se for usada a engrenagem impressa em 3D, um dos dentes da engrenagem foi removido para que um parafuso de fixação pudesse fixá-la ao motor.

    As 2 pernas frontais do suporte de parede também podem ser removidas se ele for montado em uma parede. Eles só foram adicionados para que ficasse de pé enquanto estávamos testando.

    Etapa 6: posicionamento

    Agora que todas as peças estão prontas, é hora de iniciar a colocação final.

    Em primeiro lugar, coloque o motor de passo na caixa fornecida no suporte e coloque a engrenagem no eixo. Em seguida, mova os fios para que eles fiquem atrás do suporte. Por fim, coloque o arduino e a bateria atrás do suporte

    Sua placa agora deve ser semelhante à da foto acima.

    Parabéns!

    O equipamento pode ser usado para cortinas automatizadas ou qualquer outra coisa que você queira controlado pelo LDR.

    Você terminou. Aproveite sua nova criação.

Recomendado: