Sadržaj:
Video: Napravite bilo koji senzor od FPGA: 4 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:06
Većina proizvođača pokušala je barem jednom u životu izgraditi termometar, možda onaj koji imaju kod kuće nije dovoljno pametan, ili možda misle da mogu izgraditi sljedeći NEST. Ipak, u nekom trenutku imali su mikrokontroler sa svojim najsavremenijim softverom spojenim na senzor temperature (a možda i druge senzore: pritisak, svjetlost). Do sada je sve savršeno, softver radi i senzor senzorira. Hajde da ga testiramo!
Hmmmm … možda bi trebao zagrijati senzor sušilom za kosu i ohladiti ga pomoću leda, radi neko vrijeme. Ali ne izgleda profesionalno, senzor prebrzo mijenja vrijednosti ako ga zagrijete, ne zagrijava se više od nekoliko stupnjeva. Projekat je propast! Ali algoritam je nov, uzima u obzir mnogo faktora, šteta što se zaglavio u ovoj glupo sporednoj stvari.
Moje rješenje je sljedeće: učinite da FPGA djeluje kao senzor sa vrijednostima koje se prenose s računala (ili pohranjene u memoriji, ili kreirane ad-hoc unutar FPGA-e). Dakle, za vaš dragocjeni MCU FPGA izgleda kao senzor, ali ne i bilo koji senzor: koji god senzor želite. Možda odlučite da vam je potrebna veća rezolucija ili brže vrijeme odziva od očekivanog, morate promijeniti senzor. Naručite preko interneta, stići će za par dana, za par mjeseci, ko zna. Respinirajte svoju PCB ili naručite modul s novim senzorom. Ili … nekoliko klikova i FPGA je konfigurirana kao vaš potpuno novi senzor i može oponašati točnu unutrašnju konfiguraciju.
U trenutku pisanja ovoga, FPGA bi mogla djelovati kao LM75 s podacima o temperaturi pohranjenim u BRAM -u (na FPGA -i).
Korak 1: MCU
Moj MCU po izboru je LPC4337 na LPCXpressu. Na vrhu imam štit (LPC štit opšte namjene) sa ekranom i pravim LM75 senzorom. LPC4337 je ARM Cortex M4 koji radi na 200MHz i manji Cortex M0 (ovdje se ne koristi). Pravi senzor spojen je na periferiju I2C1, a naš virtualni senzor bit će spojen na I2C0. Izvor je dostupan na mom GitHubu.
Kako ga izgraditi? Preuzmite LPCXpresso IDE zajedno sa LPCOpen bibliotekom. Uvezite tu biblioteku u IDE i otvorite projekat sa GitHub -a. Sve bi trebalo biti konfigurirano i možete kliknuti na "Otklanjanje grešaka" u donjem lijevom kutu.
Cijeli projekt se temelji na jednom od primjera NXP -a (kako bi pokazao da moj projekt simulira pravi senzor i da mu nije potreban poseban kod sa MCU -a). U glavnoj datoteci (koja se naziva iox_sensor.cpp) nalazi se ovaj kod:
#define SENSORS_ON_SHIELD
#if definirano (SENSORS_ON_SHIELD) #define SHIELD_I2C I2C1 #elif definirano (SENSORS_ON_FPGA) #define SHIELD_I2C I2C0 #endif
Promjenom SENSOR_ON_SHIELD i SENSOR_OR_FPGA korisnik može prebaciti u vrijeme kompajliranja na koji senzor razgovarati, pravi ili virtualni, jer se nalaze na različitim I2C pinovima.
Korak 2: FPGA
Moja FPGA ploča po izboru je Artix 7 proizvođača Digilent sa Xilinx Arty 7. Koriste se dva PMod konektora, jedan za otklanjanje grešaka, a drugi za stvarnu nosivost, vezu sa MCU pločom.
Ponovo, izvorni kod za FPGA dostupan je na mom GitHub -u (fascikla fpgaSide).
Kako ga izgraditi? Preuzmite, kupite ili otvorite Xilinx Vivado IDE. Uvezite datoteke projekta s GitHub -a. Jedna od datoteka (content.coe) su podaci o temperaturi u sirovom formatu koji će se prenositi na lažni senzor. Postoji i Excel datoteka s istim imenom koja pomaže pri pretvaranju podataka o temperaturi čitljivih za ljude u sirove podatke LM75. Planiram ovo promijeniti u automatizirani proces s nekim softverom napisanim na Javi, ali do tada ovo rješenje funkcionira. Sinteza i implementacija bi trebali potrajati, uzmite ovo u obzir.
Korak 3: Kako to funkcionira?
Kao što sam rekao, za MCU, FPGA izgleda kao senzor, točnije I2C senzor. Izlaz periferije I2C spojen je na ulaz FPGA. Unutar FPGA-e postoje 3 glavne komponente:- I2C kontroler- I2C uređaj- podaci I2C kontroler prima I2C podatke sa pinova FPGA-e i šalje ih ostatku FPGA-e i čini isto obrnutim redoslijedom. Održava internu mašinu stanja za I2C protokol (usput, evo dokumentacije za nju). Šta ova komponenta šalje na I2C uređaj? Trenutno primljeni bajt, položaj tog bajta u trenutnoj komunikaciji i da li MCU piše ili čita sa FPGA -e. I2C uređaj prima poslane bajtove i ažurira simuliranu unutrašnju strukturu senzora. Može samo ažurirati pokazivač registra ili zatražiti nove podatke od izvora podataka. Komponenta Data prenosi nove podatkovne točke. Trenutno je to samo ROM memorija čija se adresa povećava (približno) dva puta u sekundi.
Šta je moj krajnji cilj? To je prikazano na drugoj slici. Odnosno: omogućiti više I2C uređaja (senzora i drugih) da se istovremeno simuliraju unutar FPGA -e. Podaci na pozadini senzora će se keširati u FPGA i prenositi sa računara putem USB -a ili Etherneta. Podržavajte naprednije senzore i druge I2C uređaje (memorija, LED upravljački programi itd.).
Korak 4: Sastavite sve zajedno
Sada je trenutak da sve povežete zajedno. Teoretski je jednostavno: mcu ploča ima PMod konektor (I2C0 i SSP0 (može raditi kao SPI)). Artix ploča ima 4 PMod konektora koji se mogu koristiti kako god želite. Odabirem konektor D za razgovor s MCU -om i konektor B za povezivanje s mojim Logic Analyzerom.
Upozorenje
Ne možete jednostavno spojiti dvije ploče zajedno. Zašto? PMod je napravljen za olakšavanje povezivanja glavne/host ploče (koja daje napajanje) na slave/senzorsku ploču (koja prima napajanje). Ali u ovom projektu obje ploče daju snagu i ako spojite 3.3V izlaz s jedne ploče na 3.3V izlaz druge ploče, mogle bi se dogoditi loše stvari. Ali oni možda neće, a vi samo promijenite parametre vodova FPGA -e (vrlo su pažljivo dizajnirani). Zato nemojte riskirati i pomaknite konektor jednim pinom ulijevo (i okrenite FPGA ploču) kao što se vidi na gornjim slikama. Evo PMod specifikacije, proučite je, a ja sam ukratko rekao da ne povezujem VCC -ove dvije ploče.
Preporučuje se:
Proširenje za bilo koji DJ softver koji želite!: 6 koraka
Ekstenzija za bilo koji DJ softver koji želite !: Ne mogu svi samo uskočiti u DJ -in prvi dan i od njih se očekuje da prvi mikseri i gramofoni i podloge za vruće signale budu spremni već prvog dana, ali budimo stvarni ovdje: miješanje na laptopu je sranje. To je ono čemu ovo služi, kako biste riješili sve svoje financijske probleme
Uređaj za mjerenje UV-indeksa koji govori, koji koristi senzor VEML6075 i mali drugar: 5 koraka
Uređaj za mjerenje UV-indeksa koji govori, pomoću senzora VEML6075 i Malog prijatelja: Dolaze ljeta! Sunce sija! Što je odlično. No, kako ultraljubičasto (UV) zračenje postaje sve intenzivnije, ljudi poput mene dobivaju pjege, male smeđe otočiće koji plivaju u moru crvene, opečene od sunca, kože koja svrbi. Biti u mogućnosti imati informacije u stvarnom vremenu
Kako napraviti vlastiti USB auto punjač za bilo koji IPod ili druge uređaje koji se pune putem USB -a: 10 koraka (sa slikama)
Kako napraviti vlastiti USB auto punjač za bilo koji IPod ili druge uređaje koji se pune putem USB -a: Izradite USB punjač za automobil za bilo koji iPod ili drugi uređaj koji se puni putem USB -a spajanjem automobilskog adaptera koji izlazi 5V i USB ženski utikač. Najvažniji dio ovog projekta je osigurati da je izlaz vašeg odabranog adaptera za automobil opklada
Pretvorite (samo otprilike) bilo koju medijsku datoteku u (samo otprilike) bilo koju drugu medijsku datoteku besplatno!: 4 koraka
Pretvorite (samo otprilike) bilo koju medijsku datoteku u (samo otprilike) bilo koju drugu medijsku datoteku besplatno !: Moje prve instrukcije, svaka čast! U svakom slučaju, bio sam na Googleu u potrazi za besplatnim programom koji bi pretvorio moje datoteke Youtube.flv u format koji univerzalniji je, poput.wmv ili.mov. Pretražio sam bezbroj foruma i web stranica, a zatim pronašao program pod nazivom
Za jeftino! Koristite bilo koji 5.1 sistem zvučnika sa BILO KOJIM MP3 plejerom ili računarom: 4 koraka
Jeftino koristite bilo koji 5.1 sistem zvučnika sa BILO KOJIM MP3 plejerom ili računarom!: (Ovo je moj prvi instruktor, a engleski nije moj maternji jezik) Nekada sam povoljno kupio Creative Inspire 5100 set zvučnika. Koristio sam ga sa radnom površinom koja je imala 5.1 zvučnu karticu (PCI). Zatim sam ga upotrijebio sa svojim laptopom koji je imao