Firmware upgrade? and other questions / remarks

9 years 1 month ago #29525895 by kab
Hi,

I just started to use my SDC2130 - The status LED is flashing \"waiting for command\", yes!

However, I\'d have a few questions,

1. I\'m on Linux - how do I upgrade the firmware via the serial port? (and USB if possible)

Btw I downloaded the two files, .bin.zip and .dfu.zip
The .dfu.zip file gives an error
End-of-central-directory signature not found.
I probably need the bin anyway - just checking...
(I guess the .dfu.zip was either not zipped via the standard tools, or the file on server is corrupted)

2. Where do I find the API reference for RS232, using C on Linux?
(A reference gives the name of the function/method, its parameters, its return value if any, its description, notes and tips...)

Btw2 I\'m using the latest versions of Chrome and Firefox browsers. (Chrome is very close to the w3c standards)
The FAQ does not work :-(
The URL is bizarrely scrambled, and the browser goes back to the FAQ questions...

Thanks

Please Log in or Create an account to join the conversation.

9 years 4 weeks ago #29525903 by roboteq
YOu should be able to update the firmware via a terminal emulation sofware (minicom should work).

Reset the controller while sending repeated \"w\" character by holding the w key down.

The controller should enter the programming and display \"IAP\" and a \"C\" every second.

Send the .bin file using the Y-Modem protocol

Please Log in or Create an account to join the conversation.

9 years 4 weeks ago #29525905 by kab
Thanks.

Please see next question below!

Please Log in or Create an account to join the conversation.

9 years 4 weeks ago #29525907 by kab
Please ignore the Serial com problem:
it works using another computer (so the MB of the other one is faulty, and it\'s not your fault...).

However, could you please answer the rest of the \"not related\" question:

- is it possible to control the A/V of the motors directly at a given time:
instead of the controller deciding the right A/V depending on time, speed, that changes frequently (well, based on speed),

I would like to apply a constant (V,A) on a given channel, that would \"escape\" the speed calculation algorithm.

- This would allow to have a BL motor on channel 1,
- and another device (using constant (A,V)) on channel 2

While I understand the constant (A,V) may have the controller to bear a possibly unexpected charge, it is the responsibility of the programmer to request a reasonable (A,V) for a given time.
(E.g. 12V 10A for 10\", 12V 0.5A for 1 minute etc...

I didn\'t find any command that would allow that.
Maybe some undocumented commands?

Please Log in or Create an account to join the conversation.

9 years 4 weeks ago #29525917 by roboteq
You can control the V by changing the PWM value. For example, if the battery voltage is 24V and you apply a command of 500/1000, the motor will see 12V.

YOu cannot control the amps if you control the volts. The amps will be whatever your load will pull at that voltage.

What you can do, however, is change the amps limit. So that the load only sees 5A, for example. But keep in mind that this will only work by reducing the PWM, and therefore the voltage.

If you need an unusual command sequence algorithm, you can implement it in your linux code, or inside a script running in the controller.

Please Log in or Create an account to join the conversation.

9 years 4 weeks ago #29525919 by kab
Would you mind to specify which command you are using, in order to set a constant V to the motor/device?

I looked again in the user\'s manual, and I don\'t see what command is able to set a constant V (over time) for a given motor/device.

I tried a few commands, replacing the device with a multimeter (voltage). The V goes up for a very short time, then goes back to zero...

Please Log in or Create an account to join the conversation.

9 years 4 weeks ago #29525921 by roboteq
You need to send the !G (GO) command. E.g. \"!G 1 500\" will make the motor output 1 pulse at 50%. So it will be on half of the time and off the other half, averaging at half the battery voltage.

Beware that the watchdog will bring back the output to 0 after 1s if no new command is received within that time frame.

You can temporarily disable the watchdog until the next time the controller is powered on, with the \"^RWD 0\" configuration command

Please Log in or Create an account to join the conversation.

9 years 4 weeks ago #29525923 by kab
Great! Thanks. I start to like the beast! It gives good results using alternatively M1 and M2.

However, I did some tests in parallel, accessing both M1 and M2 in a loop
(from computer, using the serial to send commands)
Do 10 times {
   !G 1 1000
   computer wait 0.5 second
   !G 1 0
   !G 2 1000
   computer wait 0.5 second
   !G 2 0
}
Acceleration and Deceleration (DA, AC) are set to 32000 (should be performed in 0.3 sec).
RWD is set to 5000 (just in case).

And the result is not homogeneous (should have M1 for .5 sec then M2 for 0.5 sec and so on).
Particularly, it seems the controller has some difficulties to deal with consecutive queries like
!G 1 0
!G 2 1000
and
!G 2 0
!G 1 1000

I was hoping the \"dealing\" of M1 and M2 would be asynchronous (controller side) and thus, while the DA and AC should be performed in 0.3 sec, the DA of M1 (for instance) would start when AC of M2 starts.
Then, after 0.3 sec M1 is 0 and M2 is 1000 - and M2 will stay at 1000 for 0.2 sec (0.5-0.3) AFAIU.
(doing !G 1 0 _ !G 2 1000, while M1 is 1000 and M2 is 0)
From here v (- is 1000, _ zero, / AC, \\\\ DC)

     M1 --\\\\___...
 
     M2 __/---...


Is there some other commands that would help
- like having a almost instantaneous AC and DC
- any recommendation is welcome.

Please Log in or Create an account to join the conversation.

9 years 3 weeks ago #29525935 by roboteq
Controller response is instantaneous. The Roborun slider sends commands every 50ms and as you can see the response is direct.

It must be something in your code or serial driver.

Please Log in or Create an account to join the conversation.

9 years 3 weeks ago #29525951 by kab
Actually I think the serial / controller implementation works fine.
(I found out that the behavior above is due to the AC and DC limitations)

But since I\'m testing several other devices (like a solenoid) I would like to find a way to have a faster 0-to-1000 acceleration (and 1000-to-0 deceleration).

AFAIU, the way it is implemented, the fastest de/acceleration is 0.3 second.
(while motors actually need some time to accomodate the speed change, solenoids are much faster)

Is there a trick, special command, micro-programming access, a poke in memory or whatever that would allow an AD and DC faster than 0.3s?

Please Log in or Create an account to join the conversation.

Moderators: tonysantoni
Time to create page: 0.124 seconds