Git Product home page Git Product logo

openastrotracker-firmware's People

Contributors

andre-stefanov avatar christian-kardach avatar clutchplatedude avatar ctetford avatar effernity avatar eorequis avatar hexafluoride avatar jmoyerman avatar julianneswinoga avatar jwellman80 avatar mattyams avatar mholeys avatar micheldequick avatar mnigbur avatar openastrotech-bot avatar orletsoir avatar philharrisathome avatar pmneo avatar trishmapow avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openastrotracker-firmware's Issues

RA Stepper Motor with Sideral Tracking

I have a problem with the RA motor in sidereal tracking. Motor does not run smoothly. I can hear (but it's very slight) little clicks (about 10-15), then the motor stops, then it runs steadily (1-2 seconds) and it starts again like this. I am with arduino MEGA, A4988, NEMA17 1.8°. I tried different stepper motor cards, different motors, to play on the value of the microstepping, nothing changes.

Develop / Arduino 1.9.34 does not start on MKS Gen_L V2.1

I have built both develop and release version, created Configuration_local.hpp with Weblink and followed

https://wiki.openastrotech.com/Boards/MKS_Gen_L

to wire up the display but the display stays empty.

I have also tweaked debugging to
#define DEBUG_LEVEL (DEBUG_ANY)

but I do not see any feedback on serial as well (set to 19200)

Is there a pre-compiled firmware somewhere that I can try?

To build I used Arduino IDE and set BOARD:

#ifndef BOARD
#define BOARD BOARD_AVR_MKS_GEN_L_V21
#endif

"AccelStepper" can be improved

the "AccelStepper" library can be improved. This one accumulates in time a software error. It can be interesting to mathematically integrate this one. Where the "AccelStepper" lib makes

    unsigned long time = micros();   
    if (time - _lastStepTime >= _stepInterval)
    {
	if (_direction == DIRECTION_CW)
	{
	    _currentPos += 1;
	}
	else
	{
	    _currentPos -= 1;
	}
	step(_currentPos);

	_lastStepTime = time; 
	return true;
    }

I had coded a version with this fix, my lib is much less complete than AccelStepper but takes into account the software error. As a comparison in my lib I did like this . "this->m_ei" is integrate error

unsigned long r_elsp= micros() - this->m_elaps;

        if( (_mv_type == MOVE_TYPE::HALF_STEP ? this->m_inter_delay/2.0 : this->m_inter_delay)  <=r_elsp-this->m_ie)
        {
          this->next_step(_mv_type);
          this->m_elaps = micros();
          this->m_ie += this->m_inter_delay-r_elsp;

          step++;
        }

ESP32 with "default" DISPLAY_TYPE_LCD_KEYPAD

Hi,
so i just finnished my mechanical build of this project. Now its time to jump into the firmware.
Is there a reason, why i can't compile the firmware for a ESP32 with the default "LCD Keypad Shield"?
Normamly these two should work, or is there something i missed?

stepper motor minpulse width

Hello.
I'm making an OAT.
The firmware is up to date on the MKS Gen L V2.1 board.
I'm going to use the motor as the Close loop motor I had.
It works with the same input as A4988.
So I tested it, but it didn't move, so I checked it.
Result. Minimum pulse width is too small to be recognized.
I tried to modify the source, but I don't know where to modify it.

Thank you for your help.

Enable pin incorrect when using generic driver

The firmware doesn't properly enable A4988 drivers when using the generic driver option. Using TMC2209 standalone works for those drivers.

The enable pins are inverted states between those two options.

Wrong Longitude parsing offset.

Apparently there's a 180 deg offset considered when parsing the longitude which is not actually sent, at least not from KStars. KStars simply sends "-11.4" when you're at "11.4" which what's expected from the Meade spec.

Please remove that offset so that LST and HA can be calculated correctly.

You might need to fix the ASCOM driver too and tell all users to upgrade or send the version of the driver in a special command and either add or not add the offset.

Crash if attempting to use an alternate display configuration, 20 x 4

My design uses an esp32 with a 20x4 I2C LCD. When I added startup code for the new display type in b_setup.hpp (~ line 24) I used the display's size, 20 columns and 4 rows. LcdMenu lcdMenu(20, 4, MAXMENUITEMS);
This causes the firmware to crash because in the file LcdMenu.cpp the function LcdMenu::updateDisplay() allocates a char buffer (bufMenu[17]) with a size that is based on a column size of 16 (all hard coded). This buffer should instead be sized based on the LCD configuration provided in LcdMenu::lcdMenu(col, row, maxmenuitems)
OR
better yet the display size should be defined in Configuration_local.hpp.
I am attempting to correct this and at the same time I am separating the display and input (buttons) configurations so that any combination of display and input devices can be accommodated.

Devel branch seems to be building all versions

I'm trying to build the OpenAstroTech firmware for a Makerbase V2.1 board with TMC2209 stepper drivers. I am unclear if these are UART drivers or not, however thats a different problem.

I downloaded the OAT dev branch and unpacked it to a folder.

I then went to https://config.openastrotech.com/ and went through each step to create the Configuration_local.hpp file. I have guessed that the TMC2209 are UART.

I created the file 'Configuration_local.hpp' and pasted in the output from the https://config.openastrotech.com/ tool. This looks OK on the surface but what do I know .... It has the right board definitions in and the rest look sensible.

I renamed Configuration_sample_local.hpp to OLD_Configuration_sample_local.XXX to avoid any conflicts.

I click on the blue tick button the bottom left of VSC and a build process starts. Indeed it appears that a build process starts in turn for every motherboard

mega2560       SUCCESS   00:00:12.378
mksgenlv21     SUCCESS   00:00:11.255
mksgenlv2      SUCCESS   00:00:11.009
mksgenlv1      SUCCESS   00:00:11.110
esp32          SUCCESS   00:00:36.410

I'm sure there is something I have done wrong but unclear what mistkae I have made.

Any help welcomed.

Thanks

Rob

Here's the Configuration_local.hpp if that helps....

/////////////////////////////////////////////////////////////////////////////////////////////////////////
// This configuration file was generated by the OAT Configurator at https://config.openastrotech.com for
// firmware V1.9.00 and later.
// Save this as Configuration_local.hpp in the folder where you placed the firmware code.

// We live in the Northern Hemisphere
#define NORTHERN_HEMISPHERE 1

// We are using the MKS GEN L V2.1 board
#define BOARD BOARD_AVR_MKS_GEN_L_V21 

////////////////////////////////
// RA Stepper configuration 
 // See supported stepper values. Change according to the steppers you are using
// Using the NEMA 17, 0.9°/step stepper for RA
#define RA_STEPPER_TYPE STEPPER_TYPE_NEMA17

// Using the TMC2209-UART driver for RA stepper motor
#define RA_DRIVER_TYPE DRIVER_TYPE_TMC2209_UART

// Define some RA stepper motor settings
#define RA_MOTOR_CURRENT_RATING      900 // mA
#define RA_OPERATING_CURRENT_SETTING 80 // %
#define RA_STEPPER_ACCELERATION 3000
#define RA_STEPPER_SPEED 1200
#define RA_SLEW_MICROSTEPPING 8
#define RA_TRACKING_MICROSTEPPING 64
// #define RA_SERIAL_PORT Serial3  // You may need to uncomment or change this, depending on how you wired the UART
 // TMC2209 Stealth Mode (spreadCycle) - More precise tracking when not in stealth mode (set to 0), but steppers will make a high-pitched sound.
#define RA_UART_STEALTH_MODE   1

// Using the 16 tooth purchased gear for RA belt
#define RA_PULLEY_TEETH 16

////////////////////////////////
// DEC Stepper configuration 
 // See supported stepper values. Change according to the steppers you are using
// Using the NEMA 14, 0.9°/step stepper for DEC
#define DEC_STEPPER_TYPE STEPPER_TYPE_NEMA17

// Using the TMC2209-UART driver for DEC stepper
#define DEC_DRIVER_TYPE DRIVER_TYPE_TMC2209_UART

// Define some DEC stepper motor settings
#define DEC_MOTOR_CURRENT_RATING      900 // mA
#define DEC_OPERATING_CURRENT_SETTING 80 // %
#define DEC_STEPPER_ACCELERATION 3000
#define DEC_STEPPER_SPEED 1200
#define DEC_SLEW_MICROSTEPPING 16
#define DEC_GUIDE_MICROSTEPPING 64
// #define DEC_SERIAL_PORT Serial3  // You may need to uncomment or change this, depending on how you wired the UART
 // TMC2209 Stealth Mode (spreadCycle) - More precise tracking when not in stealth mode (set to 0), but steppers will make a high-pitched sound.
#define DEC_UART_STEALTH_MODE   1

// Using the 16 tooth purchased gear for DEC belt
#define DEC_PULLEY_TEETH 16

////////////////////////////////
// Display configuration 
// Define the type of display we are using. Currently: LCD Shield w/ keypad
#define DISPLAY_TYPE DISPLAY_TYPE_LCD_KEYPAD

////////////////////////////////
// GPS Addon configuration 
// Define whether we have the GPS addon or not. Currently: No GPS
#define USE_GPS 0

////////////////////////////////
// Digital Level Addon configuration 
// Define whether we have the Digital Level or not. Currently: No Digital Level
#define USE_GYRO_LEVEL 0

////////////////////////////////
// AutoPA Addon configuration 
// Define whether we have the AutoPA add on or not. Currently: No AutoPA
#define USE_AZIMUTH_ALTITUDE_MOTORS 0

ESP32 AP Mode

i have some trouble to get the ESP32 config to work with Skysafari on iOS.

every time, when I connect the ESP with the iPhone the Esp gets into panic and reboot.

does anyone have a working config file, I could test?

Problems on the DEC axis for the southern hemisphere

Hi. My name is Armando Leonardo.
Sorry for the English, but I'm using Google Translate to help me.
I live in the southern hemisphere, in Brazil, and I have a problem moving the DEC axis. As expected and described on the website, the DEC axis appears on the LCD -90º. However, when I move it to a target, only the DOWN button obeys, negatively incrementing the value, that is, the OAT only increments values from -91 to -270, when it should implement values from -89 to 0 and 360 to 270.
I've already checked the behavior of the buttons, as per the troubleshooting guidelines, but everything is OK with the buttons.
It seems to me that there is a problem in the programming, which does not include the southern hemisphere, because of the use of the (-) sign.
Would you be able to help me?
Thanks.

OATproblema.mp4

RAMPS won't build

Trying to build V1.10.2

I use the the online firmware configurator and get the attached Configuration_local.hpp
Configuration_local_hpp.txt

When I try to build using PIO it fails for all environments.

If I use the Configuration_sample_local.hpp instead, then the mega2560 environment successfully builds.

If I change the line
#define BOARD BOARD_AVR_MEGA2560
to
#define BOARD BOARD_RAMPS
it again fails for all environments.

This is the first error I get, with a lot of similar ones after
In file included from src\../LocalConfiguration.hpp:20:0, from src\../Configuration.hpp:50, from src\Declination.cpp:1: src\../Configuration_local.hpp:24:0: error: "BOARD" redefined [-Werror] #define BOARD BOARD_RAMPS

I noticed Constants.hpp does not have a #define BOARD_RAMPS line or anything similar.

Upload fail =(

Environment    Status    Duration
-------------  --------  ------------
mega2560       SUCCESS   00:00:29.547
mksgenlv21     SUCCESS   00:00:29.410
mksgenlv2      SUCCESS   00:00:29.538
mksgenlv1      SUCCESS   00:00:29.738
esp32          FAILED    00:00:35.691
====================================================================== 1 failed, 4 succeeded in 00:02:33.924 ======================================================================The terminal process "C:\.platformio\penv\Scripts\platformio.exe 'run', '--target', 'upload'" terminated with exit code: 1.

Terminal will be reused by tasks, press any key to close it.

Help ****

// We live in the southern hemisphere

#define NORTHERN_HEMISPHERE 0

 

// We are using an ATMega 2560 card (or clone)

#define BOARD BOARD_AVR_MEGA2560

 

//////////////////////////////////////////

// RA Stepper configuration

// See the allowed stepper values. Change according to the steppers you are using

// Using NEMA 17, 1.8 ° / step for RA

#define RA_STEPPER_TYPE STEPPER_TYPE_NEMA17

#define RA_STEPPER_SPR 200

 

// Using the TMC2209-UART driver for RA stepper motor

#define RA_DRIVER_TYPE DRIVER_TYPE_TMC2209_UART

 

// Using the purchased 16-tooth gear for the RA belt

#define RA_PULLEY_TEETH 16

USE_DUMMY_EEPROM = true gives compile errors

I had some issues with the EEPROM store and wanted to try the dummy store to double.check. Unfortunately it didn't compile. Here's what I did to get it to run.

stellarmate@astroberry:~/astro/OpenAstroTracker-Firmware $ git diff src/EPROMStore.cpp 
diff --git a/src/EPROMStore.cpp b/src/EPROMStore.cpp
index 37c5c22..52f6f49 100644
--- a/src/EPROMStore.cpp
+++ b/src/EPROMStore.cpp
@@ -1,9 +1,10 @@
 #include "inc/Globals.hpp"
+#include "../Configuration.hpp"
+#if USE_DUMMY_EEPROM == false
 PUSH_NO_WARNINGS
 #include <EEPROM.h>
 POP_NO_WARNINGS
-
-#include "../Configuration.hpp"
+#endif
 #include "Utility.hpp"
 #include "EPROMStore.hpp"
 
@@ -17,13 +18,15 @@ const float SteppingStorageNormalized = 25600.0;
 
 #if USE_DUMMY_EEPROM == true
 
-static uint8_t dummyEepromStorage[EEPROMStore::STORE_SIZE];
+static uint8_t *dummyEepromStorage;
 
 // Initialize the EEPROM object for ESP boards, setting aside storage
 void EEPROMStore::initialize()
 {
-    LOG(DEBUG_EEPROM, "[EEPROM]: Dummy: Startup with %d bytes", EEPROMStore::STORE_SIZE);
-    memset(dummyEepromStorage, 0, sizeof(dummyEepromStorage));
+    size_t size = EEPROMStore::STORE_SIZE;
+    dummyEepromStorage = (uint8_t *)malloc(size);
+    LOG(DEBUG_EEPROM, "[EEPROM]: Dummy: Startup with %d bytes", size);
+    memset(dummyEepromStorage, 0, size);
 
     displayContents();  // Will always be empty at restart
 }

XSDLL & XSDLU - ignoring argument

Issue 158 added the ability to set DEC lower and upper limits based on a parameter. However Mount::setDecLimitPositionAbs always sets the limits based on the constants DEC_LIMIT_UP and DEC_LIMIT_DOWN, ignoring the passed argument stepperPos:

_decUpperLimit = DEC_LIMIT_UP * _stepsPerDECDegree;

and:

_decLowerLimit = -(DEC_LIMIT_DOWN * _stepsPerDECDegree);

Should this be adjusted to allow for either the limit and/or the passed argument?

RA Steps getting re-set to absurd value

Several times now I homed the OAT during the day prior to putting it outside and I had it going off the rails in RA. The RA steps were fine when I set it up.

Checking the RA steps when this happens gives me 13344.0 instead of the 417 it should be. The result is that the OAT moves a huge amount but thinks it only moved a bit (factor 32).

I haven't been able to reliable reproduce this though, I only guess that it's related to the time the mount it up.

I already switched the board, but it's still the same.

I'm using Firmware 1.13.5.beta

>> Command: XGR
>> Sending: :XGR#
<<Waiting for result: :XGR#>> newText=>Meade=13344.0
<< Received: 1 13344.0
# XGR -> (1, '13344.0')
>> Result: (1, '13344.0')
>> Command: XSR417
>> Sending: :XSR417#
<<Waiting for result: :XSR417#>> newText=>Meade=
<< Received: 3 
# XSR417 -> (3, '')

System freeze after Firmware "update"

Hello all,
I have re-flashed the mksV2.1 board FW (1.11.5) because i swapped the Axes of the Digital level.
Yesterday system works fine.

After this wenn turn on OAT the Display und system works, Powerled is on.
Moving RA/Dec axis to home, that works fine.
Digital leveling works fine.
because Indoor GPS is not found, press 2x the right button to go on.
then after this the display shows RA DEc and 01h etc

A few sec later the system freeze , no Displaybutton respond, and the display shows no h.
On the MKS Board the blue led next to powerled and red led next to mosfet turn on
HE1 goes from 0V to 12V

I used the firmware configurator and flashed it several times
result is always the same.

OpenAstrotech Discord :
https://discord.com/channels/693401540744183859/1027676652718792714


Each Time i made a "clean all" bevor build and upload.
I tested several combinations of add-ons.
All Add-ons alone work without problems.
If there are two, there are no problems, no matter what combination.

Only if I use all three (gps, leveling, AutoPA) together
then the system break after skipping the "GPS-Sat search" (indoors) with the R Button when it reaches the "main menu".

#define NEW_STEPPER_LIB compiler FAILS - both Arduino IDE and Platform.IO

For some reason, I have NEVER been able to compile using the NEW_STEPPER_LIB definition. Always get a pack of errors. Why won't this work?

My Configuration:

  • MKS 1.21 with 3 Triminiac 2209 V3.0 with UART configuration. (works flawlessly). Requires special diagonal jumper.
  • Firmware version V1.13.5 (latest!)
  • OAT 3D printed with aluminium base and modified RA and DEC mounts with belt tensioners
  • 1.8 NEMA 17 steppers for RA and DEC,
  • MPU4050 and GPS
  • RA and DEC Hall sensors for auto-homing
  • DF Robot LCD (16x2) Display with keypad
  • modified 28BYJ-48 stepper for DIY focuser
  • Pi4 8GB
    • Bookworm OS
    • running latest INDI drivers (including OpenAstroTeck Mount, and LibCamera)
    • Minicom and Python scripts to talk to the MKS for manual adjustments
    • 5Ghz WiFi
    • Pi HQ camera mounted on custom Newtonion scope (LibCamera)
  • Windows 11 PC running latest version of Kstars and EKOS and connected via 5 Ghz WiFi to Pi4

Here is my Configuration_local.hpp

/////////////////////////////////////////////////////////////////////////////////////////////////////////
// This configuration file was generated by the OAT/OAM Configurator at https://config.openastrotech.com
// and is for firmware to be used on a OpenAstroTracker.
// Save this as Configuration_local.hpp in the folder where you placed the firmware code.
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// Unique ConfigKey: TR:OAT,FWT:L,SL:N,HS:N,BD:M21,RST:N8,RDO:TU,RATP900:O90:A3000:V1800:S16:T256:,RTR:Y,RT:1,DS:N8,DDT:TU,DATP900:O90:A3000:V1800:S16:T256:,DT:1,DLIN90:D45:,STL:S,DY:NO,GP:N,LM:N,FC:Y,FS:BY,FD:TU,FAP150:O100:S1:H10:,FMSA600:V400:,APT:N,RAH:N
/////////////////////////////////////////////////////////////////////////////////////////////////////////


// Use the much higher performance stepper library.
//#define NEW_STEPPER_LIB

// We live in the Northern Hemisphere
#define NORTHERN_HEMISPHERE 1

// We are using the MKS GEN L V2.1 board
#if defined(BOARD) && BOARD != BOARD_AVR_MKS_GEN_L_V21
    #error Selected PIO environment does not match this configuration
#else
    #define BOARD BOARD_AVR_MKS_GEN_L_V21
#endif

////////////////////////////////
// RA Stepper configuration (OAT)
// See supported stepper values. Change according to the steppers you are using
// Using the NEMA 17, 1.8°/step stepper for RA
#define RA_STEPPER_TYPE STEPPER_TYPE_ENABLED
#define RA_STEPPER_SPR 200.0f

// Using the TMC2209-UART driver for RA stepper motor
#define RA_DRIVER_TYPE DRIVER_TYPE_TMC2209_UART

// Define some RA stepper motor settings
#define RA_MOTOR_CURRENT_RATING        900 // mA
#define RA_OPERATING_CURRENT_SETTING   90 // %
#define RA_STEPPER_ACCELERATION        3000
#define RA_STEPPER_SPEED               1800
#define RA_SLEW_MICROSTEPPING          16
#define RA_TRACKING_MICROSTEPPING      256

// Is it going the wrong way?
#define RA_INVERT_DIR  0

#ifdef NEW_STEPPER_LIB
  #define RA_SLEWING_ACCELERATION_DEG   2.0  // deg/s/s
  #define RA_SLEWING_SPEED_DEG          2.0  // deg/s
#endif

// Track immediately after boot
#define TRACK_ON_BOOT 0

// Define limits for RA... 
#define RA_LIMIT_LEFT     5.5f
#define RA_LIMIT_RIGHT    6.5f
#define RA_TRACKING_LIMIT 6.75f // can't quite get to 7h...

// Using the 16 tooth gear (recommended) for RA belt
#define RA_PULLEY_TEETH 16

////////////////////////////////
// DEC Stepper configuration 
// See supported stepper values. Change according to the steppers you are using
// Using the NEMA 17, 1.8°/step stepper for DEC
#define DEC_STEPPER_TYPE STEPPER_TYPE_ENABLED
#define DEC_STEPPER_SPR 200.0f

// Using the TMC2209-UART driver for DEC stepper
#define DEC_DRIVER_TYPE DRIVER_TYPE_TMC2209_UART

// Define some DEC stepper motor settings
#define DEC_MOTOR_CURRENT_RATING       800 // mA
#define DEC_OPERATING_CURRENT_SETTING  90 // %
#define DEC_STEPPER_ACCELERATION       3000
#define DEC_STEPPER_SPEED              1800
#define DEC_SLEW_MICROSTEPPING         16
#define DEC_GUIDE_MICROSTEPPING        256

// Is it going the wrong way?
#define DEC_INVERT_DIR  0

#ifdef NEW_STEPPER_LIB
  #define DEC_SLEWING_ACCELERATION_DEG   2.0  // degs/s/s
  #define DEC_SLEWING_SPEED_DEG          2.0  // deg/s
#endif

// Using the 16 tooth gear (recommended) for DEC belt
#define DEC_PULLEY_TEETH 16

// Define DEC limits
#define DEC_LIMIT_UP   90 // degrees from Home
#define DEC_LIMIT_DOWN 55 // degrees from Home

// TMC2209 Stealth Mode (spreadCycle) - When set to 0, tracking is more precise, but noisy (high-pitched hissing sound). When set to 1, they are silent.
#define RA_UART_STEALTH_MODE      1
#define DEC_UART_STEALTH_MODE     1

////////////////////////////////
// Display configuration 
// Define the type of display we are using. Currently: No display
#define DISPLAY_TYPE DISPLAY_TYPE_LCD_KEYPAD

////////////////////////////////
// GPS Addon configuration 
// Define whether we have the GPS addon or not. Currently: No GPS
#define USE_GPS 1

////////////////////////////////
// Digital Level Addon configuration 
// Define whether we have the Digital Level or not. Currently: No Digital Level
#define USE_GYRO_LEVEL 1
#define GYRO_AXIS_SWAP 0 
// MKS uses software I2C library. Define the SCL and SDA pins you wired (recommended are 11 and 21) 
#define USE_GYRO_WITH_SOFTWAREI2C 1 
#define GYRO_SOFTWARE_SCL_PIN 11 
#define GYRO_SOFTWARE_SDA_PIN 21 efine USE_GYRO_LEVEL 1

////////////////////////////////
// Focuser configuration 
// Define whether to support a focusing stepper motor on E1 or not. Currently: Focuser stepper

// Using the Modded 28BYJ-48 (Bipolar) stepper for FOC
#define FOCUS_STEPPER_TYPE STEPPER_TYPE_ENABLED
#define FOCUS_STEPPER_SPR 2048.0f

// Using the TMC2209-UART driver for focuser stepper
#define FOCUS_DRIVER_TYPE DRIVER_TYPE_TMC2209_UART

// Define Focus stepper motor power settings
#define FOCUS_MOTOR_CURRENT_RATING       150 // mA
#define FOCUS_OPERATING_CURRENT_SETTING  100 // %
#define FOCUS_MICROSTEPPING              1 // steps
#define FOCUSER_MOTOR_HOLD_SETTING       10 // %
#define FOCUS_UART_STEALTH_MODE          1 // silent?
#define FOCUSER_ALWAYS_ON                1

// Define some focuser stepper motor settings
#define FOCUS_STEPPER_ACCELERATION 600
#define FOCUS_STEPPER_SPEED 400

////////////////////////////////
// AutoPA Addon configuration 
// Define whether we have the AutoPA add on or not. Currently: No AutoPA
// No AutoPA settings

//////////////////////////////// 
// Auto Homing addons 
#define USE_HALL_SENSOR_RA_AUTOHOME 1 
#define RA_HOMING_SENSOR_SEARCH_DEGREES 30
#define RA_HOMING_SENSOR_ACTIVE_STATE HIGH
#define USE_HALL_SENSOR_DEC_AUTOHOME 1 
#define DEC_HOMING_SENSOR_SEARCH_DEGREES 50
#define DEC_HOMING_SENSOR_ACTIVE_STATE HIGH

///////////////////////
// Debug settings
// DEBUG_NONE
// DEBUG_WIFI
// DEBUG_MOUNT 
// DEBUG_FOCUS         
//|DEBUG_EEPROM|DEBUG_GYRO|DEBUG_GPS|DEBUG_COORD_CALC| DEBUG_GPS
// DEBUG_MEADE|DEBUG_SERIAL|DEBUG_INFO|DEBUG_MOUNT_VERBOSE|DEBUG_GENERAL|DEBUG_MEADE|DEBUG_VERBOSE|DEBUG_STEPPERS|DEBUG_ANY
//#define DEBUG_LEVEL (DEBUG_NONE)
//#define DEBUG_LEVEL (DEBUG_MEADE|DEBUG_ANY)
//#define DEBUG_LEVEL (DEBUG_NONE)
#define DEBUG_LEVEL (DEBUG_INFO)

// UART CONNECTION TEST - USE only TX or TXRX at the same time
//#define UART_CONNECTION_TEST_TX 1   // this one contains a 5 degree self-test in both motors
//#define UART_CONNECTION_TEST_TXRX 1
// define debug commands to Serial1

#define DEBUG_SEPARATE_SERIAL 1
#define DEBUG_SERIAL_PORT Serial2
#define DEBUG_SERIAL_BAUDRATE 115200

Here is my modified pins_MKS_GEN_L_V21.h

#pragma once

// DRIVER_TYPE_TMC2209_UART requires 4 digital pins in Arduino pin numbering
#ifndef RA_STEP_PIN
    #define RA_STEP_PIN 54  // STEP
#endif
#ifndef RA_DIR_PIN
    #define RA_DIR_PIN 55  // DIR
#endif
#ifndef RA_EN_PIN
    #define RA_EN_PIN 38  // Enable
#endif
#ifndef RA_DIAG_PIN
    #define RA_DIAG_PIN 3  // only needed for autohome function
#endif
#ifndef RA_MS0_PIN
    #define RA_MS0_PIN 51
#endif
#ifndef RA_MS1_PIN
    #define RA_MS1_PIN 52
#endif
#ifndef RA_MS2_PIN
    #define RA_MS2_PIN 63
#endif
// DRIVER_TYPE_TMC2209_UART requires 2 additional digital pins for SoftwareSerial, can be shared across all drivers
#ifndef RA_SERIAL_PORT_TX
    #define RA_SERIAL_PORT_TX 40  // SoftwareSerial TX port
#endif
#ifndef RA_SERIAL_PORT_RX
    #define RA_SERIAL_PORT_RX 63  // SoftwareSerial RX port
#endif
#ifndef RA_DRIVER_ADDRESS
    #define RA_DRIVER_ADDRESS 0b00
#endif
// DRIVER_TYPE_TMC2209_UART requires 4 digital pins in Arduino pin numbering
#ifndef DEC_STEP_PIN
    #define DEC_STEP_PIN 60  // STEP
#endif
#ifndef DEC_DIR_PIN
    #define DEC_DIR_PIN 61  // DIR
#endif
#ifndef DEC_EN_PIN
    #define DEC_EN_PIN 56  // Enable
#endif
#ifndef DEC_DIAG_PIN
    #define DEC_DIAG_PIN 14  // only needed for autohome function
	//#define DEC_DIAG_PIN -1
#endif
#ifndef DEC_MS0_PIN
    #define DEC_MS0_PIN 51
#endif
#ifndef DEC_MS1_PIN
    #define DEC_MS1_PIN 52
#endif
#ifndef DEC_MS2_PIN
    #define DEC_MS2_PIN 64
#endif
// DRIVER_TYPE_TMC2209_UART requires 2 additional digital pins for SoftwareSerial, can be shared across all drivers
#ifndef DEC_SERIAL_PORT_TX
    #define DEC_SERIAL_PORT_TX 59  // SoftwareSerial TX port
#endif
#ifndef DEC_SERIAL_PORT_RX
    #define DEC_SERIAL_PORT_RX 64  // SoftwareSerial RX port
#endif
#ifndef DEC_DRIVER_ADDRESS
    #define DEC_DRIVER_ADDRESS 0b00
#endif

#define SW_SERIAL_UART 1
#ifndef UART_CONNECTION_TEST_TXRX
    #define UART_CONNECTION_TEST_TXRX 1
#endif

// DRIVER_TYPE_TMC2209_UART requires 4 digital pins in Arduino pin numbering
#ifndef AZ_STEP_PIN
    #define AZ_STEP_PIN 46  // STEP
#endif
#ifndef AZ_DIR_PIN
    #define AZ_DIR_PIN 48  // DIR
#endif
#ifndef AZ_EN_PIN
    #define AZ_EN_PIN 62  // Enable
#endif
#ifndef AZ_DIAG_PIN
    #define AZ_DIAG_PIN 18  // only needed for autohome function
#endif
// DRIVER_TYPE_TMC2209_UART requires 2 additional digital pins for SoftwareSerial, can be shared across all drivers
#ifndef AZ_SERIAL_PORT_TX
    #define AZ_SERIAL_PORT_TX 42  // SoftwareSerial TX port
#endif
#ifndef AZ_SERIAL_PORT_RX
    #define AZ_SERIAL_PORT_RX 65  // SoftwareSerial RX port
#endif
#ifndef AZ_DRIVER_ADDRESS
    #define AZ_DRIVER_ADDRESS 0b00
#endif
// DRIVER_TYPE_TMC2209_UART requires 4 digital pins in Arduino pin numbering
#ifndef ALT_STEP_PIN
    #define ALT_STEP_PIN 26  // STEP
#endif
#ifndef ALT_DIR_PIN
    #define ALT_DIR_PIN 28  // DIR
#endif
#ifndef ALT_EN_PIN
    #define ALT_EN_PIN 24  // Enable
#endif
#ifndef ALT_DIAG_PIN
    #define ALT_DIAG_PIN 2  // only needed for autohome function
#endif
// DRIVER_TYPE_TMC2209_UART requires 2 additional digital pins for SoftwareSerial, can be shared across all drivers
#ifndef ALT_SERIAL_PORT_TX
    #define ALT_SERIAL_PORT_TX 44  // SoftwareSerial TX port
#endif
#ifndef ALT_SERIAL_PORT_RX
    #define ALT_SERIAL_PORT_RX 66  // SoftwareSerial RX port
#endif
#ifndef ALT_DRIVER_ADDRESS
    #define ALT_DRIVER_ADDRESS 0b00
#endif

// DRIVER_TYPE_TMC2209_UART requires 4 digital pins in Arduino pin numbering. This is the E1 port.
#ifndef FOCUS_STEP_PIN
    #define FOCUS_STEP_PIN 36  // STEP
#endif
#ifndef FOCUS_DIR_PIN
    #define FOCUS_DIR_PIN 34  // DIR
#endif
#ifndef FOCUS_EN_PIN
    #define FOCUS_EN_PIN 30  // Enable
#endif
#ifndef FOCUS_DIAG_PIN
    #define FOCUS_DIAG_PIN 15  // only needed for autohome function
	//#define FOCUS_DIAG_PIN -1
#endif
// DRIVER_TYPE_TMC2209_UART requires 2 additional digital pins for SoftwareSerial, can be shared across all drivers
#ifndef FOCUS_SERIAL_PORT_TX
    #define FOCUS_SERIAL_PORT_TX 20  // SoftwareSerial TX port
#endif
#ifndef FOCUS_SERIAL_PORT_RX
    #define FOCUS_SERIAL_PORT_RX 12  // SoftwareSerial RX port
#endif
#ifndef FOCUS_DRIVER_ADDRESS
    #define FOCUS_DRIVER_ADDRESS 0b00
#endif

// RA Homing pin for Hall sensor
#ifndef RA_HOMING_SENSOR_PIN
    #define RA_HOMING_SENSOR_PIN 53
#endif

// DEC Homing pin for Hall sensor
#ifndef DEC_HOMING_SENSOR_PIN
    #define DEC_HOMING_SENSOR_PIN 52
#endif

// RA End Switch East pin
#ifndef RA_ENDSWITCH_EAST_SENSOR_PIN
    #define RA_ENDSWITCH_EAST_SENSOR_PIN 19
#endif

// RA End Switch West pin
#ifndef RA_ENDSWITCH_WEST_SENSOR_PIN
    #define RA_ENDSWITCH_WEST_SENSOR_PIN 18
#endif

// DEC End Switch Up pin
#ifndef DEC_ENDSWITCH_UP_SENSOR_PIN
    #define DEC_ENDSWITCH_UP_SENSOR_PIN 3
#endif

// DEC End Switch Down pin
#ifndef DEC_ENDSWITCH_DOWN_SENSOR_PIN
    #define DEC_ENDSWITCH_DOWN_SENSOR_PIN 2
#endif

//GPS pin configuration
#ifndef GPS_SERIAL_PORT
    #define GPS_SERIAL_PORT Serial1
#endif

// DISPLAY_TYPE_LCD_KEYPAD requires 6 digital & 1 analog output in Arduino pin numbering
#ifndef LCD_PIN4
    #define LCD_PIN4 37
#endif
#ifndef LCD_PIN5
    #define LCD_PIN5 35
#endif
#ifndef LCD_PIN6
    #define LCD_PIN6 23
#endif
#ifndef LCD_PIN7
    #define LCD_PIN7 25
#endif
#ifndef LCD_PIN8
    #define LCD_PIN8 27
#endif
#ifndef LCD_PIN9
    #define LCD_PIN9 29
#endif

// DISPLAY_TYPE_LCD_KEYPAD requires 1 analog input in Arduino pin numbering
#ifndef LCD_KEY_SENSE_PIN
    #define LCD_KEY_SENSE_PIN 58
#endif

//Pin to turn on dew heater MOSFET
#ifndef DEW_HEATER_1_PIN
    #define DEW_HEATER_1_PIN 10
#endif
#ifndef DEW_HEATER_2_PIN
    #define DEW_HEATER_2_PIN 7
#endif

//Serial port for external debugging
#if DEBUG_SEPARATE_SERIAL == 1
    #ifndef DEBUG_SERIAL_PORT
        #define DEBUG_SERIAL_PORT Serial2  //D16 (LCD_RS) - TXD2 and D17 (LCD_EN) - RXD2
        // #define DEBUG_SERIAL_PORT Serial3 //D14/15
	#endif
//#else
//    #ifndef DEBUG_SERIAL_PORT
//        #define DEBUG_SERIAL_PORT Serial
//    #endif
#endif

Beyond that, the only other mod is to adjust the values for the up/down/left/right/enter of the LCD keypad.
Hijacked Serial2 for debug output and moved LCD pins to new pins. All good.

Add a Define so the end user can select whether the mount starts tracking on Power up or imitated by User

Currently, when power is applied to the mount it starts Tracking, which in many cases that would work the best. But if the unit is unattended and Parked , and a power glitch were to occur, the Oat would reset and start to track without guidance.
the statement would be like #define AUTOTRACKING ON POWER ON True or False of course the default would be True, to continue on how it is already setup, but the False would give the operator an option for tracking on power up.

RA homing off the rails

When I set the speed/accel of the new stepper lib too high (I used 16.0 for both), MHRR3 doesn't find the magnet anymore and subsequently goes off the rails on the other side (which is actually a second issue as it shouldn't do so).

Issuing :RM# before the homing makes it kinda work again, but it doesn't move to 0 afterwards. Apparently the RA moves are "weird". When I give MXr100, it moves 100 steps. When I give MXr200, it just doesn't stop until I issue Q.

Inconsistent behavior slewing between PlatformIO and Arduino

I've noticed inconsitent behavior betwen PlatformIO and Arduino IDE

When compiling via PlatformIO dates appear to wrap at 09:06:07 instead of 23:59:59.

This appears to be a 16 bit signed integer overflow error, possibly related to the usage of abs(totalSeconds) in DayTime.cpp

Compiling Error redefinition of 'float fabsf'

trying to compile with Arduino IDE 1.8.19 on Linux (Manjaro).

Get following compile error:


OpenAstroTech/OpenAstroTracker-Firmware/src/Utility.cpp:212:7: error: redefinition of 'float fabsf(float)'
  212 | float fabsf(float x)
      |       ^~~~~
In file included from OpenAstroTech/OpenAstroTracker-Firmware/src/Utility.cpp:1:
/usr/avr/include/math.h:163:21: note: 'float fabsf(float)' previously defined here
  163 | static inline float fabsf (float __x)
      |                     ^~~~~
exit status 1
Error compiling for board Arduino Mega or Mega 2560.

unable to download

I open the .ino in arduino and follow the directions. When i hit ctrl u it gives me this error. I'm not sure what I am doing wrong.

C:\Users\Chris\AppData\Local\Temp\cckK8d9i.ltrans0.ltrans.o: In function main': C:\Users\Chris\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5\cores\arduino/main.cpp:43: undefined reference to setup'
C:\Users\Chris\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5\cores\arduino/main.cpp:46: undefined reference to `loop'
collect2.exe: error: ld returned 1 exit status

exit status 1

Compilation error: exit status 1

Problems with the focuser

Hello all,

I know the focuser is a new addition and not yet fully functional, but I just want to raise a couple of things I noticed.

  1. The FOCUS_IN1_PIN for the driver ULN2003 is set as 66 (the same pin used for the ALT_IN1_PIN). I believe it should be 12 (?);
  2. The focuser does not work under Ekos and/or N.I.N.A. I believe there is a bug which crashes the focuser function when you try to adjust the rate. Using the display I can move the stepper flawlessly without touching the rate. Once I change it, it stops working and I need to reset the device.

Thanks for the amazing equipment you guys put together.

Hardware abstraction layer (HAL) implementation

In order to greatly improve maintainability and expandability of Firmware code, a hardware abstraction layer (HAL) should be implemented in context of a big refactoring. The new architecture will then form the base of firmware version 2.x.x

Multiple components have to be extracted out of the current code (mainly from Mount.cpp and init files) and placed into well designed and encapsulated units. These units should follow single-responsibility principle (e.g. a stepper driver should only be responsible for the actual driver hardware and not care about higher level hardware or software like the board it is attached to or the interrupt routine used for step triggering).

The strict encapsulation will allow proper automated unit testing later and increase stability of the whole firmware after code or configuration changes. It will also provide an easy way for further hardware support implementations.

  • stepper abstraction
  • driver abstraction
  • platform abstraction
  • board abstraction

Introduce configuration versioning

we should add a version value to each generated local config, e.g:

#define LOCAL_CONFIG_VERSION 1

the firmware code could then have following definition & check:

#define MIN_LOCAL_CONFIG_VERSION 1
#if MIN_LOCAL_CONFIG_VERSION > LOCAL_CONFIG_VERSION
  #error You have to update your local config to be able to use this version of firmware
#endif

This would allow us making changes to the config api (e.g. renaming or restructuring the config definitions) which would not lead to compile errors otherwise.
The user would also have an easier to understand error message instead of some generic "XYZ not defined"
If we introduce some breaking changes, we simply bump the min required config version in the firmware ... then adapt the config server and bump the version there as well.

RA slews off end of ring

calculateRAandDECSteppers appears to not calculate the correct direction to turn the RA axis when attempting to park after a long session of tracking (6+ hrs)

Exact duration of tracking required to cause this has not been narrowed down yet, but it is repeatable.

Edit: Confirmed this occurs when attempting to park after 12 hrs of tracking. I'll try to narrow down the window it occurs.

"Unknown" board type crashes OATControl

An "Unknown" board is not handled properly by Mount::getMountHardwareInfo(): ESP32 and m2560p boards have a trailing comma whereas the Unknown board type does not. This results in the following hardware line being sent by the firmware:

[00:00:07.560] [06]: Mount: Hardware is UnknownNEMA|20|400,NEMA|20|400,NO_GPS,NO_AZ_ALT,NO_GYRO,NO_LCD,NO_FOC,

causing OATControl to crash, as the missing comma relocates the line segments parsed here.

esp32 build broken with version 1.12.6

Hi,
it seems to me that with changes made from v 1.12.5 (d5daf2e) to 1.12.6beta (38586ce) my esp32 build crashes with a

Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.

Core  1 register dump:
PC      : 0x400dde4a  PS      : 0x00060e30  A0      : 0x800d9308  A1      : 0x3ffb2140
A2      : 0x00000000  A3      : 0x00000000  A4      : 0x00000844  A5      : 0x3ffb2110
A6      : 0x00000025  A7      : 0x3ffc2900  A8      : 0x800dea0c  A9      : 0x3ffb2130
A10     : 0x3ffb217c  A11     : 0x0000002b  A12     : 0x0beb37e9  A13     : 0x3ffc2900
A14     : 0x00000025  A15     : 0x3ffb9303  SAR     : 0x0000001a  EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000020  LBEG    : 0x40086004  LEND    : 0x4008600f  LCOUNT  : 0x00000000


Backtrace: 0x400dde47:0x3ffb2140 0x400d9305:0x3ffb2170 0x400daeaf:0x3ffb21b0 0x400db372:0x3ffb21f0 0x400d2012:0x3ffb2220 0x400e030a:0x3ffb2290

  #0  0x400dde47:0x3ffb2140 in AccelStepper::stop() at .pio/libdeps/esp32/AccelStepper/src/AccelStepper.cpp:666
  #1  0x400d9305:0x3ffb2170 in Mount::stopSlewing(int) at src/Mount.cpp:2329 (discriminator 2)
  #2  0x400daeaf:0x3ffb21b0 in Mount::configureHemisphere(bool, bool) at src/Mount.cpp:227 (discriminator 2)
  #3  0x400db372:0x3ffb21f0 in Mount::configureRAStepper(unsigned char, unsigned char, unsigned int, unsigned int) at src/Mount.cpp:269 (discriminator 2)
  #4  0x400d2012:0x3ffb2220 in setup() at src/b_setup.hpp:312 (discriminator 3)
  #5  0x400e030a:0x3ffb2290 in loopTask(void*) at .platformio/packages/framework-arduinoespressif32/cores/esp32/main.cpp:42

My guess is that with the changes made to the stepper driver things got broken.
Thanks!

Steppers Speed

changing *_STEPPER_SPEED brings no response. I find defines speed and see that they are set through microsteps... *_STEPPER_SPEED used ONLY for UART testing... Why?

Unable to compile the dec-auto-home branch (git pull date: 08-10-22)

Just a FYI, unable to compile the dec-auto-home branch (git pull date: 08-10-22).

Board: MKS_GENL_V2.1
OS: Ubuntu 22.04.1 LTS

root@odroid:/home/OAT_GitHub/dec-auto-home/OpenAstroTracker-Firmware# git branch -a | head -2
*dec-auto-home
remotes/origin/Alt-Az-local-config

root@odroid:/home/OAT_GitHub/dec-auto-home# arduino-cli compile --fqbn arduino:avr:mega ./OpenAstroTracker-Firmware
/home/OAT_GitHub/dec-auto-home/OpenAstroTracker-Firmware/src/Mount.cpp: In member function 'bool Mount::isAxisRunning(StepperAxis)':
/home/OAT_GitHub/dec-auto-home/OpenAstroTracker-Firmware/src/Mount.cpp:1665:20: error: '_stepperALT' was not declared in this scope
             return _stepperALT->isRunning();
                    ^~~~~~~~~~~
/home/OAT_GitHub/dec-auto-home/OpenAstroTracker-Firmware/src/Mount.cpp:1665:20: note: suggested alternative: '_stepperRA'
             return _stepperALT->isRunning();
                    ^~~~~~~~~~~
                    _stepperRA
/home/OAT_GitHub/dec-auto-home/OpenAstroTracker-Firmware/src/Mount.cpp:1669:20: error: '_stepperAZ' was not declared in this scope
             return _stepperAZ->isRunning();
                    ^~~~~~~~~~
/home/OAT_GitHub/dec-auto-home/OpenAstroTracker-Firmware/src/Mount.cpp:1669:20: note: suggested alternative: '_stepperRA'
             return _stepperAZ->isRunning();
                    ^~~~~~~~~~
                    _stepperRA
/home/OAT_GitHub/dec-auto-home/OpenAstroTracker-Firmware/src/Mount.cpp:1673:20: error: '_stepperFocus' was not declared in this scope
             return _stepperFocus->isRunning();
                    ^~~~~~~~~~~~~
/home/OAT_GitHub/dec-auto-home/OpenAstroTracker-Firmware/src/Mount.cpp:1673:20: note: suggested alternative: '_stepperRA'
             return _stepperFocus->isRunning();
                    ^~~~~~~~~~~~~
                    _stepperRA
/home/OAT_GitHub/dec-auto-home/OpenAstroTracker-Firmware/src/Mount.cpp: In member function 'void Mount::stopSlewing(StepperAxis)':
/home/OAT_GitHub/dec-auto-home/OpenAstroTracker-Firmware/src/Mount.cpp:2285:9: error: '_stepperAZ' was not declared in this scope
         _stepperAZ->stop();
         ^~~~~~~~~~
/home/OAT_GitHub/dec-auto-home/OpenAstroTracker-Firmware/src/Mount.cpp:2285:9: note: suggested alternative: '_stepperRA'
         _stepperAZ->stop();
         ^~~~~~~~~~
         _stepperRA
/home/OAT_GitHub/dec-auto-home/OpenAstroTracker-Firmware/src/Mount.cpp:2291:9: error: '_stepperALT' was not declared in this scope
         _stepperALT->stop();
         ^~~~~~~~~~~
/home/OAT_GitHub/dec-auto-home/OpenAstroTracker-Firmware/src/Mount.cpp:2291:9: note: suggested alternative: '_stepperRA'
         _stepperALT->stop();
         ^~~~~~~~~~~
         _stepperRA
/home/OAT_GitHub/dec-auto-home/OpenAstroTracker-Firmware/src/Mount.cpp: In member function 'long int Mount::getCurrentStepperPosition(StepperAxis)':
/home/OAT_GitHub/dec-auto-home/OpenAstroTracker-Firmware/src/Mount.cpp:2363:16: error: '_stepperALT' was not declared in this scope
         return _stepperALT->currentPosition();
                ^~~~~~~~~~~
/home/OAT_GitHub/dec-auto-home/OpenAstroTracker-Firmware/src/Mount.cpp:2363:16: note: suggested alternative: '_stepperRA'
         return _stepperALT->currentPosition();
                ^~~~~~~~~~~
                _stepperRA
/home/OAT_GitHub/dec-auto-home/OpenAstroTracker-Firmware/src/Mount.cpp:2369:16: error: '_stepperAZ' was not declared in this scope
         return _stepperAZ->currentPosition();
                ^~~~~~~~~~
/home/OAT_GitHub/dec-auto-home/OpenAstroTracker-Firmware/src/Mount.cpp:2369:16: note: suggested alternative: '_stepperRA'
         return _stepperAZ->currentPosition();
                ^~~~~~~~~~
                _stepperRA


Used library   Version Path
AccelStepper   1.61    /root/Arduino/libraries/AccelStepper
TMCStepper     0.7.3   /root/Arduino/libraries/TMCStepper
SPI            1.0     /root/.arduino15/packages/arduino/hardware/avr/1.8.5/libraries/SPI
SoftwareSerial 1.0     /root/.arduino15/packages/arduino/hardware/avr/1.8.5/libraries/SoftwareSerial
LiquidCrystal  1.0.7   /root/Arduino/libraries/LiquidCrystal
EEPROM         2.0     /root/.arduino15/packages/arduino/hardware/avr/1.8.5/libraries/EEPROM

Used platform Version Path
arduino:avr   1.8.5   /root/.arduino15/packages/arduino/hardware/avr/1.8.5

Error during build: exit status 1

Nema17, Generic driver, Not tracking

New build. Running Mega2560, LCD+kaypad. Nema17 w/ A4988 drivers on RA and DEC. Running 1.8.53. Updated to 1.8.64.

Prior to update, RA tracked no problem. After update, will not track. Can skew RA and DEC no issues. Just does not track. Track stepper counter increases.

Incorrect DEC slew calculations

Repost here from Discord.

Steps to reproduce (not 100% guaranteed):

  • (maybe?) DEC inverted in config
  • start at home position in southern hemisphere
  • slew north to 0 DEC (or higher?)
  • slew anywhere in RA

What happens:
State before second slew: Tracking,--T---,0,28278,1470,154009,+000000,
OATControl sends :XGC12.000*0.000# and receives 17267|-28278
DEC crashes into RA ring (also occurs over ASCOM)

What should happen:
DEC should not move at all, -28278 should be positive.

I haven't dug into the code enough to understand stepper directions, how coordinates are encoded and so on. I ended up rewiring to avoid DEC invert, and the problem did not occur (limited testing). Will update when I have more time.

Improved Tx-Only UART Test

Rather than changing SpreadCycle/StealthChop to create an audible noise, the GCONF.shaft UART registry can be used to toggle the motor direction.

A simple menu item can trigger a forward/backward motion routine that controls the step direction via UART.

That way you can visually test the UART Tx channel without needing to re-upload the firmware.

Inverted sync in DEC

Sync getting inverted in dec, SOUTHERN HEMISPHERE
Latest dev firmware.
To replicate:

  • Southern hemisphere
  • Do a platesolve & sync
  • resulting sync will end up with an inverted dec value. (eg, I platesolve at southern celestial pole and resulting sync will point me at polaris)

Feature Request - Hall Sensor Homing Error depending on direction.

IM not sure what this translates into error looking at the sky, but linearly on the OAT, my sensors seems to have some hysteresis depending on the direction being homed.
If I home in one direction, and then home in the opposite direction, my home positioning will be different by about a 1/8 - 1/4 inch.

Im wondering if its possible to do a double home....find sensor and move past, then move back the other way and move past, and fine the middle of the two directions.

I believe currently it just find the start, looks for the end, and then moved to the middle of that. Problem is, that position changes depending on what direction you begin the homing sequence.
Perhaps its the extremely cheap hall sensors I have.

Maybe it can find the sensor, and then register the position when it passes it, and then go back the other way and register the position where it passes in the other direction.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.