- Apakah Isyarat PWM?
- Bagaimana cara menukar isyarat PWM ke voltan Analog?
- Rajah Litar:
- Memprogramkan MSP untuk isyarat PWM:
- Mengawal Kecerahan LED dengan PWM:
Tutorial ini adalah sebahagian daripada siri tutorial LaunchPad MSP430G2 di mana kita belajar menggunakan LaunchPad MSP430G2 dari Texas Instruments. Sejauh ini kita telah mempelajari asas-asas papan dan telah merangkumi cara membaca voltan analog, LCD antara muka dengan MSP430G2 dan lain-lain. Sekarang kita meneruskan langkah seterusnya untuk belajar mengenai PWM di MSP430G2. Kami akan melakukannya dengan mengawal kecerahan LED dengan mengubah potensiometer. Oleh itu, potensiometer akan dilekatkan pada pin analog MSP430 untuk membaca voltan analognya, oleh itu disarankan untuk mengetahui melalui tutorial ADC sebelum meneruskan.
Apakah Isyarat PWM?
Pulse Width Modulation (PWM) adalah isyarat digital yang paling biasa digunakan dalam litar kawalan. Isyarat ini ditetapkan tinggi (3.3v) dan rendah (0v) dalam masa dan kelajuan yang telah ditetapkan. Masa di mana sinyal tetap tinggi disebut "tepat waktu" dan masa di mana isyarat tetap rendah disebut "waktu mati". Terdapat dua parameter penting untuk PWM seperti yang dibincangkan di bawah:
Kitaran tugas PWM:
Peratusan masa di mana isyarat PWM kekal TINGGI (tepat pada waktunya) disebut sebagai kitaran tugas. Sekiranya isyarat sentiasa AKTIF, ia berada dalam kitaran tugas 100% dan jika sentiasa mati, ia adalah kitaran tugas 0%.
Duty Cycle = Hidupkan waktu / (Hidupkan waktu + Matikan masa)
Kekerapan PWM:
Kekerapan isyarat PWM menentukan seberapa pantas PWM menyelesaikan satu tempoh. Satu Tempoh selesai ON dan OFF isyarat PWM seperti yang ditunjukkan dalam gambar di atas. Dalam tutorial kami, frekuensi menjadi 500Hz kerana itu adalah nilai lalai yang ditetapkan oleh Energia IDE.
Terdapat banyak aplikasi untuk isyarat PWM dalam masa nyata, tetapi untuk memberi anda idea, isyarat PWM dapat digunakan untuk mengawal motor servo dan juga dapat ditukar menjadi voltan Analog yang dapat mengawal kecerahan kecerahan LED. Mari belajar sedikit tentang bagaimana perkara itu dapat dilakukan.
Berikut adalah beberapa contoh PWM dengan Mikrokontroler lain:
- Menjana PWM menggunakan PIC Microcontroller dengan MPLAB dan XC8
- Kawalan Motor Servo dengan Raspberry Pi
- Dimmer LED Berasaskan Arduino menggunakan PWM
Lihat semua projek berkaitan PWM di sini.
Bagaimana cara menukar isyarat PWM ke voltan Analog?
Untuk isyarat PWM ke voltan Analog kita dapat menggunakan litar yang disebut penapis RC. Ini adalah litar yang mudah dan biasa digunakan untuk tujuan ini. Litar hanya merangkumi Resistor dan kapasitor dalam siri seperti yang ditunjukkan dalam litar di bawah.
Jadi apa yang pada dasarnya berlaku di sini ialah ketika sinyal PWM tinggi, kapasitor akan mengecas walaupun perintang dan ketika isyarat PWM rendah, kapasitor melepaskan melalui cas yang disimpan. Dengan cara ini kita akan sentiasa mempunyai voltan tetap pada output yang berkadaran dengan kitaran tugas PWM.
Dalam grafik yang ditunjukkan di atas, warna Kuning adalah isyarat PWM dan warna biru adalah voltan analog output. Seperti yang anda lihat gelombang output tidak akan menjadi gelombang DC murni tetapi ia harus berfungsi dengan baik untuk aplikasi kita. Sekiranya anda memerlukan gelombang DC tulen untuk jenis aplikasi lain, anda harus merancang litar pensuisan.
Rajah Litar:
Gambarajah litar cukup mudah; ia hanya mempunyai potensiometer dan Resistor dan kapasitor untuk membentuk litar RC dan Led itu sendiri. Potensiometer digunakan untuk memberikan voltan analog berdasarkan di mana kitaran tugas isyarat PWM dapat dikendalikan. Output periuk disambungkan ke Pin P1.0 yang dapat membaca voltan analog. Kemudian kita harus menghasilkan isyarat PWM, yang dapat dilakukan dengan menggunakan pin P1.2, isyarat PWM ini kemudian dihantar ke litar penapis RC untuk menukar isyarat PWM menjadi Analog Voltage yang kemudian diberikan kepada LED.
Adalah sangat penting untuk difahami bahawa tidak semua pin pada papan MSP dapat membaca voltan analog atau dapat menghasilkan pin PWM. Pin khusus yang dapat melakukan tugas tertentu ditunjukkan pada gambar di bawah. Sentiasa gunakan ini sebagai panduan untuk memilih pin anda untuk pengaturcaraan.
Pasang litar lengkap seperti yang ditunjukkan di atas, anda boleh menggunakan papan roti dan beberapa kabel jumper dan membuat sambungan dengan mudah. Setelah sambungan selesai, papan saya kelihatan seperti gambar di bawah.
Memprogramkan MSP untuk isyarat PWM:
Setelah perkakasan siap, kita boleh memulakan dengan pengaturcaraan kita. Perkara pertama dalam program adalah menyatakan pin yang akan kita gunakan. Di sini kita akan menggunakan pin nombor 4 (P1.2) sebagai pin output kita kerana mempunyai kemampuan untuk menghasilkan PWM. Oleh itu, kami membuat pemboleh ubah dan memberikan nama pin supaya mudah merujuknya kemudian dalam program. Program lengkap diberikan pada akhir.
int PWMpin = 4; // Kami menggunakan pin ke-4 pada modul MSP sebagai pin PWM
Selanjutnya kita masuk ke fungsi persediaan . Apa sahaja kod yang ditulis di sini akan dilaksanakan hanya sekali, di sini kami menyatakan bahawa kami menggunakan pin ke- 4 ini sebagai pin output kerana PWM adalah fungsi output. Perhatikan bahawa kami telah menggunakan pemboleh ubah PWMpin di sini dan bukannya nombor 4 supaya kodnya kelihatan lebih bermakna
batal persediaan () { pinMode (PWMpin, OUTPUT); // PEMpin ditetapkan sebagai Outptut }
Akhirnya kita masuk ke fungsi gelung . Apa sahaja yang kita tulis di sini dilaksanakan berulang kali. Dalam program ini kita harus membaca voltan analog dan menghasilkan isyarat PWM dengan sewajarnya dan ini mesti berlaku berulang kali. Oleh itu, mulakan dengan membaca voltan analog dari pin A0 kerana kita telah menyambung ke potensiometer dengannya.
Di sini kita membaca nilai menggunakan fungsi AanalogRead , fungsi ini akan mengembalikan nilai dari 0-1024 berdasarkan nilai voltan yang diterapkan pada pin. Kami kemudian menyimpan nilai ini ke pemboleh ubah yang disebut "val" seperti yang ditunjukkan di bawah
int val = analogRead (A0); // baca nilai ADC dari pin A0
Kita harus menukar nilai 0 hingga 1024 dari ADC ke nilai 0 hingga 255 untuk memberikannya ke fungsi PWM. Mengapa kita mesti menukarnya? Saya akan memberitahu bahawa tidak lama lagi, tetapi buat masa ini ingatlah bahawa kita harus menukar. Untuk menukar satu set nilai ke set nilai yang lain Energia mempunyai fungsi peta yang serupa dengan Arduino. Oleh itu, kita menukar nilai 0-1204 menjadi 0-255 dan menyimpannya kembali dalam pemboleh ubah "val".
val = peta (val , 0, 1023, 0, 255); // ADC akan memberikan nilai 0-1023 mengubahnya menjadi 0-255
Sekarang kita mempunyai nilai pemboleh ubah 0-255 berdasarkan kedudukan potensiometer. Yang harus kita lakukan adalah, gunakan nilai ini pada pin PWM ini dapat dilakukan dengan menggunakan baris berikut.
analogWrite (PWMpin, val); // Tuliskan nilai itu ke pin PWM.
Mari kembali kepada persoalan mengapa 0-255 ditulis ke pin PWM. Nilai ini 0-255 menentukan kitaran tugas isyarat PWM. Sebagai contoh jika nilai isyarat adalah 0 maka ini bermaksud kitaran tugas adalah 0% untuk 127 itu adalah 50% dan untuk 255 adalah 100% seperti apa yang ditunjukkan dan dijelaskan di bahagian atas artikel ini.
Mengawal Kecerahan LED dengan PWM:
Sebaik sahaja anda memahami perkakasan dan kod, sudah tiba masanya untuk bersenang-senang dengan kerja litar. Muat naik kod ke papan MSP430G2 dan putar tombol potensiometer. Semasa anda menghidupkan kenop, voltan pada pin 2 akan berbeza-beza yang akan dibaca oleh mikrokontroler dan mengikut voltan isyarat PWM akan dihasilkan pada pin 4. Semakin besar voltan, semakin besar pula kitaran tugas dan sebaliknya.
Isyarat PWM ini kemudian ditukar menjadi voltan analog untuk menyalakan LED. The kecerahan LED adalah berkadar terus dengan kitar tugas isyarat PWM. Selain LED di papan roti, anda juga dapat melihat smd LED (warna merah) berbeza kecerahannya sama dengan papan roti yang dipimpin. LED ini juga disambungkan ke pin yang sama, tetapi tidak mempunyai rangkaian RC sehingga ia benar-benar berkelip cepat. Anda boleh menggoyangkan papan di dalam bilik yang gelap untuk memeriksa sifatnya yang berkedip. Kerja yang lengkap juga dapat dilihat dalam video di bawah ini.
Itu semua buat masa ini, kita telah belajar bagaimana menggunakan isyarat PWM pada papan MSP430G2, dalam tutorial seterusnya kita akan belajar betapa mudahnya mengendalikan motor servo menggunakan isyarat PWM yang sama. Sekiranya anda mempunyai keraguan, hantarkannya di bahagian komen di bawah atau di forum untuk mendapatkan bantuan teknikal.