Timo Denk's Blog

Denk Development Turns Four

· Timo Denk

The date of this blog post’s publication coincides with Denk Development’s fourth birthday (or rather founding day). Back in early 2016 I started to receive requests from people on the internet, who had seen my YouTube videos in which I tinker with electronics. Quite a few were asking for support with their own projects specifically people who were skilled in electronics, but less so in programming. Out of the need to be able to legally file invoices, I founded Denk Development on June 1, 2016, about a month before graduating from high-school.

Now – four years and more than fifty invoices later – Denk Development is still alive and I continue to run it as a secondary employment. Over the course of the company’s existence, I had the pleasure to work with many amazing clients on interesting and intriguing projects. In this post I share my top five favorite projects (with the permission of the respective clients) in chronological order. The source code is also available for some.

Laser Show System Monitor

2016 // customer LaserShowDesign // microcontroller which reads the status of high-voltage system for special effects, and shows it on a display // source code

Laser Show Design (short: LSD) is not the project title, but the client’s name! Lucien Tunger from LSD creates special effects like lightnings or strong lasers with high voltages and large hardware.

A wire of this thickness is nothing unusual in LSD’s lab.

Operating such hardware during a light show requires constant monitoring of temperatures, voltages, and currents. Denk Development was given the task to develop data visualization which would constantly read sensor data and monitor the status of the system. The implementation made use of two Teensy 3.2 microcontrollers, one for reading sensors and one for showing the data on a display. The second Teensy additionally logged the data onto an SD card with timestamps from a real-time clock module.

This project was among the first Denk Development projects. Challenging aspects were the communication between the two Teensy microcontrollers, reading data from a heterogeneous set of sensors, and displaying the information on a screen without ugly refresh artifacts.

The display shows the status of the system, on the photo with mock data.
The laser show system “Raiden I”, which uses the monitoring system, here installed in a testing environment. It now has its place in the Nikola Tesla Museum in Belgrade, Serbia.

Notching Machine

2017 // customer Hombach Forsttechnik // software for a configurable microcontroller which controls a notching machine

This project made it onto the list because it is one of those which sounded so simple, but ended up being so much more difficult, so here is the simple description: Move a motor slowly forward, in order to cut a notch out of a metal piece (from here on referred to as work piece). Make both speed and forward motion distance controllable through a small display and some buttons. First, here is a video showing how the end product operates in production:

A motor constantly moves a sharp metal piece (let’s call it the tool) up and down while the microcontroller controls the lateral motion.

So what is happening here? There are two motors involved one is constantly moving the tool up and down (top-left corner of the GIF), while the other one controls its lateral movement (towards the bottom-right of the GIF). The latter is the one that is being regulated by the microcontroller. It has to move very slowly, to gradually notch metal out of the piece of work. If it moves too quickly too far, the tool will ram into the work piece and will probably break something. The additional difficulty is introduced by the fact that there is unnecessary wear on the tool, which happens when it makes contact with the workpiece as it returns to the original position in the upward motion. One only wants it to scrub off a layer of metal while moving downwards. While moving upwards, the lateral control motor therefore has to move the tool back. Nevertheless, it still has to know its position with 100% accuracy – not an easy task with a stepper motor that is connected through a belt with some non-negligible clearance. The solution ended up being to move the motor backwards more than necessary just to move it forwards by a little bit directly after.

The plot shows the lateral position of the tool over time. It can be seen from the upwards trend (highlighted by the gray arrow) how it slowly digs its way into the work piece (creating a notch). The sharp spikes at the bottom (three of which are circled in red) resolve the belt clearance problem.
The project result was satisfactory. Here it can be seen creating notches on a ring’s inside. Note that the lateral motion (plotted in the figure above) is not visible in the GIF, because it is so small-sized.

Go-kart Speed Limiter

2018 // private customer // supported with the development of a reliable data transmission between two Arduinos // source code

The private customer behind this project was building a go-kart. It is equipped with several microcontrollers, amongst them an Arduino which controls the ~130 horsepower (!) engine. The throttle is connected to a second Arduino for reading sensors and driver inputs. The task assigned to Denk Development is the very specific aspect of transmitting data from the second Arduino to the engine-controlling Arduino.

Due to the nature of the project, the data transmission was required to be highly reliable. In cases of a defective contact it would be a top priority to not transmit any invalid throttle values. Otherwise the car could potentially accelerate without the driver being prepared for that. The developed software therefore carefully checks the validity of received data packages and discards them if the validity could not be verified.

A CAD model of the go-kart. One of the two Arduinos is controlling the display below the steering wheel.
The go-kart in action; the video is in original playback speed.

Airplane Cabin Pressure Control

2019 // private customer // software for a microcontroller that controls an air vent to regulate the cabin pressure of a small aircraft // source code

This customer is very impressive: He builds his own airplanes – real airplanes. The inquiry was about a very specific aspect of airplane construction: The controlling of the cabin pressure. He wanted me to develop a microcontroller software, which enables him – with the appropriate hardware attached – to monitor cabin and exterior pressure, set it to a desired target value, and have the microcontroller regulate a vent to let the cabin air flow out until the desired target pressure difference is reached.

What I enjoyed the most about this project is how diligently the customer had prepared everything that was within his scope. He sent me a prototyping board with which I could experiment, thereby making the entire development process very convenient. The mere fact that I was developing software for his airplane was also stunning, and I would not have agreed on doing that had there not also been an overflow valve for safety purposes.

The test setup the customer provided. It came in handy during the development and was carefully prepared.
Three photos showing (from left to right): the gears which open and close the valve; the rear bench of the airplane where the valve is installed; the instrument panel which allows the pilot to choose a desired difference between cabin and outside pressure.
The airplane that is now flying with the cabin pressure control software. On the photo it is undergoing engine maintenance.

The “Big Data / IoT / Serverless” Project

2020 // customer Electrojoule // software for reading sensor data from many distributed logging devices and collecting it in a central database

Buzzwords like big data and IoT can be a little frightening due to their perceived overuse in inappropriate places. Well, in this case it turned out to be an appropriate place: The customer – Electrojoule from the greater Zurich area – requested hardware and software development support for their heating loggers. Concretely, the task was to log data from a large number of temperature sensors and webcams, placed on a variety of different premises, into a single InfluxDB for subsequent data analysis.

The implementation uses Raspberry Pis to read the sensor data and forwards it to Azure’s IoT Hub. The IoT Hub is beneficial because it provides a UI for managing all devices (the Raspberry Pis), which includes adding new ones, configuring existing ones, etc. It also makes the secure transmission of data as well as the client authentication comparably simple. The IoT Hub caches the received events for one day, during which a backend application pulls the logs and pushes them into the Influx database.

Besides the pleasure of working together with Felix and his team, I enjoyed this project because it involved using Azure’s IoT Hub – a service previously unknown to me. Furthermore, having to write code for a Raspberry Pi which must not (ever) shut down once deployed was an interesting challenge.

The data logger prototype: A Raspberry Pi with PT100 temperature sensor attached to it.
Log output of the logger application which sends temperature data to Azure’s IoT Hub.