Quantcast
Channel: Forums - Recent Threads
Viewing all articles
Browse latest Browse all 262198

DRV10983: Strange behavior on custom system

$
0
0

Part Number:DRV10983

Hi folks,

We're trying this IC for the first time on a custom PCB. Schematic and layout are pretty identical to the ones shown in the datasheet, however our setup seems not to work as it should.

Let me describe the situation:

  • Communications lines have been tested and work OK
  • Supply lines have been tested and work OK
  • Microcontroller works OK
  • All pads in the PCB are properly soldered to the DRV and there's no shorts in the IC.

Motor parameters (acquired following SLOU395D (DRV10983 and DRV10975 Tuning Guide)):

  1. Operation voltage: 24V
  2. Number of poles: 4 stops hand rotating with an energized phase = 8 poles
  3. Max speed: 3000RPM
  4. Phase Resistance: 1.4 Ohms 
  5. Kt: 196mv/Hz? Ac calculated, however, i don't fully comprehend this value.
  6. LR: not calculated
  7. Intertia: Not calculated

When we apply power to the board current consumption climbs up to 25mA or so (OK), then we use the TWI to program the DRV :

#include <Arduino.h>
#include <Wire.h>
#include "DRV10983.h"

#define PWM 6
#define DIR 5


#define DRV_address 0b1010010

void twi_write (uint8_t slave, uint8_t reg, uint8_t data){
	
	Wire.beginTransmission(slave);
	Wire.write(reg);
	delayMicroseconds(50);
	Wire.write(data);
	Wire.endTransmission();
}

uint8_t twi_read (uint8_t slave, uint8_t reg, uint8_t bytes){

	Wire.beginTransmission(slave);
	Wire.write(reg);
	Wire.endTransmission();
	delayMicroseconds(50);
	uint8_t c = Wire.requestFrom(slave,bytes);
	return c;
}


void setup() {
	
	pinMode(PWM,OUTPUT);
	pinMode(DIR,OUTPUT);
	
	digitalWrite(PWM,0);
	digitalWrite(DIR,1);
	
	TCCR0B = 0x01;   

	Serial.begin(115200);
	
	Wire.begin(); 
	
	twi_write(DRV_address,0x03,0xC0); // Disable sleep, enable the Sidata bit to enable writing to registers 0b11000000

	twi_write(DRV_address,0x20,0b11001001); // Motor Param1 50KHz output freq +  motor resistance 1.4R
	twi_write(DRV_address,0x21,0b01001101); // Motor Param2 Half cycle + V constant 192mv/Hz
	
	//Default values from datasheet loaded 
	
	twi_write(DRV_address,0x22,0x2A); // Motor Param3 No idea what this is...
	twi_write(DRV_address,0x23,0x00); // SYSOPT1
	twi_write(DRV_address,0x24,0x98); // SYSOPT2
	twi_write(DRV_address,0x25,0xE4); // SYSOPT3
	twi_write(DRV_address,0x26,0x7A); // SYSOPT4
	twi_write(DRV_address,0x27,0xFC); // SYSOPT5
	twi_write(DRV_address,0x28,0x69); // SYSOPT6
	twi_write(DRV_address,0x29,0xB7); // SYSOPT7
	twi_write(DRV_address,0x2A,0xAD); // SYSOPT8
	twi_write(DRV_address,0x2B,0xcC); // SYSOPT9


	analogWrite(6,125); // PWM ~50% duty cycle to DRV 
	
}



void loop() {
	

	
}

As seen in the logic analyzer, communication is sucessful and the device returns ACK to all the written configurations:

Time [s],Packet ID,Address,Data,Read/Write,ACK/NAK

0.000111500000000,0,0xA4,0x03,Write,ACK // Disable sleep, enable the Sidata bit to enable writing to registers 0b11000000
0.000207000000000,0,0xA4,0xC0,Write,ACK

0.000543500000000,1,0xA4,0x20,Write,ACK // Motor Param1 50KHz output freq +  motor resistance 1.4R
0.000639000000000,1,0xA4,0xC9,Write,ACK

0.000976000000000,2,0xA4,0x21,Write,ACK // Motor Param2 Half cycle + V constant 192mv/Hz
0.001071500000000,2,0xA4,0x4D,Write,ACK

0.001408000000000,3,0xA4,0x22,Write,ACK // Motor Param3 No idea what this is...
0.001503500000000,3,0xA4,0x2A,Write,ACK

0.001840000000000,4,0xA4,0x23,Write,ACK // SYSOPT1
0.001935500000000,4,0xA4,0x00,Write,ACK

0.002272500000000,5,0xA4,0x24,Write,ACK // SYSOPT2
0.002367500000000,5,0xA4,0x98,Write,ACK

0.002704500000000,6,0xA4,0x25,Write,ACK // SYSOPT3
0.002800000000000,6,0xA4,0xE4,Write,ACK

0.003136500000000,7,0xA4,0x26,Write,ACK // SYSOPT4
0.003232000000000,7,0xA4,0x7A,Write,ACK

0.003568500000000,8,0xA4,0x27,Write,ACK // SYSOPT5
0.003664000000000,8,0xA4,0xFC,Write,ACK

0.004001000000000,9,0xA4,0x28,Write,ACK // SYSOPT6
0.004096000000000,9,0xA4,0x69,Write,ACK

0.004433000000000,10,0xA4,0x29,Write,ACK // SYSOPT7
0.004528500000000,10,0xA4,0xB7,Write,ACK

0.004865000000000,11,0xA4,0x2A,Write,ACK // SYSOPT8
0.004960500000000,11,0xA4,0xAD,Write,ACK

0.005297000000000,12,0xA4,0x2B,Write,ACK // SYSOPT9
0.005392500000000,12,0xA4,0xCC,Write,ACK

The only thing i can get the motor to do is to hum a little, spin for a second or so and then stop. This is repeated until i remove power from the board. The motor gets really hot and so does the IC. IT's becoming a bit frustrating. Most of the documentation is oriented towards the EVM, could someone provide some insights on this issue?

Motor Noise

(Please visit the site to view this audio)

Layout placement:

Motor:


Viewing all articles
Browse latest Browse all 262198

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>