Jump to content

Gina's DIY All Sky Camera - Mark3 - with QHY5L-II-C


Gina

Recommended Posts

  • Replies 193
  • Created
  • Last Reply

Have you used push/heat sunk brass threaded sleeves on your fixing points please?

I see on the next photo a screw head so wondered how it fixed.

I'm using small bolts and nuts (M3x10mm)...
Link to comment
Share on other sites

Latest version on the code:

// Rob Musquetier 2-1-2016// Version Control: 01 Initial Version#include <OneWire.h>                      // OneWire Library for reading the DS18B20 temperature sensor#include <DallasTemperature.h>            // Library for interpreting the DS18B20 readings#include <DHT.h>                          // Library for reading the DHT22 temperature/humidity sensor#include <Stepper.h>                      // Library for using the stepper motors//#define DBG_SWITCH                      // Remove remark slashes to enable extensive debugging#define MAX_COMMAND_LEN             (7)   // Maximum length of the received commands#define MAX_PARAMETER_LEN           (10)  // Maximum length of the received parameters#define COMMAND_TABLE_SIZE          (12)  // Number of defined commands#define TO_UPPER(x) (((x >= 'a') && (x <= 'z')) ? ((x) - ('a' - 'A')) : (x)) // Transform strings to uppercase// ASC variables initiationbyte  HeaterPin            = 1;           // Define heater control pinbyte  OutsideTempPin       = 2;           // Define outside temperature sensor pin (D2)byte  InsideTempPin        = 3;           // Define inside temperature sensor pin (D3)byte  AStepperPin1         = 8;           // Define aperture stepper motor pin 1byte  AStepperPin2         = 10;          // Define aperture stepper motor pin 2byte  AStepperPin3         = 9;           // Define aperture stepper motor pin 3byte  AStepperPin4         = 11;          // Define aperture stepper motor pin 4byte  FStepperPin1         = 4;           // Define focus stepper motor pin 1byte  FStepperPin2         = 6;           // Define focus stepper motor pin 2byte  FStepperPin3         = 5;           // Define focus stepper motor pin 3byte  FStepperPin4         = 7;           // Define focus stepper motor pin 4#define DHTTYPE DHT22                     // Instruct to use the DHT22 outside temperature sensorDHT dht(OutsideTempPin, DHTTYPE);         // Initiate object to control the DHT22// Inititiate one wire read protocol for inside temperature sensorOneWire oneWire(InsideTempPin);           // Initiate object to read the attached one wire objects (BS18B20)DallasTemperature sensors(&oneWire);Stepper ApertureMotor(32, AStepperPin1, AStepperPin2, AStepperPin3, AStepperPin4); // Initiate aperture stepper motorStepper FocusMotor(32, FStepperPin1, FStepperPin2, FStepperPin3, FStepperPin4);    // Initiate focus stepper motorlong AperturePos           = 0;           // Variable to store the aperture control positionlong ApertureSpeed         = 100;           // Variable to set the speed for the aperture stepper motorlong FocusPos              = 0;           // Variable to store the focus control positionlong FocusSpeed            = 100;           // Variable to set the speed for the focus stepper motorfloat OHum                 = 0.0;         // Variable containing the last read outside humidity value (%)float OTemp                = 0.0;         // Variable containing the last read outside temperature value (Celsius)float ITemp                = 0.0;         // Variable containing the last read inside temperature value (Celsius)float DewPoint             = 0.0;         // Variable containing the last calculated dew point value (Celsius)byte HeaterValue           = 0;           // Variable containing the needed heater value (0 - 255)// Serial comms setupchar incomingByte          = 0;           // Serial in data bytebyte serialValue           = 0;           // Reset serial data string flagboolean usingSerial        = true;        // Set to false to have the buttons control everythingchar gCommandBuffer[MAX_COMMAND_LEN + 1]; // String for received commandschar gParamBuffer[MAX_PARAMETER_LEN + 1]; // String for received parameterlong gParamValue;                         // Received parameter// UPDATE FLAGS. used to update states after receiving a commandboolean UPDATE                = true;     // Flag to indicate data should be readboolean UPDATEApertureStepIn  = false;    // Flag to indicate aperture step in was madeboolean UPDATEApertureStepOut = false;    // Flag to indicate aperture step out was madeboolean UPDATEGetAperturePos  = false;    // Flag to indicate aperture position needs to be sendboolean UPDATEFocusStepIn     = false;    // Flag to indicate focus step in was madeboolean UPDATEFocusStepOut    = false;    // Flag to indicate focus step out was madeboolean UPDATEGetFocusPos     = false;    // Flag to indicate focus position needs to be sendboolean UPDATEDewPoint        = false;    // Flag to indicate dew point calcualtion was made boolean UPDATEOutsideHum      = false;    // Flag to indicate outside humidity value was readboolean UPDATEOutsideTemp     = false;    // Flag to indicate outside temperature was readboolean UPDATEInsideTemp      = false;    // Flag to indicate inside temperature was readboolean UPDATEGetHeaterValue  = false;    // Flag to indicate heater value needs to be sendboolean UPDATEHeater          = true;     // Flag to indicate heater value was updatedboolean f                     = false;typedef struct {                          // Define structure for read commands	char const    *name;	void          (*function)(void);}command_t;//Set up a command table. when the command is sent from the PC and this table points it to the subroutine to runcommand_t const gCommandTable[COMMAND_TABLE_SIZE] = {  { "AIN",    ApertureStepIn, },          // Command to close aperture  { "AOUT",   ApertureStepOut, },         // Command to open aperture  { "APOS",   GetAperturePosition, },     // Commnad to retrieve aperture stepper motor position  { "FIN",    FocusStepIn, },             // Command to focus in  { "FOUT",   FocusStepOut, },            // Command to focus out  { "FPOS",   GetFocusPosition, },        // Commnad to retrieve focus stepper motor position  { "DEWP",   GetDewPoint, },             // Command to retrieve duw point  { "OHUM",   GetOutsideHumidity, },      // Command to retrieve outside humidity level  { "OTMP",   GetOutsideTemperature, },   // Command to retrieve outside temperature  { "ITMP",   GetInsideTemperature, },    // Commnad to retrieve inside temperature  { "GHV",    GetHeaterValue, },          // Command to retrieve heater value	{ NULL,    NULL   }};// Serial Comms setup end// START OF SETUPvoid setup() {    pinMode(InsideTempPin,  INPUT);         // Set inside temperature pin as input  pinMode(OutsideTempPin, INPUT);         // Set outside temperature pin as input  pinMode(HeaterPin,      OUTPUT);        // Set heater pin as output  pinMode(AStepperPin1,   OUTPUT);        // Set aperture stepper motor pin 1 as output  pinMode(AStepperPin2,   OUTPUT);        // Set aperture stepper motor pin 2 as output  pinMode(AStepperPin3,   OUTPUT);        // Set aperture stepper motor pin 3 as output  pinMode(AStepperPin4,   OUTPUT);        // Set aperture stepper motor pin 4 as output    pinMode(FStepperPin1,   OUTPUT);        // Set focus stepper motor pin 1 as output  pinMode(FStepperPin2,   OUTPUT);        // Set focus stepper motor pin 2 as output  pinMode(FStepperPin3,   OUTPUT);        // Set focus stepper motor pin 3 as output  pinMode(FStepperPin4,   OUTPUT);        // Set focus stepper motor pin 4 as output  // Wait until serial bus is available  while (!Serial);  // Initiate serial bus for 19200 baud usage	Serial.begin (19200);  // Set initial motor speed for aperture and focus stepper motor  ApertureMotor.setSpeed(ApertureSpeed);  FocusMotor.setSpeed(FocusSpeed);  // Setup read protocol for communication with the outside temperature/humidity sensor  dht.begin();  // Setup one wire read protocol for one wire communication with the inside temperature sensor  sensors.begin();}// END OF SETUP// Set temperature measure timer so it will determine if the heater should be adjustedint t = 600;// Start of infinitive loopvoid loop() {  // Indicate no command has been received	int bCommandReady = false;  // Wait 100ms  delay(100);  // Increate heater skip counter  t++;    // Check if 600x 100ms has been passed  if (t > 600) {    // Reset counter    t = 0;    // Determine DewPoint    f = true;    GetDewPoint();    // Get inside temperature    f = true;    GetInsideTemperature();    // Check if inside temperature is at least 0.5 degrees above the calculated dew point and if heater is not on maximum capacity yet    if ((ITemp + 0.5) < DewPoint && HeaterValue < 255) {      #ifdef DBG_SWITCH        Serial.println("Heater value to low!");      #endif      // Increase heater PWM value      HeaterValue = HeaterValue + 5;      // Indicate heater value was adjusted      UPDATEHeater = true;    }    // Check if inside temperature is at max 1.5 degrees above the calculated dew point and if heater is not off yet    if ((ITemp + 1.5) > DewPoint && HeaterValue > 0) {      #ifdef DBG_SWITCH        Serial.println("Heater value to high!");      #endif      // Decrease heater PWM value      HeaterValue = HeaterValue - 5;      // Indicate heater value was adjusted      UPDATEHeater = true;    }    // Check if heater value was adjusted    if (UPDATEHeater) {      #ifdef DBG_SWITCH        Serial.print("Change heater value to: ");        Serial.println(HeaterValue);      #endif      // Update header PWM value      analogWrite(HeaterPin, HeaterValue);       // Reset heater value adjust flag      UPDATEHeater = false;    }  }  // Indicate some values might be updated	UPDATE = true;	// Check if There is information in the werial buffer, if so read it in and start the build command subroutine	if (usingSerial && Serial.available() >= 1) {		#ifdef DBG_SWITCH			Serial.println("Something in the buffer found!!!");		#endif		// Read the incoming byte:		incomingByte = Serial.read();    // Wait 5 ms		delay(5);				// Check for start of command		if (incomingByte == '#')			// Build a new command			bCommandReady = cliBuildCommand(incomingByte);	}  // Flag no commnad is started	else		incomingByte = 0;	// Check if there is a command in the buffer then run the process command subroutine	if (bCommandReady == true) {    // Reset the command ready flag		bCommandReady = false; 		#ifdef DBG_SWITCH			Serial.print("Received command: ");			Serial.println(gCommandBuffer);			Serial.print("Received value: ");			Serial.println(gParamBuffer);		#endif        // Run the command		cliProcessCommand(); 	}  // Flag command is processed	if (UPDATE) {		UPDATE = false;    // Send the current state of the ASC to the PC over serial comms		SerialDATAFun();  	}}// End of infinitive loop// Start of AllSkyCam fucntions// Process command to execute aperture control step invoid ApertureStepIn (void) {  // If no value was given default to 1  if (!gParamValue)    gParamValue = 1;  // Turn stepper motor CCW  ApertureMotor.step(gParamValue * -1);//  digitalWrite(AStepperPin1, LOW);//  digitalWrite(AStepperPin2, LOW);//  digitalWrite(AStepperPin3, LOW);//  digitalWrite(AStepperPin4, LOW);    // Decrease aperture position variable  AperturePos -= gParamValue;  // Flag aperture control position has changed  UPDATEApertureStepIn = true;}// Process command to execute aperture control step outvoid ApertureStepOut (void) {  // If no value was given default to 1  if (!gParamValue)    gParamValue = 1;  // Turn stepper motor CW  ApertureMotor.step(gParamValue);//  digitalWrite(AStepperPin1, LOW);//  digitalWrite(AStepperPin2, LOW);//  digitalWrite(AStepperPin3, LOW);//  digitalWrite(AStepperPin4, LOW);  // Decrease aperture position variable  AperturePos += gParamValue;  // Flag aperture control position has changed  UPDATEApertureStepOut = true;}// Get Aperture stepper motor positionvoid GetAperturePosition (void) {  // Flag show aperture position   UPDATEGetAperturePos = true;}// Process command to execute focus control step invoid FocusStepIn (void) {  // If no value was given default to 1  if (!gParamValue)    gParamValue = 1;  // Turn stepper motor CCW  FocusMotor.step(gParamValue * -1);//  digitalWrite(FStepperPin1, LOW);//  digitalWrite(FStepperPin2, LOW);//  digitalWrite(FStepperPin3, LOW);//  digitalWrite(FStepperPin4, LOW);  // Decrease focus position variable  FocusPos -= gParamValue;  // Flag focus control position has changed  UPDATEFocusStepIn = true;}// Process command to execute focus control step outvoid FocusStepOut (void) {  // If no value was given default to 1  if (!gParamValue)    gParamValue = 1;  // Turn stepper motor one stap CW  FocusMotor.step(gParamValue);//  digitalWrite(FStepperPin1, LOW);//  digitalWrite(FStepperPin2, LOW);//  digitalWrite(FStepperPin3, LOW);//  digitalWrite(FStepperPin4, LOW);  // Increase focus position variable  FocusPos += gParamValue;  // Flag focus control position has changed  UPDATEFocusStepOut = true;}// Get Focus stepper motor positionvoid GetFocusPosition (void) {  // Flag show focus position   UPDATEGetFocusPos = true;}// Calculate dew point (routine kindly borrowed from Gina)void GetDewPoint (void) {  // Define needed local variables  double celsius, hum;  // Read outside temperature  celsius = dht.readTemperature();  #ifdef DBG_SWITCH    Serial.print("Buiten Temperatuur: ");    Serial.print(celsius);    Serial.println("C");  #endif  // Read outside humidity  hum = dht.readHumidity();    #ifdef DBG_SWITCH    Serial.print("Humidity: ");    Serial.print(hum);    Serial.println("%");  #endif  // Check if any reads failed and exit early (to try again).  if (isnan(hum) || isnan(celsius)) {    // Print error message on serial bus    Serial.println("Failed to read temperature or humidity values from DHT sensor!");        // Abort function    return;  }  // Calculate tempature in Kelvin?  DewPoint = celsius - ((100 - hum) / 5);    // Calculate dew point  #ifdef DBG_SWITCH    Serial.print("Dew Point: ");    Serial.print(DewPoint);    Serial.println("C");  #endif    // Inidcate new dew point has been determined  if (!f)      UPDATEDewPoint = true;  f = false;}// Function to get the outside temperaturevoid GetOutsideTemperature (void) {    // Read temperature as Celsius (the default)  OTemp = dht.readTemperature();  // Check if any reads failed and exit early (to try again).  if (isnan(OTemp)) {    // Send error message to the serial bus    Serial.println("Failed to read temperature value from DHT sensor!");        // Abort the function    return;  }  // Indicate outside temperature was read  UPDATEOutsideTemp = true;}// Function to get the outside humidityvoid GetOutsideHumidity (void) {      // Reading temperature or humidity takes about 250 milliseconds!  OHum = dht.readHumidity();    // Check if any reads failed and exit early (to try again).  if (isnan(OHum)) {    // Send error message to the serial bus    Serial.println("Failed to read humidity value from DHT sensor!");        // Abort the function    return;  }  // Indicate outside humidity level was read  UPDATEOutsideHum = true;}// Function to get the inside temperaturevoid GetInsideTemperature (void) {  // Send the command to get the temperature form the inside sensor  sensors.requestTemperatures();  // Readout the temperature of the first sensor  ITemp = sensors.getTempCByIndex(0);  // Indicate inside temperature was read  if (!f)    UPDATEInsideTemp = true;  f = false;}// Function to get the inside temperaturevoid GetHeaterValue (void) {  UPDATEGetHeaterValue = true;}// Update all information via the serial busvoid SerialDATAFun (void) {   // Check if aperature control changed  if (UPDATEApertureStepIn) {    // Send new position to the serial bus    Serial.print("Aperture Motor Position: ");    Serial.println(AperturePos);     // Indicate new aperture position was sent    UPDATEApertureStepIn = false;  }    // Check if aperature control changed  if (UPDATEApertureStepOut) {    // Send new position to the serial bus    Serial.print("Aperture Motor Position: ");    Serial.println(AperturePos);         // Indicate new aperture position was sent    UPDATEApertureStepOut = false;  }  // Semd aperature position  if (UPDATEGetAperturePos) {    // Send new position to the serial bus    Serial.print("Aperture Motor Position: ");    Serial.println(AperturePos);         // Indicate new aperture position was sent    UPDATEGetAperturePos = false;  }  // Check if focus control changed  if (UPDATEFocusStepIn) {    // Send new position to the serial bus    Serial.print("Focus Motor Position: ");    Serial.println(FocusPos);         // Indicate new focus position was sent    UPDATEFocusStepIn = false;  }  // Check if focus control changed  if (UPDATEFocusStepOut) {    // Send new position to the serial bus    Serial.print("Focus Motor Position: ");    Serial.println(FocusPos);         // Indicate new focus position was sent    UPDATEFocusStepOut = false;  }  // Semd aperature position  if (UPDATEGetFocusPos) {    // Send new position to the serial bus    Serial.print("Focus Motor Position: ");    Serial.println(FocusPos);         // Indicate new aperture position was sent    UPDATEGetFocusPos = false;  }  // Check if dew point was determined  if (UPDATEDewPoint) {    // Send new dew point to the serial bus    Serial.print("Dew Point: ");    Serial.print(DewPoint);     Serial.println("C");        // Indicate new dew point was sent    UPDATEDewPoint = false;  }  if (UPDATEOutsideTemp) {    // Send new outside temperature to the serial bus    Serial.print("Outside Temperature: ");    Serial.print(OTemp);     Serial.println("C");        // Indicate new outside temperature was sent    UPDATEOutsideTemp = false;  }  if (UPDATEOutsideHum) {    // Send new outside humidity to the serial bus    Serial.print("Outside Humidity: ");    Serial.print(OHum);     Serial.println("%");        // Indicate new outside humidity was sent    UPDATEOutsideHum = false;  }  if (UPDATEInsideTemp) {    // Send new inside temperature to the serial bus    Serial.print("Inside Temperature: ");    Serial.print(ITemp);     Serial.println("C");        // Indicate new inside temperature was sent    UPDATEInsideTemp = false;  }  if (UPDATEGetHeaterValue) {     // Send new inside temperature to the serial bus    Serial.print("Heater Value: ");    Serial.println(HeaterValue);         // Indicate new inside temperature was sent    UPDATEGetHeaterValue = false;  }}// END OF AllSkyCam FUNCTIONS// Start of serial control functions// Process the received commandvoid cliProcessCommand(void){  // Initate and reset local command found flag	int bCommandFound = false;		// Initiate character index variable	int idx;	// Convert the parameter to an integer value. If the parameter is empty, gParamValue becomes 0	gParamValue = strtol(gParamBuffer, NULL, 0);  #ifdef DBG_SWITCH    Serial.print("Searching command: ");    Serial.println(gCommandBuffer);  #endif  	// Search for the command in the command table	for (idx = 0; gCommandTable[idx].name != NULL; idx++) {    // Chcek if command is found		if (strcmp(gCommandTable[idx].name, gCommandBuffer) == 0) {      // Indicate command was found			bCommandFound = true;      // Break out of command search loop			break;		}	}	// Check if command was found	if (bCommandFound == true) {    		#ifdef DBG_SWITCH			Serial.print("Executing command: ");			Serial.print(gCommandTable[idx].name);			Serial.print(": ");			Serial.print(gParamValue);			Serial.println(";");		#endif    // Call the function for the identified received command		(*gCommandTable[idx].function)();	}  // Command not found	else {		#ifdef DBG_SWITCH			Serial.println("ERROR: Command not found: ");			Serial.print(gCommandBuffer);		#endif	}}// When data is in the Serial buffer this subroutine is run and the information put into a command buffer.// The character : is used to define the end of a command string and the start of the parameter string// The character ; is used to define the end of the parameter stringint cliBuildCommand(char nextChar) {	// Initiate index variable for command buffer	int idx = 0;  		// Initiate index varaible for parameter buffer	int idx2 = 0;   #ifdef DBG_SWITCH    Serial.print("Command length: ");    Serial.println(MAX_COMMAND_LEN);  #endif  // Clear command buffer  gCommandBuffer[0] = '\0';	#ifdef DBG_SWITCH		Serial.print("Read command: ");	#endif  // Read first character of the command from the serial bus	nextChar = Serial.read();	// Start while loop	do {    // Wait 10us		delayMicroseconds(10);		#ifdef DBG_SWITCH/*            Serial.print("Character ");      Serial.print(idx);      Serial.print(" : ");			Serial.println(nextChar);*/      Serial.println(TO_UPPER(nextChar));		#endif    // Convert character to upper case		gCommandBuffer[idx] = TO_UPPER(nextChar);    //Serial.println(gCommandBuffer);    // Increate command buffer index counter		idx++;    // Read next character from the serial bus		nextChar = Serial.read();	}  // Loop until semi column is found or maximum length of command buffer is reached	while ((nextChar != ':') && (idx < MAX_COMMAND_LEN));  #ifdef DBG_SWITCH    Serial.print("Buffer length: ");    Serial.println(MAX_PARAMETER_LEN);  #endif  // Clear parameter buffer  gParamBuffer[0] = '\0';	#ifdef DBG_SWITCH		Serial.println("");		Serial.print("Read parameter: ");	#endif  // Read first character of parameter from the serial bus	nextChar = Serial.read();  // Start while loop	do {    // Wait 10us		delayMicroseconds(10);		#ifdef DBG_SWITCH			Serial.print(nextChar);		#endif    // Check if received character is a numeric character		if (nextChar >= 48 and nextChar <= 57) {      // Add character to parameter buffer			gParamBuffer[idx2] = nextChar;		}    else      gParamBuffer[idx2] = '\0';      		// Increate parameter index buffer pointer variable		idx2++;    // Read next character of parameter from the serial bus		nextChar = Serial.read();	}  // Loop until ; is found or index counter reaches the maximum length of the parameter command buffer	while ((nextChar != ';') && (idx2 < MAX_PARAMETER_LEN));		#ifdef DBG_SWITCH		Serial.println("");	#endif  // Add \0 character to the command buffer	gCommandBuffer[idx] = '\0';	#ifdef DBG_SWITCH		Serial.print("gCommandBuffer: ");		Serial.println(gCommandBuffer);	#endif  // Add \0 character to the parameter buffer	gParamBuffer[idx2] = '\0';	#ifdef DBG_SWITCH		Serial.print("gParamBuffer: ");		Serial.println(gParamBuffer);	#endif  // Exit function with a succes value	return true;}// End of serial control functions
Link to comment
Share on other sites

