పల్స్ వెడల్పు మాడ్యులేషన్ (పిడబ్ల్యుఎం) అనేది వేవ్ ఫ్రీక్వెన్సీని స్థిరంగా ఉంచేటప్పుడు పల్స్ యొక్క వెడల్పును మారుస్తుంది. పిడబ్ల్యుఎం టెక్నిక్ ప్రధానంగా ఎల్ఇడి యొక్క ప్రకాశాన్ని, డిసి మోటారు వేగాన్ని నియంత్రించడానికి, సర్వో మోటారును నియంత్రించడానికి లేదా ఇతర సందర్భాల్లో, డిజిటల్ మూలాన్ని ఉపయోగించి అనలాగ్ సిగ్నల్ను ఉత్పత్తి చేయాల్సి ఉంటుంది. మేము మునుపటి వ్యాసంలో పిడబ్ల్యుఎం గురించి వివరంగా వివరించాము.
ఈ ట్యుటోరియల్లో, మేము ESP32 డెవలప్మెంట్ బోర్డు యొక్క PWM (పల్స్ వెడల్పు మాడ్యులేషన్) పిన్ల గురించి మాట్లాడబోతున్నాం. PWM సిగ్నల్ పొందడానికి ESP32 డెవలప్మెంట్ బోర్డ్ యొక్క అన్ని GPIO పిన్లు (పవర్, GND, Tx, Rx మరియు EN మినహా) ఉపయోగించవచ్చు. AN గా ESP32 PWM ఉదాహరణకు, మేము ఒక సాధారణ సర్క్యూట్ నిర్మించడానికి చేస్తాము PWM సంకేతాలు ప్రకారం LED ప్రకాశం మార్పులు.
భాగాలు అవసరం
- ESP32
- LED
- 330 రెసిస్టర్
- 10 కే పాట్
- బ్రెడ్బోర్డ్
పిడబ్ల్యుఎం జనరేషన్
ESP32 లో PWM తరాన్ని వివరించే ముందు, PWM తో అనుబంధించబడిన కొన్ని నిబంధనలను చర్చిద్దాం.
టన్ను (సమయానికి): సిగ్నల్ ఎక్కువగా ఉన్నప్పుడు వ్యవధి.
TOFF (ఆఫ్ టైమ్): సిగ్నల్ తక్కువగా ఉన్నప్పుడు వ్యవధి.
కాలం: ఇది పిడబ్ల్యుఎం సిగ్నల్ యొక్క సమయం మరియు ఆఫ్ సమయం.
టోటల్పెరియోడ్ = టి ఆన్ + టి ఆఫ్
డ్యూటీ సైకిల్: పిడబ్ల్యుఎం సిగ్నల్ కాలంలో సిగ్నల్ ఎక్కువగా ఉన్న సమయం శాతం.
డ్యూటీ సైకిల్ = టి ఆన్ / టి మొత్తం * 100
ఉదాహరణకు, మొత్తం 10ms వ్యవధి కలిగిన పల్స్ 5ms కోసం ON (high) గా ఉంటే. అప్పుడు, విధి చక్రం ఇలా ఉంటుంది:
డ్యూటీ సైకిల్ = 5/10 * 100 = 50% డ్యూటీ సైకిల్
సర్క్యూట్లో ఒకే LED, ఒక రెసిస్టర్ మరియు 10K పొటెన్షియోమీటర్ ఉన్నాయి. LED యొక్క నెగటివ్ పిన్ 330 Ω రెసిస్టర్ ద్వారా ESP32 యొక్క GND కి అనుసంధానించబడి ఉంది. మీరు 230 Ω మరియు 500 between మధ్య ఏదైనా రెసిస్టర్ విలువను ఉపయోగించవచ్చు. LED పాజిటివ్ పిన్ను GPIO 16 కి మరియు పాట్ యొక్క సిగ్నల్ పిన్ను ESP32 యొక్క ADC1 (VP) పిన్కు కనెక్ట్ చేయండి.
ESP32 PWM కోసం కోడ్ వివరణ
పూర్తి కోడ్ పేజీ చివరిలో ఇవ్వబడుతుంది.
ఈ కోడ్కు లైబ్రరీ అవసరం లేదు, కాబట్టి పిన్ను నిర్వచించడం ద్వారా మీ కోడ్ను ప్రారంభించండి, LED జతచేయబడుతుంది. నా విషయంలో, నేను LED ని కనెక్ట్ చేయడానికి GPIO 16 ను ఉపయోగించాను.
const int ledPin = 16; // 16 GPIO16 కు అనుగుణంగా ఉంటుంది
ఆ తరువాత, PWM సిగ్నల్ లక్షణాలను తదుపరి పంక్తులలో సెట్ చేయండి. నేను పిడబ్ల్యుఎం ఫ్రీక్వెన్సీని 9000 కి, రిజల్యూషన్ను 10 కి సెట్ చేసాను, మీరు వేర్వేరు పిడబ్ల్యుఎం సిగ్నల్లను ఉత్పత్తి చేయడానికి దాన్ని మార్చవచ్చు. ESP32 బోర్డులు 1 బిట్ నుండి 16 బిట్ల వరకు PWM రిజల్యూషన్కు మద్దతు ఇస్తాయి. మీరు PWM ఛానెల్ని కూడా ఎంచుకోవాలి. ESP32 మొత్తం 16 (0 నుండి 15) PWM ఛానెల్లను కలిగి ఉంది.
const int freq = 9000; const int ledChannel = 0; const int resolution = 10;
ఇప్పుడు శూన్య సెటప్ () ఫంక్షన్ లోపల, లెడ్సిసెట్అప్ () ఫంక్షన్ను ఉపయోగించి మీరు ఇంతకు ముందు సెట్ చేసిన లక్షణాలతో LED PWM ని కాన్ఫిగర్ చేయండి. తదుపరి పంక్తిలో, LED అనుసంధానించబడిన GPIO పిన్ను నిర్వచించండి. LedcAttachPin () ఫంక్షన్ GPIO పిన్ మరియు ఆ సిగ్నల్ ఏర్పడుతోంది ఛానల్ నిర్వచించడానికి ఉపయోగించబడుతుంది. నా విషయంలో, నేను GPIO 16 మరియు ఛానల్ 0 కి అనుగుణంగా ఉండే లెడ్చానెల్ అనే లెడ్పిన్ను ఉపయోగించాను.
శూన్య సెటప్ () {Serial.begin (9600); ledcSetup (ledChannel, freq, resolution); ledcAttachPin (ledPin, ledChannel); }
లో గర్జన లూప్, పాట్ అనుసంధానం అనలాగ్ పిన్ చదివి అనే వేరియబుల్ పఠనం నిల్వ 'dutyCycle' . పొటెన్షియోమీటర్ యొక్క భ్రమణం ప్రకారం LED ప్రకాశం పెరుగుతుంది లేదా తగ్గుతుంది. LedcWrite () చాలా పోలి ఉంటుంది analogWrite ().
void loop () {dutyCycle = అనలాగ్ రీడ్ (A0); ledcWrite (ledChannel, dutyCycle); ఆలస్యం (15); }
ESP32 PWM సిగ్నల్స్ పరీక్షిస్తోంది
ESP32 PWM సిగ్నల్లను పరీక్షించడానికి, సర్క్యూట్ రేఖాచిత్రం ప్రకారం LED మరియు పొటెన్టోమీటర్ను కనెక్ట్ చేయండి మరియు మీ ESP32 కు కోడ్ను అప్లోడ్ చేయండి. మీకు సరైన బోర్డు మరియు COM పోర్ట్ ఎంచుకున్నట్లు నిర్ధారించుకోండి. ఇప్పుడు LED ప్రకాశాన్ని పెంచడానికి లేదా తగ్గించడానికి పొటెన్షియోమీటర్ను తిప్పండి.
పూర్తి పని క్రింద ఇచ్చిన వీడియోలో చూపబడింది. అలాగే, లింక్ను అనుసరించడం ద్వారా ఇతర ESP32 ఆధారిత ప్రాజెక్టులను తనిఖీ చేయండి.