- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 5 von 5

Thema: !!! RN-Control + RN Schrittmotor mehr als 255 schritte über Printbefehl verfahren? !!

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    14.01.2013
    Beiträge
    6

    Idee !!! RN-Control + RN Schrittmotor mehr als 255 schritte über Printbefehl verfahren? !!

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo ihr da draußen
    Ich muss in einer Woche mein Hochschul-Projekt abgeben und wärend der Testphase meines Programms kam folgender Fehler auf:

    Ich möchte mit meinem Schrittmotor (mit 50:1 Übersertzung) 2500 Schritte verfahren.

    Allerdings kann ich mit dem normalen Printbefehl (über RS232) ja nur maximal 255 Schritte verfahren (wenn Rs232daten(7) als Byte dimensioniert ist).

    Ich habe jetzt Rs232daten(7) As integer dimensioniert.
    Muss ich da sonst noch was machen? (anbei die Subroutine)

    Code:
    Sub Sendebytearray()
    Local I As Byte
      Print "!#";
      For I = 1 To 7
        Print Chr(rs232daten(i));
      Next I
    End Sub

    EVtl. "I" auch als Integer dimensionieren und evtl. "For I = 1 to 4096"?
    Meine nächste Frage wäre dann, versteht mein RN Schrittmotor solche hohen Werte überhaupt? (habe meinen RN Control leider gerade nicht da zum testen)

    Vielen Dank im voraus für eure Antwotrten!
    Geändert von kpoint (19.02.2013 um 16:32 Uhr)

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    14.01.2013
    Beiträge
    6
    EVtl. "I" auch als Integer dimensionieren und evtl. "For I = 1 to 4096"?
    Das ist quatsch habe ich nach etwas Überlegen gemerkt.
    "I" ist ja deswegen auf 7 gesetzt, weil ein Printbefehl für den RN Schrittmotor einen String aus 7 Charactern( Chr(i) ) besteht.

    Habe jetzt gerade meinen RN Control + RN Schrittmotor da zum testen und mit "Dim Rs232daten(7) As integer" geht es definitiv nicht wenn ich da den Befehl 2500 Schritte an den RN Schrittmotor sende läuft er vielleicht gerade mal 10 Schritte.

    Gibt es da wirklich keine andere Lösung?
    Ich will nicht unbedingt schlampig programmieren und den Befehl für 250 Schritte 10 mal hintereinander senden.

    Kann mir da echt Niemand helfen?!?!
    Geändert von kpoint (19.02.2013 um 19:44 Uhr)

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    14.01.2013
    Beiträge
    6
    Also für alle die evtl. auch mal das selbe Problem haben,ich habe es jetzt so gemacht:

    Code:
     If L = 2 Then                                 '2500 Schritte fahren
                   M = 0
                   While M < 10
                      Rs232daten(1) = Befehl_schrittzahldrehen
                      Rs232daten(2) = Motor_2
                      Rs232daten(3) = 250
                      Sendebytearray
                      Incr M
                      Wait 3
                  Wend
                  End If
    L wird benötigt wenn man mehrere Schrittzahlen in einem Programm verfahren muss. Für andere Schrittzahlen dann analog L=1, L=3, etc..
    Das ganze kommt natürlich in eine Subroutine die man mit gosub im Hauptprogramm aufruft

    Wenn Jemand ne bessere Idee hat, lasst es mich wissen!


    EDIT: die einzelenen Funktionen wie zb Rs232daten(i) sind aus Beispielprogrammen für RN-Control / RN Schrittmotor von Robotikhardware.de

  4. #4
    Administrator Robotik Visionär Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    5.116
    Blog-Einträge
    1
    In der Anleitung steht das eigentlich genau beschrieben. Die Schreittzahl wird duch LOW und HIGH Byte angebenen.

    Der normale Befehl lautet so, das wären 200 Schritte
    Print "!#": chr(55);chr(3);chr(200); chr(0); chr(0); chr(0); chr(0);


    Hier ist noch das High Byte auf 1, also kommen 1x256 hinzu, also 200+(1x256)=456
    Print "!#": chr(55);chr(3);chr(200); chr(1); chr(0); chr(0); chr(0);

    Wenn du also 2500 Schritte machen willst, dann musst du erst mal 2500 in 16 Bit Binär umwandel und schaun wie das Low und High Byte lautet. Können heute viele Taschenrechner (Informatik Grundlage).
    HEX Zahl wäre 09C4 (09=Dezimal 9) (c4=Dezimal =196)

    Also low wäre 196 und High 9

    Befehlsfolge in basic:
    Print "!#": chr(55);chr(3);chr(196); chr(9); chr(0); chr(0); chr(0);


    Dein Programm müsste also nur so aussehen

    Code:
    Rs232daten(1) = Befehl_schrittzahldrehen
    Rs232daten(2) = Motor_2
    Rs232daten(3) = 196
    Rs232daten(4) = 9
    Sendebytearray
    Mit bestem Gruß
    Frank

    Admin Roboternetz.de - RN-Wissen.de - Elektronik-Blog
    Überzeugter und begeisterter Elektroauto Fahrer seit 2018

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    14.01.2013
    Beiträge
    6
    Ah okay konnte mir unter der Bezeichnung Low und High Byte in diesem Fall nicht vorstellen.
    Habe mir aber schon gedacht, dass das irgendwie Mit Hex-Zahlen funktionieren sollte.

    Rechner brauch ich nicht, sollte ich gerade noch so im Kopf hinbekommen :-D

    Also Vielen Dank! werde es gleich mal ausprobieren, das macht meinen Quelltext gleich ein ganzes Stückchen kürzer
    Geändert von kpoint (23.02.2013 um 17:40 Uhr)

Ähnliche Themen

  1. Antworten: 7
    Letzter Beitrag: 12.11.2010, 17:39
  2. probleme beim printbefehl mit rn schrittmotor
    Von manus im Forum Software, Algorithmen und KI
    Antworten: 1
    Letzter Beitrag: 20.06.2009, 16:15
  3. Schrittmotor über PC mit Joystick verfahren...?
    Von Norman1987 im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 17.11.2007, 11:43
  4. Roboter mir mehr als 3 Achsen über CNC steuern?
    Von Lupin III. im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 2
    Letzter Beitrag: 17.09.2007, 13:52
  5. Mehr als ein Byte über den UART auslesen (2313)
    Von Philipp_c im Forum AVR Hardwarethemen
    Antworten: 10
    Letzter Beitrag: 10.10.2004, 19:43

Berechtigungen

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

Solar Speicher und Akkus Tests