Arduino SPWM జనరేటర్ సర్క్యూట్ - కోడ్ వివరాలు మరియు రేఖాచిత్రం

సమస్యలను తొలగించడానికి మా పరికరాన్ని ప్రయత్నించండి





ఈ పోస్ట్‌లో ఆర్డునో ద్వారా సైన్ వేవ్ పల్స్-వెడల్పు-మాడ్యులేషన్ లేదా SPWM ను ఎలా ఉత్పత్తి చేయాలో నేర్చుకుంటాము, ఇది స్వచ్ఛమైన సైన్ వేవ్ ఇన్వర్టర్ సర్క్యూట్ లేదా ఇలాంటి గాడ్జెట్‌లను తయారు చేయడానికి ఉపయోగపడుతుంది.

ది ఆర్డునో కోడ్ నా చేత అభివృద్ధి చేయబడింది మరియు ఇది నా మొదటి ఆర్డునో కోడ్, ... మరియు ఇది చాలా బాగుంది



SPWM అంటే ఏమిటి

నేను ఇప్పటికే వివరించాను ఒపాంప్స్ ఉపయోగించి SPWM ను ఎలా ఉత్పత్తి చేయాలి నా మునుపటి వ్యాసాలలో ఒకదానిలో, వివిక్త భాగాలను ఉపయోగించి మరియు దాని ప్రాముఖ్యతకు సంబంధించి దీన్ని ఎలా సృష్టించవచ్చో అర్థం చేసుకోవడానికి మీరు దాని ద్వారా వెళ్ళవచ్చు.

ప్రాథమికంగా, సైన్ వేవ్ పల్స్ వెడల్పు మాడ్యులేషన్ అంటే SPWM, ఇది ఒక రకమైన పల్స్ మాడ్యులేషన్, ఇక్కడ పప్పులు సైనూసోయిడల్ తరంగ రూపాన్ని అనుకరించటానికి మాడ్యులేట్ చేయబడతాయి, తద్వారా మాడ్యులేషన్ స్వచ్ఛమైన సైన్ వేవ్ యొక్క లక్షణాలను పొందగలదు.



ఒక SPWM ను అమలు చేయడానికి పప్పులు ప్రారంభ ఇరుకైన వెడల్పులతో మాడ్యులేట్ చేయబడతాయి, ఇవి క్రమంగా చక్రం మధ్యలో విస్తృతంగా వస్తాయి మరియు చివరికి చక్రం పూర్తి చేయడానికి చివరికి ఇరుకైనవిగా ఉంటాయి.

మరింత ఖచ్చితంగా చెప్పాలంటే, పప్పులు ఇరుకైన వెడల్పులతో మొదలవుతాయి, ఇవి ప్రతి తరువాతి పప్పులతో క్రమంగా విస్తృతంగా వస్తాయి మరియు మధ్య పల్స్ వద్ద విస్తృతంగా పొందుతాయి, దీని తరువాత, క్రమం కొనసాగుతుంది కాని వ్యతిరేక మాడ్యులేషన్‌తో ఉంటుంది, అంటే పప్పులు ఇప్పుడు క్రమంగా ఇరుకైనవిగా ప్రారంభమవుతాయి చక్రం పూర్తయ్యే వరకు.

వీడియో డెమో

ఇది ఒక SPWM చక్రం, మరియు ఇది అప్లికేషన్ ఫ్రీక్వెన్సీ (సాధారణంగా 50Hz లేదా 60Hz) ద్వారా నిర్ణయించబడిన ఒక నిర్దిష్ట రేటుతో పునరావృతమవుతుంది. సాధారణంగా, SPWM ఇన్వర్టర్లు లేదా కన్వర్టర్లలో మోస్ఫెట్స్ లేదా BJT లు వంటి శక్తి పరికరాలను నడపడానికి ఉపయోగిస్తారు.

ఈ ప్రత్యేక మాడ్యులేషన్ సరళి ఫ్లాట్ స్క్వేర్ వేవ్ చక్రాలలో సాధారణంగా చూసినట్లుగా ఆకస్మిక హాయ్ / తక్కువ వోల్టేజ్ స్పైక్‌లను విసిరే బదులు, క్రమంగా మారుతున్న సగటు వోల్టేజ్ విలువతో (RMS విలువ అని కూడా పిలుస్తారు) ఫ్రీక్వెన్సీ చక్రాలను అమలు చేస్తుందని నిర్ధారిస్తుంది.

ఇది SPWM లో క్రమంగా సవరించే PWM లను ఉద్దేశపూర్వకంగా అమలు చేస్తుంది, తద్వారా ఇది ప్రామాణిక సిన్‌వేవ్స్ లేదా సైనూసోయిడల్ వేవ్‌ఫార్మ్ యొక్క విపరీతంగా పెరుగుతున్న / పడిపోయే నమూనాను దగ్గరగా ప్రతిబింబిస్తుంది, అందువల్ల దీనికి సైనేవ్ PWM లేదా SPWM అని పేరు.

ఆర్డునోతో SPWM ను ఉత్పత్తి చేస్తుంది

