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

Arduino долгионы үүсгүүр: 5 алхам (зурагтай)
Arduino долгионы үүсгүүр: 5 алхам (зурагтай)

Видео: Arduino долгионы үүсгүүр: 5 алхам (зурагтай)

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

2021 оны 2 -р сарын шинэчлэлт: Raspberry Pi Pico дээр суурилсан дээж авах хурдыг 300 дахин нэмэгдүүлсэн шинэ хувилбарыг үзээрэй

Лабораторид ихэвчлэн тодорхой давтамж, хэлбэр, далайцын давтагдах дохио хэрэгтэй болдог. Энэ нь өсгөгчийг шалгах, хэлхээ, бүрэлдэхүүн хэсэг эсвэл идэвхжүүлэгчийг шалгах явдал байж магадгүй юм. Долгионы хэлбэрийн хүчирхэг генераторыг худалдаанд гаргах боломжтой боловч Arduino Uno эсвэл Arduino Nano -ийн тусламжтайгаар өөрөө ашигтай бүтээгдэхүүн үйлдвэрлэх нь харьцангуй хялбар байдаг.

www.instructables.com/id/Arduino-Waveform-…

www.instructables.com/id/10-Resister-Ardui…

Дараахь шинж чанар бүхий өөр нэгний тайлбарыг энд оруулав.

* Нарийвчилсан долгионы хэлбэр: R2R DAC ашиглан 8 битийн гаралт, 256 дээжийн хэлбэр

* Хурдан: 381 кГц дээж авах хурд

* Нарийвчлал: 1мГц -ийн давтамжийн хүрээ. Arduino болор шиг нарийвчлалтай.

* Хялбар ажиллагаа: долгионы хэлбэр ба давтамжийг ганц эргэлддэг кодлогчоор тохируулах боломжтой

* Өргөн далайц: милливольтоос 20В хүртэл

* Урьдчилан тодорхойлсон 20 долгионы хэлбэр. Илүү ихийг нэмэхэд хялбар.

* Хийхэд хялбар: Arduino Uno эсвэл Nano plus стандарт бүрэлдэхүүн хэсгүүд

Алхам 1: Техникийн үзүүлэлтүүд

Аналог дохио хийх

Arduino Uno ба Nano-ийн нэг дутагдал нь дижитал-аналог (DAC) хувиргагчгүй тул аналог хүчдэлийг зүү дээр шууд гаргах боломжгүй юм. Нэг шийдэл бол R2R шат юм: 8 дижитал тээглүүр нь резистор сүлжээнд холбогдсон бөгөөд ингэснээр 256 түвшний гаралтад хүрэх боломжтой болно. Порт руу шууд нэвтрэх замаар Arduino нь нэг тушаалаар 8 голтой нэгэн зэрэг тохируулж болно. Резистор сүлжээнд R утга бүхий 9, 2R утга бүхий 8 резистор шаардлагатай болно. Би 10kOhm -ийг R -ийн утга болгон ашигласан бөгөөд энэ нь гүйдэлийг 0.5мА хүртэл ба түүнээс бага байлгадаг. R = 1kOhm нь бас ажиллах боломжтой гэж бодож байна, учир нь Arduino нь нэг зүү тутамд 5 мА, порт бүрт 40 мА дамжуулах чадвартай. R ба 2R резисторуудын хоорондын харьцаа үнэхээр 2 байх нь чухал юм. Үүнд R утгатай 2 резисторыг нийт 25 резисторыг цувралаар байрлуулснаар хамгийн хялбар болно.

Фазын аккумлятор

Дараа нь долгионы хэлбэрийг үүсгэх нь 8 битийн дараалсан тоог Arduino тээглүүр рүү дахин дахин илгээдэг. Долгионы хэлбэрийг 256 байтын массивт хадгалдаг бөгөөд энэ массиваас дээж авч гол руу илгээдэг. Гаралтын дохионы давтамжийг массиваар хэр хурдан урагшлах замаар тодорхойлдог. Үүнийг хийх бат бөх, нарийн бөгөөд гоёмсог арга бол фазын аккумлятор юм: 32 битийн тоог тогтмол давтамжтайгаар нэмэгдүүлдэг бөгөөд бид хамгийн чухал 8 битийг массивын индекс болгон ашигладаг.

