Our project focused on creating an intelligent lighting control system. Users can access this system remotely by smartphone and arbitrarily control the lighting. The system also has a web-server that’s responsible for analyzing the lighting data and detecting errors. The room’s sensors and LEDs are connected to an arduino machine which can control the LEDs and read the values measured from the sensors. My job in this project was to write multiple state-of-the-art control systems for this arduino machine.
Since the system has multiple sensors and actuators, I first had to do a separation. I have measured the connection between the individual sensors and actuators and found that all of them was linear: Only their slope and x-intersection differed. Using the slope, I could introduce new variables such that each sensor was dependent on one variable only.
My task then was to create control systems for these new variables, which is somewhat easier since I only had to take one variable and sensor into account at a time.
I’ve attempted to create three different controllers: The first one was a simpler PI controller. This could reach the desired reference signal quickly but had very few parameters, so it was not always possible to reach the desired behavior.
The second controller worked slower but had a lot more parameters to be set, which gave me a more fine-grained control over the magnitude and speed of the changes in the room. Unfortunately, this meant that the controller needed more time to reach the reference signal, but this system is still adequate if the changes do not happen too fast.
The third controller was a predictive controller. This one allowed the most customization over the system’s behavior. With the correct parameters, I could make the system quickly reach the reference signal, but I could also make it avoid sudden changes in the lighting.