Following the Phyllo demonstration video we recently shot, Xavier and I started thinking about the impact of the flash frequency on the Phyllo effects. The first step being to list the effects we want.
There is a variety of effects that depend on the flash frequency; they all boil down to what we’ll call the “apparent rotation speed” of the Phyllo. Here’s a well-rounded selection of effects to give you a better idea of this:
Vertical aging / de-aging
We could define this kind of effect as having an “apparent speed of zero”: the petals only age or de-age along a top-down line, but don’t move left or right spinwise.… Read more
Recently I printed a new support for the petal PCB:
I made it thicker than before, which will allow the PCBs to be more pressed in the structure, and thus easier to attach.
Although it is thicker, it is actually lighter than the previous one (which is good so that we don’t put too much strain on the motor), because this time I made it less dense, except for the part around the inserts which need to be very dense. I used the same technique for this than here
Now that the speed control finally works, we promptly decided to test it out with a actual Phyllo.
Here’s a video of a Phyllo spinning at 11.45 RPS and then 18.54 RPS filmed with a 30 FPS phone camera.
In order to shorten the exposition time to reduce motion blur, the Phyllo needs to be as illuminated as possible. Since today was not sunny (just another day in Saclay…), we borrowed a spotlight from the design studio next door.
We really like the transition effects when changing speeds, so we’ll try to incorporate them in our panel of animations 🙂
As explained in the last article on PID control, the aim of the PID regulator is to compute a correction according to the error (the difference between the target speed and the actual speed), its integral and derivative, and 3 chosen coefficients : KP (for proportional correction), KD (for derivative correction) and KI (for integral correction). This week, Xavier and I made some corrections on the software (presented in this article) and choose the coefficients.
This coefficient was the easiest to choose by following the steps indicated in this article.
We took the smallest KP for which the system oscillates (called critical KP) and multiplied it by ⅔.… Read more
Since our previous post last Thursday, Sibille and I have kept working on speed control. It has taken us much longer than we originally thought, but we’re happy with the result. Now that we have a working product, we’ll go back over what all went into making it work:
As mentioned previously we use a Proportional, Integral, Derivative (PID) control scheme to regulate the throttle command given to our ESC so that the motor speed matches the desired speed.
This past few days, Xavier and I worked on the PID for motor speed control. We haven’t quite finished debugging our code, but here is an update of what we are working on.
A few words about PID controller
Our PID (Proportional, Integral, Derivative) controller is a control loop algorithm using the speed feedback from the optical sensor or the hall sensor to control the motor speed.
The code continuously calculates the error, i.e. the difference between the target speed (the speed at which we want the motor to turn) and the measured speed, its integral, and its derivative. It applies a correction to the command send by the ESC to the motor.… Read more
You might remember we talked about a quite unfortunate software limitation in this article, which was preventing me from printing a phyllo sculpture with both a hollow thin shell and filled petals at the bottom.
Well, it turns out it is possible to do this using another software for another printer which also has the benefit of being free and open source: Cura
We first didn’t use Cura because it was meant for the Ultimaker 2 printer, which seemed to give less detailed results when printing phyllo sculptures. However, it turned out to be not that bad and had some advantages over the Zortrax printer on some points.… Read more
These past few days we’ve worked (among other things) on improving our workflow to write clean code and have a clean git repository.
It all started when Alexis was horrified by seeing my code indented by tabs, and other monstrosities. Following Alexis advice, we decided to start using an automatic code formatting tool, and we also figured it would be nice to write down some norms for our general coding / commenting style.
We settled on clang-format for the code formatting tool, as it seems to be the standard. We tried using the LLVM default style, and were quite annoyed at first at some of the formatting.… Read more
Last week Sibille and I moved our bare-metal code for the processor-PCB (which so far was directly inserted in RAM by the GDB debugger) into the Flash memory proper, and wrote code that will execute from Flash to copy everything in RAM and continue execution from there.
However, we soon noticed a strange bug: the GDB debugger now ignored every breakpoint we tried to set in RAM (breakpoints to parts of the code executed in Flash before the copy to RAM still worked fine). After a lengthy debug session, Alexis determine that it‘s a bug from the GDB debugger and not from our code.… Read more
Yesterday evening, the whole groupe work together to test the power transmission through the ball bearings. Those tests are significant to determine if we need to add a 5V-regulator on the main board, and which regulator we choose for the bottom PCB to account for the tension drop.