Fórum témák
» Több friss téma |
Idézet: „és a többi szabadon lóg a levegőben akkor a felét kellene a kimeneten mérnem. De nem ez a helyzet.” MERT NEM LÓGHAT A LEVEGŐBEN!! Vagy test, vagy táp! Logikai 0 vagy 1!! A levegőben lógás a Z állapot. (logikai állapotokat is meg kellene tanulni ) Idézet: „Szóval a kód a hibás, VAGY az ESP32S fizikai kivitelezése miatt nem lehet?” A kód hibás, de ezt már írtam! Bizonyos vagyok benne, hogy "#define OUTPUT 0x03" konfigurálva jól fog működni! Tehát: setup részben: pinMode(12, OUTPUT); pinMode(13, OUTPUT); pinMode(14, OUTPUT); ... pinMode(20, OUTPUT); Minden más program rész ki kell törölni, ami ezeket piszkálná! Pl, a teljeség igénye nélkül: Idézet: „//Port létrehozása: for (int i = 0; i < 8; i++) .....” Idézet: „void parallel_set_inputs(void) { REG_WRITE(GPIO_ENABLE_W1TC_REG, 0xFF << PARALLEL_0); } void parallel_set_outputs(void) { REG_WRITE(GPIO_ENABLE_W1TS_REG, 0xFF << PARALLEL_0);””
Idézet: „Ha az R-2R létrát 8 biten használom, akkor ha az MSB bitre küldök logikai feszt, és a többi szabadon lóg a levegőben akkor a felét kellene a kimeneten mérnem.” 8 bit esetén, ha csak az MSB van magasra kapcsolva, a többi nagy impedanciás, akkor egy feszültségosztót kapsz, aminek a tagjai 2R illetve 8R. A magas szint 0.8 szorosát kellene mérned (amennyiben a műszered belső ellenállása jóval nagyobb, mint 2R). Ahhoz, hogy a felét mérd, a MSB kimenetet magasra, a többit alacsonyra kell állítani.
Akkor simán bemenetnek kel állítani a szabadon lógó pineket, csak a vezérelt pin legyen kimenet.
Ezt úgy tudod jól megoldani, hogy előbb beállítod a kívánt pin állapotát, és azután állítod kimenetnek. Kikapcsoláskor viszont először bementnek állítod, így lesz nagy impedenciás. A hozzászólás módosítva: Júl 4, 2023
Nem kötöttem rá semmire, nehogy tönkre vágjam az ESP-t, ha még nem tettem meg...
Az első sorozat: A legmagasabb helyiértékű bit-re 3.3V, a többi szabadon lóg a levegőbe. Ekkor a kimeneten 2.7V jelenik meg. Az a mérő műszer mindig a kimenetet fogja mutatni. A másik első mérésnek a legmagasabb helyiértékű bit feszültségét mutatja. A méréskor fix 3.3V van az MSB-n, a másik műszerrel mindig eggyel kisebb helyiértéken mérek. A kimenet nem változik, de a másik helyiértéken lévők igen. EZ okozza majd a bajt... Mindjárt küldöm a jót is!
Idézet: „Akkor simán bemenetnek kel állítani a szabadon lógó pineket, csak a vezérelt pin legyen kimenet.” Pont ezt csinálja, és nem jó a kiadott érték! (milyen meglepő...) Hp41C leírta a miértjét is.
És ami jó:
Ha a legmagasabb helyiértékre írom a 3.3V-ot ÉS miden más bemenetet Földre húzok, akkor jó! De szerintem ezt így is mutatják be. És rögtön ok is a kimeneten a fesz. A hozzászólás módosítva: Júl 4, 2023
Arduino-n ok, minden, mert gondolom ott, mikor logikai 0-t adok a pin-re akkor a tranzisztor lekapcsolja a Földre, azaz galvanikusan kapcsolatba kerül vele. Ilyen tranzisztor kapcsolást én is megépítek, de nem szeretnék, mert már sokat forrasztgattam, nehéz lenne beletenni pluszban.
ESP-n meg valami 0 Ohmos (nem tudom, mert nem értem az Angolt annyira és nem is vágom hogyan működik) állapotba kerül esetleg, így az R-2R ellenállás létrán a mellette lévő kisebb helyiértékű bemenetről feszt kap... Mint ahogy az első mérésekből kijön. Vagy valami hasonló történik, de nem kötöm így rá mégegyszer.
Ma is tanultunk valamit!
Itt FET-ek kapcsolják a kimenetet. És totempole az alap felépítése. A hozzászólás módosítva: Júl 4, 2023
Ok, megpróbálom értelmezni amit írtatok, kicsit tisztulni kell a fejemben a dolgoknak, mert lehet valahol máshol van a hiba...
Ok, ezt hogy érted? Mit rontok el?
Egy nagyon buta ötlet. Nem lehet, hogy a lábak számozását kevered a programban? Egyszer én is bele futottam. A linkelt képen látszik pl: a GPIO12 a 18 as pin.
ESP-32 Pinout Egyébként a lenti linken sok példát találsz magyarázattal.: https://randomnerdtutorials.com/ A hozzászólás módosítva: Júl 4, 2023
Igen tudom. Ezzel kezdtem, mármint az első kérdésemben leírtam ezt is, hogy kimértem úgy is. Amikor ESP-t kötöttem rá, akkor lett igazán finom a kimenet. Mikor rákötöttem és néztem a létra kapcsolását, már akkor tudtam, hogy nem lesz jó. Be is jött.
De. Simán lehet...
Már ezt is el tudom képzelni...
Szóval a kérdés inkább már az, hogy mi történik az output pin-en, ha szoftveresen 0 van ráírva, de közben kívülről kap 2V-ot?
A hozzászólás módosítva: Júl 4, 2023
Áramkorlát nélkül?
Szerintem nem sok jó. A kimenetet egy MOSFET lehúzza testre és nincs áramkorlátod... Ohm törvény alapján az áramod I = 2V/Rds(on) A hozzászólás módosítva: Júl 4, 2023
Igen tudom. Ezzel kezdtem, mármint az első kérdésemben leírtam ezt is, hogy kimértem úgy is. Amikor ESP-t kötöttem rá, akkor lett igazán finom a kimenet. Mikor rákötöttem és néztem a létra kapcsolását, már akkor tudtam, hogy nem lesz jó. Be is jött.
Nem próbálom ki élesben mégegyszer, a linkelt oldalon lehet szimulálni. A LED-ek ellenállásokkal és a hibás kóddal megy, de szimulálhatom úgy is ahogy mondod. Kipróbálom ott is mégegyszer.
Igen, ilyesmitől féltem.
És az egész kérdésem az lett volna, hogy ESP tud másfajta kimenetet produkálni, mert ott van driver, még áramot is lehet állítani benne, 3 különböző értékkel. Mivel a GPIO sokmindent tud, arra gondoltam, hogy másfajta kapcsoláson keresztül elérhető olyan konfig, ami olyan kimenetet produkál, mint az Arduino. Ezt kellett volna kibogarásznom, de nem megy. Azaz, fizikailag ki van benne építve a megfelelő kör, csak alapból nem azt kapcsolja be. Erre gondoltam. A hozzászólás módosítva: Júl 4, 2023
Ellenállás létráról beszéltünk eredetileg nem?
Nincsenek direktre kötve a pinek. Úgy kel számítani az értéküket, hogy 40mA-nál nagyobb áram ne folyhasson semelyik kimeneten.
Az egész ötlet a gyorsaág miatti tesztelésre kellett volna. A neten láttam, hogy Arduino-val menyire gyorsan össze lehet rakni egy ilyet. Gondoltam ESP sokkal gyorsabb, kipróbálom. De szerintem nem lesz gyorsabb, mint egy DSPIC 80MHz órajellel, mert nincs direkt port írás, eleve nem is működik egyelőre, valamint a sok GPIO állítás, amit 8X kell megtennem egy direkt port írása helyett el is visz sok órajelet. De PIC-el nem próbáltam még, mert ezzel szerettem volna kisérletezni, mert gyorsabb a programozása, és a program feltöltése is sokkal könnyebb, mint a PIC-nél.
Arduino-val 1KHz szinusz kijön szépen még akkor is, ha egy periódust 256 pontban ismerjük és 6 bit a felbontás. A szépsége a dolognak, hogy 6 biten a felső két bitet lógva hagyva lesz jó a kimenet... Ezt loop-ban direktben megnéztem mit tud, mekkora a max freki. Timerrel alá mentem ennek az értéknek, 1:1 prescal-el a tömb érték kiolvasás és port írása simán megy, van rá idő. ha 64 pontban ismerem a periódust, nem lesz annyira szép, de 4Khz simán jön. Sőt! Arduino-val azért nem tudok 8 bitet, mert közben serial monitoron vezérlem, másik portot használok, ami csak 6 bites. Még így is szép. A hozzászólás módosítva: Júl 4, 2023
Idézet: „ha az MSB bitre küldök logikai feszt, és a többi szabadon lóg a levegőben akkor a felét kellene a kimeneten mérnem.” Ez biztos? Se időm, se kedvem belemenni a részletekbe, de itt azt írják, hogy testre kell kötni azokat a kivezetéseket, ahol 0 van az átalakítandó adatban. Tehát ha a levegőben lóg, akkor nem lesz jó. Bővebben: Link Szerk.:látom, már közben leírta ezt más is. A hozzászólás módosítva: Júl 4, 2023
Én csak azt nem értem, hogy miért kell ellenálláslétrával kínlódni, amikor az ESP32 két, 8-bites, beépített DAC csatornával rendelkezik (GPIO25 és GPIO26 kimenettel)?
Az alábbi példában 0-tól 255-ig lépkedünk, ötösével, s a GPIO25 kimeneten mérjük az analóg feszültséget. (A késleltetést majd vedd ki!)
Tudom, kimértem, és le is írtam már többször is. Épp ez okozza a hibát.
Ki fogom próbálni, de nekem kell ez is.
Arduinoval.
A nagy Szkóppal gyorsan mérve, a statisztika szerint 988Hz a legkisebb, a legnagyobb 1.001KHz. 13Hz-et lötyög max, gondolom a kiristály nem annyira pontos, no meg a kódon is lehet faragni. Kipróbálom majd a neépített DAC-ot is, mit bír. A hozzászólás módosítva: Júl 4, 2023
Ezt a hozzászólásomat elírtam. Természetesen akkor kell a felét kapnom, ha a többi GND-n van. A kolléga ki is számolta nekem, hogy ha a levegőben lóg, akkor a 0.8 szeresét kell kapnom, amit tudatalatt ki is mértem!
A hozzászólás módosítva: Júl 4, 2023
Ha igazán jó minőségű hang generátort akarsz?
Itt egy példa külső DAC-al: Bővebben: Link Olcsón, itthonról beszerezhető alkatrészekből. Ez 12 biten bőven megy 48KHz-vel. A hozzászólás módosítva: Júl 4, 2023
A cél más, de hasonló. 40KHz feletti jel kellene, de nem lesz meg ezt tudom, de tesztelnem kell mekkora a max.
Ha pl. 1 periódust 64 helyen ismerünk, és 40KHz szinusz kell, akkor kell pár MHz mintavétel. Ez nem lesz meg. Arduinoval, ha 32 pontban lesz egy periódus, akkor a fenti kódommal 8KHz jel előjön. (aktív szűréssel sokat lehet javítani a jelalakon) Már csak 5x ekkora kellene! ok, nem lesz meg, de tudnom kell mi a max ESP-vel, PIC-el stb-vel. Az R-2R létra még gyorsabb mint egy direkt 8 bit címzésű DAC. SPI-nél meg pláne, ami magas frekin nem is megy rendesen, mert zajos. ESP-240MHz-es órafrekije bíztató volt, lehet jó is lesz majd másképpen, de ekkor is tudnom kellett volna, hogy ilyen látszólagos port írással direktben mit tudott volna. Ha lett volna direkt port írás, akkor olyan 15x szorzót vártam volna. Persze ez csak tipp volt, ki kellett volna mérnem. Jó lett volna, ha gyors port manipulálás ment volna, és a kimenet olyan lett volna ami meg tudja hajtani a létrát. Azaz nekem több lehetőséget kell kimérnem. A létra csak az egyik. A hozzászólás módosítva: Júl 4, 2023
Ilyen elvárások mellett első lenne hogy elfelejteném az Arduino IDE-t!
A másik, hogy utána járnák a jelalak szintetizálás területén! Egyéb projektekben láttam, hogy a jelalakok táblázatban vannak, így procinak nem kell számolnia, csak kikeresni a köv. értéket!...vagy mi. De én hülye vagyok ehhez! A hozzászólás módosítva: Júl 4, 2023
Jól mondod, ezt csinálom nagy vonalakban. A szinuszt nem számolja, az egy táblázatból jön ki. Az alap frekit úgy tudom növelni, ha az incrementet növelem. Ez magaután vonja azt, hogy a periódust kevesebb pontban ismerve alakítom ki a jelet. Arduino ide jó, de csak a teszteléshez. Tömbből adatot porta írni nem nehéz egy timer túlcsordulási eseménykor. A következő egy pic-lesz aminek a kódjai megvannak, szimulátoron jók, de annak feltöltögetése macerás.. Az elvet tesztelem Arduino-val. ESP-vel meg még könnyebb lett volna.
A hozzászólás módosítva: Júl 4, 2023
AD9833 IC vagy modul miért nem jó ilyen célra?
|
Bejelentkezés
Hirdetés |