Python Forum
Predicitve Maintenance Project mit Arduino
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Predicitve Maintenance Project mit Arduino
#1
Hi everyone,
I’m planning a small project to simulate predictive maintenance using Arduino and Python.

The idea is: I’m working with a small motor and want to monitor temperature and current. For example, 500 mA and 30 °C would be considered normal operating values. If the temperature stays above 30 °C and the current rises above 700 mA for more than 2 minutes, the system should issue a warning like: “Motor might fail in 4 days if these conditions continue.”

I know this is very basic and not meant to give perfectly accurate predictions – my goal is just to create a simple and working prototype to demonstrate the idea of predictive maintenance. The sensor data will be collected by the Arduino and sent to a PC via serial connection. On the PC, I want to analyze the data using Python (e.g., with scikit-learn) and let the system decide whether a potential fault is developing.

Has anyone here done something similar or have ideas on how to implement this in a simple but effective way? I’d also be grateful for links to related projects or tutorials! I didnt started yet I am searching for Information. Thank you.
Reply
#2
you can find some temperature monitor software here
and some arduino current monitor software here
Reply
#3
Operating resources break down after a certain period of time, which is sometimes specified in the corresponding data sheets. Then there are factors that accelerate the aging of operating resources.


Possible influencing factors:
  • Operating temperature
  • Ambient temperature
  • Power consumption
  • Rotational speed
  • Vibrations
  • Mechanical stress
  • Humidity
  • Radiation: radioactive, electromagnetic
  • ... list is incomplete


The following rule applies to semiconductors, for example:
For every 10°C increase in operating temperature, the failure rate doubles (or, in other words, the service life is halved).

In motors, for example, the operating temperature also plays a role, as it causes the insulation of the winding to age more quickly.

A simple class to do the calculation for a motor:
class MotorLifeMonitor:
    def __init__(self, rated_lifetime_hours, reference_temp):
        self.remaining_life_hours = rated_lifetime_hours
        self.reference_temp = reference_temp

    def update(self, current_temp, elapsed_hours):
        """
        Update the remaining life based on current temperature and elapsed real time.

        :param current_temp: Current temperature in °C
        :param elapsed_hours: Past time in hours until last call
        :return: Remaing life time hours
        """
        delta_t = current_temp - self.reference_temp
        aging_factor = 2 ** (delta_t / 10)
        life_used = elapsed_hours * aging_factor

        self.remaining_life_hours -= min(life_used, self.remaining_life_hours)
        return self.remaining_life_hours


motor = MotorLifeMonitor(20_000, 60)
motor.update(60, 1)
motor.update(60, 1)
It is also important to store the remaining hours (remaining_life_hours) on the microcontroller and to initialize the object with remaining_life_hours from non-volatile storage (NVS) when starting the microcontroller.

It is also possible to calculate how much a motor degrades when the speed is higher than the maximum speed specified by the manufacturer. However, this requires knowledge of the bearings and the design of the motor. I assume that this is not as significant as an increased operating temperature.

Vibration sensors on the motor can be used to determine whether the motor bearing is about to fail.
Almost dead, but too lazy to die: https://sourceserver.info
All humans together. We don't need politicians!
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Arduino Jukebox Project Yomanman 2 3,723 Mar-11-2019, 04:49 PM
Last Post: Yomanman

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020