Re: RFxxx Lautstärke Decay Modus
Verfasst: Mi 18. Jun 2025, 00:09
So da ich nun doch früher daheim aus dem Urlaub bin habe ich gleich getestet.
Mit diesen Einstellungen und 32 Mikrostepping wird er Hörbar und Spürbar Leiser mit genug Halte Kraft für das Bed.
// Register 0x00: CTRL (Control Register)
// Ermöglicht 1/32 Mikroschritt für eine gute Laufruhe und setzt den Gain für die Strommessung.
// ISGAIN = 01 (Gain = 10 V/V) für Stromregelung um 2.5A
// MSTEP = 101 (1/32 Mikroschritt)
// DTIME = 000 (850 ns Dead Time, Standard)
#define DRV8711_REGISTER_00 0x0405 // 0000 0100 0000 0101: ISGAIN = 01 (Gain 10), MSTEP = 101 (1/32 Step)
// Register 0x01: TORQUE (Torque Control Register)
// Stellt den Spitzenstrom (ITRIP) ein. Für einen 2.5A Motor, ISGAIN=10 und R_SENSE=0.1 Ohm
// ergibt ein TORQUE-Wert von ca. 0x10 (16 dezimal) einen Spitzenstrom von ca. 2.5A.
// ITRIP = (TORQUE / 256) * (VREF_internal / (8 * R_SENSE)) * ISGAIN
// ITRIP = (16 / 256) * (3.3V / (8 * 0.1 Ohm)) * 10 = 0.0625 * 4.125 * 10 = 2.578 A
// SMPLTH = 00000000 (Standard, falls nicht anders benötigt)
#define DRV8711_REGISTER_01 0x0010 // 0000 0000 0001 0000: TORQUE = 00010000 (0x10)
// Register 0x02: OFF (Off-Time Register)
// TOFF = 01100000 (0x60, 96 dezimal) für eine Off-Time von 48µs (96 * 500ns).
// Eine kürzere Off-Time führt zu einer höheren Chopping-Frequenz (~20kHz bei 2µs ON-Time),
// was außerhalb des hörbaren Bereichs liegt und Geräusche reduziert.
// PWMMODE = 0 (interner Indexer, Standard für Mikrostepping)
#define DRV8711_REGISTER_02 0x2060 // 0010 0000 0110 0000: TOFF = 01100000 (0x60), PWMMODE = 0
// Register 0x03: BLANK (Blanking Time Register)
// ABT = 1 (Adaptive Blanking Time aktiviert) für eine glattere Stromwellenform.
// TBLANK = 0001 (1 dezimal) für 0.5µs Blanking Time (1 * 500ns), gut für geringe Welligkeit.
#define DRV8711_REGISTER_03 0xB1D7 // 1011 0001 1101 0111: TBLANK = 0001 (0x1), ABT = 1
// Register 0x04: DECAY (Decay Mode Register)
// TDECAY = 00110000 (0x30, unverändert)
// DECMOD = 101 (Auto Mixed Decay) wurde beibehalten, da dies für leisen Betrieb vorteilhaft ist.
#define DRV8711_REGISTER_04 0x4530 // 0100 0101 0011 0000: TDECAY = 00110000, DECMOD = 101
// Register 0x05: STALL (Stall Detection Register) - Unverändert
#define DRV8711_REGISTER_05 0x583C // 0101 1000 0011 1100: SDTHR = 00111100, SDCNT = 00, VDIV = 10
// Register 0x06: DRIVE (Drive Register) - Unverändert
#define DRV8711_REGISTER_06 0x60F0 // 0110 0000 1111 0000: OCPTH = 00, OCPDEG = 00, TDRIVEN = 11, TDRIVEP = 11, IDRIVEN = 00, IDRIVEP = 00
// Register 0x07: STATUS (Status Register) - Unverändert
#define DRV8711_REGISTER_07 0x7000 // 0111 0000 0000 0000: OTS = 0, AOCP = 0, BOCP = 0, UVLO = 0, APDF = 0, BPDF = 0, STD = 0, STDLAT = 0
Dennis
Mit diesen Einstellungen und 32 Mikrostepping wird er Hörbar und Spürbar Leiser mit genug Halte Kraft für das Bed.
// Register 0x00: CTRL (Control Register)
// Ermöglicht 1/32 Mikroschritt für eine gute Laufruhe und setzt den Gain für die Strommessung.
// ISGAIN = 01 (Gain = 10 V/V) für Stromregelung um 2.5A
// MSTEP = 101 (1/32 Mikroschritt)
// DTIME = 000 (850 ns Dead Time, Standard)
#define DRV8711_REGISTER_00 0x0405 // 0000 0100 0000 0101: ISGAIN = 01 (Gain 10), MSTEP = 101 (1/32 Step)
// Register 0x01: TORQUE (Torque Control Register)
// Stellt den Spitzenstrom (ITRIP) ein. Für einen 2.5A Motor, ISGAIN=10 und R_SENSE=0.1 Ohm
// ergibt ein TORQUE-Wert von ca. 0x10 (16 dezimal) einen Spitzenstrom von ca. 2.5A.
// ITRIP = (TORQUE / 256) * (VREF_internal / (8 * R_SENSE)) * ISGAIN
// ITRIP = (16 / 256) * (3.3V / (8 * 0.1 Ohm)) * 10 = 0.0625 * 4.125 * 10 = 2.578 A
// SMPLTH = 00000000 (Standard, falls nicht anders benötigt)
#define DRV8711_REGISTER_01 0x0010 // 0000 0000 0001 0000: TORQUE = 00010000 (0x10)
// Register 0x02: OFF (Off-Time Register)
// TOFF = 01100000 (0x60, 96 dezimal) für eine Off-Time von 48µs (96 * 500ns).
// Eine kürzere Off-Time führt zu einer höheren Chopping-Frequenz (~20kHz bei 2µs ON-Time),
// was außerhalb des hörbaren Bereichs liegt und Geräusche reduziert.
// PWMMODE = 0 (interner Indexer, Standard für Mikrostepping)
#define DRV8711_REGISTER_02 0x2060 // 0010 0000 0110 0000: TOFF = 01100000 (0x60), PWMMODE = 0
// Register 0x03: BLANK (Blanking Time Register)
// ABT = 1 (Adaptive Blanking Time aktiviert) für eine glattere Stromwellenform.
// TBLANK = 0001 (1 dezimal) für 0.5µs Blanking Time (1 * 500ns), gut für geringe Welligkeit.
#define DRV8711_REGISTER_03 0xB1D7 // 1011 0001 1101 0111: TBLANK = 0001 (0x1), ABT = 1
// Register 0x04: DECAY (Decay Mode Register)
// TDECAY = 00110000 (0x30, unverändert)
// DECMOD = 101 (Auto Mixed Decay) wurde beibehalten, da dies für leisen Betrieb vorteilhaft ist.
#define DRV8711_REGISTER_04 0x4530 // 0100 0101 0011 0000: TDECAY = 00110000, DECMOD = 101
// Register 0x05: STALL (Stall Detection Register) - Unverändert
#define DRV8711_REGISTER_05 0x583C // 0101 1000 0011 1100: SDTHR = 00111100, SDCNT = 00, VDIV = 10
// Register 0x06: DRIVE (Drive Register) - Unverändert
#define DRV8711_REGISTER_06 0x60F0 // 0110 0000 1111 0000: OCPTH = 00, OCPDEG = 00, TDRIVEN = 11, TDRIVEP = 11, IDRIVEN = 00, IDRIVEP = 00
// Register 0x07: STATUS (Status Register) - Unverändert
#define DRV8711_REGISTER_07 0x7000 // 0111 0000 0000 0000: OTS = 0, AOCP = 0, BOCP = 0, UVLO = 0, APDF = 0, BPDF = 0, STD = 0, STDLAT = 0
Dennis