28byj-48 telescope EQ1 drive holder

28byj-48 telescope EQ1 drive holder

thingiverse

Sidereal monitoring made with Arduino and 28byj-48 stepper motor and joystick shield.code for arduino.//Define a pinagem do driver que controla as bobinas//Você pode utilizar qualquer número de porta digital//Evite apenas as portas TX e RX, que no Arduino UNO são a 0 e a 1const int BobinaPino1 = 10;const int BobinaPino2 = 11;const int BobinaPino3 = 12;const int BobinaPino4 = 13;//Variáveis de Acionamento do Motorfloat Acionamentos = 0;double IntervaloDeAcionamento = 3000;double TempoResidual = 0;int fase = 0;int frente = 0;int rev = 0;int zerar = 0;//Joystickconst int SW = 2;const int axis_x = A1;const int axis_y = A0;int joystick = 0; // controle manualint joystick_x = 0; // controle manualint joystick_y = 0; // controle manualunsigned long onoff = 1; //liga e desliga movimentoint 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 mecânicas da montagem// uma volta no parafuso sem fim avança 1 dente na coroa// coroa = 100 dentes// Redução Total = 100 dentes x 1 volta no eixo x 64 passos x 25792 / 405 redução = 165.068.800 / 405 = 407.577,2840// Período de acionamento é 86.164,1 x 405 / 165.068.800 = 69792921 / 330137600 = 0,2114 s -> na redução 2:1 valor = metadevoid setup() {// Define os pinos de controle das bobinas como apenas emissores de sinal e não leitorespinMode(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.000void 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 passoAcionamentos = Acionamentos + 1; //Conta em que acionamento está para multiplicar pelo tempo de acionamento e arrastar o menor erro possívelif(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 fasses possíveiscase 0:digitalWrite(BobinaPino1, LOW); //Aciona (HIGH) ou Desliga (LOW) a bobina correspondentefase = 1; //Guarda a fase atualbreak;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 fasses possíveiscase 0:digitalWrite(BobinaPino4, HIGH); //Aciona (HIGH) ou Desliga (LOW) a bobina correspondentefase = 1; //Guarda a fase atualbreak;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;}}

Download Model from thingiverse

With this file you will be able to print 28byj-48 telescope EQ1 drive holder with your 3D printer. Click on the button and save the file on your computer to work, edit or customize your design. You can also find more 3D designs for printers on 28byj-48 telescope EQ1 drive holder.