Wednesday, March 8, 2017
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 VoltageADRUINO 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);
}
}
}
Tuesday, February 21, 2017
Multilevel inverter (5 level) based variable frequency drive
Concept:
Important parts :
1. Induction motor (0.5hp, 230V, 1.5A)
2. Mosfets / IGBTs based on the machine voltage and current ratings.
3. No. of DC power supplies (depends on no. of levels).
Two power supplies - two mosfet bridges for 3 level
Four power supplies - four mosfet bridges for 5 level
4. Each power supply consists of a rectifier bridge, filter capacitor and a fuse.
5. Each power supply will be conncetd to the MOSFET bridge.
6. The MOSFET bridges should be coonected to the power supplies.(The following Figure is for 9 level)
7. 89s52 microcontroller is programmed in my project according to the switching logic of
Cascaded inverter.
8. The signals from MC will be given to the mosfet bridges through the optocoupler unit.
9. Optocoupler unit requires seperate power supplies. A multiwinding transformer is used in
my project to excite the optocoupler transistor.
We have re-wound the transformer as per our requirements. We just disassembled a transformer and calculated the number of turns required and then fixed it back.
This multilevel inverter is tested with a resistive load. Two transformers are used as the main power supplies. each 12V. The filtered output gave 18V for each bridge. The three levels are 0v 18v 36v.
Monday, March 10, 2014
Tower Pro Micro servo 99 sg90 control
Tower Pro Micro servo 99 sg90 control.
The inbuilt controller of servo is already programmed with a closed loop control system using a pot. All that required is to give a pulse train with 5% to 10% duty cycle with 20ms as period.
Most schematics on the internet shows a direct connection between micro controller and servo control pin. That is not correct.
It is required to use a buffer/ current driver for the servo. Use a transistor to connect control pin to micro controller.
The inbuilt controller of servo is already programmed with a closed loop control system using a pot. All that required is to give a pulse train with 5% to 10% duty cycle with 20ms as period.
Most schematics on the internet shows a direct connection between micro controller and servo control pin. That is not correct.
It is required to use a buffer/ current driver for the servo. Use a transistor to connect control pin to micro controller.
The code:
#include<reg52.h>
sbit servo_pin = P1^0;
void delay(unsigned int);
void main()
{
int k,i=0,a[4]={6,12,21,12};
pin = 0;
while(1)
{
for(k=0;k<100;k++)
{
servo_pin=1;
delay(a[i]); // a[i] is Ton period (Ton is precalculated)
servo_pin=0; // The array a[i] values are calculated to stop the motor at 0, 90 and 180 degrees
delay(200-a[i]); //200 represents 20ms(i.e., 200x0.1ms)
} //200-a[i] is Toff(=T-Ton=20-Ton)
i++;
if(i==4)
i=0;
}
}
void delay(unsigned int ms) \\ delay for 0.1ms (tested on oscilloscope)
{
int i,j;
for(i=0;i<ms;i++)
for(j=0;j<11;j++);
}
Subscribe to:
Posts (Atom)
Solar Car
Solar Powered Electric Car Specifications: 1. Solar Panels ----- 3 x 120W 2. BLDC Motor ------ 48v, 3KW 3. BLDC Motor Contro...
-
Concept: Important parts : 1. Induction motor (0.5hp, 230V, 1.5A) ...
-
Thyristor controlled capacitor. It is a static VAR compensator designed to make unity power factor operation of a three phase induc...
-
Solar Powered Electric Car Specifications: 1. Solar Panels ----- 3 x 120W 2. BLDC Motor ------ 48v, 3KW 3. BLDC Motor Contro...




















