Giter VIP home page Giter VIP logo

teenastro's Introduction

TeenAstro an easy to use telescope controller

I was a user of the FS2 And I would like to have a FS3! All Equatorial and Alt-AZ mount types are supported: German Equatorial, Fork (and variations)

Join our user group: https://groups.io/g/TeenAstro/wiki/home

teenastro's People

Contributors

charleslemaire0 avatar dssgabriel avatar fdesvallees avatar hjd1964 avatar hjgoldan avatar lordzurp avatar masterpic 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

teenastro's Issues

alignment - error report bug?

Hi Charles,

I was able to test new alignment and I'm not sure it works as expected.
I tested it by PC alignment (#:AA and 2 sync commands by plate solving) and I got 0 as alignment error value by SHC. The alignment icon was properly shown by SHC display after the 2nd sync.
Maybe just alignment error computation is wrong.

CS
Armando

TeenAstroUploader - Space in folder name

I found a little bug in the TeenAstroUploader (V1.1.2)
When I start the firmware upload to the mainunit, the programm can't find the "Teensy Loader".
It's caused by a space in the folder name. I attached a screenshot from a video capture. There you can see the, that the path is cropped after the space.
Greets, Sebastian
FehlerTeenAstroUploader

Catalog problem

I noticed that Stars and Messier objects with negative Declinations (all?) have incorrect Declinations! Probably the Herschel catalog is that way too, I didn't sample it.

Let me know if you will tackle fixing this, if not I'll do it but I'll take me longer probably as I assume you have a ready to go method of creating the C data arrays.

problème compilation SHC

log VScode

C:\Users\lordz\GitHub\TeenAstro\libraries\TeenAstroLX200io\src\TeenAstroLX200io.cpp: In function 'LX200RETURN SyncGotoLX200(NAV, uint8_t&, uint8_t&, uint8_t&, bool&, uint16_t&, uint8_t&, uint8_t&)':
C:\Users\lordz\GitHub\TeenAstro\libraries\TeenAstroLX200io\src\TeenAstroLX200io.cpp:732:1: error: control reaches end of non-void function [-Werror=return-type]
  732 | }
      | ^
C:\Users\lordz\GitHub\TeenAstro\libraries\TeenAstroLX200io\src\TeenAstroLX200io.cpp: In function 'LX200RETURN SyncGotoUserLX200(NAV)':
C:\Users\lordz\GitHub\TeenAstro\libraries\TeenAstroLX200io\src\TeenAstroLX200io.cpp:757:1: error: control reaches end of non-void function [-Werror=return-type]
  757 | }
      | ^
C:\Users\lordz\GitHub\TeenAstro\libraries\TeenAstroLX200io\src\TeenAstroLX200io.cpp: In function 'LX200RETURN SyncGotoLX200AltAz(NAV, uint16_t&, uint8_t&, uint8_t&, bool&, uint16_t&, uint8_t&, uint8_t&)':
C:\Users\lordz\GitHub\TeenAstro\libraries\TeenAstroLX200io\src\TeenAstroLX200io.cpp:789:1: error: control reaches end of non-void function [-Werror=return-type]
  789 | }
      | ^
cc1plus.exe: some warnings being treated as errors
*** [pio\FRENCH\lib9b3\TeenAstroLX200io\TeenAstroLX200io.cpp.o] Error 1

Southern hemisphere bug - EQ Fork mount

When performing this test from Home:
goto South, goto East
The mount goes into horizon error and stops with an altitude of below 10 degrees.

eq_fork_south

position of mount when it stops

Screenshot 2022-06-26 at 19 00 12

Graph recording the axis positions, azimuth and altitude

TMC5160 tuning

Hi Charles,
I'm not sure about the value 64 used to switch from Stealth2 mode to SpreadCycle one

m_tmc5160->TPWMTHRS(64);

