Tartalomjegyzék:

Az egyszerű harmonikus mozgás kísérleti vizsgálata: 5 lépés
Az egyszerű harmonikus mozgás kísérleti vizsgálata: 5 lépés

Videó: Az egyszerű harmonikus mozgás kísérleti vizsgálata: 5 lépés

Videó: Az egyszerű harmonikus mozgás kísérleti vizsgálata: 5 lépés
Videó: Az energiamegmaradás törvénye egyszerű gépek példáján bemutatva 2024, Július
Anonim

Kövesse a szerző további információit:

Walking Strandbeest, Java/Python és alkalmazásvezérelt
Walking Strandbeest, Java/Python és alkalmazásvezérelt
Walking Strandbeest, Java/Python és alkalmazásvezérelt
Walking Strandbeest, Java/Python és alkalmazásvezérelt

Az osztályteremben gyakran használunk stopperórát az ingakísérlet, vagy egyszerű harmonikus mozgáskísérlet végrehajtásához. Itt egy kihívás, tudunk -e valós grafikont készíteni a mozgásáról, és megnézni, hogy mi a pillanatnyi szöghelyzet és sebesség, ez sokkal több információ és szórakozás.

Az első kérdés, el kell döntenünk, hogy az ingatest súlytalan zsinór vagy merev egyenletes rúd. A zsinóros megközelítés könnyebbnek tűnik. Az egyik építés gyakorlatából a következő kompromisszumos megfontolások vannak: A legegyszerűbb módja annak, hogy felakasszon egy ingarendszert, ha az ajtó felső széléhez akasztja. Ez ~ 2 méteres ingahosszat ad, anélkül, hogy szerkezeti építési munkákat végezne. De szükség van rá, hogy a hinta ne érintse meg az ajtó felületét, ami egyszerűen tönkreteszi az egész kísérletet. Tehát a lengés síkjának pontosan párhuzamosnak kell lennie a fal/ajtó felületével. A súlytalan zsinór általában vékony, könnyen foroghat, és bonyolítja a lengési szög mérését. Egy mérést szeretnénk használni a lengési állapot ábrázolására. A vékony zsinór, mint például a horgászzsinór, rugalmas és nyújtható lehet, ami befolyásolja az egyik legfontosabb általam mért és általam használt állandót, amely az inga hossza. Néhányat a hőmérséklet is befolyásolhat. A zsinór végén lógó súlynak elég nehéznek kell lennie ahhoz, hogy a zsinór súlya elhanyagolható legyen. Kérjük, írjon megjegyzést, ha egyetért vagy nem ért velük, vagy más tervezési ötlettel rendelkezik. Ennek a problémának a vizsgálatához olyan eszközre van szükségünk, amely annyira könnyű, hogy a súlyát figyelmen kívül lehet hagyni, és továbbra is merev egyenletes rúdként kezeljük az ingarendszert. COTS hordható elektronikus vezérlőt használok, amely a giroszkóp, a gyorsulásmérő és a szöginformációkat eljuttatja hozzánk bluetooth kapcsolaton keresztül. Ezeket a méréseket egy mobiltelefonos alkalmazás adatfájljában tároljuk. Ezt követően elemezzük egyszerű harmonikus mozgáskísérletünk adatait. A numerikus elemzés a következő témákra összpontosít: 1) Az inga lengési periódusának előrejelzése 2) Programozhatóan gyűjtsük össze az inga egyszerű harmonikus mozgás kísérleti adatait 3) A kmean használatával csoportosítsuk az adatokat, és távolítsuk el a kiugró értékeket az elemzési folyamatból 4) Rövid idejű FFT használatával becsüljük meg az inga lengési frekvenciáját

Kellékek

Bluetooth mérőberendezés

Android telefonos alkalmazás: Nyissa meg a Google Play áruházat, keresse meg az M2ROBOTS alkalmazást, és telepítse a vezérlőalkalmazást. Ha nehéz elérni a Google Play áruházat, keresse fel személyes honlapomat az alternatív alkalmazásletöltési módszerért

fa rúd

néhány 3D nyomtatott alkatrész

fűrészlapok vagy hasonló fém anyagok

Lépés: Mi az inga? Hogyan kell modellezni?

