Cleanup of naming and removed uneeded files.
|
@ -0,0 +1,60 @@
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
#define DIR_AZ 8
|
||||||
|
#define STEP_AZ 9
|
||||||
|
#define EN_AZ 7
|
||||||
|
|
||||||
|
#define DIR_EL 10
|
||||||
|
#define STEP_EL 11
|
||||||
|
#define EN_EL 12
|
||||||
|
|
||||||
|
#define SPD 200 //step per degree
|
||||||
|
#define T_DEALY 10000
|
||||||
|
#define T_STEPPER 1
|
||||||
|
|
||||||
|
int stepPosAz = 0;
|
||||||
|
int stepAz = 0;
|
||||||
|
int stepPosEl = 0;
|
||||||
|
int stepEl = 0;
|
||||||
|
long t1 = 0;
|
||||||
|
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
pinMode(DIR_AZ, OUTPUT);
|
||||||
|
pinMode(STEP_AZ, OUTPUT);
|
||||||
|
pinMode(EN_AZ, OUTPUT);
|
||||||
|
digitalWrite(EN_AZ, LOW);
|
||||||
|
digitalWrite(DIR_AZ, LOW);
|
||||||
|
|
||||||
|
pinMode(DIR_EL, OUTPUT);
|
||||||
|
pinMode(STEP_EL, OUTPUT);
|
||||||
|
pinMode(EN_EL, OUTPUT);
|
||||||
|
digitalWrite(EN_EL, LOW);
|
||||||
|
digitalWrite(DIR_EL, LOW);
|
||||||
|
|
||||||
|
Serial.begin(19200);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
/*Time Check*/
|
||||||
|
if (t1 == 0)
|
||||||
|
t1 = millis();
|
||||||
|
if (stepAz == 0 && stepEl == 0 && millis()-t1 > T_DEALY)
|
||||||
|
{
|
||||||
|
digitalWrite(EN_AZ, HIGH);
|
||||||
|
digitalWrite(EN_EL, HIGH);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
digitalWrite(EN_AZ, LOW);
|
||||||
|
digitalWrite(EN_EL, LOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd_proc();
|
||||||
|
|
||||||
|
stepper_move();
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
void cmd_proc()
|
||||||
|
{
|
||||||
|
/*Serial*/
|
||||||
|
static char buffer[256];
|
||||||
|
char incomingByte;
|
||||||
|
static int counter=0;
|
||||||
|
char data[100];
|
||||||
|
|
||||||
|
/*Read from serial*/
|
||||||
|
while (Serial.available() > 0)
|
||||||
|
{
|
||||||
|
incomingByte = Serial.read();
|
||||||
|
/*new data*/
|
||||||
|
if (incomingByte == '\n' || incomingByte == ' ' || incomingByte == '\r')
|
||||||
|
{
|
||||||
|
buffer[counter]=0;
|
||||||
|
if (buffer[0] == 'A' && buffer[1] == 'Z')
|
||||||
|
{
|
||||||
|
strncpy(data, buffer+2, 100);
|
||||||
|
double cmdAz = atof(data);
|
||||||
|
|
||||||
|
stepAz = deg2step(cmdAz)-stepPosAz;
|
||||||
|
}
|
||||||
|
else if (buffer[0] == 'E' && buffer[1] == 'L')
|
||||||
|
{
|
||||||
|
strncpy(data, buffer+2, 10);
|
||||||
|
double cmdEl = atof(data);
|
||||||
|
|
||||||
|
stepEl = deg2step(cmdEl)-stepPosEl;
|
||||||
|
}
|
||||||
|
else if (buffer[0] == 'S' && buffer[1] == 'A')
|
||||||
|
{
|
||||||
|
stepAz = 0;
|
||||||
|
}
|
||||||
|
else if (buffer[0] == 'S' && buffer[1] == 'E')
|
||||||
|
{
|
||||||
|
stepEl = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
counter = 0;
|
||||||
|
|
||||||
|
//Reset time
|
||||||
|
t1 = 0;
|
||||||
|
}
|
||||||
|
/*Fill the buffer with incoming data*/
|
||||||
|
else {
|
||||||
|
buffer[counter] = incomingByte;
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
void stepper_move()
|
||||||
|
{
|
||||||
|
if(stepAz>0)
|
||||||
|
{
|
||||||
|
digitalWrite(DIR_AZ, HIGH);
|
||||||
|
digitalWrite(STEP_AZ, HIGH);
|
||||||
|
stepPosAz++;
|
||||||
|
stepAz--;
|
||||||
|
}
|
||||||
|
else if(stepAz<0)
|
||||||
|
{
|
||||||
|
digitalWrite(DIR_AZ, LOW);
|
||||||
|
digitalWrite(STEP_AZ, HIGH);
|
||||||
|
stepPosAz--;
|
||||||
|
stepAz++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(stepEl>0)
|
||||||
|
{
|
||||||
|
digitalWrite(DIR_EL, LOW);
|
||||||
|
digitalWrite(STEP_EL, HIGH);
|
||||||
|
stepPosEl++;
|
||||||
|
stepEl--;
|
||||||
|
}
|
||||||
|
else if(stepEl<0)
|
||||||
|
{
|
||||||
|
digitalWrite(DIR_EL, HIGH);
|
||||||
|
digitalWrite(STEP_EL, HIGH);
|
||||||
|
stepPosEl--;
|
||||||
|
stepEl++;
|
||||||
|
}
|
||||||
|
|
||||||
|
delay(T_STEPPER);
|
||||||
|
digitalWrite(STEP_AZ, LOW);
|
||||||
|
digitalWrite(STEP_EL, LOW);
|
||||||
|
delay(T_STEPPER);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int deg2step(double deg)
|
||||||
|
{
|
||||||
|
return(60*SPD*deg/360);
|
||||||
|
}
|
||||||
|
|
||||||
|
float step2deg(int Step)
|
||||||
|
{
|
||||||
|
return(360*Step/(SPD*60));
|
||||||
|
}
|
2056
PCB/SatNOGS.brd
9191
PCB/SatNOGS.sch
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
@ -4,6 +4,6 @@ SatNOGS Arduino
|
||||||
Repository of Arduino code and Arduino PCB for SatNOGS project.
|
Repository of Arduino code and Arduino PCB for SatNOGS project.
|
||||||
Refer to block diagram in the repository for wiring documentation.
|
Refer to block diagram in the repository for wiring documentation.
|
||||||
|
|
||||||
The PCB is based in [Arduino Pro Micro](https://www.sparkfun.com/products/12640) and the [Pololu stepper motor driver](http://www.pololu.com/product/1182). In below picture you can see the PCB.
|
The PCB is based in [Arduino Pro Micro](https://www.sparkfun.com/products/12640) and the [Pololu stepper motor driver](http://www.pololu.com/product/1182). In the picture below you can see the PCB.
|
||||||
|
|
||||||
![satnogs_PCB](https://raw.github.com/satnogs/satnogs-arduino/master/pics/SatNOGSBoardV1_1.png)
|
![satnogs_PCB](https://raw.github.com/satnogs/satnogs-arduino/master/pics/SatNOGSBoardV1_1.png)
|