Агуулгын хүснэгт:

Arduino таймер: 8 төсөл: 10 алхам (зурагтай)
Arduino таймер: 8 төсөл: 10 алхам (зурагтай)

Видео: Arduino таймер: 8 төсөл: 10 алхам (зурагтай)

Видео: Arduino таймер: 8 төсөл: 10 алхам (зурагтай)
Видео: Leslie Kean on David Grusch (UFO Whistleblower): Non-Human Intelligence, Recovered UFOs, UAP, & more 2024, Оны зургадугаар сарын
Anonim
Arduino таймер: 8 төсөл
Arduino таймер: 8 төсөл

Arduino Uno эсвэл Nano гурван суурилуулсан таймер ашиглан зургаан зориулалтын зүү дээр үнэн зөв дижитал дохио үүсгэх боломжтой. Тэд ажиллуулахын тулд ямар ч CPU -ийн мөчлөгийг тохируулах, ашиглахын тулд хэд хэдэн тушаалыг л шаарддаг!

Хэрэв та тайлбартаа зориулагдсан 90 хуудас бүхий ATMEGA328 өгөгдлийн хүснэгтээс эхэлбэл таймерыг ашиглах нь аймшигтай болно! Arduino-ийн хэд хэдэн командууд таймеруудыг аль хэдийн ашигладаг, жишээлбэл millis (), delay (), tone (), AnalogWrite () болон servo номын сан. Гэхдээ бүрэн хүчээ ашиглахын тулд та тэдгээрийг бүртгэлээр тохируулах хэрэгтэй болно. Үүнийг хялбар, ил тод болгохын тулд би энд зарим макро болон функцүүдийг хуваалцаж байна.

Таймеруудын талаар маш товч тойм хийсний дараа таймер ашиглан дохио үүсгэхэд тулгуурладаг 8 гайхалтай төслийг дагана уу.

Алхам 1: Шаардлагатай бүрэлдэхүүн хэсгүүд

Шаардлагатай бүрэлдэхүүн хэсгүүд
Шаардлагатай бүрэлдэхүүн хэсгүүд

Бүх 8 төслийг хийхийн тулд танд дараахь зүйлс хэрэгтэй болно.

  • Arduino Uno эсвэл нийцтэй
  • Мини протобортой прототип бамбай
  • Талхтай 6 холбогч кабель
  • 6 ширхэг богино талхтай үсрэгч
  • 2 матрын хар тугалга
  • 1 цагаан 5 мм -ийн LED
  • 220 Ом эсэргүүцэл
  • 10 кОм эсэргүүцэл
  • 10 кОм потенциометр
  • 2 керамик 1 мФ конденсатор
  • 1 электролитийн 10 мФ конденсатор
  • 2 диод, 1n4148 эсвэл үүнтэй төстэй
  • 2 бичил servo мотор SG90
  • 18Ohm чанга яригч
  • 20м нимгэн (0.13мм) паалантай утас

Алхам 2: Дохио үүсгэх Arduino таймеруудын тойм

Timer0 ба timer2 нь 8 битийн таймер бөгөөд энэ нь хамгийн ихдээ 0-ээс 255 хүртэл тоолох боломжтой гэсэн үг юм. Timer1 нь 16 битийн таймер тул 65535 хүртэл тоолох боломжтой. Таймер бүрт холбогдох хоёр гаралтын тээглүүр байдаг: таймерын хувьд 6 ба 5, таймерын хувьд 9, 10, таймерын хувьд 11, 3. Цаг хэмжигчийг Arduino цаг бүрийн мөчлөг бүрт эсвэл 8, 64, 256 эсвэл 1024 (32 ба 128 -ийг таймерын хувьд бас зөвшөөрдөг) урьдчилсан тооцооны коэффициентээр бууруулдаг. Таймерууд 0 -ээс "TOP" хүртэл тоолж, дараа нь дахин (хурдан ХОУХ) эсвэл доошоо (үе шатыг зөв ХОУХ) тоолно. "TOP" утга нь давтамжийг тодорхойлдог. Гаралтын тээглүүр нь Гаралтын харьцуулалтын бүртгэлийн утгыг тохируулах, дахин тохируулах эсвэл эргүүлэх боломжтой тул тэдгээр нь ажлын мөчлөгийг тодорхойлдог. Зөвхөн таймер1 нь гаралтын тээглүүрийн давтамж ба ажлын мөчлөгийг бие даан тохируулах чадвартай байдаг.

Алхам 3: LED анивчих

Image
Image
LED анивчдаг
LED анивчдаг
LED анивчих
LED анивчих

