Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
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
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
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
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.