Cov txheej txheem:

Arduino Waveform Generator: 5 Kauj Ruam (nrog Duab)
Arduino Waveform Generator: 5 Kauj Ruam (nrog Duab)

Video: Arduino Waveform Generator: 5 Kauj Ruam (nrog Duab)

Video: Arduino Waveform Generator: 5 Kauj Ruam (nrog Duab)
Video: Making a &#!$%ing Button 2024, Hlis ntuj nqeg
Anonim
Arduino Waveform Generator
Arduino Waveform Generator

Lub Ob Hlis 2021 hloov tshiab: txheeb xyuas qhov hloov tshiab nrog 300x tus qauv piv txwv, raws li Raspberry Pi Pico

Hauv chav kuaj mob, ib tus neeg feem ntau xav tau cov cim rov ua dua ntawm qee qhov zaus, cov duab thiab qhov dav. Nws yuav yog los ntsuas lub tshuab hluav taws xob, txheeb xyuas lub Circuit Court, cov khoom siv lossis tus actuator. Cov tshuab hluav taws xob muaj zog muaj peev xwm muaj muag, tab sis nws yooj yim los ua kom muaj txiaj ntsig ib qho koj tus kheej nrog Arduino Uno lossis Arduino Nano, saib piv txwv:

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

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

Nov yog qhov kev piav qhia ntawm lwm tus nrog rau cov yam ntxwv hauv qab no:

* Cov ntaub ntawv raug tseeb: 8-ntsis tso tawm siv R2R DAC, 256-qauv ua qauv

* Ceev: 381 kHz tus nqi piv txwv

* Qhov tseeb: 1mHz qib zaus ntau zaus. Raws li qhov tseeb raws li Arduino siv lead ua.

* Kev ua haujlwm yooj yim: yoj yoj thiab zaus siv tau nrog ib tus lej nkag teb chaws

* Ntau yam kev nthuav dav: millivolts txog 20V

* 20 qhov kev txiav txim ua ntej tau teev tseg. Ncaj nraim ntxiv ntxiv.

* Yooj yim ua: Arduino Uno lossis Nano ntxiv rau cov khoom sib xyaw

Kauj Ruam 1: Kev Txiav Txim Siab

Ua ib qho teeb liab analog

Ib qhov tsis txaus ntawm Arduino Uno thiab Nano yog tias nws tsis muaj digital-to-analog (DAC) hloov pauv, yog li nws tsis tuaj yeem ua kom nws tso tawm qhov hluav taws xob analog ncaj qha rau ntawm tus pin. Ib qho kev daws teeb meem yog R2R tus ntaiv: 8 tus pin digital tau txuas nrog lub network resistor kom 256 qib ntawm cov zis tuaj yeem mus txog. Los ntawm kev nkag mus rau qhov chaw nres nkoj ncaj qha, Arduino tuaj yeem teeb 8 tus pin ib txhij nrog ib qho lus txib nkaus xwb. Rau cov neeg tawm tsam network, 9 tus tiv thaiv nrog tus nqi R xav tau thiab 8 nrog tus nqi 2R. Kuv siv 10kOhm ua tus nqi rau R, uas ua rau tam sim no los ntawm tus pin rau 0.5mA lossis tsawg dua. Kuv kwv yees R = 1kOhm tuaj yeem ua haujlwm ib yam, vim tias Arduino tuaj yeem xa tau yooj yim 5mA rau tus pin, 40mA rau ib qho chaw nres nkoj. Nws yog qhov tseem ceeb uas qhov sib piv ntawm R thiab 2R resistors yog tiag tiag 2. Qhov ntawd yog qhov yooj yim tshaj plaws los ntawm kev tso 2 resistors ntawm tus nqi R hauv koob, rau tag nrho ntawm 25 resistors.

Phase accumulator

Ua kom muaj cov yoj yoj los nqis los rov ua ntu zus ntawm 8-tus lej rau Arduino pins. Cov ntaub ntawv yoj tau khaws cia rau hauv ib qho ntawm 256 bytes thiab cov kab no tau piv txwv thiab xa mus rau tus pin. Qhov zaus ntawm cov teeb liab tso tawm yog txiav txim siab los ntawm ib qho kev nce qib dhau los ntawm kab. Txoj hauv kev muaj zog, meej thiab muaj kuab heev los ua uas yog nrog cov theem accumulator: tus lej 32-ntsis tau nce ntxiv nyob rau ib ntus, thiab peb siv 8 qhov tseem ceeb tshaj plaws raws li qhov ntsuas ntawm kab.

Sampling ceev

Kev cuam tshuam tso cai ua piv txwv ntawm lub sijhawm tau teev tseg zoo, tab sis cov nyiaj siv ua ntej ntawm kev cuam tshuam txwv cov qauv piv txwv rau ~ 100kHz. Lub voj tsis muaj qhov kawg los hloov kho theem, ua piv txwv ntawm cov nthwv dej thiab teeb tsa tus pin siv 42 teev mus, yog li ua tiav qhov piv txwv ntawm 16MHz/42 = 381kHz. Kev sib hloov lossis thawb lub cav sib hloov ua rau tus pin hloov pauv thiab cuam tshuam uas tau tawm ntawm lub voj los hloov qhov teeb tsa (yoj yoj lossis zaus). Nyob rau theem no 256 tus lej hauv kab ntawv tau rov xam dua kom tsis muaj qhov kev suav tseeb ntawm qhov yoj yoj yuav tsum tau ua hauv lub voj loj. Qhov siab tshaj plaws uas tuaj yeem tsim tau yog 190kHz (ib nrab ntawm kev ntsuas tus qauv) tab sis tom qab ntawd tsuas muaj ob qho piv txwv rau ib lub sijhawm, yog li tsis muaj kev tswj hwm ntau npaum li cas. Lub interface zoo li tsis tso cai teeb tsa zaus ntau dua 100kHz. Ntawm 50kHz, muaj 7-8 tus qauv rau ib lub sijhawm thiab ntawm 1.5 kHz thiab qis dua tag nrho 256 tus lej khaws cia hauv cov kab ntawv tau ua piv txwv txhua lub sijhawm. Rau cov qauv nthwv dej qhov twg lub teeb liab hloov pauv tau yooj yim, piv txwv li sine wave, hla mus kuaj tsis muaj teeb meem. Tab sis rau cov txheej txheem nthwv dej nrog qhov nqaim nqaim, piv txwv li ib puag ncig nthwv dej nrog lub luag haujlwm me me, muaj qhov txaus ntshai uas rau ntau zaus ntau dua 1.5 kHz uas ploj lawm ib qho piv txwv tuaj yeem ua rau lub nthwv dej tsis ua raws li qhov xav tau

Qhov tseeb ntawm qhov zaus

Tus lej uas theem tau nce ntxiv ntawm txhua tus qauv yog sib piv rau qhov zaus. Yog li qhov zaus tuaj yeem teeb tsa kom raug ntawm 381kHz/2^32 = 0.089mHz. Hauv kev coj ua qhov tseeb no tsis tshua xav tau, yog li cov kev txwv cuam tshuam los teeb tsa zaus hauv cov theem ntawm 1mHz. Qhov tseeb meej ntawm qhov zaus yog txiav txim siab los ntawm qhov tseeb ntawm Arduino moos zaus. Qhov no nyob ntawm hom Arduino tab sis feem ntau hais qhia zaus ntawm 16.000MHz, yog li qhov tseeb ntawm ~ 10^-4. Txoj cai tso cai hloov kho qhov sib piv ntawm qhov zaus thiab theem nce ntxiv kom raug rau qhov sib txawv me me ntawm 16MHz kev xav.

Buffering thiab amplification

Cov resistor network muaj qhov tso tawm siab impedance, yog li nws qhov hluav taws xob tso tawm sai sai yog tias thauj khoom txuas nrog. Qhov ntawd tuaj yeem daws tau los ntawm kev cuam tshuam lossis ua kom nrov nrov. Ntawm no, qhov tsis tuaj yeem thiab nthuav dav tau ua tiav nrog opamp. Kuv siv LM358 vim tias kuv muaj qee qhov. Nws yog qhov qeeb opamp (tua tus nqi 0.5V ib microsecond) yog li ntawm qhov ntau zaus thiab qhov siab siab lub teeb liab tau cuam tshuam. Qhov zoo yog tias nws tuaj yeem tswj tau qhov hluav taws xob ze rau 0V. Txawm li cas los qhov hluav taws xob tso tawm tsuas yog txwv rau ~ 2V hauv qab txoj kab tsheb, yog li siv +5V lub zog txwv qhov tso tawm hluav taws xob rau 3V. Cov kauj ruam-up modules yog compact thiab pheej yig. Pub +20V rau opamp, nws tuaj yeem tsim cov cim nrog qhov hluav taws xob txog 18V. (NB, cov txheej txheem hais tias LTC3105 vim tias yog tib qib uas kuv pom hauv Fritzing. Qhov tseeb kuv tau siv MT3608 module, saib cov duab hauv cov kauj ruam tom ntej). Kuv xaiv los thov hloov qhov sib txawv rau qhov tso tawm ntawm R2R DAC tom qab ntawd siv ib qho ntawm opamps txhawm rau kho lub teeb liab yam tsis muaj kev hloov pauv thiab lwm qhov los ua kom nrov nrov los ntawm 5.7, yog li lub teeb liab tuaj yeem ncav cuag qhov siab tshaj ntawm 20V. Cov zis tam sim no yog qhov txwv, ~ 10mA, yog li yuav xav tau lub zog loj dua yog tias lub teeb liab yog tsav tus hais lus loj lossis hluav taws xob.

Kauj Ruam 2: Cov Cheeb Tsam Xav Tau

Rau cov tub ntxhais waveform generator

Arduino Uno lossis Nano

16x2 LCD zaub + 20kOhm trimmer thiab 100Ohm series resistor rau backlight

5-pin rotary encoder (nrog rau khawm sib xyaw)

25 resistors ntawm 10kOhm

Rau qhov tsis/amplifier

LM358 lossis lwm yam opamp dual

step-up module raws li MT3608

50kOhm sib txawv resistor

10 kOhm resistor

47 kOhm resistor

1muF capacitor

Kauj Ruam 3: Kev tsim kho

Kev tsim kho
Kev tsim kho
Kev tsim kho
Kev tsim kho

Kuv tau muag txhua yam ntawm 7x9cm tsab ntawv pov thawj, raws li qhia hauv daim duab. Txij li thaum nws tau txais kev ntxhov siab me ntsis nrog txhua lub xov hlau kuv tau sim xim cov coj uas nqa qhov hluav taws xob zoo liab thiab cov uas nqa hauv av dub.

Tus encoder kuv siv muaj 5 tus pin, 3 ntawm ib sab, 2 ntawm lwm sab. Sab nrog 3 tus pin yog tus encoder tiag, sab nrog 2 tus pin yog kev sib koom ua ke. Ntawm 3-tus pin sab, tus pin nruab nrab yuav tsum txuas nrog hauv av, lwm ob tus pin rau D10 thiab D11. Ntawm 2-tus pin sab, ib tus pin yuav tsum txuas nrog hauv av thiab lwm qhov rau D12.

Nws yog qhov phem tshaj plaws uas kuv tau ua tab sis nws ua haujlwm. Nws yuav zoo rau muab tso rau hauv ib lub thawv, tab sis tam sim no qhov haujlwm ntxiv thiab tus nqi tsis yog qhov tseeb tiag. Nano thiab cov zaub tau txuas nrog tus pin-headers. Kuv yuav tsis ua qhov ntawd dua yog tias kuv yuav tsim ib qho tshiab. Kuv tsis tau tso cov khoom sib txuas ntawm lub rooj tsav khoom kom khaws cov cim qhia. Hloov chaw, Kuv khaws lawv nrog cov khej coj los ntawm cov kab tooj liab uas nthuav tawm, sau raws li hauv qab no:

R - teeb liab los ntawm R2R DAC

B - tsis teeb liab

A - teeb liab teeb liab

T - timer teeb liab los ntawm tus pin 9

G - hauv av