పైన వివరించిన SPWM కొన్ని వివిక్త భాగాలను ఉపయోగించి సులభంగా అమలు చేయవచ్చు మరియు ఆర్డునోను కూడా ఉపయోగిస్తుంది, ఇది తరంగ రూప కాలాలతో మరింత ఖచ్చితత్వాన్ని పొందడానికి మిమ్మల్ని అనుమతిస్తుంది.

ఇచ్చిన అనువర్తనం కోసం ఉద్దేశించిన SPWM ను అమలు చేయడానికి క్రింది Arduino కోడ్‌ను ఉపయోగించవచ్చు.

అబ్బా!! ఇది చాలా పెద్దదిగా కనిపిస్తుంది, దాన్ని ఎలా తగ్గించాలో మీకు తెలిస్తే, మీ చివరలో దీన్ని సంకోచించకండి.

// By Swagatam (my first Arduino Code)
void setup(){
pinMode(8, OUTPUT)
pinMode(9, OUTPUT)
}
void loop(){
digitalWrite(8, HIGH)
delayMicroseconds(500)
digitalWrite(8, LOW)
delayMicroseconds(500)
digitalWrite(8, HIGH)
delayMicroseconds(750)
digitalWrite(8, LOW)
delayMicroseconds(500)
digitalWrite(8, HIGH)
delayMicroseconds(1250)
digitalWrite(8, LOW)
delayMicroseconds(500)
digitalWrite(8, HIGH)
delayMicroseconds(2000)
digitalWrite(8, LOW)
delayMicroseconds(500)
digitalWrite(8, HIGH)
delayMicroseconds(1250)
digitalWrite(8, LOW)
delayMicroseconds(500)
digitalWrite(8, HIGH)
delayMicroseconds(750)
digitalWrite(8, LOW)
delayMicroseconds(500)
digitalWrite(8, HIGH)
delayMicroseconds(500)
digitalWrite(8, LOW)
//......
digitalWrite(9, HIGH)
delayMicroseconds(500)
digitalWrite(9, LOW)
delayMicroseconds(500)
digitalWrite(9, HIGH)
delayMicroseconds(750)
digitalWrite(9, LOW)
delayMicroseconds(500)
digitalWrite(9, HIGH)
delayMicroseconds(1250)
digitalWrite(9, LOW)
delayMicroseconds(500)
digitalWrite(9, HIGH)
delayMicroseconds(2000)
digitalWrite(9, LOW)
delayMicroseconds(500)
digitalWrite(9, HIGH)
delayMicroseconds(1250)
digitalWrite(9, LOW)
delayMicroseconds(500)
digitalWrite(9, HIGH)
delayMicroseconds(750)
digitalWrite(9, LOW)
delayMicroseconds(500)
digitalWrite(9, HIGH)
delayMicroseconds(500)
digitalWrite(9, LOW)
}
//-------------------------------------//

పై ఆర్డునో ఆధారిత SPWM జెనరేటర్‌ను ఎలా ఉపయోగించాలో తదుపరి పోస్ట్‌లో వివరిస్తాను స్వచ్ఛమైన సిన్వేవ్ ఇన్వర్టర్ సర్క్యూట్ చేయండి .... చదువుతూ ఉండండి!

పైన పేర్కొన్న SPWM కోడ్ దాని పనితీరును మెరుగుపరచడానికి మిస్టర్ అట్టన్ చేత మరింత మెరుగుపరచబడింది, క్రింద ఇవ్వబడింది:

/*
This code was based on Swagatam SPWM code with changes made to remove errors. Use this code as you would use any other Swagatam’s works.
Atton Risk 2017
*/
const int sPWMArray[] = {500,500,750,500,1250,500,2000,500,1250,500,750,500,500} // This is the array with the SPWM values change them at will
const int sPWMArrayValues = 13 // You need this since C doesn’t give you the length of an Array
// The pins
const int sPWMpin1 = 10
const int sPWMpin2 = 9
// The pin switches
bool sPWMpin1Status = true
bool sPWMpin2Status = true
void setup()
{
pinMode(sPWMpin1, OUTPUT)
pinMode(sPWMpin2, OUTPUT)
}
void loop()
{
// Loop for pin 1
for(int i(0) i != sPWMArrayValues i++)
{
if(sPWMpin1Status)
{
digitalWrite(sPWMpin1, HIGH)
delayMicroseconds(sPWMArray[i])
sPWMpin1Status = false
}
else
{
digitalWrite(sPWMpin1, LOW)
delayMicroseconds(sPWMArray[i])
sPWMpin1Status = true
}
}
// Loop for pin 2
for(int i(0) i != sPWMArrayValues i++)
{
if(sPWMpin2Status)
{
digitalWrite(sPWMpin2, HIGH)
delayMicroseconds(sPWMArray[i])
sPWMpin2Status = false
}
else
{
digitalWrite(sPWMpin2, LOW)
delayMicroseconds(sPWMArray[i])
sPWMpin2Status = true
}
}
}




మునుపటి: జూల్ దొంగ నుండి 8 ఎక్స్ ఓవర్యూనిటీ - నిరూపితమైన డిజైన్ తర్వాత: పూర్తి ప్రోగ్రామ్ కోడ్‌తో ఆర్డునో ప్యూర్ సైన్ వేవ్ ఇన్వర్టర్ సర్క్యూట్