Wednesday, March 8, 2017

3 level Diode Clamped Multilevel Inverter based PMSM drive


Hardware Setup



PMSM voltage and Current waveforms



Performance Characteristics Data



Performance Characteristics

Space Vector Modulation implementation for 3 level NPC inverter (R - Load)

Space Vector Logic (Simulink Model)



Generating gating pulses from SV references (Simulink model)



Output waveform (R-Load)




3 level Diode Clamped Multilevel Inverter based Induction Motor Drive

Stepped Wave Logic (simulink Model)



Stepped Wave output


 Phase Voltage


SPWM logic (Simulink Model)



SPWM output

  Phase Voltage



 Line Voltage


ADRUINO code for stepped wave logic

void setup()
{
  pinMode(2,OUTPUT);
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(7,OUTPUT);
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(11,OUTPUT);
  pinMode(12,OUTPUT);
  pinMode(13,OUTPUT);
  Serial.begin(9600);
}
void loop()
{
  digitalWrite(2,HIGH);
  digitalWrite(3,HIGH);
  digitalWrite(8,HIGH);
  digitalWrite(9,HIGH);
  digitalWrite(10,HIGH);
  digitalWrite(11,HIGH);
  delayMicroseconds(3333);
  digitalWrite(2,LOW);
  digitalWrite(3,LOW);
  digitalWrite(8,LOW);
  digitalWrite(9,LOW);
  digitalWrite(10,LOW);
  digitalWrite(11,LOW);

  digitalWrite(2,HIGH);
  digitalWrite(3,HIGH);
  digitalWrite(8,HIGH);
  digitalWrite(9,HIGH);
  digitalWrite(12,HIGH);
  digitalWrite(13,HIGH);
  delayMicroseconds(3333);
  digitalWrite(2,LOW);
  digitalWrite(3,LOW);
  digitalWrite(8,LOW);
  digitalWrite(9,LOW);
  digitalWrite(12,LOW);
  digitalWrite(13,LOW);

  digitalWrite(2,HIGH);
  digitalWrite(3,HIGH);
  digitalWrite(6,HIGH);
  digitalWrite(7,HIGH);
  digitalWrite(12,HIGH);
  digitalWrite(13,HIGH);
  delayMicroseconds(3334);
  digitalWrite(2,LOW);
  digitalWrite(3,LOW);
  digitalWrite(6,LOW);
  digitalWrite(7,LOW);
  digitalWrite(12,LOW);
  digitalWrite(13,LOW);

  digitalWrite(4,HIGH);
  digitalWrite(5,HIGH);
  digitalWrite(6,HIGH);
  digitalWrite(7,HIGH);
  digitalWrite(12,HIGH);
  digitalWrite(13,HIGH);
  delayMicroseconds(3333);
  digitalWrite(4,LOW);
  digitalWrite(5,LOW);
  digitalWrite(6,LOW);
  digitalWrite(7,LOW);
  digitalWrite(12,LOW);
  digitalWrite(13,LOW);

  digitalWrite(4,HIGH);
  digitalWrite(5,HIGH);
  digitalWrite(6,HIGH);
  digitalWrite(7,HIGH);
  digitalWrite(10,HIGH);
  digitalWrite(11,HIGH);
  delayMicroseconds(3333);
  digitalWrite(4,LOW);
  digitalWrite(5,LOW);
  digitalWrite(6,LOW);
  digitalWrite(7,LOW);
  digitalWrite(10,LOW);
  digitalWrite(11,LOW);


  digitalWrite(4,HIGH);
  digitalWrite(5,HIGH);
  digitalWrite(8,HIGH);
  digitalWrite(9,HIGH);
  digitalWrite(10,HIGH);
  digitalWrite(11,HIGH);
  delayMicroseconds(3334);
  digitalWrite(4,LOW);
  digitalWrite(5,LOW);
  digitalWrite(8,LOW);
  digitalWrite(9,LOW);
  digitalWrite(10,LOW);
  digitalWrite(11,LOW);
}






Arduino based Remote controlled servo - motorized pot





//////// ARDUINO
///////code by V. SaiKiran.......https://www.facebook.com/saikiran27


#include <IRremote.h>
#include <Servo.h>
Servo front;  // create servo object to control a servo
Servo center;
Servo rear;
Servo bass;
int LED=0;  //power status initially set OFF
int pos1=10;    // variable to store the servo position
int pos2=10;
int pos3=10;
int pos4=10;
int x=10;  // increment or decrement angle of any servo
int RECV_PIN = 11; //out pin of tsop sensor

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  front.attach(10);  // attaches the servo on pin 10 to the servo object
  front.write(10);
  center.attach(9);
  center.write(10);
  rear.attach(6);
  rear.write(10);
  bass.attach(5);
  bass.write(10);
  pinMode(13,OUTPUT);
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}