Sok cikk és könyv mutatja be az ingaegyenlet levezetését, beleértve a tantervi fizika könyvet is. Lehet, hogy jobb, ha az ilyen tartalmat itt nem ismételjük meg. Itt csak a végső következtetés szerepel az "egyszerű harmonikus mozgás" témakörben. Annak érdekében, hogy megtudjuk az inga időszakát, mindössze annyit kell tudnunk, hogy az inga hossza (l), méterben.

Ha biztosak vagyunk abban, hogy a súly szinte teljesen a csuklóban lógó súlytalan zsinór végén helyezkedik el, és az inga kis les szöget zár be, mondjuk 15 ° -nál kevesebbet, akkor az ilyen inga T1 periódusát a következő határozza meg:

T1 = 2*pi*(l/g)^0,5

g = gravitációs gyorsulás, megközelítőleg 9,8 m/s^2

Ha a súlytalan zsinórt egy merev egyenletes rúdra cseréljük, ismét l hosszúságú, akkor a T2 egyszerű harmonikus mozgási periódusát T1 = 2*pi*(2l/3g)^0,5 adja meg

Gyakorlatilag ugyanaz az időtartam, mint a súlytalan zsinór -inga, amely a merev, egyenletes rúdhossz kétharmada.

Ez a háttér, és elkezdhetjük a kísérlet előkészítését.

2. lépés: Készítse elő az alkatrészeket a hardverépítéshez

Készítse elő az alkatrészeket a hardverépítéshez
Készítse elő az alkatrészeket a hardverépítéshez
Készítse elő az alkatrészeket a hardverépítéshez
Készítse elő az alkatrészeket a hardverépítéshez
Készítse elő az alkatrészeket a hardverépítéshez
Készítse elő az alkatrészeket a hardverépítéshez

Az ingaszerkezet felépítéséhez 3D -ben kinyomtatunk néhány alkatrészt, és újrahasznosítunk valamit, ami már megvan. A teljes ingaszerkezetet az 1. ábra mutatja. Ez a 3D nyomtatási alkatrészek keveréke, néhány kézzel készített alkatrész és egy hosszú darab fatörzs a Lowe -tól.

A 3D -s nyomtatott rész a 2. ábrán az ajtó felső szélén lóg, mert az ajtónk könnyen lapos felület ahhoz, hogy felakaszthassunk valamit. STL fájl letöltési link:

xiapeiqing.github.io/doc/kits/pendulum/pen…

A 3. ábra zöld része összeköti a fapálcát egy pengével, és a penge a korábbi 3D nyomtatott ajtófogasra szerelt két sín tetején helyezkedik el. STL fájl letöltési link:

A két síndarabot úgy készítik el, hogy egy régi fűrészlapot kettévágnak, lásd a 4. ábrát. A 2. ábrán látható rész előkészítette a megfelelő résméretet. Ideális esetben egy "V" alakú bevágást készíthetünk a két fűrészlapban egy reszelő segítségével. Egy ésszerűen éles szélű fém, például egyélű borotva penge, vagy bármilyen kézzel készített fémdarab a V alakú bevágásokon belül ülhet. Azért van szükségünk kisebb érintkezési területre, hogy csökkentsük a lengés közben elveszett mozgási energiát.

Az utolsó 3D nyomtatott rész az 5. ábrán egy kis tálca az elektronikus mérőberendezés elhelyezésére.

A letöltési link:

A Bluetooth mérőberendezés szögbecslést, giroszkóp mérést és gyorsulásmérőt hoz létre. Mindezek az adatok elérhetők a Bluetooth vezeték nélküli kapcsolaton keresztül.

Több kísérletet fogunk végezni, ha ezt a készüléket az ingakar különböző helyzetébe telepítjük, és látni fogjuk a különbségeket.

3. lépés: Kísérleti adatgyűjtés

Kísérleti adatgyűjtés
Kísérleti adatgyűjtés
Kísérleti adatgyűjtés
Kísérleti adatgyűjtés
Kísérleti adatgyűjtés
Kísérleti adatgyűjtés

A kísérleti adatgyűjtéshez két kivitelezhető módszer létezik a megszerzett adatkészlet elemzése előtt:

1) Használja a követelmények szakaszban meghatározott Android telefonos alkalmazást, hogy a készülék által végzett összes mérést a telefon SD -kártyáján tárolt adatfájlba rögzítse. Másolhatjuk a fájlt, és feldolgozhatjuk az információkat.

2) Használjon Bluetooth-kompatibilis számítógépet, PC-t, laptopot vagy RaspberryPi mini-számítógépet Bluetooth-kapcsolat létrehozásához a készülékkel, és olvassa el az adatokat valós idejű vagy offline elemzéshez.

Mindegyik módszernek vannak előnyei és hátrányai, mindkettőt kipróbáljuk, és megmondjuk a különbséget ebben a tanulságosban.

Az (1) módszer esetében az android alkalmazás használatával, miután az android alkalmazásvezérlő felületen vagyunk, a Bluetooth mérőberendezésről az androidos telefonra küldött telemetriai adatokat rögzítjük az m2flightDatayyyymmdd_hhmmss.txt nevű adatfájlba. Megtalálható androidos telefonjának Letöltés/m2LogFiles mappájában. A "Letöltés" mappa a telefon Android operációs rendszerében már létező mappa, a "m2LogFiles" pedig az alkalmazás által létrehozott mappa. Az yyyymmdd_hhmmss fájlnév tartalommal lehet kódolni a kísérlet kezdési idejét (év, hónap, nap, óra, perc és másodperc) a fájlnévben.

A naplófájl minden sora egy rekord. Az esemény időbélyegzőjével kezdődik, az "eam:" preambulum karakterlánccal, majd 4 hármasadattal, amelyek:

Gyorsulásmérő XYZ tengely leolvasása a nyers érzékelő hardver regiszter visszaolvasási értékeiben

Giroszkóp XYZ tengely leolvasása a nyers érzékelő hardver regiszter visszaolvasási értékeiben

Magnetométer XYZ tengely leolvasása a nyers érzékelő hardver regiszter visszaolvasási értékeiben

fedélzeti becsült Roll/Pitch/Raw fok

A számítógépes python programmal létrehozott adatfájl azonos adatfájl -formátumot fog használni, így az adatelemzési lépésben használt programot nem zavarja, hogy az adatforrást a python programunk vagy az Android -alkalmazásunk állítja elő.

Kezdjük a kódolást a (2) módszerrel.

A Bluetooth mérőberendezéssel való kölcsönhatáshoz kétféle SDK van:

1) A Python SDK, amelyet a "pip3 install m2controller" telepíthet, a python3 a használt nyelv. A felhasználói alkalmazáskódok példái a https://github.com/xiapeiqing/m2robots/tree/maste… címen találhatók. Ehhez a kísérlethez a pytulum1.py python szkriptet fogjuk használni

2) Java SDK, amelyet ebben az oktatóanyagban nem használunk, mert szeretnénk a megszerzett ingaadatok későbbi megjelenítését és elemzését, ami talán egy kicsit több erőfeszítést igényel a Java programozáshoz.

A python3 adatgyűjtő program forráskódja számos megjegyzést tartalmaz a kódfunkció részleteivel kapcsolatban. A forráskód pillanatfelvétele itt található.

#!/usr/bin/env python#-*-kódolás: UTF-8-*-az m2controllerből

requestExit = Hamis

################################################################

#ugyanazt a naplófájl -elnevezési konvenciót akarjuk használni, hogy az adatelemző modul, a pendulum2.py agnosztikus legyen a naplóadat -fájl megszerzésének módjában ################# ############################################### logfilename = " m2flightData%s.txt "%(datetime.datetime.fromtimestamp (time.time ()). strftime ('%Y%m%d_%H%M%S')) dataLogfile = open (naplófájlnév," w ")

def signal_handler (sig, frame):

globális kérés

################################################################

#amikor minden mérési adat 20 Hz -es frekvencián elérhetővé válik, ezt a "visszahívási" funkciót meghívják. ################################## def callbackfunc (telemetria): strTimeStamp = datetime.datetime.fromtimestamp (time.time ()). strftime ('%H:%M:%S.%f') [:-3] dataStr = "%s, eam:%d,%d,%d,%d,%d,%d, %d, %d, %d, %2.1f, %2.1f, %2.1f / n " %(strTimeStamp, telemetria ['m_fAccelHwUnit'] [0], telemetria ['m_fAccelHwUnit'] [1], telemetria ['m_fAccelHwUnit'] [2], telemetria ['m_fGyroHwUnit'] [0], telemetria ['m_fGyroHwUnit'] [1], telemetria ['m_fGyroHwUnit'] [2], telemetria

################################################################

#inicializálja a vezérlőt, ne felejtse el beállítani a BleMACaddress mezőt az eszköz MAC -címének ################################# ################################TODO: inicializáljuk a BleMACcímet, ha nem a felhasználó állítja be. controller = m2controller. BleCtrller (m2Const.etDebian, callbackfunc, usrCfg. BleMACaddress) controller.connect (), míg igaz: ########################## ########################################várjon az ingamérés során létrehozott és elküldött mérési adatokra készülék ################################################### ############### controller.m_CommsTunnel.waitForNotifications (1.0) if requestExit: ####################### ###########################################háztartás itt működik, amikor befejezzük az adatnaplózást #################################################### ############## controller.stop () dataLogfile.close () break

################################################################

#adatgyűjtés befejeződött, most elemezzük a naplóadatokat. ########################## pendulum2.parseDataLogFile (naplófájlnév)

A hosszú távú frissítésekért kérjük, ellenőrizze a

Most magyarázzuk el működési módját. Ez a python program egy pip telepíthető csomag tetejére van írva, m2controller néven. Az alsó szintű csomag visszahívási mechanizmust kínál, így minden kapott mérési frissítés elindítja az általunk írt visszahívási funkciót, és elmenti az adatokat egy helyi naplófájlba. A naplófájl -adattartalom formátuma megegyezik az android kísérőalkalmazás által előállított formátummal, így a python program vagy az andriod kísérőalkalmazás által létrehozott adatnaplófájl cserélhető.

Az operációs rendszer által rögzített felhasználói ctrl-C jelet továbbítja a programnak, és állítsa le a végtelen ciklust, amely a mérési adatok új érkezésére vár.

Eddig a naplófájl sikeresen létrejött, és ez a program felhívja az elemző programot, hogy tanulmányozza a kísérleti eredményeket.

Íme két kísérlet, és az összehasonlítás azt a nagyon észrevehető különbséget mutatja, ha 7 grammos eszközt csatlakoztatnak különböző helyekre.

A 2. ábrán egy skálát használunk ennek a Bluetooth mérőberendezésnek a tényleges súlyának meghatározásához.

A 3. ábra az inga beállítását mutatja, ahol a 7 grammos eszköz az inga alsó végéhez van rögzítve. A 4.

Az 5. ábra az inga szerkezetének közeli nézete.

4. lépés: Adatelemzés

Adatelemzés
Adatelemzés
Adatelemzés
Adatelemzés
Adatelemzés
Adatelemzés

A Bluetooth mérőberendezés súlya ~ 7 gramm, ami sokkal kevesebb, mint egy ~ 1,6 méter hosszú fa bot. Használja a "merev egyenletes rúd" feltételezését, és megkapjuk ezt az inga periódus egyenletet, T1 = 2*pi*(2l/3g)^0.5

A gravitációs állandó eléréséhez használhatjuk a 9,8 m/s^2 értéket. De pontosabb gravitációs állandó bármely adott földrajzi helymeghatározásból lekérhető ebből a webszolgáltatásból:

www.wolframalpha.com/widgets/view.jsp?id=e…

San Francisco esetében ez 9,81278 m/s^2

Az inga hossza 64,5 hüvelyk

2*pi*sqrt (2*64,5*0,0254/(3*9,81278)) a várt ingaperiódust 2,0962 (mp) adja.

Lássuk, hogy egyetért -e kísérleteinkkel.

Az első kísérletben az inga beállításához a 7 grammos készülék az inga alsó végéhez van rögzítve. A naplófájlom innen tölthető le:

xiapeiqing.github.io/doc/kits/pendulum/pen…

Nevezze át "PendulumTestData.txt" -re, és tegye a python elemző program ugyanazon mappájába. A forráskód pillanatfelvétele itt található.

