Mengapa beberapa pin memiliki tanda `~` di sebelah nomor mereka?

32

Saya melihat saya Arduino Uno dan saya melihat simbol bahwa dengan pin digital 11, 10, 9, 6, 5, dan 3. Apa artinya ini? Apakah ini mempengaruhi cara kerjanya? Bisakah saya menggunakan pin ini untuk situasi tertentu?

Penguin Anonim
sumber
19
Simbol tilde berarti "kira-kira". Seperti pada, "ini kira-kira pin 11". Selama proses mfg, pin dapat bergeser sedikit. Jarang akan pin 11 persis 11. Biasanya itu sedikit lebih atau sedikit kurang dari 11. Pin yang memiliki kecenderungan meningkat cenderung akan dilambangkan dengan simbol ~. :)
6
@AnnonomusPerson David bersikap jenaka, yang tidak segera jelas jika Anda tidak terbiasa dengan pinout dan sejenisnya.
Shamtam
7
@Shamtam: Atau jika Anda tidak terbiasa dengan David :)
Chris Laplante

Jawaban:

31

Bersantai. Jangan khawatir. Pin ini dipanggil PWMdan sama dengan pin lainnya, kecuali mereka memiliki "bonus tambahan."


Beberapa kegunaan dari Situs Web Arduino :

  • Peredupan LED
  • Mensimulasikan output analog. Outputnya masih beralih secara digital dari 0V ke 5V. Namun, low-pass filter (kapasitor dan resistor) untuk mensimulasikan tegangan analog.
  • Menghasilkan sinyal audio.
  • Menyediakan kontrol kecepatan variabel untuk motor.
  • Menghasilkan sinyal termodulasi, misalnya untuk menggerakkan LED inframerah untuk remote control.

Bagaimana itu bekerja:

Pin PWM dikendalikan oleh pengatur waktu on-chip yang mengaktifkan pin secara otomatis pada kecepatan sekitar 490Hz. "Pulse Width Modulation" (PWM) adalah berapa lama pin tetap hidup atau mati untuk satu siklus frekuensi itu. Ini dapat meredupkan LED dengan memberikan ilusi setengah kecerahan seperti sebelumnya, di mana itu benar-benar berkedip sangat cepat. Gambar siklus tugas yang berbeda.

Ketika ada siklus tugas 25%, itu adalah salah satu dari waktu. Jika Anda menggunakan LED, akan muncul sekitar 1/4 sebagai terang [memberi atau menerima]. (Catatan: seperti yang ditunjukkan oleh beberapa orang ini tidak benar - benar proporsional, tetapi mari kita biarkan seperti ini untuk kesederhanaan. EX: 25% tidak selalu 1/4 kecerahannya.)

(Jika Anda benar-benar mahir dalam hal listrik, Anda mungkin dapat menambahkan kapasitor untuk membuatnya juga output analog.)


Cara menggunakan pin ini untuk menghasilkan:

Pertama, Anda perlu mendefinisikan pin sebagai output. Kemudian, Anda gunakan analogWrite(ledPin, 128); untuk memulainya. The ledPinadalah pin PWM yang Anda ingin memulai PWM dan 128harus diganti dengan angka antara 0dan 255; 0: 0% duty cycle(Ternyata pin sepenuhnya off) dan 255: 100% duty cycle. (nyalakan pin sepenuhnya)

Sumber: http://www.arduino-tutorials.com/arduino-pwm/


Mengapa saya tidak bisa menyalakan dan mematikan lampu dengan sangat cepat dalam kode saya ?:

Secara teknis, Anda dapat, namun, ada beberapa masalah:

  • Ini mungkin tidak setepat menggunakan sirkuit bawaan dengan Arduino
  • Lebih mudah hanya mengetik instruksi daripada memiliki banyak pernyataan "jika"

