- LiFePO4 Speicher Test         
Ergebnis 1 bis 9 von 9

Thema: Schrittmotorsteuerung - kann mir jemand einen Code schreiben? (Bezahlung)

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    31.03.2014
    Beiträge
    182

    Schrittmotorsteuerung - kann mir jemand einen Code schreiben? (Bezahlung)

    Anzeige

    Praxistest und DIY Projekte
    Hallo, mangels eigener Fähigkeit...

    Kann mir von Euch jemand einen Code schreiben für eine auf meinen Bedarf zugeschnittene Schrittmotorsteuerung? Bezahlung nach Vereinbarung. Für Arduino (wenn möglich UNO Atmega 328 - ggf. mit Porterweiterung MUX). Drehgeber/Encoder, 2 Richtungstasten, eine Taste für "Turbo", eine Taste für "Langsam". 4 (oder wenn möglich sogar 6) Positionstasten ("Recall"), eine "Store"-Taste zum speichern einer zuvor angefahrenen Position. Wichtig ist, dass die gespeicherten 4 (oder eben 6) Positionen nach Stromtrennung oder Reset korrekt erhalten bleiben (Eprom). Ein Display (i2c, 1602) zur Anzeige der Positionen.

    (Wollte das hier eigentlich unter "Stellenanzeigen" eintragen, aber ich habe nicht entdecken können, wie/wo ich das machen kann. Deswegen hier im Forum reingesetzt.)

    Andi

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    31.03.2014
    Beiträge
    182
    Ich entnehme den ausbleibenden Antworten, dass das möglicherweise garnicht so einfach ist...(?) Falls jemand unter Euch dazu Hinweise oder Vorschläge hat, würde ich mich freuen, wenn Ihr mir damit weiterhelfen könntet. Ich schätze, das mit dem Speichern ist der Knackpunkt. Ich habe bisher dazu 2 Möglichkeiten gefunden: entweder nach einem Stromausfall eine Referenzfahrt machen, oder einen (teuren) Schrittmotor mit aufgesetztem Absolutwert-Encoder verwenden. Aber hierfür fehlen mir einfach die Kenntnisse...

    Andi

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.04.2015
    Beiträge
    910
    Naja,
    12 Tasten als 4x3 Matrix, I2C-Bus zum Display und zwei Ausgänge für Takt und Richtung klingen nicht sooo kompliziert.
    Wobei:
    - wie wird die Speicherstelle (1..6) der Store-Taste angewählt?
    - Wozu ist der Drehgeber/Encoder?
    - Warum nicht einfach den Controller bei "Stromaus" batteriegepuffert in den Sleep schicken?
    - Müssen nicht solche Parameter, wie "Turbo" und "Langsam" über das Display und die Tasten einstellbar sein?
    - Gibt's dann u. U. auch noch Beschleunigungsrampen mit Parametern?

    Es kommt maßgeblich auf's Beiwerk an, wie lange es dauert und was Du letztendlich dafür bezahlen musst.
    Und es kommt natürlich auch darauf an, wie weit Deine Hardware ist und wie stabil sie läuft, damit Missverständnisse oder zeitlicher Verzug gar nicht erst auftreten können.

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    31.03.2014
    Beiträge
    182
    Danke für Deine Antwort. Der Code selbst ist nicht das große Problem. Ich habe einen Code, der funktioniert. Das Problem ist die Speicheroption bzw. der Erhalt dieser gespeicherten Positionen nach Neustart oder Reset. Diese Daten gehen verloren bzw. verschieben sich. Die Batteriepufferung ist eine gute Idee. Da muss ich mal suchen, wie sowas gemacht wird, denn einfach eine Batterie parallel zum Netzteil anklemmen ist ja eher nicht zu empfehlen Da wird sich in den unendlichen Weiten sicher ein Schaltplan finden.

    Danke
    Andi

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.04.2015
    Beiträge
    910
    Wenn es nur um den Datenerhalt geht, reicht wahrscheinlich auch ein Goldcap, der Dir nach dem Abschalten der Versorgungsspannung die Gelegenheit gibt, die Werte ins EEPROM zu schreiben.

    Beim Reset geht das aber auch nur, wenn Du den eigentlichen Reset-Button auf einen freien Portpin umlegst, der auf Knopfdruck die Werte speichert und anschließend einen Softreset ausführt.

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.671
    Ich hänge mich einfach mal mit rein, weil es gerade schon spät ist und mein Tagwerk eigentlich vollbracht. Wenn ich mich so an meine Steuerung mit Schrittmotor Nema17 und Atmega328P-PU erinnere, ist da nichts mit Eprom. Die Schrittmotorsteuerung an sich ist ja nicht so schwer. Auf einem Atmega328 kann man eben nichts speichern und auch nicht, wenn man da einen Reset ausführt. Also gespeichert werden muss, nachdem die letzte Aktion erfolgte und bevor Spannungsversorgung ausfällt oder Reset erfolgt. Wenn es unbedingt gespeichert werden muss, fielen mir eine SD-Karte ein und ein ESP8266 wegen dem Flash, das ist gut, verbraucht aber mehr als ein Atmega328.

    SD-Karte am UNO:

    VCC: An den 5V-Pin des Arduino.GND: An den GND-Pin des Arduino.
    CS (Chip Select): Normalerweise Pin 10, aber Sie können ihn im Code anpassen.
    MOSI (Master Out Slave In): Pin 11 am Arduino Uno.
    MISO (Master In Slave Out): Pin 12 am Arduino Uno.
    SCK (Serial Clock): Pin 13 am Arduino Uno.

    Ich denke, das würde ich in Erwägung ziehen. Oder auch das Folgende, frisch aus den Zutaten meiner Backstube:

    W25Q80RVSNJM:FLASH - NOR (SLC) Speicher IC 8Mbit SPI

    Kurze Befragung des Orakels: es sagt das funktioniert (ohne Gewähr).

    Die Pins des Arduino Uno, die du dafür benötigst, sind:


    D10 (SS - Slave Select)
    D11 (MOSI - Master Out, Slave In)
    D12 (MISO - Master In, Slave Out)
    D13 (SCK - Serial Clock)

    So weit mir gesagt wurde ist das Teil ganz beliebt, als kleiner Speicher und sehr robust. - Und ..... günstig.

    Damit wäre das Problem, so glaube ich, gelöst.
    Geändert von Moppi (Gestern um 22:52 Uhr)
    Mit freundlichem Gruß
    Moppi

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Andree-HB
    Registriert seit
    10.12.2004
    Ort
    Bremen
    Alter
    54
    Beiträge
    2.808
    Zitat Zitat von Moppi Beitrag anzeigen
    ...ist da nichts mit Eprom.
    ...warum sollte das nicht gehen:
    https://docs.arduino.cc/learn/built-...raries/eeprom/

    Man sollte allerdings drauf achten:
    "Note: An EEPROM write takes 3.3 ms to complete. The EEPROM memory has a specified life of 100,000 write/erase cycles, so you may need to be careful about how often you write to it."

    - - - Aktualisiert - - -

    by the way, Andi - ohne zu wissen, was genau Dein Anwendungsfall ist...es gibt als absolute Positionserkennung sogenannte "Glasmaßstäbe":
    https://de.wikipedia.org/wiki/Glasma%C3%9Fstab

    z.B.
    https://de.aliexpress.com/item/33060084701.html

    ...dazu ist die Position auch nach Unterbrechung der Stromversorgung eindeutig, bzw. man benötigt keine Referenzfahrt. (zumindest bei Absolutwertgeber, es gibt auch inkrementelle Wertgeber)
    Geändert von Andree-HB (Heute um 05:26 Uhr)

  8. #8
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.711
    Zitat Zitat von Holomino
    .. - Warum nicht einfach den Controller bei "Stromaus" batteriegepuffert in den Sleep schicken? ..
    Siehe bei mikrocontroller.net / Markus Frejek / AVR-Transistortester .. Features
    ".. Stromverbrauch im ausgeschalteten Zustand: < 20 nA .."

    Mein Pacer (für Lauf- und Gymnastiktraining) läuft damit und mit nem 9V-Block monatelang (wenn er mir nicht zu oft grün+rot vor-blinken muss *gg*).

    Zitat Zitat von Moppi
    .. Wenn ich mich so an meine Steuerung mit Schrittmotor Nema17 und Atmega328P-PU erinnere, ist da nichts mit Eprom .. Auf einem Atmega328 kann man eben nichts speichern und auch nicht, wenn man da einen Reset ausführt ..
    Oh oh aua - da MUSS ich einfach anmerken: Abgesehen von andern Aussagen steht in den 328er Datenblättern die ICH besitze etwa so:

    Zitat Zitat von Div Datenblätter 328
    .. High Endurance Non-volatile Memory Segments ...
    ̶ 256/512/512/1KBytes EEPROM ..
    (Meine uralte Plattitüde: ".. Controller programmieren ohne das Datenblatt zu lesen ist eines der letzten großen Abenteuer unserer Tage ..")
    Selbst ein tiny13 hat 64 Bytes EEPROM! Single-Chip und 8-Bit-Harvard-Architektur bringens eben.

    Zitat Zitat von Andree-HB
    ... by the way, Andi - ohne zu wissen, was genau Dein Anwendungsfall ist...es gibt als absolute Positionserkennung sogenannte "Glasmaßstäbe" ...
    Ahhh, Andree ist eben schneller. Dazu ne Anmerkung: aus nem alten Drucker hab ich so nen Maßstab (glasklarer Plastikstreifen mir hauchdünnen Markierungen) ausgebaut. Liegt (mit Lese-Schlitzblock) bei meinen Anschauungsmatrerialien!
    Geändert von oberallgeier (Heute um 08:52 Uhr)
    Ciao sagt der JoeamBerg

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.671
    Auflösung des Widerspruchs, im ausgeruhten Zustand:

    Eproms sind UV-Löschbar. Sowas hat der ATmega328 nicht und es würde auch dem Zweck nicht entsprechen.
    Den internen EEprom zu verwenden ist eine andere Sache und wäre möglich.

    Weitere Überlegung:
    Ob man das unbedingt benutzen sollte, ist nicht ganz klar. Es kommt vor allem auf die Menge der zu schreibenden Daten an. Nach Recherche hat der interne immerhin 100.000 Schreibzyklen pro Byte mit insgesamt 1024 Byte. Wie viele Positionsänderungen sollen denn gespeichert werden? Wenn es 1 Pro Konfiguration ist: absolut kein Problem. Je nach Schreibhäufigkeit sollte man sich eine Strategie bezüglich des Schreibens ausdenken, um die Lebensdauer zu verlängern (Wear Leveling). Man könnte ein Speichermenge als Ringpuffer nutzen. Beispielsweise 512Byte für 2Byte Positionsdaten. Das erhöht die Lebensdauer auf 100.000 x 256.
    Mit freundlichem Gruß
    Moppi

Ähnliche Themen

  1. PHP Code: Buch, Frameworks um in Zukunft saubereren Code zu schreiben
    Von Thor_ im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 1
    Letzter Beitrag: 21.11.2014, 17:25
  2. RP6 Code schreiben
    Von RAW im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 6
    Letzter Beitrag: 04.08.2010, 14:40
  3. Kann mir bitte jemand diesen Code erklären?
    Von meddie im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 5
    Letzter Beitrag: 11.08.2006, 10:40
  4. Kann mir jemand den folgenden Code erklären?
    Von FiTus im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 23.06.2006, 07:18
  5. Kann mir jemand einen PIC 16F84 programmieren
    Von Mischel im Forum PIC Controller
    Antworten: 7
    Letzter Beitrag: 03.01.2005, 19:50

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen