Signal and Systems practices

Table of contents

RoadTest: Multicomp Pro - Digital Multimeter Tips and Tricks

Author: pandoramc

Creation date:

Evaluation Type: Workshop Tools

Did you receive all parts the manufacturer stated would be included in the package?: True

What other parts do you consider comparable to this product?: Fluke multimeters

What were the biggest problems encountered?: The software does not allow a full acquisition configuration

Detailed Review:

Some final practices in Signal and Systems course require especial kind of equipment to view signal properties. Validating an embedded system focused on power management,  which is the most common practice, it is necesary equipment like oscilloscope to view the PWM signal. The MP730679 has special functionality to measure some signal features and determine the correct functionality.

The code below was used on Arduino Nano to test the peripheral configuration and, in addition to external devices, read an analog signal to interpret the current flowing over a load. 

#define VREF	4.735
#define K		15.38
#define RSHUNT	21.84
#define MAX_ADC	1024.0

void USART_Transmit(uint8_t data);
uint8_t SendStream(uint8_t *S, uint8_t N);

static float alpha = VREF/MAX_ADC/K/RSHUNT;
uint8_t DATA[6] = {0x03, 0x00, 0x00, 0x00, 0x00, 0xFC};
float *s = (float*)(DATA + 1);
float ui;
float uo[2];
float b[2] = {686.48e-3, 313.51e-3};

int main(void){
	cli();
	DDRD = 0x42;
	TCCR0A = 0x83;
	TCCR0B = 0x01;
	OCR0A = 10;

	TCCR1A = 0x00;
	TCCR1B = 0x1A;
	ICR1 = 19999;
	TIMSK1 = 0x04;

	ADMUX = 0x40;
	ADCSRA = 0xA9;
	ADCSRB = 0x05;
	DIDR0 = 0x0F;

	UCSR0A = 0x00;
	UCSR0B = 0x98;
	UCSR0C = 0x06;
	UBRR0 = 103;
	sei();
	while(1){}
}

ISR(USART_RX_vect){
	OCR0A = (uint8_t)(25*(UDR0 - 48));
}

ISR(TIMER1_COMPB_vect){}

ISR(ADC_vect){	
	ui = ADCL;
	ui += (ADCH << 8);
	ui *= alpha;
	uo[0] = b[0]*ui + b[1]*uo[1];
	*s = uo[0];
	SendStream(DATA, 6);
	uo[1] = uo[0];
}

void USART_Transmit(uint8_t data){
	while (!(UCSR0A & (1<<UDRE0))){}
	UDR0 = data;
}

uint8_t SendStream(uint8_t *S, uint8_t N){
	uint8_t d;
	for(d = 0; d < N; d++){
		USART_Transmit(*(S + d));
	}
	return d;
}

The video about this experiment is below

The next video is a kind of unboxing. This video is in Spanish, I hope add the captions soon.

Anonymous