Skip to content

[FEATURE] Burnwire Manager #249

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
3 tasks
Mikefly123 opened this issue May 14, 2025 · 1 comment
Open
3 tasks

[FEATURE] Burnwire Manager #249

Mikefly123 opened this issue May 14, 2025 · 1 comment
Labels
enhancement New feature or request

Comments

@Mikefly123
Copy link
Member

Mikefly123 commented May 14, 2025

Story

  • As a mission operator
  • I want to have a way of firing the burn wire
  • So that we can safely and reliably deploy the satellite's antennas.

Acceptance Criteria

  • Accepts a set of initialized pins that enable and disable the burn wire
  • Implements a burn function that activates the burn wire for a set amount of time
  • Implements a smart_burn function that uses the VLX6180 on the antenna board for closed loop control

Technical Details

This will be a tape out of the initial reimplementation of the burn wire functionalities for the pysquared V2.0.0 release. The burn wire circuit is very simple, as seen in the following schematic (from V5b Flight Controller Board) it is a pair of load switches that are cascaded together in series.

Image

In the future we will ideally make a follow up to this that adds multiple retries and some kind of lockout functionality in case of erroneous behavior.

@Mikefly123 Mikefly123 added the enhancement New feature or request label May 14, 2025
@Mikefly123
Copy link
Member Author

Started working on this on the new burnwire-manager branch! Initial takeout is almost done.

I think I will actually take the last criteria for the smart_burn function here and split it off into its own thing. Pasting my placeholder for it here in case I want it later:

    def smart_burn(self, max_retries: int = 3, timeout_duration: float = 5.0):
        """Fires the burnwire and uses a deployment sensor

        :param int max_retries: The maximum number of times the burnwire is allowed to retry before exitng.
        :param float timeout_duration: The max time to keep the burnwire on for if the deployment sensor doesn't detect deployment.

        :return: A Boolean indicating whether the burn occured sucessfully
        :rtype: bool

        :raises Exception: If there is an error toggling the burnwire pins.
        """

        self._log.debug(
            "smart_burn() has not been implemented yet. Use burn() for now..."
        )
        raise NotImplementedError

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant