Schrittmotorwerte in EEPROM speichern und auslesen

Hallo liebe Arduino-Wissenden,

An meinem selbstgebauten Thermometer befindet sich ein Rad mit 60 einzelnen gleichgroßen Segmenten, die von 0 bis 60 gehen. Gedreht werden soll das Rad von einem Schrittmotor mit Motorshield.
Ich habe alles angeschlossen.
Nun soll folgendes passieren:

Der Temperatursensor (TMP36) erfasst die Umgebungstemperatur und wandelt sie über den map-Befehl in Grad Celsius um (habe ich schon programmiert).
Der Motor soll sich jetzt zu dem Feld drehen. Also, wenn die Temperatur 20°C beträgt, dann muss er sich gegen den Uhrzeigersinn solange drehen, bis er das Feld mit der 20 erreicht.
Mein Prüfer (ich bin Student) meinte, dass man im EEPROM des Arduino jede Stellung des Motors für jedes einzelne Feld einspeichern kann, damit der Arduino bei einer Messung weiß, wie viele Schritte der Motor machen muss, um auf das Feld zu gelangen, dass zu dem gemessenen Wert (durch den Temperatursensor) passt.

Des Weiteren soll der Arduino folgendes machen:
Wenn ich den Arduino vom Stromnetz trenne und wieder einschalte, dann soll er bei einer Temperaturänderung erkennen, wie er jetzt als nächstes mit dem Schrittmotor das Rad drehen muss, um an die neue Stelle zu gelangen.

Beispiel: Die letzte Messung der Umgebungstemperatur vom TMP36 war 20 °C. Das Rad bleibt dort stehen.

  • Ich trenne den Arduino vom Netz -
    Nach einer Stunde schalte ich den Arduino wieder ein.
    Jetzt sind es aber nicht mehr 20 °C sondern 25 °C.
    Wie programmiere ich das jetzt, dass der Motor solange sich dreht, bis die Anzeige 25°C am Ablesepunkt ist?

Da ich neu hier bin, habe ich ein Bild von der Konstruktion in die Anlage geladen. Der Ablesepunkt ist auf “12 Uhr” der grüne Pfeil.

Vielen Dank für jegliche Hilfen :slight_smile:

ne da hast erst mal ein ganz anderes Problem. Einen Stepper kannst nicht absolut positionieren. sondern nur um n Schritte vor oder zurück drehen. Also brauchst erst mal eine Methode wie du deine Anzeige mit deinem Stepper syncronisiert. Z.B. mit einer Markierung bei 0, eine Kerbe wo ein Taster einrastet, ein Hallgeber, ein Loch mit einem Lichtsensor dahinter, was auch immer. Damit der Arduino mal weis wo der Stepper steht. Wenn du deinen Nullpunkt weist, dann kannst du jede Position anfahren.

DANACH kann man sich um so Sachen wie EEPROM kümmern.

noiasca: ne da hast erst mal ein ganz anderes Problem. Einen Stepper kannst nicht absolut positionieren. sondern nur um n Schritte vor oder zurück drehen. Also brauchst erst mal eine Methode wie du deine Anzeige mit deinem Stepper syncronisiert. Z.B. mit einer Markierung bei 0, eine Kerbe wo ein Taster einrastet, ein Hallgeber, ein Loch mit einem Lichtsensor dahinter, was auch immer. Damit der Arduino mal weis wo der Stepper steht. Wenn du deinen Nullpunkt weist, dann kannst du jede Position anfahren.

DANACH kann man sich um so Sachen wie EEPROM kümmern.

Hallo,

ich habe von meinem Mentor gehört, dass ich einen mechanischen Anschlag nutzen kann für die 0. Dort würde der Motor dann eine höhere Spannung bekommen, wenn er sich weiterdrehen soll und das könne ich im EEPROM als 0 hinterlegen. Dann den Motor um jeweils 6 Grad drehen lassen und die einzelnen Positionen (1 bis 59) im EEPROM speichern, so dass der Motor sie jeweils aufrufen und sich dementsprechend drehen kann, dass er das Rad ausrichtet.

Unter dem mechanischen Anschlag verstehe ich einen Stift, der oben gegensößt.

Dann würde ich es so versuchen. Ist das der richtige Weg?

Dort würde der Motor dann eine höhere Spannung bekommen, wenn er sich weiterdrehen soll

Ein Schrittmotor mit eine Lastabhängigen Spannung?

Interessant!
Wassen das für ein seltsamer Motor/Treiber?

EEPROM

Sorry ich meine Strom... Die Spannung steigt ja nicht weiter an.

Ein Schrittmotor mit einem Last abhängigen Strom?

Interessant! Wassen das für ein seltsamer Motor/Treiber?

combie: Ein Schrittmotor mit einem Last abhängigen Strom?

Interessant! Wassen das für ein seltsamer Motor/Treiber?

Keine Ahnung oder ich verstehe in falsch... er schrieb mir:

"[...] für die Nullstellung kannst Du einen mechanischen Anschlag vorsehen und über das Motroshield den Strom des Motors messen. Wird der Strom hoch, ist der Anschlag erreicht. [...]"

combie: Ein Schrittmotor mit einem Last abhängigen Strom?

Watterott hatte einen SilentStepStick vor einiger Zeit (2 Jahre?) mit i2c. Im "Demovideo hat er damals demonstriert, dass sich prinzipiell die Strommessung als Endschalter missbrauchen läßt. IMO war das aber eher subobtimal :) https://shop.watterott.com/SilentStepStick-TMC2100-5V-V2

Hi

Wenn schon mit einem Anschlag gearbeitet werden kann, warum nicht stur auf Block fahren? Diese 'Einlern-Fahrt' kann ja beim Einschalten gestartet werden, wenn der 'Einlern-Knopf' gedrückt ist. ... alternativ sagt dieser Knopf 'die Anzeige steht auf Null - Das kann man dann ebenso als gegeben annehmen - Vorteil: Man verdreht die Scheibe, wenn das ganze Gelump abgeklemmt ist.

Wenn ich aber schon 'egal unter welchen Voraussetzungen' einen Null-Punkt referenziere - warum nicht einen Referenz-Punkt automatisch anfahren lassen? Da wären wir wieder bei Reed-Schalter/Hall-Sensor/Mikro-Taster/whatever

Nun wissen wir - egal ob über Motor-Überstrom, angefahrener Referenz, gesetzten Referenz-Punkt, whatever - wo die Scheibe steht.

Dann: Pro Grad Celsius 6 Winkelgrad - wofür, bitte, braucht's Da EEprom-Werte der 6er Reihe? Man darf annehmen, daß der Arduino sogar Multiplizieren (Mal-Nehmen - für Nicht-Mathe-Studenten) kann. 3 Grad Celsius wären dann (6 + 6 + 6 ... oder 3x 6 ... = 18 Winkelgrad - dort würde dann die '3' stehen.

SOLL ist 18°, IST ist unsere Referenz (oder ohne das Referenz-Gedöns der Wert im EEprom). Nun Stepper.zielposition(zielposition_in_grad); Dann noch regelmäßig stepper.run(); in loop - oder Du nimmst die MoBaTools - da entfällt das .run(), da die MoBaTools Das intern machen.

Ich darf hoffen, daß die Projekte noch ein klein wenig umfangreicher werden, bevor Ihr auf die Menschheit losgelassen werdet? (durchaus ernst gemeinte Frage)

MfG

Danke für die vielen Antworten :-) Ich werde das mal alles austesten und weiter daran arbeiten.

@ postmaster-ino: Das Projekt ist schon das Umfangreichste im Kurs. Es soll auch von mir als Lehrer später mal in der Schule verwendet werden können (Wenn ich mit Studium und Ref. durch bin). Darum soll es eher mit simplen Ansteuerungsmöglichkeiten ausgestattet werden, damit die Schüler im Technikunterricht einzelne Schritte wiedererkennen. Ebenso soll es fächerübergreifend (hier Physik - Wärmeeinführung) verwendet werden.

Nochmals:

Danke @all!