void loop()
{
  if (irrecv.decode(&results))
  {
    Serial.println(results.value);
 
//POWER LOOP
    if(results.value==284131455)
    {
      if(LED==0)
      {
        LED=1;
        digitalWrite(13,HIGH);
      }
      else
      if(LED==1)
      {
        LED=0;
        digitalWrite(13,LOW);
      }
    }
//RESET LOOP
    if(results.value==284119215)
    {
      pos1=30;
      pos2=30;
      pos3=30;
      pos4=30;
      front.write(pos1);
      center.write(pos2);
      rear.write(pos3);
      bass.write(pos4);
      delay(15);
    }
//MUTE LOOP
      if(results.value==284151855)
    {
      pos1=10;
      pos2=10;
      pos3=10;
      pos4=10;
      front.write(pos1);
      center.write(pos2);
      rear.write(pos3);
      bass.write(pos4);
      delay(15);
    }  
//FRONT LOOP
    if (results.value==284157975)
    {
      pos1+=x;
      Serial.println(pos1);
      if(10<pos1<170)
      {
        front.write(pos1);
        delay(15);
      }
      else
      {
        pos1-=x;
      }
    }
    if (results.value==284104935)
    {
      pos1-=x;
      Serial.println(pos1);
      if(10<pos1<170)
      {
        front.write(pos1);
        delay(15);
      }
      else
      {
        pos1+=x;
      }
    }
 
//CENTER LOOP
    if (results.value==284141655)
    {
      pos2+=x;
      Serial.println(pos2);
      if(10<pos2<170)
      {
        center.write(pos2);
        delay(15);
      }
      else
      {
        pos2-=x;
      }
    }
    if (results.value==284109015)
    {
      pos2-=x;
      Serial.println(pos2);
      if(10<pos2<170)
      {
        center.write(pos2);
        delay(15);
      }
      else
      {
        pos2+=x;
      }
    }
 
//REAR LOOP
    if (results.value==284125335)
    {
      pos3+=x;
      Serial.println(pos3);
      if(10<pos3<170)
      {
        rear.write(pos3);
        delay(15);
      }
      else
      {
        pos3-=x;
      }
    }
    if (results.value==284106975)
    {
      pos3-=x;
      Serial.println(pos3);
      if(10<pos3<170)
      {
        rear.write(pos3);
        delay(15);
      }
      else
      {
        pos3+=x;
      }
    }

//MASTER VOLUME LOOP
    if(results.value==284102895)
    {
      pos1+=x;
      pos2+=x;
      pos3+=x;
      pos4+=x;
      if(10<pos1&&pos2&&pos3&&pos4<170)
      {
        front.write(pos1);
        center.write(pos2);
        rear.write(pos3);
        bass.write(pos4);
        delay(15);
      }
      else
      {
        pos1-=x;
        pos2-=x;
        pos3-=x;
        pos4-=x;
      }
    }
    if(results.value==284100855)
    {
      pos1-=x;
      pos2-=x;
      pos3-=x;
      pos4-=x;
      if(10<pos1&&pos2&&pos3&&pos4<170)
      {
        front.write(pos1);
        center.write(pos2);
        rear.write(pos3);
        bass.write(pos4);
        delay(15);
      }
      else
      {
        pos1+=x;
        pos2+=x;
        pos3+=x;
        pos4+=x;
      }
    }
//BASS LOOP
    if (results.value==284098815)
    {
      pos4+=x;
      Serial.println(pos4);
      if(10<pos4<170)
      {
        bass.write(pos4);
        delay(15);
      }
      else
      {
        pos4-=x;
      }
    }
    if (results.value==284113095)
    {
      pos4-=x;
      Serial.println(pos4);
      if(10<pos4<170)
      {
        bass.write(pos4);
        delay(15);
      }
      else
      {
        pos4+=x;
      }
    }
    irrecv.resume(); // Receive the next value
  }
}

1KW DC motor as Servo motor





Servo Operation





One Second Oscillations




10 Seconds Oscillations








//////// ARDUINO
///////code by V. SaiKiran.......https://www.facebook.com/saikiran27


 void setup()
 {
   pinMode(A0,INPUT);
   pinMode(A2,INPUT);
   pinMode(9,OUTPUT);
   pinMode(11,OUTPUT);
   pinMode(13,OUTPUT);
   digitalWrite(9,LOW);
   digitalWrite(11,LOW);
   Serial.begin(9600);

 }int x=0;
   int y=0;
 void loop()
 {
 
   int val;
   int ref;
   int valm;
   int refm;
   val=analogRead(A2);
   valm=map(val,0,1023,0,100);
   //Serial.println(val);
  Serial.println(valm);
   //Serial.println(x);
   //Serial.println(y);
   ref=analogRead(A0);
   refm=map(ref,0,1023,0,100);
   Serial.println(refm);
   //delay(10);
   if((valm)>(refm+3))
   {
     digitalWrite(9,HIGH);
     x=valm-refm;
     delay(10);
    // delay(map(x,0,30,1,5));
     digitalWrite(9,LOW);
   }
   else
  {
    //delay(10);
   if((valm)<(refm-3))
   {
     digitalWrite(11,HIGH);
     y=refm-valm;
     delay(10);
     //delay(map(y,0,30,1,5));
     digitalWrite(11,LOW);
   }

  }
 
 }

Boost Converter (12v to 120v) using ARDUINO




Solar Car

Solar Powered Electric Car Specifications: 1. Solar Panels -----  3 x 120W 2. BLDC Motor ------ 48v, 3KW  3. BLDC Motor Contro...