GIM4310 motor and SimpleFOC

Hello!! The GIM4310 motor is very interesting to me. It has almost same dimensions of iPower GM4108H, same torque (2 kg x cm) and half phase to phase resistance (5 Ohm) but it has a planetary gear with a rate of 10. So the output torque is 10 time, 20 kg x cm. Does anybody has idea if it can be driven by the simpleFOC shield for Arduino UNO? Could be a problem the resistance at 5 Ohm instead of 10 Ohm?
The same motor can be equipped with an embedded driver also. It communicates via PWM or CAN. Could the simpleFOC libraries work on Arduino with this drivers?

1 Like

Based purely on the motor’s specs this motor would work very well with SimpleFOC and the SimpleFOC shield.
Rated power, voltage and current are all within the shields specs.

However, I would take the one with integrated encoder, since you will need one for closed loop control… $9 extra for the AS5047 encoder is quite reasonable.

Overall these motors look very reasonably priced for what they promise to do :slight_smile: I think I might order one myself to try them out!

Hi, I got two of those motors, and they work very well. Just an Arduino UNO R3, a simpleFOC driver and the motor goes… Smooth, silent, and strong. It also has a reasonable backlash gearbox, and it is back-drivable.
I used it by the magnetic encoder with SPI protocol with the AS5048A which is very thin and easy to mount in a very narrow room.
In position control with the default control parameters, the motor became unstable if I used a mass that was not so big. I have to study the procedure for PID tuning.
But I am interested in torque mode. I used a CUI encoder as a master and the motor with the magnetic encoder as a slave. And I give the torque command as k*(angref-angactual) being angref the reference angle given by the master and angactual the actual angle of the motor.
It works very well, and it is compliant without any instability. It is also very fast to follow the master. Maybe with a speed of 90°/0.1s. And also with a hung mass of 1 kg at 25 cm.

2 Likes

Hi, very excited to see you got this motor working! I have a similar setup and GM4305 motors, do you mind if sharing the PID parameters? I was tunning it for days and got it move with very big I term like 1200 in torque mode, even with this, It holds in place if I give a command, and moves when i set torque to 0, very weird. Again very happy to see you tuned them up!

Hi, my motor is the GIM4310-10 which has a phase resistance of 4.8 Ohm. This could not be important but just for you to have all the information. I used a SimpleFOC 2.0.4 Arduino schield board as driver.
As for the the PID parameters, I just used the “angle_control.ino” which comes with the SimpleFOC library without any change on the PID parameters. I used a AS5048A encoder connected via SPI in the way here described. This way the motor works by commanding an angle by the serial terminal. Sometimes it starts vibrating. I didn’t investigate on that because I am interested in torque control (Voltage control). Then I used another setup: a slave (a CUI capacitive encoder connected to the SimpleFOC board (2 and 3 pins of Arduino) to command it. The control mode is Torque and the command is motor.move(k*(encoder.getAngle()-encoder1.getAngle())); being encoder the reference encoder (CUI master) and encoder1 the SPI encoder connected to the controlled motor. In this configuration the motor works very well for my purposes without any vibration and being compliant.

1 Like

Thanks a lot for sharing this! I tried this and on my setup the current goes maximum after kicking into the loop(), while the motor doesnt move. I reckon its a result of sensor alignment process issue, possibly the mechanical angle didnt came through as I had some reading failures. Ill try to experiment more with the encoder settings and add 2nd encoder like your setup and see

Hello!!! I have implemented the steer by wire with two of GIM4310 and a makerbase ESP32 FOC board… and the simplefoc library… it works but it is a bit restained… I mean I have to apply a certain force to move the motor (the other follows)… I just started by the example of the simpleFOC site without any PID setting and using the defaults values… I used a Torque (voltage control) with the torque being proportional to the difference between the angles of the two motors… So there is no derivative component… but the behaviour is like if there is a damping effect… Do anyone have any idea on how to solve this?