Great stuff Rob :)  Like it :)  You have gone a lot further than me and given me ideas for improvement - thank you :)  Maybe it's my turn to "borrow" some of your code, if you don't mind :)  In fact I need to sort my ASC out as the aperture control has stopped working.  I like your idea of reading the outside light level and using it to control aperture (something I was going to sort out eventually) and the dewpoint heater control is good.  I'll be interested to see how well the dew control works in practice.  I found the main problem was dew on the outside of the dome but it you allow a couple of degrees for temperature loss in the dome, it should be fine.  You may need to adjust this offset value when testing.

This project is one of several that are temporarily on hold due to the priority of getting the observatory safe from the weather.

Link to comment
Share on other sites

I'm planning to get back to working on my ASC soon - thinking of changing the control a bit as the micro servo motor seems to be troublesome.  This will be after I get something set up for DSO imaging as I think conditions might just permit this - I'm hopeful :D

Link to comment
Share on other sites

  • 4 weeks later...

I think I might be coming back to this as it's going to take a long time for the ground between house and observatory to dry up enough to walk on at night even after all the rain stops.  I'm thinking of using a stepper motor for the aperture instead of the unreliable servo.  Also, now that I have the 1-wire DS2408 sorted out I might use one of these plus a pair of CMOS quad drivers to drive the two stepper motors instead of the Arduino Nano with its annoying bright blue LED.

Link to comment
Share on other sites

This is what I had planned to do for my CCTV project and which I could modify to drive stepper motors for the ASC.

post-13131-0-34070900-1408864282_thumb.j

I shall only want to drive one stepper motor at a time so I could use the logic built into the drivers to select which.  Then both motors could be driven by just 4 data lines plus 1 or 2 control lines.  This leaves a couple of spare PIO pins to control the heater etc.

TC4469.JPG.b40735b15cee1c57118ee915f543856bde3d247f9d_TC4469TruthTable.thumb.JPG

With this logic, the drivers would be used to source the stepper current rather than sink it.  Also, the steppers will be 12v ones which take about 125mA per phase which is well within the continuous rating of the TC4469 quad drivers of 250mA though the stepper current is not continuous.

This is the present circuit diagram except that I haven't added the DHT22 to measure the external temperature and humidity and thence dew point).

post-13131-0-53827100-1433780386_thumb.j

As I said I plan to replace the servo motor with a stepper and the external temperature and humidity will be measured with the general Observatory Envrionment Instrumentation.  Initially the heater can be just on or off (as I have been doing).  All this means that the whole ASC control can be handled by 1-wire and just a twisted pair cable instead of USB.

New circuit diagram coming up shortly (when I've drawn it :D).

Link to comment
Share on other sites

  • 3 months later...

I'm thinking of getting back to this project as I now have my UP Plus 2 3D printer working well again.  But I'm also thinking of using a different camera since the QHY5L-II-C is very noisy.  I bought a ZWO ASI185MC for planetary imaging but the weather and short dark periods at this time of year are discouraging me from this.  This camera should make a great all sky camera in conjunction with the Fujinon zoom lens.  The 2.5mm lens supplied with it doesn't quite give the 180° coverage I would like and doesn't have an aperture control.

In view of the change of imaging camera and hence complete redesign of the casing plus two stepper motors for lens control I shall start a new thread for this new ASC and call it Mark 4.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. By using this site, you agree to our Terms of Use.