Let's assume 300 worm teeth and 4:1 reduction ratio.

  16MHz?
  t_clk=1/16e6 s

  // 24h - 3600s/h - 300 teeth - 4:1 red. ratio - 200 motor steps/rotation - 256 usteps
  1X (sid. speed) <-> ustep_period = 24*3600/300/4/200/256 = 0.001406 s
  t_step = 0.001406 s / t_clck = 22500 (= f_clk/f_usteps) @1X

  TPWMTHRS = 64 -> switch from Stealth2 to SpreadCycle @ 22500/64 X = 351.563X
  351.563X <-> 281RPM (1X <-> 0.8RPM)
  
  According to documentation possible jerk issues occur typically over 30 RPM (jerk is commonly neglected at 10-20-30RPM).

So let's assume to have jerk at 60X (48RPM) - TPWMTHRS = 64*351.563/60 = 375
I'd set
m_tmc5160->TPWMTHRS(375);

More generally I see the need for taking into account the overall reduction ratio to properly set TPWMTHRS.
So if you agree with me I would add a TMC5160 definition in TeenAstroCustomizations to allow TMC5160 tuning when desired.

No TeenAstro responses by Wifi some hours later

Hi,

I'm having systematically no responses by Wifi some hours after connection has been established.
If I try to reconnect by ASCOM I get no response or a brief connection after which the issue occurs again.
If I reboot the WiFi module by SHC then connection can be established again.

Adding
WiFi.setSleepMode(WiFiSleepType::WIFI_NONE_SLEEP);
didn't help.

I'm using TeenAstro as a client connected to a router. The issue occurs on several routers. I'm tempted to think that as soon as a disconnection occurs it automatically reconnects but "not properly". In this case maybe an ESP reset could solve the issue.

Meridian limit not working

Still does not work in version 1.2 (to reproduce: set both meridian limits to zero, point to az=179 degrees, switch-on tracking. Mount should stop at 180, but keeps tracking)

Possible bug?

Hi,

I'm not sure I properly understood the code related to meridian limit check for German equatorial mounts.

if (!checkMeridian(axis1, axis2, CHECKMODE_TRACKING))
    {
      if ((staA1.dir && currentSide == PIER_WEST) || (!staA2.dir && currentSide == PIER_EAST))
      {
        lastError = ERRT_MERIDIAN;
        if (movingTo)
        {
          abortSlew = true;
        }
        if (currentSide >= PIER_WEST && !forceTracking)
          sideralTracking = false;
        return;
      }
      else if (lastError == ERRT_MERIDIAN)
      {
        lastError = ERRT_NONE;
      }
    }
    else if (lastError == ERRT_MERIDIAN)
    {
      lastError = ERRT_NONE;
    }

Is (!staA2.dir && currentSide == PIER_EAST)) value check meant to exclude slewing to S (while the scope is on the wrong side)?
If the aim is to stop tracking for Southern Emisphere observers I think the code should be

if ((staA1.dir && currentSide == PIER_WEST) || (!staA1.dir && currentSide == PIER_EAST))

[FR] GPS resolution improvement

Hi,
I gave a look at source code and I found that the SHC makes use of LX200 protocol to set latitude and longitude.
Anyway GPS values are double and it could be possible to tweak the command to keep a better resolution. Also the display could show the ss field.
What about improving GPS management?

Thanks!
Armando Beneduce

Severe axis1 limits issues

What are the right axis1 limits values? I'm on an equatorial mount..

By SHC axis1 min can't be less than -180deg. Lower values are rejected also by web server.
By SHC axis1 max can't be greater than 180deg. Greater values are rejected also by web server.

The controller currently is not usable. What's the latest working release?
I'm assuming your last indications related to right axis1 limits values (-270deg, 90deg) are still valid...

Alignment no more working

I just tested current release 1.4 branch on the field on my equatorial mount and I found that PC alignment doesn't work anymore.
As soon as I activate PC alignment, just one sync (by PC) makes the SHC showing the alignment icon and the coordinates are wrong.
The same issue occurs also when trying to align by SHC. As soon as the first alignment sync occurs (after the the first star has been manually centred by SHC) coordinates are wrong and alignment fails.

motor gear ratio

dans le SHC, le ratio moteur est affiché avec une division par 100, et réécrit avec x100

LX200RETURN readTotGearLX200(const uint8_t& axis, float& totGear)
{
  char out[LX200sbuff];
  LX200RETURN ok = axis == 1 ? GetLX200(":GXMGR#", out, sizeof(out)) : GetLX200(":GXMGD#", out, sizeof(out));
  if (ok == LX200_VALUEGET)
  {
    totGear = 0.01 * (float)strtol(&out[0], NULL, 10);
  }
  return ok;
}
LX200RETURN writeTotGearLX200(const uint8_t& axis, const float& totGear)
{
  char cmd[LX200sbuff];
  sprintf(cmd, ":SXMGX,%u#", (unsigned long)(totGear * 100));
  cmd[5] = axis == 1 ? 'R' : 'D';
  return SetLX200(cmd);
}

pour que ça soit affiché correctement, il faut modifier ça

bool SmartHandController::menuSetTotGear(const uint8_t &axis)
{
  float totGear;
  if (!DisplayMessageLX200(readTotGearLX200(axis, totGear)))
    return false;
  char text[20];
  sprintf(text, T_GEAR " M%u", axis);
  if (display->UserInterfaceInputValueFloat(&buttonPad, text, T_RATIO, &totGear, 1, 60000, 5, 2, ""))
  {
    return DisplayMessageLX200(writeTotGearLX200(axis, totGear), false);
  }
  return true;
}

mais dans le main, c'est géré bizarrement

      // :SXMGn,VVVV# Set Gear
      int i;
      bool ok = false;
      if ((command[4] == 'D' || command[4] == 'R')
        && strlen(&command[6]) > 1 && strlen(&command[6]) < 11
        && atoi2(&command[6], &i))
      {
        if (command[4] == 'D')
        {
          if (!motorA2.isGearFix)
          {
            double fact = (double)i / motorA2.gear;
            cli();
            staA2.pos = fact * staA2.pos;
            sei();
            StopAxis2();
            motorA2.gear = (unsigned int)i;
            XEEPROM.writeInt(getMountAddress(EE_motorA2gear), i);
            ok = true;
          }
        }

"i" n'est pas défini, et on divise le ratio par i ??

et ensuite, c'est utilisé tel quel dans mainunit.ino

void updateRatios(bool deleteAlignment, bool deleteHP)
{
  cli();
  geoA1.setstepsPerRot((long)motorA1.gear * motorA1.stepRot * (int)pow(2, motorA1.micro));
  geoA2.setstepsPerRot((long)motorA2.gear * motorA2.stepRot * (int)pow(2, motorA2.micro));

il faudrait retrouver le rapport de 100

lors de mes tests, le ratio utilisé pour bouger les axes est bien à x1
si je mets "16" depuis la telco, ça prend en compte 1600 et tourne 100x trop vite

si je divise par 100 dans UPDATE_RATIOS ça retrouve un fonctionnement normal

void updateRatios(bool deleteAlignment, bool deleteHP)
{
  cli();
  geoA1.setstepsPerRot((long)motorA1.gear / 100 * motorA1.stepRot * (int)pow(2, motorA1.micro));
  geoA2.setstepsPerRot((long)motorA2.gear /100 * motorA2.stepRot * (int)pow(2, motorA2.micro));

delay required for GPS initialization

Hi,

a delay seems to be required for GPS initialization.
I need to figure out how to keep my old fork while trying to properly make new pull requests: I see some features have been discarded.
In the meantime this is the small GPS patch:

diff --git a/TeenAstroMainUnit/TeenAstroMainUnit.ino b/TeenAstroMainUnit/TeenAstroMainUnit.ino
index 0c72bda..18e024a 100644
--- a/TeenAstroMainUnit/TeenAstroMainUnit.ino
+++ b/TeenAstroMainUnit/TeenAstroMainUnit.ino
@@ -147,6 +147,7 @@ void setup()
 #if VERSION != 220
   GNSS_Serial.begin(9600);
 #endif
+  delay(1000);
   hasGNSS = GNSS_Serial.available() > 0;
 
   //Focuser connection

Firmware 1.4.10 issue

Please check the effective motor speed. With the new update they move a 1/100 or less than the normal.
During goto you could hear the sound of the motors but barely see the movement.
I tested two different teenastro on two different mount and i uploaded data with two different .tac files.
I tried another spare teenastro with 1.2.x on the same mount and worked, also reinstalling a 1.3.x firmware where it was 1.4.10 worked well.

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.