Releases: nexdome/Firmware
4.0.1 Bugfix release
Fixes #38 - Manual rotator button not working
This would effectively disable the manual rotation switch after 10 minutes of no activity on the serial port. This was an unexpected side-effect of the "holding torque" feature.
4.0.0
Breaking Change
This release is a breaking change for two reasons.
- The memory layout of settings has changed, so on upgrading all settings will revert to factory defaults.
- Some response and notification messages have changed slightly to give more consistent formatting and fix issues.
Developers who access the firmware directly will need to review the Firmware Protocol document.
New Features
Auto-Close on Low Battery
This version adds the ability to auto-close the shutter on detection of low battery volts.
- The feature is disabled by default and is enabled by configuring a nonzero voltage threshold.
- Low battery threshold is expressed in raw ADUs, or Analog-to-Digital Units, minimum 0, maximum 1024.
- Threshold is written using
@BWR,adu
. Writing 0 disables auto-close. - Low battery threshold is read using
@BRR
, result is in ADUs. - The ADC is referenced to 15 Volts so the ADU value is on a linear scale from 0V to 15V.
- A fully charged SLA battery at 13.2V should return a reading of approximately 890 ADU, but this will vary significantly from battery to battery and installation to installation because of inherent variability of electronic components.
- Battery voltage readings are smoothed using a moving average to avoid sudden changes when there is sudden high current demand.
- The firmware periodically emits
:Volts#
while the battery voltage is below the configured threshold. Absence of notifications for 1 minute may be taken as a return to nominal working voltage. - Firmware periodically emits
:BVnnnnn
voltage message as before.
Other Changes and Issues Addressed
- Improved and simplified command and response processing, which should improve the stability of the firmware.
- Fixed a unreported bug leading to "never ending slews" and slews to incorrect positions that was due to the received step position parameter being parsed incorrectly.
This bug appears to have crept in to a previous beta and does not affect released versions. - Fixed issue #35 Rotator loses pointing accuracy over time by maintain holding torque in the rotator motor after the end of each slew. Holding torque is released after 10 minutes of serial port inactivity.
- Fixed issue #34 by setting a more sensible dead-zone default of ~0.5°.
Release 3.3.0 fixes to serial comms and reliability improvements
(ASCOM issue 19) This release adds a workaround for an issue with the Arduino Leonardo serial comms. When the communications channel was disconnected from the PC end, the Arduino should no longer add output to the serial stream write buffer, but it was. This was resulting in multi-second delays every Arduino main loop and that was causing the XBee comms stack to reset, resulting in a lost connection to the shutter. This has been fixed by making a wrapper class for _Serial, which checks whether there is space in the write buffer before allowing output to be written. This ensures that all serial output never blocks (if there is no enough space, it is assumed that the connection is closed and the output is simply discarded).
#22 We have also fixed an issue with the shutter open and close sensors which didn't work properly if they were triggered multiple times. On the test bench, we only ever get one activation of the sensor when the shutter opens or closes so the code was written to expect that behavior. Several users reported problems and we deduced that the sensor was actually activating multiple times. We addressed this by latching the sensor value in code so that we only detect the first activation.
Firmware v3.2.0 high precision slewing
This firmware release adds a new High Precision Slewing feature and improves the operation of the shutter close limit sensor under adverse conditions.
High Precision Slewing
- adds a new command
@GSR,nnnnn
"Goto step-position" that allows positioning of the rotator with a resolution of a single motor step, or about 0.006 degrees. - Note that this level of precision is far higher than can actually be achieved in practice because of backlash and other mechanical considerations.
- Drivers and applications can use this new command to implement more accurate positioning, which is especially useful for users with large telescopes (C14) that need extremely accurate scope/dome synchronization.
- The Dead Zone is still in effect for high precision slewing. The default value for dead-zone has been reduced from 300 steps to 100 steps (about 1/6th degree). To get the new dead-zone value you will either have to reset to factory defaults, or manually reduce the dead zone to a smaller value using the
@DWR
command. Be conservative when reducing the dead-zone and only reduce it as much as absolutely necessary. Setting the dead-zone too low may result in "hunting" or other adverse effects. - Drivers and application plugins must compute the target step position using the formula:
position
=circumference
/ 360.0 *azimuth
- The value for
circumference
is obtained using the@RRR
command and it is suggested that this be done once at the start of a session immediately after connecting. - Pull request #21 closes #20
Shutter Close Limit Idempotency
Per issue #22 it was found that under some (not very well understood) circumstances the close limit sensor can be re-triggered multiple times as the shutter approaches the magnet. Most installations don't exhibit this problem and the root cause, probably mechanical, could not be fully determined. However the firmware reacted badly to this situation and clearly needed to be improved.
The close limit sensor should be idempotent, that is, triggering it multiple times should produce the same result as triggering it once. The firmware has been updated to ensure that the close limit sensor is idempotent. The onMotorStopped()
event re-arms the close limit sensor and allows it to be triggered again. The effect is that the close limit sensor can now only be triggered once while the motor is running, which gives the desired result. Closes #22
Firmware v3.1.0 bugfix and stability improvements
The following fixes and improvements are included:
- Issue #1 Works with XBee series 3 as well as XBee Series 1 devices
- Issue #10 Improve firmware settings integrity check
- Issue #8 AtHome flag may be false when FindHome completes
- Issue #11 Improve homing algorithm
- Issue #13 Shutter commands sometimes not acknowledged - closed a race condition
- Improvements to XBee comms state machine to address a possible memory leak and to improve Rotator/Shutter sync time slightly.
To install this firmware, download the attached *.hex
files and drop them into C:\NexDome-Firmware
. You can then use the firmware updater built into the ASCOM driver (or a 3rd party uploader utility such as XLoader or avrdude) to flash the firmware. For guidance on updating the firmware, please see the FAQ on Updating the Firmware.
This firmware will erase persistent settings from previous versions because the storage format has changed and old settings will be considered invalid. The effect is that the firmware will essentially be reset to factory defaults.
This firmware release has no breaking changes and should work with existing drivers and plugins.
Beta test release 3.1.0-Beta.6 not for general issue
This release is intended for firmware beta testers and developers. End users should NOT install this firmware.
The following fixes and improvements are included:
- Issue #1 Works with XBee series 3 as well as XBee Series 1 devices
- Issue #10 Improve firmware settings integrity check
- Issue #8 AtHome flag may be false when FindHome completes
- Issue #11 Improve homing algorithm
- Issue #13 Shutter commands sometimes not acknowledged - closed a race condition
- Improvements to XBee comms state machine to address a possible memory leak and to improve Rotator/Shutter sync time slightly.
To install this firmware, download the attached zip file and extract the two hex files. Drop them into c:\NexDome-Firmware. You can then use the firmware updater in the ASCOM driver (or a 3rd party uploader utility such as XLoader or avrdude) to flash the firmware.
This firmware will erase persistent settings from previous versions because the storage format has changed and old settings will be considered invalid. The effect is that the firmware will essentially be reset to factory defaults.