Хурдан дээж авах

Тасалдал нь тодорхой цаг хугацаанд дээж авах боломжийг олгодог боловч тасалдлын нэмэлт зардал нь түүврийн давтамжийг ~ 100 кГц хүртэл хязгаарладаг. Үе шатыг шинэчлэх, долгионы хэлбэрийг дээжлэх, тээглүүрийг тохируулах хязгааргүй давталт нь 42 цагийн мөчлөг шаарддаг бөгөөд ингэснээр дээж авах хурдыг 16 МГц/42 = 381 кГц хүрдэг. Эргэдэг кодлогчыг эргүүлэх эсвэл түлхэх нь зүү өөрчлөгдөж, давталтаас гарсан тохиргоог (долгионы хэлбэр эсвэл давтамж) өөрчлөхөд хүргэдэг. Энэ үе шатанд массив дахь 256 тоог дахин тооцоолох бөгөөд ингэснээр долгионы хэлбэрийн бодит тооцоог үндсэн гогцоонд хийх шаардлагагүй болно. Үүсгэх боломжтой хамгийн их давтамж нь 190 кГц (түүвэрлэлтийн хурдны тал хувь) боловч дараа нь зөвхөн хоёр дээж байдаг тул хэлбэрийг тийм ч сайн хянадаггүй. Интерфэйс нь 100 кГц -ээс дээш давтамжийг тохируулахыг зөвшөөрдөггүй. 50 кГц давтамжтай үед 7-8 дээж байдаг бөгөөд 1.5 кГц ба түүнээс доош массивт хадгалагдсан 256 тооноос доогуур үе бүрт дээж авдаг. Дохио нь жигд өөрчлөгддөг долгионы хэлбэрийн хувьд, жишээлбэл, синус долгионы хувьд дээж алгасах нь асуудал биш юм. Гэхдээ нарийн үсрэлт бүхий долгионы хэлбэрийн хувьд, жишээлбэл жижиг давталттай дөрвөлжин долгионы хувьд 1.5 кГц -ээс дээш давтамжийн хувьд нэг дээж дутагдвал долгионы хэлбэр нь хүлээгдэж буй байдлаар ажиллахгүй байх аюултай.

Давтамжийн нарийвчлал

Дээж тус бүрт үе шатыг нэмэгдүүлэх тоо нь давтамжтай пропорциональ байна. Тиймээс давтамжийг 381 кГц/2^32 = 0.089мГц нарийвчлалтайгаар тохируулж болно. Практикт ийм нарийвчлал бараг шаардагддаггүй тул интерфэйс нь давтамжийг 1 мГц -ийн алхамаар тохируулахыг хязгаарладаг. Давтамжийн үнэмлэхүй нарийвчлалыг Arduino цагийн давтамжийн нарийвчлалаар тодорхойлно. Энэ нь Arduino төрлөөс хамаардаг боловч ихэнх нь 16.000MHz давтамжийг тодорхойлдог тул нарийвчлал нь ~ 10^-4 байна. Энэхүү код нь давтамж ба фазын өсөлтийн харьцааг өөрчлөх боломжийг олгодог бөгөөд 16 МГц -ийн таамаглалын жижиг хазайлтыг засах боломжтой болно.

Орчуулга ба олшруулалт

Резистор сүлжээ нь өндөр гаралтын эсэргүүцэлтэй тул ачаалал хавсарсан тохиолдолд түүний гаралтын хүчдэл хурдан буурдаг. Үүнийг гаралтыг буфер хийх эсвэл нэмэгдүүлэх замаар шийдвэрлэх боломжтой. Энд буфер болон олшруулалтыг опамп ашиглан хийдэг. Би LM358 -ийг ашиглаж байсан, учир нь надад жаахан байсан. Энэ бол удаан опамп (микросекунд тутамд 0.5В алах хурд) тул өндөр давтамжтай, өндөр далайцтай үед дохио гажууддаг. Сайн тал нь 0V -тэй ойролцоо хүчдэлийг зохицуулж чаддаг явдал юм. Гаралтын хүчдэл нь төмөр замын доор ~ 2V -аар хязгаарлагддаг тул +5V хүчийг ашигласнаар гаралтын хүчдэлийг 3В хүртэл хязгаарладаг. Дэвшилтэт модулиуд нь авсаархан бөгөөд хямдхан байдаг. Опампт +20 В хүчдэл өгдөг бол 18 В хүртэлх хүчдэлтэй дохио үүсгэж чаддаг. (NB, схемд LTC3105 гэж бичсэн байдаг, учир нь энэ бол Фритзингээс олж авсан цорын ганц алхам юм. Бодит байдал дээр би MT3608 модулийг ашигласан, дараагийн алхамуудын зургийг үзнэ үү). Би R2R DAC гаралтанд хувьсах бууралтыг ашиглахаар сонгож, дараа нь опампуудын аль нэгийг ашиглан дохиог олшруулалгүйгээр буфер болгож, нөгөөг нь 5.7 -ээр нэмэгдүүлэхийн тулд дохио нь хамгийн ихдээ 20В орчим гаралтанд хүрч чадна. Гаралтын гүйдэл нь маш хязгаарлагдмал ~ 10мА тул дохио нь том чанга яригч эсвэл цахилгаан соронзыг жолоодох бол илүү хүчирхэг өсгөгч шаардлагатай байж магадгүй юм.

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

Гол долгионы хэлбэрийн генераторын хувьд

Arduino Uno эсвэл Nano

16x2 LCD дэлгэц + 20kOhm тайрагч, арын гэрэлтүүлэгт зориулсан 100 Ом цуврал резистор

5 зүү эргэлддэг кодлогч (нэгдсэн товчлууртай)

10 кОм -ийн 25 резистор

Буфер/өсгөгчийн хувьд

LM358 эсвэл бусад хос опамп

MT3608 дээр суурилсан алхам модуль

50 кОм хувьсах эсэргүүцэл

10 кОм эсэргүүцэл

47kOhm эсэргүүцэл

1 мФ конденсатор

Алхам 3: Барилга

Барилга
Барилга
Барилга
Барилга

Би зураг дээр үзүүлсэн шиг 7х9 см хэмжээтэй загвар самбар дээр бүх зүйлийг гагнасан. Бүх утаснууд жаахан эмх замбараагүй болсон тул би эерэг хүчдэлтэй утаснуудыг улаан, газрын хар өнгийг дамжуулахыг оролдов.

Миний ашигласан кодлогч нь 5 тээглүүртэй, нэг талд 3, нөгөө талд 2 байна. 3 голтой тал нь жинхэнэ кодлогч, 2 голтой тал нь нэгдсэн товчлуур юм. 3 зүүтэй тал дээр төвийн зүүг газардуулгатай, бусад хоёр тээглүүрийг D10 ба D11-тэй холбох ёстой. 2 зүүтэй талд нэг зүүг газардуулгатай, нөгөө нь D12-тэй холбох ёстой.

Энэ бол миний хийсэн хамгийн муухай зүйл боловч энэ нь ажилладаг. Хашлага хийх нь сайхан байх болно, гэхдээ одоогоор нэмэлт ажил, зардал нь үүнийг зөвтгөхгүй байна. Нано ба дэлгэцийг зүү толгойтой хавсаргасан болно. Хэрэв би шинээр барих юм бол би дахиж ийм зүйл хийхгүй. Би дохио авахын тулд холбогчийг самбар дээр тавиагүй. Үүний оронд би тэдгээрийг дараах байдлаар бичсэн цухуйсан зэс утаснаас матрын хар тугалгагаар авдаг.

R - R2R DAC -ийн түүхий дохио

B - буфертай дохио

A - олшруулсан дохио

T - зүү 9 -ээс таймерын дохио

G - газар

+ - өсгөх модулийн эерэг "өндөр" хүчдэл

Алхам 4: Код

Ардуиногийн ноорог кодыг хавсаргасан бөгөөд үүнийг Arduino -д байршуулах ёстой.

20 долгионы хэлбэрийг урьдчилан тодорхойлсон болно. Бусад долгионыг нэмэх нь энгийн байх ёстой. Санамсаргүй долгион нь 256 утгатай массивыг санамсаргүй утгаар дүүргэдэг боловч ижил загварыг үе бүрт давтдаг болохыг анхаарна уу. Жинхэнэ санамсаргүй дохио нь чимээ шуугиан мэт сонсогддог боловч энэ долгионы хэлбэр нь шүгэл шиг сонсогддог.

Код нь TIMER1 бүхий D9 зүү дээр 1 кГц дохиог тохируулдаг. Энэ нь аналог дохионы цагийг шалгахад хэрэгтэй болно. Ийм байдлаар би цагийн мөчлөгийн тоо 42 гэдгийг олж мэдсэн: Хэрэв би 41 эсвэл 43 гэж үзээд 1 кГц дохио үүсгэвэл энэ нь D9 зүү дээрх дохионоос өөр давтамжтай байх нь тодорхой байна. 42 -ийн утга нь тэд хоорондоо төгс нийцдэг.

Ер нь Arduino миллисекунд () функцээр цагийг хянахын тулд миллисекунд тутамд тасалдаг. Энэ нь үнэн зөв дохио үүсгэхэд саад болох тул тухайн тасалдал идэвхгүй болно.

Эмхэтгэгч хэлэхдээ: "Sketch нь програмын хадгалах орон зайг 7254 байт (23%) ашигладаг. Хамгийн ихдээ 30720 байт байдаг. Глобал хувьсагчид нь 483 байт (23%) динамик санах ойг ашигладаг бөгөөд орон нутгийн хувьсагчдад 1565 байт үлдээдэг. Хамгийн ихдээ 2048 байт байна." Тиймээс илүү нарийн код бичих хангалттай зай байна. Нано руу амжилттай байршуулахын тулд та "ATmega328P (хуучин ачаалагч)" -ыг сонгох хэрэгтэй болж болзошгүйг анхаарна уу.

Алхам 5: Хэрэглээ

Дохио үүсгэгчийг Arduino Nano-ийн мини-USB кабелиар тэжээх боломжтой. Үүнийг цахилгаан банкаар хийх нь зүйтэй бөгөөд ингэснээр холбогдох төхөөрөмжтэй санамсаргүй газардуулга байхгүй болно.

Үүнийг асаахад 100 Гц синус долгион үүснэ. Бариулыг эргүүлснээр бусад 20 долгионы төрлүүдийн аль нэгийг сонгож болно. Түлхэж байхдаа эргүүлснээр курсорыг давтамжийн аль ч цифр дээр тохируулж, хүссэн утга болгон өөрчилж болно.

Далайцыг потенциометрээр зохицуулж, буфер эсвэл олшруулсан дохиог ашиглаж болно.

Дохионы далайцыг шалгахын тулд осциллограф ашиглах нь үнэхээр тустай, ялангуяа дохио нь өөр төхөөрөмж рүү гүйдэл өгөх үед. Хэрэв хэт их гүйдэл гарсан бол дохио тасрах бөгөөд дохио нь маш их гажсан болно

Маш бага давтамжийн хувьд гаралтыг 10 кОм эсэргүүцэлтэй LED цувралаар дүрсэлж болно. Аудио давтамжийг чанга яригчаар сонсох боломжтой. Дохиог маш бага ~ 0.5 В -т тохируулсан эсэхийг шалгаарай, эс бөгөөс гүйдэл хэт өндөр болж, дохио хайчилж эхэлдэг.

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