8 битийн таймер ашиглан хүрч болох хамгийн бага давтамж нь 16 МГц/(511*1024) = 30, 6 Гц юм. 1 Гц давтамжтай LED анивчуулахын тулд бидэнд 256 дахин бага давтамжтай 0.12 Гц давтамжтай timer1 хэрэгтэй болно.

LED -ийг анодоор (урт хөлтэй) pin9 -д холбож, катодоо 220 Ом эсэргүүцэлтэй холбоно. Кодыг байршуулна уу. LED нь яг 1 Гц -д анивчих бөгөөд 50%-ийн ажлын мөчлөгтэй болно. Loop () функц хоосон байна: таймерыг setup () дээр эхлүүлсэн бөгөөд нэмэлт анхаарал шаарддаггүй.

Алхам 4: LED Dimmer

Image
Image
LED dimmer
LED dimmer
LED dimmer
LED dimmer

Импульсийн өргөн модуляци нь LED-ийн эрчимийг зохицуулах үр дүнтэй арга юм. Зөв жолоочтой бол цахилгаан хөдөлгүүрийн хурдыг зохицуулах хамгийн тохиромжтой арга юм. Дохио нь 100% ассан эсвэл 100% унтраалттай байгаа тул цуврал эсэргүүцэл дээр хүч алдахгүй. Үндсэндээ энэ нь LED -ийг нүдээр харахаас илүү хурдан анивчихтай адил юм. 50Гц нь зарчмын хувьд хангалттай боловч энэ нь бага зэрэг анивчсан мэт санагдаж магадгүй бөгөөд LED эсвэл нүд хөдлөхөд тасралтгүй "ул мөр" гарч болзошгүй. 8-битийн таймертай 64-ийн урьдчилсан үнэлгээг ашигласнаар бид зорилгод нийцсэн 16MHz/(64*256) = 977Hz-ийг авна. Бид таймер2 -ийг сонгодог тул timer1 нь бусад функцуудад боломжтой хэвээр байх бөгөөд бид timer0 ашигладаг Arduino time () функцэд саад болохгүй.

Энэ жишээнд ажлын мөчлөг, ингэснээр эрчимийг потенциометрээр зохицуулдаг. Хоёрдахь LED -ийг 3 -р зүү дээрх ижил таймер ашиглан бие даан зохицуулж болно.

Алхам 5: Дижитал-аналог хөрвүүлэгч (DAC)

Image
Image
Дижитал-аналог хөрвүүлэгч (DAC)
Дижитал-аналог хөрвүүлэгч (DAC)
Дижитал-аналог хөрвүүлэгч (DAC)
Дижитал-аналог хөрвүүлэгч (DAC)

Arduino нь жинхэнэ аналог гаралттай байдаггүй. Зарим модуль нь параметрийг зохицуулахын тулд аналог хүчдэл авдаг (дэлгэцийн тодосгогч, илрүүлэх босго гэх мэт). Зөвхөн нэг конденсатор ба резистортой бол таймер1 -ийг ашиглан 5мВ ба түүнээс дээш нарийвчлалтай аналог хүчдэл үүсгэж болно.

Бага дамжуулагч шүүлтүүр нь ХОУХ-ны дохиог аналог хүчдэлд "дундаж" болгож чаддаг. Конденсаторыг резистороор дамжуулан ХОУХ -ны зүү рүү холбодог. Онцлог шинж чанарыг ХОУХ -ны давтамж, резистор ба конденсаторын утгуудаар тодорхойлно. 8 битийн таймеруудын нарийвчлал нь 5V/256 = 20мВ байх тул 10 битийн нарийвчлалтай болохын тулд бид Timer1-ийг сонгоно. RC хэлхээ нь эхний ээлжийн бага нэвтрүүлэх шүүлтүүр бөгөөд зарим долгионтой болно. RC хэлхээний цагийн хуваарь нь долгионыг багасгахын тулд ХОУХ-ны дохионы хугацаанаас хамаагүй том байх ёстой. 10 битийн нарийвчлалтай авах хугацаа нь 1024/16MHz = 64mus байна. Хэрэв бид 1muF конденсатор ба 10kOhm эсэргүүцэл ашигладаг бол RC = 10ms. Оргил-оргил долгион хамгийн ихдээ 5V*0.5*T/(RC) = 16mV байдаг бөгөөд үүнийг энд хангалттай гэж үздэг.

Энэхүү DAC нь маш өндөр гаралтын эсэргүүцэлтэй (10kOhm) тул гүйдэл татах тохиолдолд хүчдэл мэдэгдэхүйц буурах болно гэдгийг анхаарна уу. Үүнээс зайлсхийхийн тулд үүнийг опампаар буферлаж болно, эсвэл R ба C -ийн өөр хослолыг сонгож болно, жишээ нь 10 мкФ -тэй 1kOhm.

Жишээлбэл, DAC гаралтыг потенциометрээр удирддаг. Хоёрдахь бие даасан DAC сувгийг 10 -р зүү дээр timer1 ашиглан ажиллуулж болно.

Алхам 6: Метроном

Image
Image
Метроном
Метроном
Метроном
Метроном

Метроном нь хөгжим тоглохдоо хэмнэлийг хянахад тусалдаг. Маш богино импульсийн хувьд arduino таймерын гаралтыг чанга яригч руу шууд дамжуулж болох бөгөөд энэ нь тодорхой сонсогдох товшилт өгөх болно. Потенциометрийн тусламжтайгаар цохилтын давтамжийг 39 алхамаар минутанд 40-208 цохилтоор зохицуулж болно. Шаардлагатай нарийвчлалд Timer1 хэрэгтэй. Давтамжийг тодорхойлдог ‘TOP’ утгыг loop () функц дотор өөрчилсөн бөгөөд үүнд анхаарал хандуулах шаардлагатай байна! WGM горим нь тогтмол давтамжтай бусад жишээнүүдээс ялгаатай болохыг эндээс харж болно: OCR1A регистрийн TOP -ийг тохируулсан энэ горим нь давхар буфертай бөгөөд TOP -ийг алдах, урт алдаа гарахаас хамгаалдаг. Гэсэн хэдий ч энэ нь бид зөвхөн 1 гаралтын зүү ашиглаж болно гэсэн үг юм.

Алхам 7: Дууны спектр

Image
Image
Дууны спектр
Дууны спектр
Дууны спектр
Дууны спектр

Хүмүүс 20 Гц -ээс 20 кГц хүртэлх дууны давтамжийн 3 дараалсан дарааллыг сонсох боломжтой. Энэ жишээ нь потенциометрийн тусламжтайгаар бүх спектрийг үүсгэдэг. Тогтмол гүйдлийг хаахын тулд чанга яригч ба Arduino хооронд 10 мкФ конденсатор байрлуулна. Timer1 нь дөрвөлжин долгион үүсгэдэг. Энд байгаа долгионы хэлбэрийг үүсгэх горим бол үе шатыг зөв тохируулсан ХОУХ. Энэ горимд тоолуур дээд цэгтээ хүрэхэд хойшоо тоолж эхэлдэг бөгөөд энэ нь үүргийн мөчлөг өөр байсан ч гэсэн дундаж утгыг нь тогтоосон импульс үүсгэдэг. Гэсэн хэдий ч энэ нь (бараг) хоёр дахин нэмэгдэх хугацаатай бөгөөд 8 -р урьдчилсан үнэлгээнд таймер1 нь урьдчилсан хуваарийг өөрчлөх шаардлагагүйгээр дуут спектрийг бүрэн хамардаг. Мөн энд, TOP-ийн үнэ цэнийг хөдөлгөөнд оруулан өөрчилж байгаа тул OCR1A-ийг ашиглах нь алдаа дутагдлыг бууруулдаг.

Алхам 8: Servo Motors

Image
Image
Servo Motors
Servo Motors
Servo Motors
Servo Motors

Хүчирхэг servo номын сангууд байдаг, гэхдээ хэрэв та жолоодох хоёрхон сервотой бол та үүнийг timer1 ашиглан шууд хийж, CPU, санах ойн ашиглалтыг бууруулж, тасалдалаас зайлсхийх боломжтой. Алдартай SG90 servo нь 50 Гц дохио авдаг бөгөөд импульсийн урт нь байрлалыг кодлодог. Цаг хэмжигчийн хувьд хамгийн тохиромжтой1. Давтамж нь тогтмол байдаг тул pin9 ба pin 10 дээрх гаралтыг хоёуланг нь бие даан удирдах боломжтой.

Алхам 9: Хүчдэлийн нэмэгдүүлэгч ба инвертер

Хүчдэлийн хоёр дахин нэмэгдүүлэгч ба инвертер
Хүчдэлийн хоёр дахин нэмэгдүүлэгч ба инвертер
Хүчдэлийн хоёр дахин нэмэгдүүлэгч ба инвертер
Хүчдэлийн хоёр дахин нэмэгдүүлэгч ба инвертер
Хүчдэлийн хоёр дахин нэмэгдүүлэгч ба инвертер
Хүчдэлийн хоёр дахин нэмэгдүүлэгч ба инвертер

