Welcome guest. Before posting on our computer help forum, you must register. Click here it's easy and free.

Author Topic: Novice: How do I control a stepper motor with a rs232 port interface  (Read 7755 times)

0 Members and 1 Guest are viewing this topic.

Wadzilla

    Topic Starter


    Newbie


    I have a step motor with rs232 communication.
    I know c++ , but programmed only in class years ago, I have no experience with visual basic.
    The sw I have is Vstudio 6 with Vbasic and Vc++ student edition from quite a while ago, I don't know if downloading the new express edtions are any better for a novice to work with.   For now, I woudl just like to see the freaken motor move lol!  Looking for the most vanilla procedure in C++ and/or Visual Basic. I hear VB is easier to use?  Any help appreciated.


    I want to
    Configure Ports
    Move motor

    Seria Port Settings:
    I. configure serial port
    •   Baud Rate: 38400
    •   Parity: None
    •   Data Bits: 8
    •   Stop Bits: 1
    •   Flow Control: none


    'Here is the command to move motor 500 counts:  but how do I pass this command to motor?
    II. Send index to motor:
    "@0N1_500” & Chr$(13)   

    I'll get this later but first, I want to see the motor move.
    III. loop

    ‘where 0=address,N=Index Command 500=IndexTravel  chr$(13)=carriage rtn

    For count = 0 to 4449
    ‘Set Direct = cw
    "@0+” & Chr$(13)
               
    ‘Move Motor * Index Number -  move motor up position
    "@0G1” & Chr$(13)

    ‘Set Direct = ccw‘
    "@0+” & Chr$(13)

    ‘Move Motor * Index Number – move motor down position
    "@0G1”  & Chr$(13)

    Count = count+1
    write (count, pc date & time) stamp to text file
    Next Count


    Brief overview of cammands and a very brief VB code, but I just get errors if I try to perform anything, I don't really know anything much about the structure of VB:

    N - Index Number
    Format: N#_[value] - where # is the motion profile number 1 or 2
    Sample: N1_10000 Index number of profile 1 equals 10000
    Description: This command sets the number of pulses to index for the motion profile. This value must
    be set before motion begins. These values are saved in the EEProm for stand-alone use.
    Range: 0 - 8,388,607


    Unit Selection
    In order to select a unit the @ command followed by 0 (address of the unit) must be sent.
    NOTE: There should be no spaces between the @ and the 0.
    How to select the unit:
    @0 (Unit is selected)
    How to get a response from the unit:
    @0$ (Carriage Return)
    After the $ command, the pulse generator will return a SMSI30 + the current version number.
    Note: In direct talk mode each command is followed by a carriage return.
    The unit communicates in half duplex mode, therefore proper setup of hyper terminal is necessary to view characters,
    if characters are to be echoed back to the screen.
    Instructions
    All instructions require that no spaces be sent between the command and the parameter followed by a carriage
    return. The commands are also case sensitive and are all sent as capitals.
    Command Summary:
    A - Acceleration/Deceleration
    B - Base Speed
    G - Go (Index)
    H - Hard Limit
    M - Max Speed
    N - Index Number
    R - Microstep Resolution
    S - Soft Limit
    T - Complete Time
    V - Verify
    + - Clockwise Direction
    - - Counterclockwise Direction
    $ - Version Number Register
    ! - Error Codes Register
    % - Verify Controller Address
    ~ - Set Controller Address



     
    Visual Basic Direct Mode Programming Example
    This Example is for Axis=0, and Profile=1
    DimConst DefaultTimeout As Single = 0.5
    frmMain.MSComm1.Output = "@0A1_100000. & Chr$(13) .Set Acceleration
    Pause DefaultTimeout
    frmMain.MSComm1.Output = "@0B1_1000. & Chr$(13) .Set Base Speed
    Pause DefaultTimeout
    frmMain.MSComm1.Output = "@0M1_4000. & Chr$(13) .Set Maximum Speed
    Pause DefaultTimeout
    frmMain.MSComm1.Output = "@0N1_500. & Chr$(13) .Set Index Number
    Pause DefaultTimeout
    frmMain.MSComm1.Output = "@0T1_100. & Chr$(13) .Set Complete Time
    Pause DefaultTimeout
    frmMain.MSComm1.Output = "@0R8. & Chr$(13) .Set Microstep Resolution
    Pause DefaultTimeout
    frmMain.MSComm1.Output = "@0+. & Chr$(13) .Set Direction CW
    Pause DefaultTimeout
    frmMain.MSComm1.Output = "@0G1. & Chr$(13) .Start the Index
    Pause DefaultTimeout

    alexK

    • Guest
    Re: Novice: How do I control a stepper motor with a rs232 port interface
    « Reply #1 on: April 28, 2008, 07:22:45 PM »
    Wadzilla,
    you are making things far to difficult, and you want instant results.
    I tried to work with this RS232 communications, but that stuff is enough to drive anyone nuts.
    Here are some basics to get things going, but maybe this is not what you want:
    -Use VB for programming and Excel for layouts, Binary values etc.
    -Download InpOut_32 dll and write a few VB Procs.
    -Dissect an old CD drive, it has mostlikely a 3 phase and a 4 phase Bi-Directional stepper motor. The 3 phase is more interesting and more difficult to get the correct Sequences.
    -Use LPT1 port and Printer cable and use pin D0 to D7 and pin #25, using InpOut_32  to which you need to pass 4 (step) Binary values for a 4 Phase or 9 (step) Binary values for a 3 phase.
    -Search the Internet, after a few 100 pages you will have collected dozens of of sample diagrams, and electronics to buy.
    -Be prepared to blow your power supply if you don't send the proper binary values to the LPT1 port, or incorrectly hook-up things.
    -For fun you can add an old Analog Joystick to control your treasure (an other dll download is required).

    Now, isn't this a giveaway? ;D


    Wadzilla

      Topic Starter


      Newbie

      Re: Novice: How do I control a stepper motor with a rs232 port interface
      « Reply #2 on: April 28, 2008, 09:20:19 PM »
      The motor is fullt integrated already has a rs-484 interface built in (I have a rs232 to rs485 converter) and it has to run for 600,000 rotations  = 800 up/down cycles in a 120 degree environment to pass a reliability test. The Motor also has a language set of 16 commands.  I was pretty much told that it has to work with this interface directly to a laptop.. Here is it's user guide:

      http://www.anaheimautomation.com/manuals/L010273%20-%2023MDSI%20Series%20Users%20Guide.pdf


      Wish I could do it as a leisure hobby but part of a larger project