Sisukord:
Video: Tehke FPGA -st mis tahes andur: 4 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
Enamik tegijaid proovis vähemalt korra elus termomeetrit ehitada, võib -olla pole see, mis neil kodus on, piisavalt tark või arvavad nad, et saavad järgmise PESTA ehitada. Sellegipoolest oli neil mingil hetkel mikrokontroller koos oma tipptasemel tarkvaraga ühendatud temperatuurianduriga (ja võib-olla ka muude anduritega: rõhk, valgus). Siiani on kõik täiuslik, tarkvara töötab ja andur tunneb. Proovime järele!
Hmmmm … võib -olla peaks ta andurit fööniga soojendama ja jääga jahutama, see töötab mõnda aega. Kuid see ei tundu professionaalne, andur muudab kuumutamisel väärtusi liiga kiiresti, see ei kuumene rohkem kui paar kraadi. Projekt on büst! Kuid algoritm on uus, võtab arvesse paljusid tegureid, kui kahju, et ta selle rumala pisiasja peale kinni jäi.
Minu lahendus on järgmine: pange FPGA toimima andurina, mille väärtused arvutist voogesitatakse (või salvestatakse mällu või luuakse FPGA-s ad hoc). Nii et teie kallihinnalise MCU jaoks näeb FPGA välja nagu andur, kuid mitte ükski andur: mis tahes andur teile meeldib. Võib -olla otsustate, et vajate oodatust suuremat eraldusvõimet või kiiremat reageerimisaega, peate anduri vahetama. Telli see Internetist, see jõuab kohale paari päeva, paari kuu jooksul, kes teab. Sisestage oma PCB või tellige moodul uue anduriga. Või… paar klõpsu ja FPGA on konfigureeritud teie uhiuueks anduriks ning see võib jäljendada täpset sisemist konfiguratsiooni.
Selle kirjutamise hetkel võib FPGA toimida LM75 -ga, mille temperatuuriandmed on salvestatud BRAM -i (FPGA -l).
1. samm: MCU
Minu valitud MCU on LPC4337 LPCXpresso peal. Selle peal on mul kilp (LPC General Purpose Shield) koos ekraaniga ja tõeline LM75 andur. LPC4337 on ARM Cortex M4, mis töötab sagedusel 200 MHz ja väiksem Cortex M0 (siin ei kasutata). Tõeline andur on ühendatud I2C1 välisseadmega ja meie virtuaalne ühendatakse I2C0 -ga. Allikas on saadaval minu GitHubis.
Kuidas seda ehitada? Laadige LPCXpresso IDE koos LPCOpen raamatukoguga alla. Importige see kogu IDE -sse ja avage ka projekt GitHubist. Kõik peaks olema konfigureeritud ja võite klõpsata vasakus alanurgas oleval nupul "Silumine".
Kogu projekt põhineb ühel NXP näitel (näitamaks, et minu projekt simuleerib tõelist andurit ega vaja erilist koodi MCU poolel). Põhifailis (nimega iox_sensor.cpp) asub see kood:
#define SENSORS_ON_SHIELD
#if defineeritud (SENSORS_ON_SHIELD) #defineeri SHIELD_I2C I2C1 #elif defineeritud (SENSORS_ON_FPGA) #defineeri SHIELD_I2C I2C0 #endif
Muutes SENSOR_ON_SHIELD ja SENSOR_OR_FPGA, on kasutajal võimalik kompileerimise ajal lülituda, millisele andurile rääkida, kas tõelisele või virtuaalsele, kuna need on erinevatel I2C tihvtidel.
2. samm: FPGA
Minu valitud FPGA -plaat on Digilent'i valmistatud Artix 7, millel on Xilinx Arty 7. Kasutatakse kahte PMod -pistikut, üks silumiseks ja teine tegelikuks koormuseks, ühendus MCU -plaadiga.
Jällegi on FPGA lähtekood saadaval minu GitHubis (kaust fpgaSide).
Kuidas seda ehitada? Laadige alla, ostke või avage Xilinx Vivado IDE. Importige projektifailid GitHubist. Üks failidest (content.coe) on töötlemata vormingus temperatuuriandmed, mida voogesitatakse võltsandurile. Samuti on olemas samanimeline Exceli fail, mis aitab inimesel loetavaid temperatuuri andmeid teisendada LM75 algandmeteks. Kavatsen muuta selle automatiseeritud protsessiks Java -ga kirjutatud tarkvaraga, kuid seni see lahendus töötab. Süntees ja rakendamine peaksid võtma aega, võtke seda arvesse.
3. samm: kuidas see toimib?
Nagu ma ütlesin, näeb MCU puhul FPGA välja nagu andur, täpsemalt I2C andur. I2C välisseadme väljund on ühendatud FPGA sisendiga. FPGA sees on 3 põhikomponenti:- I2C kontroller- I2C seadme andmed- I2C kontroller võtab vastu I2C andmed FPGA tihvtidelt ja saadab need ülejäänud FPGA-le ning teeb sama vastupidises järjekorras. See haldab I2C protokolli sisemist olekumasinat (muide, siin on selle dokumentatsioon). Mida see komponent saadab I2C -seadmele? Hetkel vastuvõetud bait, selle baidi asukoht praeguses suhtluses ja kas MCU kirjutab FPGA -le või loeb seda. I2C -seade võtab vastu saadetud baidid ja uuendab anduri simuleeritud sisemist struktuuri. See võib lihtsalt värskendada registri kursorit või nõuda andmeallikast uusi andmeid. Andmekomponent voogesitab uusi andmepunkte. Praegu on see lihtsalt ROM -mälu, mille aadressi suurendatakse (ligikaudu) kaks korda sekundis.
Mis on minu lõppeesmärk? See on näha teisel pildil. See tähendab: võimaldada rohkem I2C -seadmeid (andureid ja muid) simuleerida samal ajal FPGA -s. Anduri tagaküljel olevad andmed tuleb vahemällu salvestada FPGA -s ja voogesitada arvutist USB või Etherneti kaudu. Toetage täiustatud andureid ja muid I2C -seadmeid (mälu, LED -draiverid jne).
4. samm: pange see kõik kokku
Nüüd on aeg ühendada kõik omavahel. Teoreetiliselt on see lihtne: mcu -plaadil on PMod -pistik (I2C0 & SSP0 (võib töötada nagu SPI)). Artix -plaadil on 4 PMod -pistikut, mida saab kasutada nii, nagu soovite. Valin MCU -ga rääkimiseks pistiku D ja loogikaanalüsaatoriga ühendamiseks pistiku B.
Hoiatus
Te ei saa kahte tahvlit lihtsalt niimoodi ühendada. Miks? PMod ehitati selleks, et hõlbustada Master/Host plaadi (mis annab energiat) ühendamist Slave/Sensor plaadiga (mis saab energiat). Kuid selles projektis annavad mõlemad plaadid energiat ja kui ühendate 3,3 V väljundi ühelt tahvlilt teise plaadi 3,3 V väljundiga, võib juhtuda halbu asju. Kuid nad ei pruugi seda teha ja võite lihtsalt muuta FPGA toiteliinide parameetreid (need on väga hoolikalt kavandatud). Nii et ärge võtke seda riski ja liigutage pistikut üks tihvt vasakule (ja keerake ka FPGA -plaat ümber), nagu ülaltoodud piltidel näha. Siin on PModi spetsifikatsioon, uurige seda, mida ma tegin lühidalt, et mitte ühendada kahe plaadi VCC -sid.
Soovitan:
Arduino päikeseenergial töötav temperatuuri ja niiskuse andur kui 433 MHz Oregoni andur: 6 sammu
Arduino päikeseenergiaga töötava temperatuuri ja niiskuse andur kui 433 MHz Oregoni andur: see on päikeseenergial töötava temperatuuri ja niiskuse anduri konstruktsioon. Andur jäljendab 433 MHz Oregoni andurit ja on nähtav Telldus Net-lüüsis. Vajalik: 1x 10-LED Päikeseenergia liikumisandur " Ebayst. Veenduge, et see ütleb 3,7 V taigna
IR -takistuste andur ilma Arduino või mis tahes mikrokontrollerit kasutamata: 6 sammu
IR -takistuste andur ilma Arduino või mis tahes mikrokontrollerit kasutamata: Selles projektis valmistame lihtsa takistussensori ilma mikrokontrollerit kasutamata
Tehke DSLR -kinnitusalusele vähem kui 6 dollarit, kasutades PVC torusid (monopod/statiiv mis tahes kaamera jaoks): 6 sammu
Tehke DSLR -kinnitusaluseks vähem kui 6 dollarit, kasutades PVC -torusid (monopood/statiiv mis tahes kaamera jaoks): Jah …. Saate ise valmistada ainult mõne PVC -toru ja T -d See on kerge … See on täiuslikult tasakaalustatud … See on kindel tugev … See on kohandamisõbralik … Olen Sooraj Bagal ja jagan oma kogemusi selle kaamera kinnituse kohta, mille ma lõin
Teisendage (peaaegu) mis tahes meediumifail tasuta (peaaegu) mis tahes muuks meediumifailiks!: 4 sammu
Teisendage (peaaegu) mis tahes meediumifail tasuta (peaaegu) mis tahes muuks meediumifailiks!: Minu esimene juhendatav, tervitused! Igatahes otsisin Google'ist tasuta programmi, mis teisendaks minu Youtube.flv failid vormingusse on universaalsem, nagu.wmv või.mov. Otsisin lugematuid foorumeid ja veebisaite ning leidsin sealt programmi nimega
Kasutage odava hinnaga mis tahes 5.1 kõlarisüsteemi koos mis tahes MP3 -mängija või arvutiga!: 4 sammu
Kasutage odavalt mis tahes 5.1 kõlarisüsteemi koos mis tahes MP3 -mängija või arvutiga!: (See on minu esimene juhendatav ja inglise keel pole minu emakeel) Ostsin omal ajal odavalt Creative Inspire 5100 kõlarite komplekti. Ma kasutasin seda oma töölauaga, millel oli 5.1 helikaart (PCI). Siis kasutasin seda koos sülearvutiga, kellel oli