Ini tidak benar-benar akan membuat banyak perbedaan jika tujuan Arduino adalah untuk menghasilkan sinyal PWM. Namun, jika Anda menunda lebih lama dari 50 MS di loop utama, itu akan mengacaukan waktunya. Dengan pendekatan perangkat lunak Anda ingin menghilangkan fungsi "penundaan" karena Arduino hanya berjalan pada satu utas (hanya dapat melakukan satu hal pada satu waktu). Jika Anda tahu apa yang Anda lakukan, itu tidak akan membuat banyak perbedaan meredupkan cahaya, tetapi jika Anda memiliki pin tambahan dengan PWM, Anda hanya membuang-buang waktu dengan pendekatan perangkat lunak.


Seperti yang orang lain tunjukkan:

Anda masih memerlukan resistor untuk sirkuit Anda untuk membatasi arus dan tegangan. Anda tidak dapat melewati ini.

Penguin Anonim
sumber
1
Saya tidak tahu apa yang Anda maksud dengan "kekuatan pemrosesan" (atau apa pun arti ungkapan itu). PWM berfungsi karena dipicu oleh penghitung waktu yang menjalankan independen dari kode yang sedang berjalan.
baldengineer
@ JamesC4S Maksud saya membuat keseluruhan kode lebih lambat jika Anda menambahkan penundaan dan itu akan "Aktif" dan "mati." Prosesor hanya dapat melakukan banyak hal per detik sebelum terlalu panas sehingga mengontrol seberapa cepat berjalan.
Penguin Anonim
@AnnonomusPerson Anda harus lebih jelas dalam jawaban yang Anda berikan. Saya masih gagal melihat apa yang ada hubungannya dengan "kekuatan pemrosesan". Misalnya, Anda dapat menulis rutin PWM yang tidak menggunakan delay (), menggunakan millis () misalnya, yang akan memiliki dampak minimal pada kecepatan eksekusi untuk sisa kode.
baldengineer
1
@AnnonomusPerson: Saya akan mengatakan bahwa ada dua cara menerapkan PWM dalam kode: salah satu dapat memiliki prosesor melakukan PWM dalam satu lingkaran yang tidak melakukan apa pun kecuali mungkin memutuskan kapan harus keluar, atau orang dapat memiliki timer-tick interrupt melakukan PWM. Dalam situasi sebelumnya, prosesor tidak akan dapat melakukan hal lain ketika PWM terjadi; pada yang terakhir, Akan ada batasan untuk keakuratan dan ketepatan waktu PWM. Rangkaian PWM perangkat keras memungkinkan chip menghasilkan bentuk gelombang PWM bersih yang akurat dalam faksi mikrodetik saat melakukan hal-hal lain.
supercat
Perhatikan bahwa berkat cara penglihatan bekerja, LED dengan 1/4 DC (atau rasio lainnya) tidak akan selalu muncul fraksi yang sesuai dari kecerahan penuh.
Ignacio Vazquez-Abrams
7

Kesalahpahaman umum tentang pin PWM adalah bahwa ketika menggunakan PWM, tidak perlu menggunakan resistor pembatas arus (misalnya, dengan LED).

Ini tidak benar. Pin PWM harus dianggap sebagai pin digital, yang dihidupkan dan dimatikan secara otomatis. Ini berarti mereka pergi ke tegangan TINGGI yang sama dengan pin lainnya.

Saat menggunakan LED dengan PWM, Anda harus tetap menggunakan resistor pembatas saat ini. Saat menggunakan motor dengan PWM, Anda harus (hampir selalu) menggunakan transistor.

baldengineer
sumber
2
@AnnonomusPerson Tidak, itu tidak benar. Anda masih membutuhkan pembatas saat ini untuk LED bahkan jika Anda memiliki output analog yang sebenarnya. LED membutuhkan sumber arus konstan, bukan sumber tegangan konstan.
baldengineer
3
Anda bisa mendapatkan LED dengan resistor pembatas arus terpasang. Saya sangat kecewa ketika saya meminta LED di Maplin dan resistor yang cocok untuk menjalankannya 12V ketika mereka mengatakan kepada saya mereka memiliki yang menjalankan langsung dari 12V. Heh, tunggu saja sampai mereka mencoba mengemas banyak transistor menjadi satu paket untuk membuat gerbang AND atau semacamnya.
Andrew Morton