#!/usr/bin/env python#-*-kódolás: UTF-8-*-import csv import matplotlib.pyplot as plt plt.style.use ('seaborn-whitegrid') import numpy as np from datetime import datetime, timedelta import seaborn mint sns a sklearn -ből. klaszter import KMeans gyűjteményekből import számláló #################################### ############################## Ez a függvény futtatja az adatfájl -elemzési munkát ############ ################################################### ## def parseDataLogFile (adatfájlnév): ########################################## ########################vonja ki az adatokat a vesszővel elválasztott adatnaplófájlba (CSV), és mentse az egyes oszlopok tartalmát egy úszó típusú változóba ## ################################################### ############ nyitott (adatfájlnév) csvfileként: readCSV = csv.reader (csvfile, delimiter = ',') timestampS = fAccelHwUnit_x = fAccelHwUnit_y = fAccelHwUnit_ fGyroHwUnit_x = fGyroHwUnit_y = fGyroHwUnit_z = fMagHwUnit_x = fMagHwUnit_y = fMagHwUni t_z = fRPYdeg_r = fRPYdeg_p = fRPYdeg_y = a readCSV sorban: try: x = datetime.strptime ([0].split (',') [0], '%H:%M:%S.%f ') timestampS.append (időzített delta (óra = x.óra, perc = x.perc, másodperc = x.másodperc, mikroszekundum = x.mikroszekundum).összeg [1] [4:])) fAccelHwUnit_y.append (float ([2] sor)) fAccelHwUnit_z.append (float ([3] sor)) fGyroHwUnit_x.append (float ([4]. Sor)) fGyroHwUnit_y.append (float (sor [5])) fGyroHwUnit_z.append (float ([6]. sor)) fMagHwUnit_x.append (float ([7]. sor))) fMagHwUnit_y.append (float ([8]. sor)) fMagHwUnit_z.append (float (row [9])) fRPYdeg_r.append (float ([10] sor)) fRPYdeg_p.append (float ([11] sor)) fRPYdeg_y.append (float ([12] sor))), kivéve: pass timestampS = np.asarray (időbélyegeket) időbélyegeket = időbélyegeket - időbélyegeket [0] fAccelHwUnit_x = np.asarray (fAccelHwUnit_x) fAccelHwUnit_y = np.asarray (fAccelHwUnit_y) fAccelHwUnit_z = np.asarray (fAccelHwUnit_z) fGyroHwUnit_x = np.asarray (fGyroHwUnit_x) fGyroHwUnit_y = np.asarray (fGyroHwUnit_y) fGyroH wUnit_z = np.asarray (fGyroHwUnit_z) fMagHwUnit_x = np.asarray (fMagHwUnit_x) fMagHwUnit_y = np.asarray (fMagHwUnit_y) fMagHwUnit_z = np.asarray (fMagHwUnit_z) fRPYdeg_r = np.asarray (fRPYdeg_r) fRPYdeg_p = np.asarray (fRPYdeg_p) fRPYdeg_p = fRPYdeg_p - np.mean (fRPYdeg_p) fRPYdeg_y = np.asarray (fRPYdeg_y)

################################################################

#pontos becslésre van szükségünk a mintavételi gyakorisághoz a pontos oszcillációs időszak becsléséhez ########################### ############################## FsHz = getSamplingIntervalS (timestampS) ################ #################################################használat hangmagasság -összetevő az attitűdcím -referenciarendszer kimenetében inga periódus elemzéshez ##################################### ############################################# analy_timeSequence (timestampS, fRPYdeg_p, FsHz, 'pitch') ################################################### ####használja az acceleromter nyers mérési kimenetet inga periódus elemzéséhez ###################################### ####################################################################################################################################################### analyz_idő ################################################### ####használja a giroszkóp nyers mérési kimenetet az inga periódus elemzéséhez ############################ analy_timeSequence (timestampS, fGyroHwUnit_y, FsHz, " gyro ') print (' kész, gratulálok:-) ') plt.show () ################################ ###################################a bluetooth kommunikációs folyamatban, ritka az esély arra, hogy az adatkommunikációs csomag el kell veszni#K-átlagot használunk a 20 Hz-es mérési adatok elkülönítésére a kiugró értékektől, amelyeket a#csomag elvesztése okoz a "jelzésbe és rendszerbe a további részletekért" ################ ################################################# def getSamplingIntervalS (timestampS): plt.figure () sampleIntervalS = np.diff (timestampS) sns.distplot (sampleIntervalS) plt.ylabel ('hisztogram') plt.xlabel ('mérési intervallum (ok)') clusterCnt = 5 km = KMeans (n_clusters = clusterCnt) km.fit (sampleIntervalS.reshape (-1, 1)) centroids = km.cluster_centers_ elemCnt = Számláló (km.labels_) előfordulásaCnt = a tartományban (clusterCnt): eseményCnt.append (elemCnt [ii]) FsHz = 1/centroidok [eseményCnt.index (max (előfordulásCnt))] visszatér FsHz

