Skip to content

Releases: photonfirmware/photon

v1.0.4rc1

09 May 16:37
Compare
Choose a tag to compare
v1.0.4rc1 Pre-release
Pre-release

Fixes bug with encoder count updating incorrectly at tick count reset introduced with flash size optimization

v1.0.4rc0

07 May 20:02
Compare
Choose a tag to compare
v1.0.4rc0 Pre-release
Pre-release

EPT test fix, better thick tape handling on second attempt, smaller flash size

v1.0.3 - Precision and Accuracy Improvements

06 Mar 22:37
Compare
Choose a tag to compare

Summary

v1.0.3 greatly improves both accuracy and precision of tape positioning. Accuracy improvements mean users will very rarely need to reset the feeder's pick position. Precision improvements mean the variation of the part's final position is much smaller than previous versions, especially in situations of varying tape friction.

This release also includes a handful of UX improvements, including different light colors indicating if you're switching to Drive or Peel mode, and button presses resulting in 2mm movements instead of 4mm movements.

Details

The largest bug fixed in this release relates to precision in conditions of varying friction. Users reported that the feeder would move the tape to a slightly offset position if the tape encountered friction in its exit path. Investigation revealed that after reaching the final position and actively braking the motor with the motor driver, in situations of low friction the motor would still coast a number of ticks past the final position. This happened consistently in approximately the same amount, so the pick position was mostly stable. However, when friction was introduced, the motor would coast significantly less, resulting in a different final position.

This bug was fixed using a combination of a few methods:

  • The control method of the drive motor was changed. The DRV8837 motor driver uses a PWM control interface. The previous method of controlling the motor at a certain power level was PWM alternating between driving and coasting. This release switches to alternating between driving and braking. This means Photon is more controlled with its movement, and there is less chance to build momentum that could carry the tape beyond the final tick.
  • Photon gradually approaches the tape's final position, just above the friction threshold. This is accomplished by giving Photon an understanding of speed and stalls. When approaching the final goal encoder tick, Photon now starts driving at a very low power, and checks for a stall. If a stall is present, the drive power is slightly increased, and a stall is checked for again. This continues until there is no stall, at which point Photon continues to drive at that power until reaching the final position, and brakes. This means that the tape is driven with just enough power to overcome the static friction of the system, so as soon as braking begins, the motor and tape stop on a dime. This approach is also beneficial in that it works the same for thick and thin tapes alike.

The second main bug fixed in this release has to do with accuracy. Users reported that over a large number of feeds, the tape would drift and they'd have to reset their pick position. Investigation revealed that there was a gradual change in final position over many feeds.

This bug was fixed by adjusting the TICKS_PER_TENTH_MM variable in firmware. This number should be deterministic given that it is calculated based on the tick count per encoder revolution, gearbox gear ratio, and wheel diameter. We investigated each aspect of the encoder tick to mm movement pipeline. Oscilloscope measurement of the encoder ticks are accurately represented in firmware, and the wheel diameter and teeth per revolution is simple and correct. We've identified the error to be present in the gearbox. Although the N20 gearboxes that are marketed and documented as having a 1:1030 gear ratio, they in fact are closer to 1:1030.67. This small inaccuracy in their documentation resulted in a slight drift in final position over time. We are in the middle of a more thorough investigation of the gearing in the motor by disassembling the gearbox, counting the teeth, and calculating the gearing manually.

Finally, a couple new UX improvements were added. The indicator light will turn gold when switching to Peel mode, and will turn blue when switching to Drive mode as opposed to always being blue. This helps determine what mode you're switching into instead of having to guess. Also, tapping the buttons now only moves the tape in 2mm increments as opposed to 4mm increments, allowing for finer control of tape positioning, especially when considering parts that are loaded at a 2mm pitch. Lastly, there's now a method of determining the version of Photon flashed onto a feeder using some colored flashes and a lookup table.

v1.0.3rc4

06 Mar 19:36
Compare
Choose a tag to compare
v1.0.3rc4 Pre-release
Pre-release

just checking how a second rc works

v1.0.3rc3

06 Mar 19:31
Compare
Choose a tag to compare
v1.0.3rc3 Pre-release
Pre-release

adds longer timeout, firmware id based on led blinks

v1.0.2 - Improves Encoder Tick Management

13 Nov 16:21
Compare
Choose a tag to compare

Summary

v1.0.2 fixes a bug with managing the encoder tick count when resetting the value to prevent an integer overflow. Users that noticed they had to reset their pick position after many feeds should find an improvement with this release.

Details

Photon we tracks the number of mm moved as ground truth, because that's the metric we ultimately care about. We keep track of where we are with an absolute value of mm moved from feeder boot. If we just count up forever, we'll eventually have an integer overflow, so Photon keeps an eye on the running tick count, and if it's ever an integer, we reset the ticks and mm traveled back to zero to keep our current distance counter low.

The way the feeder knows it's in position is if the current tick is within some threshold of the desired tick. However, when we reset the tick and mm count when our tick count is an integer, a negative tick count will accrue if the tape is at an allowable position based on the threshold, but not the exact goal tick.

This release fixes this bug by 1) reducing the threshold to 0, so the drive motor only stops (and brakes) when we reach the exact goal tick, and 2) if we happen to not be at the exact goal tick when we reset the tick count, we take that difference into account when resetting. This required updating PhotonFeeder::resetEncoderPosition to accept a value to reset to, as opposed to always resetting to zero.

v1.0.1 - Timing Improvements, Drive Control Improvements

19 Apr 15:27
Compare
Choose a tag to compare

This release greatly improves communication speed on the RS-485 bus thanks to integrating v0.0.7 of the RS-485 library. It also includes tuned drive controls for tape movement, including:

  • Incorporates "ease-in" tape movement that prevents sudden jerky movement that can cause parts in plastic tape to jump out.
  • Tuned for small feed distances, tested as small as 1mm movement increments
  • Large feed distance methodology has changed, moving in 4mm increments to keep film and tape in sync instead of trying to feed in one movement

v1.0.0 - First Official Release

31 Mar 13:40
93292a8
Compare
Choose a tag to compare

Summary

After a few rounds of revisions and thorough beta testing, we're proud to have a v1 release of Photon!

A tremendous thanks to @theacodes and @daveismith for their advice and contributions to the formation of this firmware. And of course, @Jnesselr for creating the Photon Protocol and serious rearchitecting the firmware itself, along with many late nights testing new builds and debugging code together.

This release has support for only one feeder at the moment (the LumenPnP feeders from Opulo) but could easily be adapted to support other hardware. This release also fully implements v1 of the Photon Protocol.

Attached to this release is a binary for v1.0.0+ LumenPnP Feeders that can be flashed according to the docs page.