Hi rubem,
we are not so way apart with the basic idea: Making some small modules that get versatile in usage. My idea is to mount one (or even two) motor drivers into one "
Kassette 60" and use maybe I²C communication. Having also inputs it should be possible to read in stop switches as well as standard and quadrature encoders. The last gadget is necessary for a rather special and rare 9V-quadrature motor variant made by Knobloch based on the
135484.
Concerning the ft:pedia arcticles, I suggest to try an english explanation here in the forum and in this thread.
The internals of a brushed DC-motor (and from here just motor) are not too complicated. First you need to consider the two electric terminals. They connect to the commutator and this one finally to the coil windings on the rotor. The commutator just cares for the automatic change of one windings polarity. However, the coil consists of electric resistance and inductance. And when it moves, it produces electric voltage since the coils move in a magnetic field. Neglecting the inductance this leads to a very simple setup of a resistor being in series connected to a voltage source. With this you need two parameters to describe the setup:
* Ri = Resistance of the coil assembly (in the ft:pedia this is called dynamic resistance R
Dyn)
* V
EMK = EMF which is the voltage produced
* The proportional constant = K
U which gives the mapping from rotation speed to voltage produced
Let us assume some example data to be Ri = 10 Ohms and K
U = 1 V / 1000 rpm for some calculations to follow.
This just means: Whenever this motor turns 1000 rpm its internal EMF gives 1 V, it produces 2 V at 2000 rpm ... 3.3 V at 3300 rpm. And it does not depend if the motor turns as a motor or is used as generator.
The next thing to consider is the mechanic side of the machine. Here we have the friction losses of the commutator, the bearings and some viscous drag to to air getting moved when speeding the rotor. Neglecting the viscous drag as well as eddy currents (since the rotor itself sees an AC voltage!) and putting all the remaining mechanic static losses into "bearing torque" this gives the minimum torque to run the rotor even if there no load connected to the output shaft. Then there is something that is called K
I and describes the current necessary to produce a certain torque. The more torque the motor must drive, the more current it needs to draw. Let us neglect this K
I thing (typically given as Nm / A) and assume the idle current is 50 mA due to "bearing friction" while on a certain load it draws 200 mA (the exact torque put out to the load does not matter but you immediately can tell this load torque is 3 times the "bearing friction").
Now connect this motor to a supply voltage, let us assume it is 9 V and have it idling. So this means there is a 50 mA current draw from the power source, runnig through the 10 Ohms of Ri. This leaves 8.5 V for the rotor. The rotor now speeds up to 8.5 V times K
U reaching 8500 rpm.
The same motor but now on load wants 200 mA of current draw, just 7 V left for the rotor and thus just goes 7000 rpm.
Okay so far?
Now to the power stuff:
Ri is the place where electric energy builds up and gets turned into heat. In the idling example you get 25 mW of electric loss. To calculate for the mechanic loss you might need the torque and the rpm value. But this is not necessary. Just consider the EMF voltage and the current it hosts: It is giving 8.5 V * 0.05 A = 425 mW of mechanic energy - going also into some heat finally and means full loss.
Get the motor loaded changes the situation. The electric loss on Ri gets (10 Ohms * 0.2 A) * 0.2 A = 400 mW, the mechanic energy gets (9 V - (10 Ohms * 0.2 A) * 0.2 A) = 1,4 W. So this is barely the mechanic power produced but there are some losses to the "bearings" still. Well, assuming a constant loss of torque this means 50 mA of those 200 mA are for the losses and the load gets just 7 V * 0.15 A = 1,05 W. As expected, due to less speed the mechanic loss is somewhat less than when idling, here just 350 mW.
One thing should be kept in mind: The current running through the motor always follows ohms law!
Voltage across Ri divided by Ri gives the current and the voltage across Ri is always the difference between terminal voltage (supply) and EMF produced by the rotation. So this means the rotor adjusts itself to a certain speed until the current satisfies exactly the torque demanded. When voltage is applied the full 9 V / 10 Ohm = 0.9 A current runs since EMF = 0 V. The motor starts with maximum torque and while its speed increases its EMF does likewise. Differential voltage (Supply - EMF) thus gets lower and reduces current draw until euqilibrium of current draw to output torque is reached.
When will the motor start running?
Just being on idle means it start as soon as the idling current draw of 50 mA can be reached. So it should start at 0.5 V (10 Ohms * 0.05 A).
When on load it takes at least 200 mA to start it, here we get 2 V (10 Ohms * 0.2 A).
In practice this does not held true because the difference between friction when at standstill is higher than when in motion and some other effects.
The ft:pedia article does the explanation of the K
I and torque stuff quite emphasized but in the last seven years I learned some more things. In addition to what the ft:pedia tells about the dependency of K
U and K
I and how those can get converted into each other it is just necessary to get motor current and EMF measured somehow to get all the motor data for a static operation point - withour having to measure any torque at all. But this is far beyond our scope here.
This all means: With a certain motor you can apply a certain torque to a reasonable load. The higher the supply voltage the higher this load could be (because there is plenty of voltage to heat up Ri) but the motor has some optimum torque to put out. Always running near topmost curren draw damages it. A reasonable load means the motor is run close to the point of topmost efficiency. Maybe you want to take a look into some ft motor data?
https://www.ftcommunity.de/knowhow/baut ... 93_neu.pdf
Leerlauf <=> Idling
max. Effizienz <=> max. efficiency
max. Leistung <=> max. power output (but not a good operating point)
Stillstand = stalled
If you like we could continue further into the topic. And, of course, if there are still questions then please ask! I bet there are some since this post cannot completely cover the ft:pedia scope. And this calculation model is somewhat simplified neglecting dynamic stuff or other annoying effects totally.
----------------
The overshoot of the motor position, when turning it off reaching the encoder terminal count, indeed is related to inertia. To overcome this the motor needs to get some stop command a little bit earlier and this needs to be well adjusted to the complete assembly of motor and its load - or you change to stepper motors.
----------------
Making this a kind of "community project" might need some more considerations. Maybe one thought needs to get spend on the operating voltage. Is 9 V just enough or do we need to prepare it also for the 24 V ft-motors being around?
----------------
Which Arduino are you using exactly?
I am sticky with Sparkfun ProMicro (clones) hosting an ATmega32U4. Similar to Arduino Leonardo, Teensy 2.0 and alike. It is fun to attach them to the USB to have my PC taking full control.
Regards
H.A.R.R.Y.