################################################################

#használjon spektrométert, azaz rövid időtartamú FFT -t a frekvenciakomponens megszerzésére, a csúcstartó a legjobb becslésünk az inga lengésére ########################### ####################################### def analy_timeSequence (timestampS, timeSeqData, FsHz, strComment): ábra, (ax1, ax2) = plt.subplots (nrows = 2) ax1.plot (timestampS, timeSeqData, marker = 'o', markerfacecolor = 'blue', markersize = 2, color = 'skyblue', linewidth = 1) ax1.set_title ("ingaidő tartomány mérése - %s" %strComment) ax1.set_xlabel ("mintavételi idő (második)") ax1.set_ylabel (strComment); NFFT = 2048 # az ablakszegmensek hossza

Pxx, freqs, bins, im = ax2.specgram (timeSeqData, NFFT = NFFT, Fs = FsHz, noverlap = NFFT/2)

ax2.set_title ("Spectrogram") ax2.set_xlabel ("minták") ax2.set_ylabel ("frekvencia (Hz)");

# A `specgram` metódus 4 objektumot ad vissza. Ők:

# - Pxx: a periodogram # - gyakoriságok: a frekvenciavektor # - tárolók: az időtartományok középpontjai # - im: a matplotlib.image. AxesImage példány, amely a diagramban szereplő adatokat ábrázolja pkresult = np.where (Pxx == np.amax (Pxx)) oscFreqHz = freqs [pkresult [0] [0] print ('inga lengése Freq (Hz) =%f, periódus (sec) =%f, becslési adatforrás:%s'%(oscFreqHz, 1/oscFreqHz, strComment)) visszatér 1/oscFreqHz

################################################################

#Ha önállóan futtatjuk ezt a programot, azaz nem hívjuk meg a pendulum1.py által,#definiálunk egy alapértelmezett naplófájlnevet, amelyet elemezni szeretnénk ##################### ############################################# Ha _name_ == "_main_ ": defaultFilename = './PendulumTestData.txt' os.path importálása, ha os.path.isfile (defaultFilename): parseDataLogFile (defaultFilename) else: print (" alapértelmezett naplófájl %s nem létezik " %defaultFilename)

A hosszú távú frissítésekért kérjük, ellenőrizze a

A forráskód részletes megjegyzéseket tartalmaz, adjunk itt egy magas szintű összefoglalót a matematikai becslésről.

1) Először a CSV fájl tartalmát olvassuk be a számítógépbe, a "csv" nevű python csomag segítségével. Rendszeres méréseket végzünk.

21: 34: 26.362, eam: 0, -128, 14464, -8, 144, -96, 2112, -1280, 1664, -0,5, -5,5, 40,5

21: 34: 26.373, eam: 128, 0, 14272, -8, 136, 40, 2112, -1280, 1664, -0,5, -6,5, 40,0

21: 34: 26.412, eam: 448, -64, 14208, -8, 136, 24, 2176, -1280, 1664, -0,5, -7,5, 40,5

21: 34: 26.462, eam: 448, -128, 14272, -8, 120, 16, 2176, -1280, 1664, -0,5, -8,0, 40,5

2) Mivel a mérési sebesség annyira kritikus, és közvetlenül ingaperiódus -becslési hibát vezet be, ezért meg akarjuk becsülni őket. A névleges mérési intervallumunk 50 ms, azaz 20 Hz. Az összes mérés átlaga rendben van, de időnként elveszítjük az adatátviteli csomagot, a frissítési intervallum 100 ms vagy 150 ms lesz,…

Ha ezeknek az adatoknak az előfordulását ábrázoljuk, lásd az 1. ábrát, emberként könnyen 0,05 mp -es szemgolyó -értéket kaphatunk. Azonban tehetünk ennél jobbat?

Osztályozási módszert kell használnunk, hogy csak a jóakat válasszuk ki a számítás átlagolásához. A Python rendelkezik KMeans nevű eszköztárral, amely segít a csoportosításban, vagy mondjuk a besorolásban. Ezeket a fogalmakat sok big data és AI területen használják.

3) A 2. ábra két képet tartalmaz. A felső diagram a dőlésszög-mérés időbeli tartománya. A másodpercben az x tengely időbélyegére hivatkozva körülbelül 22,5 ciklust olvashatunk le 50 másodperc alatt, ami 2,22 másodperces ingaperiódust jelent. Van -e mód a folyamat automatizálására és pontosabb becslésre? Igen, használhatunk spektrogram nevű matematikai eszközt, amely a mérési adatok egy kis darabját használja, és megmondja a gyakoriságát, lásd az alábbi ábrát. A legsötétebb vonal y tengelyének leolvasása az inga lengési frekvenciája. Ha vízszintes vonalról van szó, az megerősíti, hogy az inga rezgése egyáltalán nem változott a kísérlet során. Az oszcillációs frekvencia fordított értéke az inga lengési periódusa.

A program végső jelentése szöveges összefoglaló:

inga lengése Freq (Hz) = 0,449224, periódus (sec) = 2,226059, becslési adatforrás: pitch

Megállapíthatjuk, hogy a korábbi szemhéjfájó kézszámítási eredményünk, 2,22 mp, meglehetősen összhangban van a program által kiszámított értékkel.

A 2,0962 (sec) elméletileg kiszámított értékhez képest ~ 5% maradék hiba van. Hogyan lehet megszabadulni tőlük? Emlékszel a feltételezésre: "merev egyenletes rúd"? Még a 7 gramm extra súly is triviálisnak tűnik, ez a fennmaradó hiba legnagyobb oka.

Most mozgatjuk a készüléket, a csukló közelében. Közelképhez lásd az előző lépést. Az általam létrehozott naplófájl letölthető innen:

xiapeiqing.github.io/doc/kits/pendulum/pen…

Futtassa ugyanazokat az elemzési lépéseket, és 2,089867 (másodperc) periódust kapunk, lásd a 3. ábrát, amely majdnem megegyezik az elméleti előrejelzéssel. Nagy!

Mivel nemcsak lengő szögméréssel rendelkezünk, hanem giroszkópos méréssel és gyorsulásmérővel is azonos ütemben. Végezze el ugyanazt az elemzést a másik két mérésnél is, és a 4. és 5. ábrán kapunk eredményeket. Mindhárom mérési forrás becslései egyetértenek, és így magabiztosabbak vagyunk kísérletünk sikerében.

Íme az eredmény a futó python program végső kimeneteként:

inga lengése Freq (Hz) = 0.478499, Period (Sec) = 2.089867, becslési adatforrás: pitch

inga lengése Freq (Hz) = 0,478499, periódus (sec) = 2,089867, becslési adatforrás: accel

inga lengése Freq (Hz) = 0,478499, periódus (sec) = 2,089867, becslési adatforrás: giroszkóp

Utolsó gondolat ebben a lépésben, hogyan lehetnek a becslési eredmények pontosan azonosak különböző bemeneti adatforrások használatával? Ez az ellenérzés. Ezt a kérdést az olvasókra bízom. Íme egy tipp: emlékszel, hogy a rövid idejű FFT-t használjuk az oszcillációs frekvencia becslésére? A digitális tartományban a frekvenciabecslést diszkrét frekvenciatartályokban adják meg a lebegő számbecslés helyett.

5. lépés: Jövőbeni munkára vonatkozó ajánlások

A jövőbeli munkára vonatkozó ajánlásoknak kevés kategóriája van.

A korábbi lépésben sikerült csökkenteni a kísérleti hibát ~ 5% -ról 1% alá, tudunk ennél jobban? Ha észreveszi, hogy az oszcilláció nagysága exponenciálisan csökken, az egyik tényező lehet az inga lengésekor fellépő légáramlás. Az inga keresztmetszetét módosítani kell, hogy áramvonalas legyen az aerodinamikai ellenállás csökkentése érdekében.

Alkalmazhatjuk-e az adaptív szűrési technikákkal megtanult, időben változó nyereséget állandó csúcs-nagyságú jel kibocsátására. Addig is korreláljon a nagyságrendű csillapítás külső erőkkel.

Alig találunk egyszerűbbet, mint az "egyszerű harmonikus mozgás". Használhatjuk -e az ingát elemző létesítményeinket valami bonyolultabb elemzésre, sporttevékenységre, vízrakéta -kilövésre stb.?

Boldog hackelést

Ajánlott: