RoadTest: Infineon BLDC Shield + XMC 4700 Relax Kit + Motor
Author: swathic
Creation date:
Evaluation Type: Development Boards & 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?: Arduino UNO
What were the biggest problems encountered?: Initially I would like to replace the BLDC motor in the existing Hot air oven system due to the space limitations I could not continue but my testing and the hardware performance was up to my expectations. Planning for the alternate motor way to use the system.
Detailed Review:
Hardware:
XMC4700 Relax Kit, IXF007T BLDC Sheild, BLDC motor are the hardware received in this contest.
The pin configurations for the XMC4700 relax kit are similar to the Arduino UNO board. The pin diagram and the description are given and for more details you can visit the URL https://github.com/Infineon/XMC-for-Arduino/wiki/XMC4700-Relax-Kit. The example programs, datasheets, user manuals, IDE and libraries can downloaded from the following URLs BLDC-SHIELD_IFX007T, KIT_XMC47_RELAX_5V_AD_V1 and Arduino IDE.
Example program execution:
An example program is executed on the relax kit for verifying the pin configuration by blinking the On-board LEDs. The images and video shows perfect configuration of board and the example program is also given below.
The LEDs blinking with a time delay is shown in the video.
Sample code for assigning the XMC4700 kit GPIO pins for LEDs to blink with a time delay.
// Sample code to check whether the required libraries are installed in the IDE or not #include <arduino.h> #include <XMC4700.h> #define LIGHT1 24 // Additional LED1 #define LIGHT2 25 // Additional LED2 void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LIGHT1, OUTPUT); pinMode(LIGHT2, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(LIGHT1, HIGH); // turn the LED on (HIGH is the voltage level) digitalWrite(LIGHT2, HIGH); delay(1000); // wait for a second digitalWrite(LIGHT1, LOW); // turn the LED off by making the voltage LOW digitalWrite(LIGHT2, LOW); delay(1000); // wait for a second }
More details on interfacing the motor to the IFX007T motor shield are given in the following URL https://create.arduino.cc/projecthub/Infineon_Team/motor-control-shield-for-arduino-519633 the shield can used to connect the motor in H bridge, Half bridge and hall sensor mode.
In the below figure I had connected the BLDC fan in half Bridge mode to control the motor speed.
The video shows the operation of the BLDC motor speed in auto-mode to turn ON and OFF with a time delay.
Program to control the motor speed in Auto-mode.
/** This example code if for half-bridge application. The Motor should be connected to the Output U and GND */ #include "IFX007T-Motor-Control.h" uint8_t MotorNr = 0; uint8_t speed = 0; //Create an instance of 'IFX007TMotorControl' called 'MyMotor' IFX007TMotorControl MyMotor = IFX007TMotorControl(); void setup() { MyMotor.begin(); } void loop() { // First Argument: Choose which Motor to drive: 0 = U, 1 = V, 2 = W // Second Argument: Choose how fast it should turn: a value between 0 and 255 speed = 127; MyMotor.setUniDirMotorSpeed(MotorNr, speed); delay(9000); speed = 0; MyMotor.setUniDirMotorSpeed(MotorNr, speed); delay(9000); }
I would like to control the motor speed manual by turning it ON or OFF as the user interest by push-button.
Program code for controlling the motor manually by push-button operation.
#include <arduino.h> #include <XMC4700.h> #include "IFX007T-Motor-Control.h" #define pin_switch 26 #define pin_LED 24 uint8_t MotorNr = 0; uint8_t speed = 0; //Create an instance of 'IFX007TMotorControl' called 'MyMotor' IFX007TMotorControl MyMotor = IFX007TMotorControl(); // variables to hold the new and old switch states boolean oldSwitchState = LOW; boolean newSwitchState = LOW; boolean LEDstatus = LOW; void setup() { pinMode(pin_LED, OUTPUT); digitalWrite(pin_LED,LOW); pinMode(pin_switch, INPUT); MyMotor.begin(); } void loop() { newSwitchState = digitalRead(pin_switch); if ( newSwitchState != oldSwitchState ) { // has the button switch been closed? if ( newSwitchState == HIGH ) { if ( LEDstatus == LOW ) { digitalWrite(pin_LED, HIGH); LEDstatus = HIGH; speed = 127; MyMotor.setUniDirMotorSpeed(MotorNr, speed); } else { digitalWrite(pin_LED, LOW); LEDstatus = LOW; speed = 0; MyMotor.setUniDirMotorSpeed(MotorNr, speed); } } oldSwitchState = newSwitchState; } }
The system is working well with all different mode as of user choice it can control by the temperature operation, logic operation and can be used in various purposes. It is easy to program and configure the device to any application if the user have a basic knowledge on the Arduino boards and IDE. Thanks to the sponsoring and Element14 team for giving the opportunity to test the hardware and it performance. I felt it is very useful hardware to design any applications as the example programs and libraries are readily available.