Mundarija:

Arduino to'lqin shakli generatori: 5 qadam (rasmlar bilan)
Arduino to'lqin shakli generatori: 5 qadam (rasmlar bilan)

Video: Arduino to'lqin shakli generatori: 5 qadam (rasmlar bilan)

Video: Arduino to'lqin shakli generatori: 5 qadam (rasmlar bilan)
Video: Техническое описание синтезатора LM13600: ГУН с одним усилителем 2024, Noyabr
Anonim
Arduino to'lqin shakli generatori
Arduino to'lqin shakli generatori

2021 yil fevral yangilanishi: Raspberry Pi Pico asosida 300x namuna olish tezligi bilan yangi versiyani tekshiring

Laboratoriyada ko'pincha ma'lum chastota, shakli va amplitudasining takrorlanadigan signaliga ehtiyoj seziladi. Bu kuchaytirgichni tekshirish, kontaktlarning zanglashiga olib kelishi, komponent yoki aktuator bo'lishi mumkin. Kuchli to'lqin shaklli generatorlar tijoratda mavjud, lekin Arduino Uno yoki Arduino Nano yordamida o'zingizni foydali qilish juda oson, masalan:

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

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

Bu erda quyidagi xususiyatlarga ega bo'lgan boshqasining tavsifi:

* To'g'ri to'lqin shakllari: R2R DAC yordamida 8-bitli chiqish, 256-namuna shakli

* Tez: 381 kHz namuna olish tezligi

* Aniq: 1 MGts chastotali diapazon. Arduino kristalli kabi aniq.

* Oson ishlash: to'lqin shakli va chastotani bitta aylanuvchi kodlovchi yordamida sozlash

* Keng amplitudalar diapazoni: milliVoltdan 20Vgacha

* 20 ta oldindan belgilangan to'lqin shakllari. Ko'proq qo'shish oson.

* Ishlab chiqarish oson: Arduino Uno yoki Nano plus standart komponentlar

1 -qadam: Texnik fikrlar

Analog signalni qabul qilish

Arduino Uno va Nano-ning kamchiliklaridan biri shundaki, u raqamli-analogli (DAC) konvertorga ega emas, shuning uchun uni analog pog'onalarga to'g'ridan-to'g'ri analog kuchlanishga chiqarish mumkin emas. Bitta yechim - bu R2R zinapoyasi: 8 ta raqamli pin rezistor tarmog'iga ulangan, shuning uchun 256 darajali chiqish darajasiga erishish mumkin. Portga to'g'ridan -to'g'ri kirish orqali Arduino bitta buyruq bilan bir vaqtning o'zida 8 ta pinni o'rnatishi mumkin. Rezistor tarmog'i uchun R qiymatli 9 ta rezistor va 2R qiymatli 8 ta rezistor kerak. Men 10kOmni R qiymati sifatida ishlatardim, bu tokni pimlardan 0,5mA yoki undan pastgacha ushlab turadi. O'ylaymanki, R = 1kOhm ham ishlashi mumkin, chunki Arduino har bir pin uchun 5mA, port uchun 40mA etkazib berishi mumkin. R va 2R rezistorlar orasidagi nisbat haqiqatan ham 2 ga teng bo'lishi muhim. Bunga R qiymatli 2 ta rezistorni ketma -ket qo'yish orqali erishish mumkin, jami 25 ta rezistor.

Bosqichli akkumulyator

Keyin to'lqin shaklini yaratish Arduino pinlariga 8-bitli raqamlar ketma-ketligini qayta-qayta yuborishga to'g'ri keladi. To'lqin shakli 256 baytli massivda saqlanadi va bu massiv namuna olinadi va pinlarga yuboriladi. Chiqish signalining chastotasi uning massiv orqali qanchalik tez o'tishi bilan belgilanadi. Buning ishonchli, aniq va oqlangan usuli-fazali akkumulyator: 32-bitli raqamlar vaqti-vaqti bilan ko'payib boradi va biz qatorning indeksi sifatida eng muhim 8 bitdan foydalanamiz.

Tez namuna olish

Tanaffuslar aniq belgilangan vaqtda namuna olish imkonini beradi, lekin tanaffuslarning umumiy qiymati ~ 100 kHz gacha. Bosqichni yangilash, to'lqin shaklini tanlash va pimlarni o'rnatish uchun cheksiz pastadir 42 soatlik tsiklni oladi, shu bilan 16 MGts/42 = 381 kHz chastotasida namuna olish tezligiga erishiladi. Aylanadigan enkoderning aylanishi yoki itarilishi pinning o'zgarishiga olib keladi va uzilishdan chiqib ketadigan sozlamani o'zgartiradi (to'lqin shakli yoki chastotasi). Ushbu bosqichda massivdagi 256 ta raqam qayta hisoblab chiqiladi, shuning uchun to'lqin shaklining haqiqiy hisob -kitoblari asosiy tsiklda bajarilmasligi kerak. Ishlab chiqarilishi mumkin bo'lgan maksimal maksimal chastota - 190 kHz (namuna olish tezligining yarmi), lekin har bir davrda faqat ikkita namuna bor, shuning uchun shaklni nazorat qilish mumkin emas. Shunday qilib, interfeys 100 kHz dan yuqori chastotani o'rnatishga imkon bermaydi. 50 kGts chastotada har bir davr uchun 7-8 ta namuna va 1,5 kHz chastotada saqlanadi va undan pastda 256 ta raqam saqlanadi. Signal uzluksiz o'zgaradigan to'lqin shakllari uchun, masalan, sinus to'lqinlar, namunalarni o'tkazib yuborish muammo emas. Ammo tor boshli to'lqin shakllari uchun, masalan, kichik to'lqinli kvadrat to'lqinlar uchun, 1,5 kHz dan yuqori chastotalarda bitta namunaning etishmasligi to'lqin shakli kutilganidek ishlamasligiga olib kelishi mumkin.

Chastotaning aniqligi

Har bir namunada fazani ko'paytirish soni chastotaga mutanosib. Chastotani 381 kHz/2^32 = 0,089 mGts aniqlikda sozlash mumkin. Amalda bunday aniqlik deyarli talab qilinmaydi, shuning uchun interfeys chastotani 1 MGts bosqichda o'rnatishni cheklaydi. Chastotaning mutlaq aniqligi Arduino soat chastotasining aniqligi bilan aniqlanadi. Bu Arduino turiga bog'liq, lekin ko'pchiligi 16.000MGts chastotasini aniqlaydi, shuning uchun ~ 10^-4 aniqlik. Kod 16 MGts tezlikdagi kichik og'ishlarni tuzatish uchun chastota va fazalar sonining nisbatlarini o'zgartirishga imkon beradi.

Tamponlash va kuchaytirish

Rezistor tarmog'i yuqori chiqish empedansiga ega, shuning uchun yuk o'rnatilgan bo'lsa, uning chiqish voltaji tezda pasayadi. Buni chiqishni buferlash yoki kuchaytirish orqali hal qilish mumkin. Bu erda buferlash va kuchaytirish opamp yordamida amalga oshiriladi. Men LM358 -dan foydalandim, chunki menda bor edi. Bu sekin opamp (har bir mikrosaniyada 0,5 V), shuning uchun yuqori chastotali va yuqori amplitudali signal buziladi. Yaxshi narsa shundaki, u 0V ga juda yaqin kuchlanishlarni boshqarishi mumkin. Chiqish kuchlanishi rels ostida ~ 2V bilan cheklangan, shuning uchun +5V kuch ishlatish chiqish voltajini 3V ga cheklaydi. Bosqichli modullar ixcham va arzon. Opampga +20V berilsa, u 18 V gacha kuchlanishli signallarni ishlab chiqarishi mumkin. (NB, sxemada LTC3105 yozilgan, chunki bu Fritzingda topilgan yagona qadam edi. Aslida men MT3608 modulidan foydalandim, keyingi bosqichlardagi rasmlarga qarang). Men R2R DAC chiqishiga o'zgaruvchan susayishni qo'llashni tanladim, keyin signalni maksimal 20 V ga etkazish uchun opamplardan birini signalni kuchaytirmasdan tamponlash uchun, ikkinchisini esa 5,7 ga kuchaytirish uchun ishlataman. Chiqish oqimi juda cheklangan, ~ 10mA, shuning uchun signal katta dinamik yoki elektromagnitni boshqaradigan bo'lsa, kuchliroq kuchaytirgich kerak bo'lishi mumkin.

2 -qadam: kerakli komponentlar

Asosiy to'lqin shakli generatori uchun

Arduino Uno yoki Nano

16x2 LCD displey + 20kOm trimmer va orqa yorug'lik uchun 100 Ohm seriyali qarshilik

5 pinli aylanadigan kodlovchi (o'rnatilgan tugma bilan)

10 kOhm 25 rezistor

Tampon/kuchaytirgich uchun

LM358 yoki boshqa ikkita opamp

MT3608 asosidagi zaxira moduli

50 kOhm o'zgaruvchan qarshilik

10 kOhm qarshilik

47 kOhm qarshilik

1 mF kondansatör

3 -qadam: qurilish

Qurilish
Qurilish
Qurilish
Qurilish

Men rasmda ko'rsatilgandek, hamma narsani 7x9 sm o'lchamdagi prototip taxtasida lehimladim. Barcha simlar biroz chalkash bo'lgani uchun, men musbat kuchlanishli simlarni qizil va qora qora o'tkazgichlarni bo'yashga harakat qildim.

Men ishlatgan koderda 5 ta pin bor, 3 tasi bir tomonda, 2 tasi boshqa tomonda. 3 pinli tomon - bu haqiqiy kodlovchi, 2 pinli tomon - birlashtirilgan tugma. 3-pinli tomondan, markaziy pin erga, qolgan ikkita pin D10 va D11 ga ulangan bo'lishi kerak. 2-pinli tomondan, bitta pin erga, ikkinchisi D12 ga ulangan bo'lishi kerak.

Bu men qilgan eng yomon narsa, lekin u ishlaydi. Qavsga qo'yish yaxshi bo'lardi, lekin hozircha ortiqcha ish va xarajatlar buni oqlamaydi. Nano va displey pin sarlavhalari bilan biriktirilgan. Agar men yangisini qurganimda, bunday qilmagan bo'lardim. Men signallarni olish uchun bortga ulagichlarni qo'ymadim. Buning o'rniga, men ularni timsoh simlari bilan chiqib ketgan mis simlardan olaman, ular quyidagicha yozilgan:

R - R2R DAC dan xom signal

B - buferli signal

A - kuchaytirilgan signal

T - 9 -pinli taymer signali

G - tuproq

+ - kuchaytiruvchi moduldan ijobiy "yuqori" kuchlanish

4 -qadam: Kod

Arduino eskizi kodi biriktirilgan va uni Arduino -ga yuklash kerak.

20 ta to'lqin shakli oldindan aniqlangan. Boshqa to'lqinlarni qo'shish oson bo'lishi kerak. E'tibor bering, tasodifiy to'lqinlar 256 qiymatli qatorni tasodifiy qiymatlar bilan to'ldiradi, lekin har bir davrda bir xil naqsh takrorlanadi. Haqiqiy tasodifiy signallar shovqin kabi eshitiladi, lekin bu to'lqin shakli hushtakka o'xshaydi.

Kod TIMER1 bilan D9 piniga 1 kHz chastotali signalni o'rnatadi. Bu analog signalning vaqtini tekshirish uchun foydalidir. Shunday qilib men soat tsikllari soni 42 ekanligini aniqladim: agar men 41 yoki 43 deb hisoblasam va 1 kHz chastotali signal ishlab chiqaradigan bo'lsam, u aniq D9 pinidagi signaldan farq qiladi. 42 qiymati bilan ular mukammal mos keladi.

Odatda, Arduino millis () funktsiyasi bilan vaqtni kuzatib borish uchun har bir millisekundni to'xtatadi. Bu aniq signal ishlab chiqarishga xalaqit beradi, shuning uchun alohida uzilish o'chiriladi.

Tuzuvchi shunday deydi: "Sketch 7254 bayt (23%) dastur saqlash joyidan foydalanadi. Maksimal 30720 bayt. Global o'zgaruvchilar 483 bayt (23%) dinamik xotiradan foydalanadi, mahalliy o'zgaruvchilar uchun 1565 bayt qoladi. Maksimal 2048 bayt." Shunday qilib, yanada murakkab kod uchun etarli joy bor. Nano -ga muvaffaqiyatli yuklash uchun "ATmega328P (eski yuklash qurilmasi)" ni tanlashingizga to'g'ri keladi.

5 -qadam: Foydalanish

Signal generatorini Arduino Nano mini-USB kabeli orqali quvvatlantirish mumkin. Quvvat banki bilan eng yaxshi tarzda amalga oshiriladi, shuning uchun u bilan bog'lanishi mumkin bo'lgan qurilmada tasodifiy tuproqli pastadir yo'q.

U yoqilganda 100 Gts sinus to'lqin hosil bo'ladi. Tugmani aylantirish orqali boshqa 20 ta to'lqin turidan birini tanlash mumkin. Bosish paytida aylantirish orqali kursorni chastotaning istalgan raqamiga o'rnatish mumkin, keyin uni kerakli qiymatga o'zgartirish mumkin.

Amplitudani potentsiometr yordamida sozlash mumkin, buferli yoki kuchaytirilgan signaldan foydalanish mumkin.

Signalning amplitudasini tekshirish uchun osiloskopdan foydalanish juda foydali, ayniqsa, signal boshqa qurilmaga tok etkazib berganda. Agar juda ko'p oqim olinsa, signal uzilib qoladi va signal jiddiy buziladi

Juda past chastotalar uchun chiqish 10 kOhmli rezistorli ketma -ket LED bilan tasvirlanishi mumkin. Ovoz chastotalarini karnay bilan eshitish mumkin. Signalni juda kichik ~ 0,5 V ga o'rnatganingizga ishonch hosil qiling, aks holda oqim juda yuqori bo'ladi va signal kesila boshlaydi.

Tavsiya: