Агуулгын хүснэгт:
- Алхам 1: Техникийн үзүүлэлтүүд
- Алхам 2: Шаардлагатай бүрэлдэхүүн хэсгүүд
- Алхам 3: Барилга
- Алхам 4: Код
- Алхам 5: Хэрэглээ
Видео: Arduino долгионы үүсгүүр: 5 алхам (зурагтай)
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:02
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 В -т тохируулсан эсэхийг шалгаарай, эс бөгөөс гүйдэл хэт өндөр болж, дохио хайчилж эхэлдэг.
Зөвлөмж болгож буй:
DIY функц/долгионы хэлбэр үүсгэгч: 6 алхам (зурагтай)
DIY функц/долгионы хэлбэр үүсгэгч: Энэхүү төсөлд бид DIY хувилбарт ямар онцлог шинж чанар чухал болохыг тодорхойлохын тулд арилжааны функц/долгионы хэлбэрийн генераторуудын талаар товч танилцах болно. Дараа нь би аналог ба цифрийг хэрхэн энгийн функциональ үүсгэгч үүсгэхийг танд үзүүлэх болно
Arduino Due дээр суурилсан 3 фазын синус долгионы үүсгүүр: 5 алхам
Arduino Due дээр суурилсан 3 фазын синус долгионы үүсгүүр: Энэхүү хуваалцах зорилго нь Due-ийн илүү сайн гүйцэтгэлийг ашиглахыг хүссэн хүмүүст туслах явдал юм + лавлагаа дутмаг + ашиггүй мэдээллийн хуудас. бага давтамжтай (< 1kHz) ба 16 секундын туршилт / мөчлөг
Богино долгионы зуухны трансформатороос цэг гагнах машин бүтээх: 7 алхам (зурагтай)
Бичил долгионы зуухны трансформатороос цэгэн гагнуурын машин бүтээх: Энэхүү төсөлд би 18650 лити ион эс бүхий батерейны багц үйлдвэрлэх зориулалттай DIY спот гагнуурын машин хийж байна. Надад бас мэргэжлийн цэгийн гагнуурчин, загвар Sunkko 737G нь ойролцоогоор 100 доллар байдаг, гэхдээ миний DIY спот гагнуурчин гэж баяртайгаар хэлж чадна
Гэрийн цахилгаан үүсгүүр: 4 алхам (зурагтай)
Гэрийн эрчим хүчний үүсгүүр: Цахилгаан эрчим хүчийг олж илрүүлснээс хойш бид маш үр дүнтэй боловч хямд үнээр үйлдвэрлэхийн тулд маш олон арга замыг эрэлхийлсэн байдаг. нотлох зорилготой
Windbelt Redux 21 -р зууны бичил цахилгаан үүсгүүр: 6 алхам (зурагтай)
Windbelt Redux 21 -р зууны бичил цахилгаан үүсгүүр: Энэ бол Shawn Frayne -ийн Windbelt генераторын миний хоёр дахь давталт бөгөөд миний анхны хувилбарыг эндээс олж болно. Энэхүү хувилбар нь байшингийн хөндлөн агааржуулалтыг ашиглахад зориулагдсан болно. Салхины бүс нь агаарын уян налархай гол дээр ажилладаг, хэлбэлзэлтэй салхин үүсгүүр юм