diff --git a/AstroEQ V5/Open me first/Initialisation Variable Calculator.xlsx b/AstroEQ V5/Open me first/Initialisation Variable Calculator.xlsx deleted file mode 100644 index 33525d165f576a1ce4c76476a31892ac0dbf7cf8..0000000000000000000000000000000000000000 Binary files a/AstroEQ V5/Open me first/Initialisation Variable Calculator.xlsx and /dev/null differ diff --git a/AstroEQ V5/AstroEQ5.ino b/AstroEQ-Firmware/AstroEQ5.ino similarity index 78% rename from AstroEQ V5/AstroEQ5.ino rename to AstroEQ-Firmware/AstroEQ5.ino index 3bb5c802479d3ccdcf755bdeef81fdbb0ad532b6..819445c9d28e96d1d69b57ca667dc1d24bc8deda 100644 --- a/AstroEQ V5/AstroEQ5.ino +++ b/AstroEQ-Firmware/AstroEQ5.ino @@ -9,8 +9,9 @@ Works with EQ5, HEQ5, and EQ6 mounts (Not EQ3-2, they have a different gear ratio) - Current Verison: 5.0 + Current Verison: 5.4 */ + //Only works with ATmega162, and Arduino Mega boards (1280 and 2560) #if defined(__AVR_ATmega162__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) //Just in case it was defined somewhere else, we cant be having that. @@ -18,7 +19,6 @@ #undef USEHIGHSPEEDMODE #endif - #include "synta.h" //Synta Communications Protocol. @@ -31,7 +31,8 @@ // // Format: // -//Synta synta( e [1281], a, b, g [16], s, scalar); +//Synta synta( e [1281], a, b, g [16], s, scalar); //same ratio for each axis +//Synta synta( e [1281], a RA, a DEC, b RA, b DEC, g [16], s RA, s DEC, scalar); //different ratio for each axis // // e = version number (this doesnt need chaning) // @@ -83,50 +84,67 @@ // sVal = 184320 // scalar = 10 // -// EQ3 Mount upgraded with the Dual motor kit (non Goto) -// aVal = 23961600 -// bVal = 172418 -// sVal = 184320 -// scalar = 10 +// EQ3-2 Mount upgraded with the Dual motor kit (non Goto) +// aVal1 = 23961600 +// aVal2 = 11980800 +// bVal1 = 172417 +// bVal2 = 86209 +// sVal1 = 184320 +// sVal2 = 184320 +// scalar = 10 //scales aVal and sVal with no error // // Other mounts: // aVal = 64 * motor steps per revolution * ratio -// bVal = 620 * aVal / 86164.0905 (round to nearest whole number) +// bVal = 620 * aVal / 86164.0905 (round UP to nearest whole number) // sVal = aVal / Worm Gear Teeth (round to nearest whole number) // scalar = depends on aVal, see notes below // //Create an instance of the mount //If aVal is roughly greater than 10000000 (ten million), the number needs to be scaled down by some factor //to make it smaller than that limit. In my case I have chosen 10 as it nicely scales the -//a and s values. Hence below, I have set scalar to 10. - +//------------------------------------------------------------- +//INITIALISATION CODE ----------------------------------------- +//------------------------------------------------------------- //This is the initialistation code. If using the excel file, replace this line with what it gives. -// aVal bVal sVal scalar //Example for same ratio per axis -Synta synta(1281, 13271040, 95493, 16, 92160, 3); +//Synta synta(1281, 9011200, 64841, 16, 31289, 1); //Example for different ratio per axis (see excel file). -//Synta synta(1281, 9024000, 9011200, 64933, 64841, 62667, 62578, 16, 1); +//Synta synta(1281, 23961600, 11980800, 172417, 86209, 184320, 184320, 16, 10); +Synta synta(1281, 1664000, 832000, 11974, 5987, 12800, 12800, 16, 1); + + +//------------------------------------------------------------- +//USER CONFIGURATION ------------------------------------------ +//------------------------------------------------------------- + +//This is for HARDWARE versions prior to 4.0. This includes all versions using Arduino Mega board. +//#define LEGACY_MODE 1 //These allow you to configure the speed at which the mount moves when executing goto commands. (Lower is faster) //It can be calculated from the value given for speed how fast the mount will move: //seconds per revolution = speed * aVal / bVal //Or in terms of how many times the sidereal rate it will move -//ratio = 86164.0905 * (bVal / (aVal * speed)) +//ratio = 620 / speed // //When changing the speed, change the number below, ensuring to suffix it with the letter 'L' #define NORMALGGOTOSPEED 320L //This is defined as Speed with the letter 'L' appended #define FASTGOTOSPEED 176L +//Normally, 'fast' should be the fastest you want the mount to move, and 'normal' should be around half that. -//This needs to be uncommented for those using the Pololu A4983 Driver board. -//#define POLOLUDRIVER 1 +//This needs to be uncommented for those using the Pololu A4983 Driver board. Otherwise DRV8824 will be assumed. +//#define POLOLU_A498x 1 -//Define the two axes (swap the 0 and 1 if R.A. and Dec. motors are reversed) +//Define the two axes (change 0 to 1 if R.A. and Dec. motors are swapped - i.e. RA moves instead of DEC and vice versa) #define RA 0 -#define DC 1 +#define DC (1 - RA) //dont change this one. If RA=0, then DEC=(1-0)=1. If RA=1, then DEC=(1-1)=0 + +//If motors turn in the wrong direction - i.e. a West slew moves East, and a North slew moves South, uncomment the line for the motors to be reversed: +//#define REVERSEDIRECTION_RA 1 +//#define REVERSEDIRECTION_DEC 1 //Uncomment the following #define to use a Beta function which increases motor torque when moving at highspeed by switching from 16th ustep to half stepping. //Note, this is very much a Beta, and requires mode pins M2 and M0 of the DRV8824 chips to be connected to the arduino. @@ -135,10 +153,13 @@ Synta synta(1281, 13271040, 95493, 16, 92160, 3); //#define USEHIGHSPEEDMODE 1 + //------------------------------------------------------------- //DO NOT EDIT ANYTHING BELOW THIS LINE------------------------- //------------------------------------------------------------- +//#define DEBUG 1 + unsigned long gotoPosn[2] = {0,0}; //where to slew to unsigned int timerOVF[2][64]; //Clock section of each of the 64 microsteps unsigned long timerCountRate; @@ -146,10 +167,33 @@ unsigned long maxTimerOVF; //Minimum allowable clock count #define PULSEWIDTH16 64 #define PULSEWIDTH2 8 +#define PULSEWIDTH_25 1 #ifdef USEHIGHSPEEDMODE #define PULSEWIDTH16F 8 #define PULSEWIDTH2F 1 +#define PULSEWIDTH_25F 1 +#endif + +#ifdef REVERSEDIRECTION_DEC +#define DEC_REVERSE HIGH +#define DEC_FORWARD LOW +#else +#define DEC_REVERSE LOW +#define DEC_FORWARD HIGH +#endif +#ifdef REVERSEDIRECTION_RA +#define RA_REVERSE HIGH +#define RA_FORWARD LOW +#else +#define RA_REVERSE LOW +#define RA_FORWARD HIGH +#endif + +#if (RA == 0) +#define ENCODE_DIRECTION_INIT() {{RA_REVERSE,RA_FORWARD},{DEC_REVERSE,DEC_FORWARD}} +#else +#define ENCODE_DIRECTION_INIT() {{DEC_REVERSE,DEC_FORWARD},{RA_REVERSE,RA_FORWARD}} #endif #if defined(__AVR_ATmega162__) @@ -162,20 +206,25 @@ const char dirPin[2] = {3,7}; const char enablePin[2] = {4,8}; const char stepPin[2] = {5,30}; const char oldStepPin1 = 9; //Note this has changed due to a mistake I had made originally. The original will be set as an input so hardware can be corrected by shorting with new pin +#ifdef LEGACY_MODE const char modePins[2][2] = {{16,17},{19,18}}; +#else +const char modePins[2][3] = {{6,16,17},{10,19,18}}; +#endif //Used for direct port register write. Also determines which hardware -#define STEP1PORT PORTD -#define _STEP1_HIGH 0b00010000 -#define _STEP1_LOW 0b11101111 -#define STEP2PORT PORTE -#define _STEP2_HIGH 0b00000100 -#define _STEP2_LOW 0b11111011 +//#define STEP1PORT PORTD +//#define _STEP1_HIGH 0b00010000 +//#define _STEP1_LOW 0b11101111 +//#define STEP2PORT PORTE +//#define _STEP2_HIGH 0b00000100 +//#define _STEP2_LOW 0b11111011 boolean highSpeed[2] = {false,false}; //whether number of microsteps is dropped to 8 due to high speed (to increase Torque) -byte distributionWidth[2] = {64,64}; #elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) - +#ifndef LEGACY_MODE +#define LEGACY_MODE 1 +#endif //Pins const char statusPin = 13; const char resetPin[2] = {A1,A0}; @@ -185,12 +234,12 @@ const char enablePin[2] = {4,8}; const char stepPin[2] = {5,12}; const char oldStepPin1 = 9; //Note this has changed due to a mistake I had made originally. The original will be set as an input so hardware can be corrected by shorting with new pin //Used for direct port register write. Also determines which hardware -#define STEP1PORT PORTE -#define _STEP1_HIGH 0b00001000 -#define _STEP1_LOW 0b11110111 -#define STEP2PORT PORTB -#define _STEP2_HIGH 0b01000000 -#define _STEP2_LOW 0b10111111 +//#define STEP1PORT PORTE +//#define _STEP1_HIGH 0b00001000 +//#define _STEP1_LOW 0b11110111 +//#define STEP2PORT PORTB +//#define _STEP2_HIGH 0b01000000 +//#define _STEP2_LOW 0b10111111 #ifdef USEHIGHSPEEDMODE const char modePins[2][2] = {{16,17},{19,18}}; // {RA{Mode0,Mode2}, DEC{Mode0,Mode2}} Modepins, Mode1=leave unconnected. @@ -199,11 +248,24 @@ boolean highSpeed[2] = {false,false}; //whether number of microsteps is dropped //If you want to use it, uncomment the line: '#define USEHIGHSPEEDMODE 1' //and connect the mode pins of the DRV8824PWP chips to the pins shown #endif -byte distributionWidth[2] = {64,64}; #endif +const boolean encodeDirection[2][2] = ENCODE_DIRECTION_INIT(); +byte distributionWidth[2] = {64,64}; + +volatile byte* _STEP1_PORT; +byte _STEP1_HIGH; +byte _STEP1_LOW; +#define STEP1PORT *_STEP1_PORT +volatile byte* _STEP2_PORT; +byte _STEP2_HIGH; +byte _STEP2_LOW; +#define STEP2PORT *_STEP2_PORT + +//In order to support both the DRV8824 and A4983 carrier boards from Pololu, the mode positions had to be changed and thus this is different: +#ifdef LEGACY_MODE -#ifdef POLOLUDRIVER +#ifdef POLOLU_A498x #define MODE0STATE16 HIGH #define MODE0STATE2 LOW #else @@ -213,8 +275,42 @@ byte distributionWidth[2] = {64,64}; #define MODE2STATE16 HIGH #define MODE2STATE2 LOW +#else + +#ifdef POLOLU_A498x +#define MODE0STATE16 HIGH +#define MODE0STATE2 HIGH +#define MODE1STATE16 HIGH +#define MODE1STATE2 LOW +#define MODE2STATE16 HIGH +#define MODE2STATE2 LOW +#else +#define MODE0STATE16 LOW +#define MODE0STATE2 HIGH +#define MODE1STATE16 LOW +#define MODE1STATE2 LOW +#define MODE2STATE16 HIGH +#define MODE2STATE2 LOW +#endif + +#endif + + void setup() { + unsigned char STEP1 = digitalPinToPort(stepPin[0]); + unsigned char STEP2 = digitalPinToPort(stepPin[1]); + _STEP1_PORT = portOutputRegister(STEP1); + _STEP2_PORT = portOutputRegister(STEP2); + _STEP1_HIGH = digitalPinToBitMask(stepPin[0]); + _STEP2_HIGH = digitalPinToBitMask(stepPin[1]); + _STEP1_LOW = ~_STEP1_HIGH; + _STEP2_LOW = ~_STEP2_HIGH; + +#ifdef DEBUG + Serial1.begin(115200); +#endif + pinMode(oldStepPin1,INPUT); //Set to input for ease of hardware change digitalWrite(oldStepPin1,LOW); //disable internal pullup pinMode(statusPin,OUTPUT); @@ -226,11 +322,22 @@ void setup() digitalWrite(stepPin[i],LOW); //default is low pinMode(dirPin[i],OUTPUT); //enable the direction pin digitalWrite(dirPin[i],LOW); //default is low +#ifdef LEGACY_MODE #if defined(__AVR_ATmega162__) || defined(USEHIGHSPEEDMODE) pinMode(modePins[i][0],OUTPUT); //enable the mode pins pinMode(modePins[i][1],OUTPUT); //enable the mode pins digitalWrite(modePins[i][0],MODE0STATE16); //default is low digitalWrite(modePins[i][1],MODE2STATE16); //default is high +#endif +#else +#if defined(__AVR_ATmega162__) + pinMode(modePins[i][0],OUTPUT); //enable the mode pins + pinMode(modePins[i][1],OUTPUT); //enable the mode pins + pinMode(modePins[i][2],OUTPUT); //enable the mode pins + digitalWrite(modePins[i][0],MODE0STATE16); //default is low + digitalWrite(modePins[i][1],MODE1STATE16); //default is high + digitalWrite(modePins[i][2],MODE2STATE16); //default is high +#endif #endif pinMode(resetPin[i],OUTPUT); //enable the reset pin digitalWrite(resetPin[i],LOW); //active low reset @@ -254,11 +361,18 @@ void loop(){ if (Serial.available()) { //is there a byte in buffer digitalWrite(statusPin,HIGH); //Turn on the LED to indicate activity. char recievedChar = Serial.read(); //get the next character in buffer +#ifdef DEBUG + Serial1.write(recievedChar); +#endif char decoded = synta.recieveCommand(decodedPacket,recievedChar); //once full command packet recieved, decodedPacket returns either error packet, or valid packet if (decoded == 1){ //Valid Packet decodeCommand(synta.command(),decodedPacket); //decode the valid packet } else if (decoded == -1){ //Error Serial.print(decodedPacket); //send the error packet (recieveCommand() already generated the error packet, so just need to send it) +#ifdef DEBUG + Serial1.print(" ->Res:"); + Serial1.println(decodedPacket); +#endif } //otherwise command not yet fully recieved, so wait for next byte lastMillis = millis(); isLedOn = true; @@ -310,8 +424,8 @@ void decodeCommand(char command, char* packetIn){ //each command is axis specifi responseData = 0; break; case 'G': //set mode and direction, return empty response - synta.cmd.GVal(synta.axis(), (packetIn[0] - 48)); //Store the current mode for the axis - synta.cmd.dir(synta.axis(),(packetIn[1] - 48)); //Store the current direction for that axis + synta.cmd.GVal(synta.axis(), (packetIn[0] - '0')); //Store the current mode for the axis + synta.cmd.dir(synta.axis(), (packetIn[1] - '0')); //Store the current direction for that axis responseData = 0; break; case 'H': //set goto position, return empty response (this sets the number of steps to move from cuurent position if in goto mode) @@ -350,6 +464,10 @@ void decodeCommand(char command, char* packetIn){ //each command is axis specifi synta.assembleResponse(response, command, responseData); //generate correct response (this is required as is) Serial.print(response); //send response to the serial port +#ifdef DEBUG + Serial1.print(" ->Res:"); + Serial1.println(response); +#endif if(command == 'J'){ //J tells if(synta.cmd.GVal(synta.axis()) & 1){ @@ -485,7 +603,7 @@ void gotoMode(){ } void motorStart(byte motor, byte steps){ - digitalWrite(dirPin[motor],synta.cmd.dir(motor)); //set the direction + digitalWrite(dirPin[motor],encodeDirection[motor][synta.cmd.dir(motor)]); //set the direction synta.cmd.stopped(motor, 0); accellerate(steps * synta.scalar(),motor); //accellerate to calculated rate in given number of steps steps synta.cmd.jVal(motor, (synta.cmd.jVal(motor) + (synta.cmd.stepDir(motor) * steps) ) ); //update position to account for accelleration @@ -546,31 +664,47 @@ void decellerate(byte decellerateSteps, byte motor){ if(highSpeed[motor]){ //Disable Highspeed mode highSpeed[motor] = false; +#ifdef LEGACY_MODE digitalWrite(modePins[motor][0],MODE0STATE16); digitalWrite(modePins[motor][1],MODE2STATE16); +#else + digitalWrite(modePins[motor][0],MODE0STATE16); //default is low + digitalWrite(modePins[motor][1],MODE1STATE16); //default is high + digitalWrite(modePins[motor][2],MODE2STATE16); //default is high +#endif if(motor){ - if (synta.cmd.bVal(synta.axis()) < 160000){ + if (synta.cmd.bVal(synta.axis()) < 20000){ + OCR1B = PULSEWIDTH_25; //Width of step pulse (equates to ~4uS. DRV8824PWP specifies absolute minimum as ~2uS) + //Set prescaler to F_CPU/64 + TCCR1B &= ~(1<<CS12); //0xx + TCCR1B |= ((1<<CS11) | (1<<CS10));//x11 + } else if (synta.cmd.bVal(synta.axis()) < 160000){ OCR1B = PULSEWIDTH2; //Width of step pulse (equates to ~4uS. DRV8824PWP specifies absolute minimum as ~2uS) //Set prescaler to F_CPU/8 TCCR1B &= ~((1<<CS12) | (1<<CS10)); //0x0 - TCCR1B |= (1<<CS11);//1 + TCCR1B |= (1<<CS11);//x1x } else { OCR1B = PULSEWIDTH16; //Width of step pulse (equates to ~4uS. DRV8824PWP specifies absolute minimum as ~2uS) //Set prescaler to F_CPU/1 TCCR1B &= ~((1<<CS12) | (1<<CS11));//00x - TCCR1B |= (1<<CS10);//1 + TCCR1B |= (1<<CS10);//xx1 } } else { - if (synta.cmd.bVal(synta.axis()) < 160000){ + if (synta.cmd.bVal(synta.axis()) < 20000){ + OCR3A = PULSEWIDTH_25; //Width of step pulse (equates to ~4uS. DRV8824PWP specifies absolute minimum as ~2uS) + //Set prescaler to F_CPU/64 + TCCR3B &= ~(1<<CS32); //0xx + TCCR3B |= ((1<<CS31) | (1<<CS30));//x11 + } else if (synta.cmd.bVal(synta.axis()) < 160000){ OCR3A = PULSEWIDTH2; //Width of step pulse (equates to ~4uS. DRV8824PWP specifies absolute minimum as ~2uS) //Set prescaler to F_CPU/8 TCCR3B &= ~((1<<CS32) | (1<<CS30)); //0x0 - TCCR3B |= (1<<CS31);//1 + TCCR3B |= (1<<CS31);//x1x } else { OCR3A = PULSEWIDTH16; //Width of step pulse (equates to ~4uS. DRV8824PWP specifies absolute minimum as ~2uS) //Set prescaler to F_CPU/1 TCCR3B &= ~((1<<CS32) | (1<<CS31));//00x - TCCR3B |= (1<<CS30);//1 + TCCR3B |= (1<<CS30);//xx1 } } } @@ -587,32 +721,47 @@ void accellerate(byte accellerateSteps, byte motor){ #if defined(USEHIGHSPEEDMODE) if(highSpeed[motor]){ //Enable Highspeed mode +#ifdef LEGACY_MODE digitalWrite(modePins[motor][0],MODE0STATE2); - digitalWrite(modePins[motor][1],MODE2STATE2); + digitalWrite(modePins[motor][1],MODE2STATE2); +#else + digitalWrite(modePins[motor][0],MODE0STATE2); //default is low + digitalWrite(modePins[motor][1],MODE1STATE2); //default is high + digitalWrite(modePins[motor][2],MODE2STATE2); //default is high +#endif if(motor){ - if (synta.cmd.bVal(synta.axis()) < 160000){ + if (synta.cmd.bVal(synta.axis()) < 20000){ + OCR1B = PULSEWIDTH_25F; //Width of step pulse (equates to ~32uS. DRV8824PWP specifies absolute minimum as ~2uS) + //Set prescaler to F_CPU/256 + TCCR1B |= (1<<CS12); //1xx + TCCR1B &= ~((1<<CS11) | (1<<CS10));//x00 + } else if (synta.cmd.bVal(synta.axis()) < 160000){ OCR1B = PULSEWIDTH2F; //Width of step pulse (equates to ~4uS. DRV8824PWP specifies absolute minimum as ~2uS) //Set prescaler to F_CPU/64 - TCCR1B &= ~(1<<CS12); //0 + TCCR1B &= ~(1<<CS12); //0xx TCCR1B |= ((1<<CS11) | (1<<CS10));//x11 - } else { OCR1B = PULSEWIDTH16F; //Width of step pulse (equates to ~4uS. DRV8824PWP specifies absolute minimum as ~2uS) //Set prescaler to F_CPU/8 TCCR1B &= ~((1<<CS12) | (1<<CS10)); //0x0 - TCCR1B |= (1<<CS11);//1 + TCCR1B |= (1<<CS11);//x1x } } else { - if (synta.cmd.bVal(synta.axis()) < 160000){ + if (synta.cmd.bVal(synta.axis()) < 20000){ + OCR1B = PULSEWIDTH_25F; //Width of step pulse (equates to ~32uS. DRV8824PWP specifies absolute minimum as ~2uS) + //Set prescaler to F_CPU/256 + TCCR3B |= (1<<CS32); //1xx + TCCR3B &= ~((1<<CS31) | (1<<CS30));//x00 + } else if (synta.cmd.bVal(synta.axis()) < 160000){ OCR3A = PULSEWIDTH2F; //Width of step pulse (equates to ~4uS. DRV8824PWP specifies absolute minimum as ~2uS) //Set prescaler to F_CPU/64 - TCCR3B &= ~(1<<CS32); //0 + TCCR3B &= ~(1<<CS32); //0xx TCCR3B |= ((1<<CS31) | (1<<CS30));//x11 } else { OCR3A = PULSEWIDTH16F; //Width of step pulse (equates to ~4uS. DRV8824PWP specifies absolute minimum as ~2uS) //Set prescaler to F_CPU/8 TCCR3B &= ~((1<<CS32) | (1<<CS30)); //0x0 - TCCR3B |= (1<<CS31);//1 + TCCR3B |= (1<<CS31);//x1x } } } @@ -673,22 +822,31 @@ void configureTimer(){ TCCR3A |= ((1<<WGM31)); TCCR3A &= ~((1<<WGM30)); TCCR3B |= ((1<<WGM33) | (1<<WGM32)); - if (synta.cmd.bVal(synta.axis()) < 160000){ + if (synta.cmd.bVal(synta.axis()) < 20000){ + timerCountRate = 25000; + //Set prescaler to F_CPU/64 + TCCR1B &= ~(1<<CS12); //0xx + TCCR1B |= ((1<<CS11) | (1<<CS10));//x11 + TCCR3B &= ~(1<<CS32); //0x0 + TCCR3B |= ((1<<CS31) | (1<<CS30));//x11 + OCR1B = PULSEWIDTH_25; //Width of step pulse (equates to ~4uS. DRV8824PWP specifies absolute minimum as ~2uS) + OCR3A = PULSEWIDTH_25; + } else if (synta.cmd.bVal(synta.axis()) < 160000){ timerCountRate = 200000; //Set prescaler to F_CPU/8 TCCR1B &= ~((1<<CS12) | (1<<CS10)); //0x0 - TCCR1B |= (1<<CS11);//1 + TCCR1B |= (1<<CS11);//x1x TCCR3B &= ~((1<<CS32) | (1<<CS30)); //0x0 - TCCR3B |= (1<<CS31);//1 + TCCR3B |= (1<<CS31);//x1x OCR1B = PULSEWIDTH2; //Width of step pulse (equates to ~4uS. DRV8824PWP specifies absolute minimum as ~2uS) OCR3A = PULSEWIDTH2; } else { timerCountRate = 1600000; //Set prescaler to F_CPU/1 TCCR1B &= ~((1<<CS12) | (1<<CS11));//00x - TCCR1B |= (1<<CS10);//1 + TCCR1B |= (1<<CS10);//xx1 TCCR3B &= ~((1<<CS32) | (1<<CS31));//00x - TCCR3B |= (1<<CS30);//1 + TCCR3B |= (1<<CS30);//xx1 OCR1B = PULSEWIDTH16; //Width of step pulse (equates to ~4uS. DRV8824PWP specifies absolute minimum as ~2uS) OCR3A = PULSEWIDTH16; } diff --git a/AstroEQ V5/Open me first/Driver (Atmega162 Version)/AstroEQ USB-Serial.hex b/AstroEQ-Firmware/Open me first/Driver (Atmega162 Version)/AstroEQ USB-Serial.hex similarity index 100% rename from AstroEQ V5/Open me first/Driver (Atmega162 Version)/AstroEQ USB-Serial.hex rename to AstroEQ-Firmware/Open me first/Driver (Atmega162 Version)/AstroEQ USB-Serial.hex diff --git a/AstroEQ V5/Open me first/Driver (Atmega162 Version)/mchpcdc.cat b/AstroEQ-Firmware/Open me first/Driver (Atmega162 Version)/mchpcdc.cat similarity index 100% rename from AstroEQ V5/Open me first/Driver (Atmega162 Version)/mchpcdc.cat rename to AstroEQ-Firmware/Open me first/Driver (Atmega162 Version)/mchpcdc.cat diff --git a/AstroEQ V5/Open me first/Driver (Atmega162 Version)/mchpcdc.inf b/AstroEQ-Firmware/Open me first/Driver (Atmega162 Version)/mchpcdc.inf similarity index 100% rename from AstroEQ V5/Open me first/Driver (Atmega162 Version)/mchpcdc.inf rename to AstroEQ-Firmware/Open me first/Driver (Atmega162 Version)/mchpcdc.inf diff --git a/AstroEQ-Firmware/Open me first/Initialisation Variable Calculator.xlsx b/AstroEQ-Firmware/Open me first/Initialisation Variable Calculator.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..dfa249e90d2ff8b6799b0d42bda504a305cb15c4 Binary files /dev/null and b/AstroEQ-Firmware/Open me first/Initialisation Variable Calculator.xlsx differ diff --git a/AstroEQ V5/Open me first/README FIRST.txt b/AstroEQ-Firmware/Open me first/README FIRST.txt similarity index 100% rename from AstroEQ V5/Open me first/README FIRST.txt rename to AstroEQ-Firmware/Open me first/README FIRST.txt diff --git a/AstroEQ V5/Open me first/hardware/arduino/boards.txt b/AstroEQ-Firmware/Open me first/hardware/arduino/boards.txt similarity index 100% rename from AstroEQ V5/Open me first/hardware/arduino/boards.txt rename to AstroEQ-Firmware/Open me first/hardware/arduino/boards.txt diff --git a/AstroEQ V5/Open me first/hardware/arduino/bootloaders/optiboot/optiboot_atmega162.hex b/AstroEQ-Firmware/Open me first/hardware/arduino/bootloaders/optiboot/optiboot_atmega162.hex similarity index 100% rename from AstroEQ V5/Open me first/hardware/arduino/bootloaders/optiboot/optiboot_atmega162.hex rename to AstroEQ-Firmware/Open me first/hardware/arduino/bootloaders/optiboot/optiboot_atmega162.hex diff --git a/AstroEQ V5/Open me first/hardware/arduino/variants/AstroEQ/pins_arduino.h b/AstroEQ-Firmware/Open me first/hardware/arduino/variants/AstroEQ/pins_arduino.h similarity index 100% rename from AstroEQ V5/Open me first/hardware/arduino/variants/AstroEQ/pins_arduino.h rename to AstroEQ-Firmware/Open me first/hardware/arduino/variants/AstroEQ/pins_arduino.h diff --git a/AstroEQ V5/Open me first/hardware/tools/avr/avr/include/avr/iom162.h b/AstroEQ-Firmware/Open me first/hardware/tools/avr/avr/include/avr/iom162.h similarity index 100% rename from AstroEQ V5/Open me first/hardware/tools/avr/avr/include/avr/iom162.h rename to AstroEQ-Firmware/Open me first/hardware/tools/avr/avr/include/avr/iom162.h diff --git a/AstroEQ-Firmware/Open me first/~$Initialisation Variable Calculator.xlsx b/AstroEQ-Firmware/Open me first/~$Initialisation Variable Calculator.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..401b5d3fb4ccde7bff98db2af1fa0a49fbb23a8e Binary files /dev/null and b/AstroEQ-Firmware/Open me first/~$Initialisation Variable Calculator.xlsx differ diff --git a/AstroEQ V5/commands.cpp b/AstroEQ-Firmware/commands.cpp similarity index 100% rename from AstroEQ V5/commands.cpp rename to AstroEQ-Firmware/commands.cpp diff --git a/AstroEQ V5/commands.h b/AstroEQ-Firmware/commands.h similarity index 100% rename from AstroEQ V5/commands.h rename to AstroEQ-Firmware/commands.h diff --git a/AstroEQ V5/synta.cpp b/AstroEQ-Firmware/synta.cpp similarity index 100% rename from AstroEQ V5/synta.cpp rename to AstroEQ-Firmware/synta.cpp diff --git a/AstroEQ V5/synta.h b/AstroEQ-Firmware/synta.h similarity index 100% rename from AstroEQ V5/synta.h rename to AstroEQ-Firmware/synta.h diff --git a/AstroEQ-Hardware/DIY/AstroEQ DIY Etch.brd b/AstroEQ-Hardware/DIY/AstroEQ DIY Etch.brd new file mode 100644 index 0000000000000000000000000000000000000000..36c5100c3d92cf916781e3710bb145ae1a2d0faf Binary files /dev/null and b/AstroEQ-Hardware/DIY/AstroEQ DIY Etch.brd differ diff --git a/Hardware V3/Through Hole Version/SyncScan Standalone MK3 PTH.sch b/AstroEQ-Hardware/DIY/AstroEQ DIY Etch.sch similarity index 79% rename from Hardware V3/Through Hole Version/SyncScan Standalone MK3 PTH.sch rename to AstroEQ-Hardware/DIY/AstroEQ DIY Etch.sch index cdbf0d036ec904b172aa7964250202e3df6e4c16..1df37240dab159ed3dffb0b1ce174c1b7d375238 100644 Binary files a/Hardware V3/Through Hole Version/SyncScan Standalone MK3 PTH.sch and b/AstroEQ-Hardware/DIY/AstroEQ DIY Etch.sch differ diff --git a/AstroEQ-Hardware/DIY/AstroEQ-DIY-Etch.pdf b/AstroEQ-Hardware/DIY/AstroEQ-DIY-Etch.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d638336cc8c3556136571fc0f344358805e13002 Binary files /dev/null and b/AstroEQ-Hardware/DIY/AstroEQ-DIY-Etch.pdf differ diff --git a/AstroEQ-Hardware/DIY/AstroEQ-DIY-Silk.pdf b/AstroEQ-Hardware/DIY/AstroEQ-DIY-Silk.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f921ac1137a864bbd18a9c33dfdac55e27177a24 Binary files /dev/null and b/AstroEQ-Hardware/DIY/AstroEQ-DIY-Silk.pdf differ diff --git a/AstroEQ-Hardware/PTH/AstroEQ PTH MK2.brd b/AstroEQ-Hardware/PTH/AstroEQ PTH MK2.brd new file mode 100644 index 0000000000000000000000000000000000000000..a520b26ec586695e5b61966962d3a74f26235d95 Binary files /dev/null and b/AstroEQ-Hardware/PTH/AstroEQ PTH MK2.brd differ diff --git a/AstroEQ-Hardware/PTH/AstroEQ PTH MK2.sch b/AstroEQ-Hardware/PTH/AstroEQ PTH MK2.sch new file mode 100644 index 0000000000000000000000000000000000000000..14fd992eb1d31dc4492bd3961c70d89b3830b677 Binary files /dev/null and b/AstroEQ-Hardware/PTH/AstroEQ PTH MK2.sch differ diff --git a/AstroEQ-Hardware/PTH/AstroEQ-PTH-Gerber.zip b/AstroEQ-Hardware/PTH/AstroEQ-PTH-Gerber.zip new file mode 100644 index 0000000000000000000000000000000000000000..500444ddf51a48bd994462ad0dbb931a0ddac39b Binary files /dev/null and b/AstroEQ-Hardware/PTH/AstroEQ-PTH-Gerber.zip differ diff --git a/AstroEQ-Hardware/SMD/AstroEQ SMD MK2 (EQ5).brd b/AstroEQ-Hardware/SMD/AstroEQ SMD MK2 (EQ5).brd new file mode 100644 index 0000000000000000000000000000000000000000..7888fb17c5665ffed45ee221b299e0f4df389da8 Binary files /dev/null and b/AstroEQ-Hardware/SMD/AstroEQ SMD MK2 (EQ5).brd differ diff --git a/Hardware V3/SMD Version (untested)/SyncScan Standalone MK3 SMD.sch b/AstroEQ-Hardware/SMD/AstroEQ SMD MK2 (EQ5).sch similarity index 83% rename from Hardware V3/SMD Version (untested)/SyncScan Standalone MK3 SMD.sch rename to AstroEQ-Hardware/SMD/AstroEQ SMD MK2 (EQ5).sch index 7178f5e1052f8a3a4b7481d856d789184c74166a..1fdc415b37e9aeec7be7006a96d2e096c65c8fdc 100644 Binary files a/Hardware V3/SMD Version (untested)/SyncScan Standalone MK3 SMD.sch and b/AstroEQ-Hardware/SMD/AstroEQ SMD MK2 (EQ5).sch differ diff --git a/AstroEQ-Hardware/eagle.epf b/AstroEQ-Hardware/eagle.epf new file mode 100644 index 0000000000000000000000000000000000000000..a5fc314c21f4b1c9329337e6fe912e39b32353d4 Binary files /dev/null and b/AstroEQ-Hardware/eagle.epf differ diff --git a/Downloads/AstroEQ V5.zip b/Downloads/AstroEQ V5.zip deleted file mode 100644 index fe0f2b79203537496f12fecda0f127fcd65177bf..0000000000000000000000000000000000000000 Binary files a/Downloads/AstroEQ V5.zip and /dev/null differ diff --git a/Downloads/AstroEQ-Hardware.zip b/Downloads/AstroEQ-Hardware.zip new file mode 100644 index 0000000000000000000000000000000000000000..c43f28635d15b8733ca6d86aaa56375a00f1964e Binary files /dev/null and b/Downloads/AstroEQ-Hardware.zip differ diff --git a/Downloads/AstroEQ5-Software.zip b/Downloads/AstroEQ5-Software.zip new file mode 100644 index 0000000000000000000000000000000000000000..a9da126676ad89e1ed56c63f0068abfd231e4a12 Binary files /dev/null and b/Downloads/AstroEQ5-Software.zip differ diff --git a/Downloads/Hardware V3.zip b/Downloads/Hardware V3.zip deleted file mode 100644 index e38529a85e91698efec9d37c0e277dbca0538c9d..0000000000000000000000000000000000000000 Binary files a/Downloads/Hardware V3.zip and /dev/null differ diff --git a/Hardware V3/README.txt b/Hardware V3/README.txt deleted file mode 100644 index 6415d9123851e167e57457201a9750fc89ced2a7..0000000000000000000000000000000000000000 --- a/Hardware V3/README.txt +++ /dev/null @@ -1,20 +0,0 @@ -There are two versions of the board: -"Through Hole" uses through-hole components (except for the DRV8824PWP IC's which are only available as an SMD Package) -"SMD" uses all surface mount components and is thus alot smaller. - -The Through Hole board has been fully tested and I know works. -The SMD board I have double checked and looks correct, however I have not had it made, so functionality is not confirmed. - -BOMs can be gotten by using the "Design Link" feature on the schematic. (In Eagle 6, click the "Design Link" on the right from the schematic editor, and then click Schematic. -This will then load the BOM and also Farnell part numbers. All items can be purchased through Farnell, though if you prefer, you can use the BOM to find similar parts from places such as Digikey or RS. - -Please note that the board designs have two types of connector, the RJ11 type for Skywatcher mounts which use that connector, or a set of 8 screw terminals. You can only use one or the other, not both, though both part numbers are in the BOM. - -For the Through Hole board, the DRV8824PWP ICs are to be soldered to the breakout boards on the right. If there is enough interest, I can sell the ICs ready soldered, but only if there are at leasst 5 people who need them. -Also, the IC sockets need to be of this sort: http://www.rshelectronics.co.uk/img/p/607-630-large.jpg -NOT this sort: http://www.westfloridacomponents.com/mm5/graphics/H01/28-pin-machined-ic-socket.jpg -Else the breakout boards cannot be plugged in. Also note that in the BOM, you need twice as many of the 14x1 pin headers as these are used on the breakout boards. (If I do sell the IC's broken out, they will come with the headers attached). - - - -If you have problems with the "Design Link" and retrieving the BOM, please open an issue on the GitHub page. Though I have tested and it should work. \ No newline at end of file diff --git a/Hardware V3/SMD Version (untested)/SyncScan Standalone MK3 SMD.brd b/Hardware V3/SMD Version (untested)/SyncScan Standalone MK3 SMD.brd deleted file mode 100644 index c18b212638f68a0a28dce2fda322e952c0e7cb17..0000000000000000000000000000000000000000 Binary files a/Hardware V3/SMD Version (untested)/SyncScan Standalone MK3 SMD.brd and /dev/null differ diff --git a/Hardware V3/Through Hole Version/SyncScan Standalone MK3 PTH.brd b/Hardware V3/Through Hole Version/SyncScan Standalone MK3 PTH.brd deleted file mode 100644 index 6c31e478e9efbb9ef30f700bddd52cc2afeacc9b..0000000000000000000000000000000000000000 Binary files a/Hardware V3/Through Hole Version/SyncScan Standalone MK3 PTH.brd and /dev/null differ diff --git a/License.txt b/License.txt index 1f159c961a6987ac0d675e88e7aca8529c27aa0a..7d4417e9daf211f1b4d6ef3c8595823a3bd4cfac 100644 --- a/License.txt +++ b/License.txt @@ -1 +1,16 @@ -The project is completely open source, so feel free to chop and change it as much as you like, as long as any changes you make are published as open source and are not used for any commercial gain. Also, links back to my orignal code and this github page (https://github.com/TCWORLD/AstroEQ) should be included. \ No newline at end of file +Copyright (c) 2012 Thomas Carpenter + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Any changes you make are published as open source and the project is not to be used for any commercial gain. +Furthermore, links back to my orignal code and this github repository (https://github.com/TCWORLD/AstroEQ) should be included. \ No newline at end of file