Заримдаа таны төсөл 5V -аас дээш хүчдэл эсвэл сөрөг хүчдэл шаарддаг. Энэ нь MOSFET -ийг ажиллуулах, пьезо элементийг ажиллуулах, опампыг асаах эсвэл EEPROM -ийг дахин тохируулах явдал байж магадгүй юм. Хэрэв одоогийн гүйдэл нь ~ 5мА хүртэл бага байвал цэнэглэх насос нь хамгийн энгийн шийдэл байж болох юм: таймерын импульсийн дохионд холбогдсон 2 диод ба хоёр конденсатор нь arduino 5V -аас 10V хүртэл хоёр дахин нэмэгдүүлэх боломжийг олгодог. Практик дээр 2 диодын дусал байдаг тул энэ нь дублерын хувьд 8.6В эсвэл инвертерийн хувьд -3.6V байх болно.

Дөрвөлжин долгионы давтамж нь диодыг хангалттай цэнэглэхэд хангалттай байх ёстой. 1 мФ конденсатор нь хүчдэл 0 -ээс 5 В -ийн хооронд өөрчлөгдөхөд 5 мкч өөрчлөлтийг хөдөлгөдөг тул 10 мА гүйдлийн хувьд давтамж нь дор хаяж 2 кГц байх ёстой. Практикт долгионыг бууруулдаг тул илүү өндөр давтамжтай байх нь дээр. Таймер2 -ийг урьдчилсан тооцоогүйгээр 0 -ээс 255 хүртэл тоолоход давтамж нь 62.5 кГц бөгөөд энэ нь сайн ажилладаг.

Алхам 10: Утасгүй цахилгаан дамжуулалт

Image
Image
Утасгүй цахилгаан дамжуулалт
Утасгүй цахилгаан дамжуулалт
Утасгүй цахилгаан дамжуулалт
Утасгүй цахилгаан дамжуулалт

Ухаалаг цагийг кабельгүйгээр цэнэглэх нь энгийн зүйл биш боловч үүнийг Arduino төслийн нэг хэсэг болгож болно. Өндөр давтамжийн дохио бүхий ороомог нь цахилгаан холбоо барихгүйгээр индукцийн тусламжтайгаар ойролцоох өөр ороомог руу хүч дамжуулах боломжтой.

Эхлээд ороомог бэлтгэ. Би 8.5см диаметртэй цаасан өнхрүүлгийг, 0.13мм диаметртэй пааландсан утсыг ашиглан 2 ороомог хийсэн: анхдагч нь 20 эргэлт, хоёрдогч нь 50 эргэлт. N ороомогтой, R радиустай энэ төрлийн ороомгийн өөрөө индуктив чанар нь ~ 5muH * N^2 * R. Тиймээс N = 20 ба R = 0.0425-ийн хувьд L = 85muH өгдөг бөгөөд үүнийг бүрэлдэхүүн хэсгийн шалгагчаар баталгаажуулсан болно. Бид 516 кГц давтамжтай дохио гаргадаг бөгөөд үүний үр дүнд 2pi*f*L = 275Ohm эсэргүүцэл үүсдэг. Энэ нь хангалттай өндөр бөгөөд Arduino хэт гүйдэлд ордоггүй.

Ороомогыг хамгийн үр дүнтэй ажиллуулахын тулд бид жинхэнэ AC эх үүсвэрийг ашиглахыг хүсч байна. Үүнийг хийж болох нэг заль мэх байдаг: таймерын хоёр гаралтыг эсрэг талын үе шатанд, гаралтын аль нэгийг эргүүлэх замаар ажиллуулж болно. Үүнийг синус долгионтой илүү төстэй болгохын тулд бид үе шатыг зөв тохируулсан ХОУХ-ийг ашигладаг. Ийнхүү зүү 9-10 хооронд хүчдэл 0V, зүү 9 +5V, хоёулаа 0V, зүү 10 +5V хоёулаа хоёуланг нь солино. Энэхүү эффектийг хамрах хүрээний зургаас харуулав (1024 урьдчилсан үнэлгээтэй энэхүү тоглоомын хүрээ нь зурвасын өргөнтэй байдаггүй).

Анхдагч ороомогыг 9 ба 10 -р зүү рүү холбож, хоёрдогч ороомог руу LED холбоно. Хоёрдогч ороомогыг анхдагч хэсэгт ойртуулах үед LED тод асдаг.

Зөвлөмж болгож буй: