Imprimir STL 28byj 48 telescopio EQ1 suporte de acionamento Modelo 3D - 6513028
Things 3D Fila
28byj 48 telescopio EQ1 suporte de acionamento
Física e Astronomia
Se você ainda não tem uma máquina para imprimir este arquivo pode comprar uma impressora 3d aqui!
Você pode imprimir este modelo 3d com estes filamentos ou com estas resinas 3D.
Sobre o objeto 3D 28byj 48 telescopio EQ1 suporte de acionamento
Este é um arquivo desenvolvido e projetado com ferramenta CAD.
Se você ainda não sabe criar seu próprio modelo 3D eu te ensino neste artigo tutorial sobre Tinkercad.
28byj 48 telescopio EQ1 suporte de acionamento foi projetado para Impressora 3D. Monitoramento sideral feito com Arduino e motor de passo 28byj-48 e escudo de joystick. Codigo para arduino. ```cpp //Defina a pinagem do driver que controla as bobinas //Voce pode utilizar qualquer numero de porta digital //Evite apenas as portas TX e RX, que no Arduino UNO sao a 0 e a 1 const int BobinaPino1 = 10; const int BobinaPino2 = 11; const int BobinaPino3 = 12; const int BobinaPino4 = 13; //Variaveis de Acionamento do Motor float Acionamentos = 0; double IntervaloDeAcionamento = 3000; double TempoResidual = 0; int fase = 0; int frente = 0; int rev = 0; int zerar = 0; //Joystick const int SW = 2; const int axis_x = A1; const int axis_y = A0; int joystick = 0; // controle manual int joystick_x = 0; // controle manual int joystick_y = 0; // controle manual unsigned long onoff = 1; //liga e desliga movimento int ultimoval = 0; // salva ultimo valor usado antes de desligar no menu on/off // Constantes Naturais // Dia Sideral =23h56m4,1s ou 86.164,1 segundos // Constantes mecanicas da montagem // uma volta no parafuso sem fim avanca 1 dente na coroa // coroa = 100 dentes // Reducao Total = 100 dentes x 1 volta no eixo x 64 passos x 25792 / 405 reducao = 165.068.800 / 405 = 407.577,2840 // Periodo de acionamento e 86.164,1 x 405 / 165.068.800 = 69792921 / 330137600 = 0,2114 s -> na reducao 2:1 valor = metade void setup() { // Define os pinos de controle das bobinas como apenas emissores de sinal e nao leitores pinMode(BobinaPino1, OUTPUT); pinMode(BobinaPino2, OUTPUT); pinMode(BobinaPino3, OUTPUT); pinMode(BobinaPino4, OUTPUT); //botoes d2 esquerda, d3 direita, d4 cima, d5 baixo. pinMode(SW, INPUT_PULLUP); ``` IntervaloDeAcionamento = 70468,51676392; //211405,55029176; (normal) //105702,775146; (2:1) //70468,51676392; (3:1) } //211405,55029176; //105702,775146; // Tempo em microssegundos do intervalo que deve haver entre cada acionamento = (86164,1 x 405) / (64 x 25792 x 100) * 1.000.000 void loop() { if(digitalRead(SW) == LOW){ if(onoff==1){ onoff = 2; frente = 1; rev = 0; delay(300); } else { onoff = 1; frente = 0; rev = 0; delay(300); } } if(analogRead(axis_y) > 530 && onoff == 2){ joystick_y = analogRead(axis_y); joystick_y = map(joystick_y, 530, 1023, 1, 50); frente = 1; rev = 0; //IntervaloDeAcionamento = 70468,51676392; IntervaloDeAcionamento = joystick_y; IntervaloDeAcionamento = map(IntervaloDeAcionamento, 1, 255, 3000, 1000); //IntervaloDeAcionamento = IntervaloDeAcionamento / joystick_y; zerar = 1; } if(analogRead(axis_y) < 490 && onoff == 2){ joystick_y = analogRead(axis_y); joystick_y = map(joystick_y, 490, 1, 1, 50); frente = 0; rev = 1; //IntervaloDeAcionamento = 70468,51676392; IntervaloDeAcionamento = joystick_y; IntervaloDeAcionamento = map(IntervaloDeAcionamento, 1, 255, 3000, 1000); //IntervaloDeAcionamento = IntervaloDeAcionamento / joystick_y; zerar = 1; } if(analogRead(axis_x) > 530 && onoff == 2){ joystick_x = analogRead(axis_x); joystick_x = map(joystick_x, 530, 1023, 1, 255); frente = 1; rev = 0; //IntervaloDeAcionamento = 70468,51676392; IntervaloDeAcionamento = joystick_x; IntervaloDeAcionamento = map(IntervaloDeAcionamento, 1, 255, 30000, 10000); //IntervaloDeAcionamento = IntervaloDeAcionamento / joystick_x; //teste 1 //IntervaloDeAcionamento = 20000; zerar = 1; } if(analogRead(axis_x) < 490 && onoff == 2){ joystick_x = analogRead(axis_x); joystick_x = map(joystick_x, 490, 1, 1, 3); frente = 0; rev = 1; //IntervaloDeAcionamento = 70468,51676392; IntervaloDeAcionamento = joystick_x; IntervaloDeAcionamento = map(IntervaloDeAcionamento, 1, 255, 30000, 10000); //IntervaloDeAcionamento = IntervaloDeAcionamento / joystick_x; //teste 1 //IntervaloDeAcionamento = 20000; zerar = 1; } if(analogRead(axis_y) < 530 && analogRead(axis_y) > 490 && analogRead(axis_x) < 530 && analogRead(axis_x) > 490 && zerar == 1){ frente = 1; rev = 0; Acionamentos = 0; TempoResidual = micros(); fase = 0; IntervaloDeAcionamento = 70468,51676392; zerar = 0; } if (Acionamentos * IntervaloDeAcionamento < micros() - TempoResidual) { //Se passou do intervalo de acionamento, aciona um passo Acionamentos = Acionamentos + 1; //Conta em que acionamento esta para multiplicar pelo tempo de acionamento e arrastar o menor erro possivel ```cpp if(frente == 1 && rev == 0){ AcionaMotorFrente(); //Gira o Motor para frente} if(frente == 0 && rev == 1){ AcionaMotorRev();} if(frente == 0 && rev == 0){ digitalWrite(BobinaPino1, LOW); digitalWrite(BobinaPino2, LOW); digitalWrite(BobinaPino3, LOW); digitalWrite(BobinaPino4, LOW);} ``` } } void AcionaMotorFrente() { switch (fase) { //Liga ou desliga uma bobina de acordo com uma das oito fases possiveis case 0: digitalWrite(BobinaPino1, LOW); //Aciona (HIGH) ou Desliga (LOW) a bobina correspondente fase = 1; //Guarda a fase atual break; case 1: digitalWrite(BobinaPino3, HIGH); fase = 2; break; case 2: digitalWrite(BobinaPino4, LOW); fase = 3; break; case 3: digitalWrite(BobinaPino2, HIGH); fase = 4; break; case 4: digitalWrite(BobinaPino3, LOW); fase = 5; break; case 5: digitalWrite(BobinaPino1, HIGH); fase = 6; break; case 6: digitalWrite(BobinaPino2, LOW); fase = 7; break; case 7: digitalWrite(BobinaPino4, HIGH); fase = 0; break; } } void AcionaMotorRev() { switch (fase) { //Liga ou desliga uma bobina de acordo com uma das oito fases possiveis case 0: digitalWrite(BobinaPino4, HIGH); //Aciona (HIGH) ou Desliga (LOW) a bobina correspondente fase = 1; //Guarda a fase atual break; case 1: digitalWrite(BobinaPino2, LOW); fase = 2; break; case 2: digitalWrite(BobinaPino1, HIGH); fase = 3; break; case 3: digitalWrite(BobinaPino3, LOW); fase = 4; break; case 4: digitalWrite(BobinaPino2, HIGH); fase = 5; break; case 5: digitalWrite(BobinaPino4, LOW); fase = 6; break; case 6: digitalWrite(BobinaPino3, HIGH); fase = 7; break; case 7: digitalWrite(BobinaPino1, LOW); fase = 0; break; } } ```
O arquivo que você mencionou, intitulado "28byj-48 telescopio EQ1 suporte de acionamento", se refere a um modelo 3D que foi desenvolvido para ser impresso em uma impressora 3D. Este modelo é projetado para ser usado como um suporte de acionamento para um telescópio montado em uma plataforma de tipo Equatorial (EQ1) e utiliza um motor de passo 28BYJ-48 juntamente com um escudo de joystick, permitindo o monitoramento sideral com a ajuda de um microcontrolador Arduino.### Descrição do Projeto
#### Objetivo
O objetivo principal deste projeto é permitir que o telescópio se mova suavemente e siga os astros durante o movimento do céu. O motor de passo 28BYJ-48 é utilizado para acionar o movimento de azimute e altitude do telescópio, enquanto um joystick fornece controle manual sobre essas movimentações.
#### Componentes Utilizados
1. **Motor de Passo 28BYJ-48**: Este motor é conhecido por seu baixo custo e é amplamente utilizado em projetos de hobby. É ideal para aplicações que exigem controle de movimento preciso.
2. **Arduino**: Um microcontrolador que executa o código de controle, processando as entradas do joystick e gerenciando a movimentação do motor.
3. **Joysticks**: Usados para o controle manual do telescópio, permitindo ao usuário mover o telescópio para diferentes direções.
4. **Suporte Projetado**: Impresso em 3D, o suporte é projetado para fixar o motor de forma segura e garantir que o telescópio possa se mover livremente.
### Detalhes do Código
O código Arduino fornecido é responsável pelo controle do motor e pela interação com o joystick. Alguns dos principais aspectos do código incluem:
- **Pinagem do Motor**: Define quais pinos do Arduino estão conectados às bobinas do motor.
- **Controle do Joystick**: O código lê a entrada do joystick e converte seus valores em comandos que ajustam a velocidade e direção do motor.
- **Movimento Sideral**: O código considera o tempo sideral e a redução do motor, ajustando a frequência de acionamento do motor para que ele possa seguir os movimentos dos corpos celestes de forma sincronizada com a rotação da Terra.
### Estrutura do Código
- **Setup**: Configura os pinos do motor e do joystick.
- **Loop**: Contém a lógica que continuamente verifica a entrada do joystick. Dependendo da direção em que o joystick é puxado (para frente ou para trás), o motor é acionado em uma direção correspondente.
- **Funções de Ação do Motor**: São chamadas para acionar o motor na direção desejada, utilizando um método de controle de fase para garantir movimentos suaves.
### Considerações Finais
Esse projeto não só é uma excelente maneira de integrar componentes mecânicos e eletrônicos, mas também é uma boa introdução ao mundo da astronomia amadora. Ao construir e programar o suporte, os entusiastas podem aprimorar suas habilidades em programação e engenharia, enquanto exploram o céu noturno de maneira prática e envolvente. Além disso, a impressão em 3D do suporte permite customizações de acordo com as necessidades e preferências do usuário, tornando o projeto ainda mais acessível e personalizado.
Não deixe de imprimir e compartilhar este modelo 3d. Não deixe sua impressora 3D parada. Mas se você não tem uma impressora 3D ainda, escolha a sua agora.

