Forum

Notifications
Clear all

Solo

7 Posts
2 Users
1 Reactions
230 Views
Forum 1
 Joe
(@joe)
Active Member
Joined: 1 year ago
Posts: 6
Topic starter  

I have a Mini V2 that works fine in motion terminal. However when I power cycle the unit it changes from DC to BLDC and from position mode to torque mode. 

Ive had this happen with 2 separate cards since updating the firmware. 

 

- help...

 

Joe


   
Quote
SOLO Team
(@milad)
Illustrious Member Admin
Joined: 4 years ago
Posts: 605
 

Hello @joe,

 

May I know if you are operating in Analogue or digital mode? if you are in Analogue mode, the motor type on MINI is taken from the Pin header ( M1 and M2 jumpers), so if you set the motor type , it's only used for Digital mode.

May I know what firmware version are you using?

Milad

 

If you found the answers helpful and you could solve your problems, please kindly verify here to help others in the future.


   
ReplyQuote
Forum 1
 Joe
(@joe)
Active Member
Joined: 1 year ago
Posts: 6
Topic starter  

0000B010

Digital mode - with m1 to ground, m2 to ground and fn to ground. 

Its weird because it worked fine for a motion control setup we had before New motion control for Altendorf sliding table saw. (youtube.com)

Not sure if I've done something wrong. 


   
ReplyQuote
SOLO Team
(@milad)
Illustrious Member Admin
Joined: 4 years ago
Posts: 605
 

Hi @joe,

 

In Digital mode you can select the motor type directly from the Motion Terminal, those pin configurations shouldn't affect the motor type.

Are you sure you are not somehow resetting/overwriting these values with other means ( through UART/CAN bus from another MCU etc...? )

Can you refresh your Motion terminal page, recycle the power of SOLO MINI and double-check this?

 

Milad

 

If you found the answers helpful and you could solve your problems, please kindly verify here to help others in the future.


   
Joe reacted
ReplyQuote
Forum 1
 Joe
(@joe)
Active Member
Joined: 1 year ago
Posts: 6
Topic starter  

Heres the python I've been using to run it  

import tkinter as tk
import time
import SoloPy as solo

# Serial communication setup
com_port = 'COM6'  # Change COM port to COM6
baud_rate = 937500

try:
    # Create a SoloMotorControllerUart object
    mySolo = solo.SoloMotorControllerUart(com_port, 0, solo.UART_BAUD_RATE.RATE_937500)
    print("Solo object created successfully.")

    # Wait here until communication is established
    while not mySolo.serial_is_working():
        print("Waiting for serial communication...")
        time.sleep(1)
    print("Communication established successfully!")

    # Set the speed limit
    mySolo.set_speed_limit(3100)

except Exception as e:
    print("Error initializing serial communication:", e)
    exit()

# Create the main window
window = tk.Tk()
window.title("Numeric Keypad")
window.geometry("500x500")
window.configure(bg="dark red")

# Define custom fonts
font_title = ("Helvetica", 24, "bold")
font_numbers = ("Helvetica", 36, "bold")

# Create a variable to store the entered number
entered_number = ""

# Function to update the entered number
def update_number(num):
    global entered_number
    entered_number += str(num)
    label.config(text=entered_number)

# Function to handle the send button
def send_number():
    global entered_number
    try:
        number = float(entered_number)
        position_reference = number * 3609
        mySolo.set_position_reference(position_reference)
        position_label.config(text=f"Position Reference: {position_reference}")
    except ValueError:
        position_label.config(text="Invalid number entered")
    finally:
        # Reset the entered number
        entered_number = ""
        label.config(text="")

# Create the numeric keypad buttons
buttons = []
for i in range(1, 10):
    button = tk.Button(window, text=str(i), font=font_numbers, command=lambda i=i: update_number(i), bg="orange")
    if i <= 3:
        button.grid(row=1, column=i-1, padx=10, pady=10)
    elif 4 <= i <= 6:
        button.grid(row=2, column=i-4, padx=10, pady=10)
    else:
        button.grid(row=3, column=i-7, padx=10, pady=10)
    buttons.append(button)

# Create the decimal place button
decimal_button = tk.Button(window, text=".", font=font_numbers, command=lambda: update_number('.'), bg="orange")
decimal_button.grid(row=4, column=0, padx=10, pady=10)
buttons.append(decimal_button)

# Create the 0 button
zero_button = tk.Button(window, text="0", font=font_numbers, command=lambda: update_number(0), bg="orange")
zero_button.grid(row=4, column=1, padx=10, pady=10)
buttons.append(zero_button)

# Create the send button
send_button = tk.Button(window, text="Send", font=font_title, command=send_number, bg="orange")
send_button.grid(row=4, column=2, padx=10, pady=10)

# Create a label to display the entered number
label = tk.Label(window, text="", font=font_numbers, bg="dark red", fg="white")
label.grid(row=5, column=0, columnspan=3, padx=10, pady=10)

# Create a label to display the position reference
position_label = tk.Label(window, text="", font=font_title, bg="dark red", fg="white")
position_label.grid(row=6, column=0, columnspan=3, padx=10, pady=10)

# Start the main loop
window.mainloop()

It really seems to happen on power cycle.

This project was started a while ago - and I'm just refreshing myself back into it. The video I showed was when we had first used the solo to drive the position of the axis for this machine. Now Ill need to power cycle the Solo because we enable a brake module to lock the ballscrew into place and the solo detects the brake when it engages and tries to reposition itself into place. So we were switching off the Solo after a timeout when we know it will have reached its position.

I dont see any reason why the unit would change it's mode or the motor type on power cycle. I have 5 more boards here to try but the last 2 have done the same thing for some reason... Ill keep testing things. 

 

-Joe


   
ReplyQuote
Forum 1
 Joe
(@joe)
Active Member
Joined: 1 year ago
Posts: 6
Topic starter  

So for some reason it just started functioning properly on power cycle --- Ill continue down the path that seems to be working. Its an interesting saw retrofit we are working on. 


   
ReplyQuote
SOLO Team
(@milad)
Illustrious Member Admin
Joined: 4 years ago
Posts: 605
 

Hi @joe

Ok great, please note that sometimes it can happen that the Motion terminal due to noise on the data line, can show a wrong reading ( in rare occasions), so if you refresh the page or read programmatically from SOLO the same parameter you should see it's correctly set, so in general SOLO must be 100% deterministic on these values and they can't change without something forcing them to change or potentially a noisy reading that is not representing the real value.

To improve the readings, you can use shielded USB cables or even using CAN bus.

Milad

 

If you found the answers helpful and you could solve your problems, please kindly verify here to help others in the future.


   
ReplyQuote
Share: