2018-07-11, 06:28 PM
Quote:RDS on is indeed a bit high, 117 mOhm and 44mOhm (I must admit I only saw the 44mOhm when I selected them)Anything above 0.5 watts needs a heat sink.
150 mOhm on 10A gives 15W dissipation ...
Quote:I use a ST1000+ currently I have limited the current to 5 A.Still you have 4W losses at 5 amp. The st1000+ probably uses even less.
My resistance is 5-6 mOhm, no where near 150.
Quote:I didn't know you were pulsing the MOSFETs, I expected a static steering voltage, so the H bridge would be activated continuously when the motor has to turn.The driver shifts power through a capacitor to drive high side mosfets. The maximum speed is 98.5% because off time is needed to keep the high side gates charged. The resistance in the mosfets, measurement shunt and other parts makes the max speed around 97% but only 1.5% is lost in heat.
What driver are you using for the MOSFETs? One that shifts the power up, to be able to use N-channels for high and low?
Quote:My code for the Arduino:I think this means you run at 400hz instead of 1khz. Should be ok, but you should also adjust the code in "void position(uint16_t value)"
// run at 4mhz instead of 16mhz to save power,
// and to be able to measure lower current from the shunt
#define DIV_CLOCK
//#define HIGH_CURRENT // high current uses 300uohm resistor and 50x amplifier
//#define HIGH_CURRENT_OLD // high current uses 500uohm resistor and 50x amplifier
// otherwise using shunt without amplification
#define rc_pwm_pin 6 // todo: use this pin to detect rc pwm
#define RC_PWM // remote control style servo
#ifndef RC_PWM
// for direct mosfet mode, define how to turn on/off mosfets
// do not use digitalWrite!
#define a_top_on PORTB |= _BV(PB1)
#define a_top_off PORTB &= ~_BV(PB1)
#define a_bottom_on PORTD |= _BV(PD2)
#define a_bottom_off PORTD &= ~_BV(PD2)
#define b_top_on PORTB |= _BV(PB2)
#define b_top_off PORTB &= ~_BV(PB2)
#define b_bottom_on PORTD |= _BV(PD3)
#define b_bottom_off PORTD &= ~_BV(PD3)
Yes I mixed up the outputs a little bit, and changed the levels.
And I use a lower PWM frequency:
#ifdef DIV_CLOCK
ICR1=4000; //fPWM=1khz
#else
ICR1=16000; //fPWM=1khz
#endif
I should make macros to make changing the frequency easier.
Quote:I'm not so familiar with creating pull requests, so I have to study on that.You would have to commit to git.
Could you please explain how I make my changes persistent?