Arduino SPWM Generator Circuit - குறியீடு விவரங்கள் மற்றும் வரைபடம்

சிக்கல்களை அகற்ற எங்கள் கருவியை முயற்சிக்கவும்





இந்த இடுகையில், ஆர்டுயினோ மூலம் சைன் அலை துடிப்பு-அகலம்-பண்பேற்றம் அல்லது SPWM ஐ எவ்வாறு உருவாக்குவது என்பதைக் கற்றுக்கொள்கிறோம், இது ஒரு தூய சைன் அலை இன்வெர்ட்டர் சுற்று அல்லது ஒத்த கேஜெட்களை உருவாக்க பயன்படுகிறது.

தி அர்டுயினோ குறியீடு என்னால் உருவாக்கப்பட்டது, இது எனது முதல் அர்டுயினோ குறியீடு, ... இது மிகவும் நன்றாக இருக்கிறது



SPWM என்றால் என்ன

நான் ஏற்கனவே விளக்கினேன் ஓப்பம்ப்களைப் பயன்படுத்தி SPWM ஐ எவ்வாறு உருவாக்குவது எனது முந்தைய கட்டுரைகளில் ஒன்றில், தனித்துவமான கூறுகளைப் பயன்படுத்தி அதை எவ்வாறு உருவாக்க முடியும் என்பதைப் புரிந்துகொள்வதற்கும் அதன் முக்கியத்துவத்தைப் பற்றியும் நீங்கள் அறிந்து கொள்ளலாம்.

அடிப்படையில், சைன் அலை துடிப்பு அகல பண்பேற்றத்தைக் குறிக்கும் SPWM என்பது ஒரு வகை துடிப்பு பண்பேற்றம் ஆகும், அங்கு பருப்பு வகைகள் ஒரு சைனூசாய்டல் அலைவடிவத்தை உருவகப்படுத்த மாற்றியமைக்கப்படுகின்றன, இதனால் பண்பேற்றம் தூய சைன் அலையின் பண்புகளை அடைய முடியும்.



ஒரு SPWM ஐ செயல்படுத்த பருப்பு வகைகள் ஆரம்ப குறுகலான அகலங்களுடன் மாற்றியமைக்கப்படுகின்றன, அவை படிப்படியாக சுழற்சியின் மையத்தில் அகலமடைகின்றன, இறுதியாக சுழற்சியை முடிக்க முடிவில் குறுகலாக இருக்கும்.

இன்னும் துல்லியமாகச் சொல்வதானால், பருப்பு வகைகள் குறுகிய அகலங்களுடன் தொடங்குகின்றன, அவை படிப்படியாக ஒவ்வொரு அடுத்தடுத்த பருப்புகளுடன் விரிவடைகின்றன, மேலும் மைய துடிப்பில் அகலமாகின்றன, இதற்குப் பிறகு, வரிசை தொடர்கிறது, ஆனால் எதிர் பண்பேற்றத்துடன், அதாவது பருப்பு வகைகள் இப்போது படிப்படியாக குறுக ஆரம்பிக்கின்றன சுழற்சி முடியும் வரை.

வீடியோ டெமோ

இது ஒரு SPWM சுழற்சியை உருவாக்குகிறது, மேலும் இது பயன்பாட்டு அதிர்வெண் (வழக்கமாக 50Hz அல்லது 60Hz) தீர்மானித்தபடி ஒரு குறிப்பிட்ட விகிதத்தில் மீண்டும் நிகழ்கிறது. பொதுவாக, இன்வெர்ட்டர்கள் அல்லது மாற்றிகள் உள்ள மோஸ்ஃபெட்ஸ் அல்லது பிஜேடி போன்ற சக்தி சாதனங்களை இயக்க SPWM பயன்படுத்தப்படுகிறது.

தட்டையான சதுர அலை சுழற்சிகளில் பொதுவாகக் காணப்பட்ட திடீர் ஹாய் / குறைந்த மின்னழுத்த கூர்முனைகளை வீசுவதற்குப் பதிலாக, படிப்படியாக மாறும் சராசரி மின்னழுத்த மதிப்புடன் (ஆர்எம்எஸ் மதிப்பு என்றும் அழைக்கப்படுகிறது) அதிர்வெண் சுழற்சிகள் செயல்படுத்தப்படுவதை இந்த சிறப்பு பண்பேற்றம் முறை உறுதி செய்கிறது.

இது ஒரு SPWM இல் படிப்படியாக மாற்றும் PWM களை வேண்டுமென்றே செயல்படுத்துகிறது, இதனால் இது ஒரு நிலையான சைன்வேவ்ஸ் அல்லது சைனூசாய்டல் அலைவடிவத்தின் அதிவேகமாக உயரும் / வீழ்ச்சியுறும் வடிவத்தை நெருக்கமாக பிரதிபலிக்கிறது, எனவே சைன்வேவ் PWM அல்லது SPWM என்று பெயர்.

Arduino உடன் SPWM ஐ உருவாக்குகிறது

மேலே விளக்கப்பட்ட SPWM ஐ ஒரு சில தனித்தனி பகுதிகளைப் பயன்படுத்தி எளிதாக செயல்படுத்த முடியும், மேலும் Arduino ஐப் பயன்படுத்துவதால் அலைவடிவ காலங்களுடன் அதிக துல்லியத்தைப் பெற இது உங்களுக்கு உதவும்.

கொடுக்கப்பட்ட பயன்பாட்டிற்கான நோக்கம் கொண்ட 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)
}
//-------------------------------------//

மேலே உள்ள Arduino அடிப்படையிலான 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 எக்ஸ் அதிகப்படியான - நிரூபிக்கப்பட்ட வடிவமைப்பு அடுத்து: முழு நிரல் குறியீட்டைக் கொண்ட Arduino தூய சைன் அலை இன்வெர்ட்டர் சுற்று