+ - qhov zoo 'siab' qhov hluav taws xob los ntawm cov qauv nce qib

Kauj ruam 4: Txoj Cai

Cov cai, daim duab Arduino, txuas nrog thiab yuav tsum muab xa mus rau Arduino.

20 waveforms tau npaj ua ntej. Nws yuav tsum ncaj kom ntxiv lwm qhov nthwv dej. Nco ntsoov tias cov nthwv dej tsis xwm yeem sau txog 256 tus nqi sib xws nrog qhov muaj txiaj ntsig zoo, tab sis cov qauv qub tau rov ua dua txhua lub sijhawm. Cov cim tsis tseeb muaj suab zoo li lub suab nrov, tab sis qhov kev yoj suab no zoo li ntau dua li tus xuav.

Txoj cai teeb tsa 1kHz teeb liab ntawm tus pin D9 nrog TIMER1. Qhov no muaj txiaj ntsig los txheeb xyuas lub sijhawm ntawm cov teeb liab analog. Qhov ntawd yog qhov kuv xam pom tias tus naj npawb ntawm lub moos mus yog 42: Yog tias kuv xav tias yog 41 lossis 43, thiab tsim tawm 1kHz teeb liab, nws qhia meej muaj qhov sib txawv ntawm qhov teeb liab ntawm tus pin D9. Nrog tus nqi 42 lawv sib txig.

Feem ntau, Arduino cuam tshuam txhua millisecond kom taug qab lub sijhawm nrog millis () ua haujlwm. Qhov no yuav cuam tshuam kev tsim lub teeb liab raug, yog li qhov cuam tshuam tshwj xeeb yog xiam oob khab.

Tus sau hais tias: "Sketch siv 7254 bytes (23%) ntawm qhov chaw khaws cov program. Qhov siab tshaj plaws yog 30720 bytes. Cov kev hloov pauv thoob ntiaj teb siv 483 bytes (23%) ntawm lub cim xeeb tsis zoo, tawm hauv 1565 bytes rau qhov hloov pauv hauv zos. Qhov siab tshaj plaws yog 2048 bytes." Yog li muaj qhov chaw txaus rau ntau txoj cai ntxiv. Ceev faj tias koj yuav tsum xaiv "ATmega328P (qub bootloader)" txhawm rau upload ua tiav rau Nano.

Kauj ruam 5: Siv

Lub tshuab hluav taws xob tuaj yeem siv hluav taws xob yooj yim los ntawm mini-USB cable ntawm Arduino Nano. Nws yog qhov ua tau zoo tshaj plaws nrog lub txhab nyiaj hluav taws xob, yog li tsis muaj kev phom sij hauv av nrog lub cuab yeej uas nws tuaj yeem txuas nrog.

Thaum hloov pauv nws yuav ua kom muaj 100Hz sine wave. Los ntawm kev hloov lub pob qhov rooj, ib qho ntawm lwm 20 hom yoj tuaj yeem xaiv. Los ntawm kev tig thaum thawb, tus cursor tuaj yeem teeb tsa rau ib qho ntawm tus lej ntawm qhov zaus, uas tom qab ntawd tuaj yeem hloov mus rau tus nqi uas xav tau.

Qhov dav dav tuaj yeem tswj hwm nrog lub hwj chim thiab yog qhov tsis tuaj yeem lossis lub teeb liab tau siv tau.

Nws yog qhov muaj txiaj ntsig tiag tiag los siv lub oscilloscope txhawm rau txheeb xyuas lub teeb liab, tshwj xeeb yog thaum lub teeb liab muab cov khoom siv tam sim no rau lwm lub cuab yeej. Yog tias muaj ntau dhau tam sim no, lub teeb liab yuav kaw thiab lub teeb liab raug cuam tshuam ntau

Rau qhov qis heev, qhov tso tawm tuaj yeem pom nrog LED hauv kab nrog 10kOhm resistor. Lub suab nrov tuaj yeem hnov nrog tus hais lus. Nco ntsoov teeb lub teeb liab me me ~ 0.5V, txwv tsis pub tam sim no tau txais siab dhau thiab lub teeb liab pib clipping.

Pom zoo: