Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Közben már sikerült felismertetni az USB billentyűzetet. Azonban napok óta ujjabb problémával küzdök. Ha úgy indul el a PIC, hogy rajta van a bill. akkor felismeri szépen, és működnek a gombok is. Azonban ha lehúzom, és újra rádugom akkor nem ismeri fel újra. A PIC át áll host módból device módba, és úgy is marad. A dolog érdekessége, hogy ha a D- D+ lábakat szakítom csak meg, akkor utána újra felismeri. Pedig a tápnak elvileg semmi köze, mert a VBUS pin-re párhuzamosan van az USB 5V-ja kötve a billentyűzettel. Már odáig vissza követtem a program működését, hogy amikor az USBOTG registerben a SESSION bitet 1-be állítja, ott dől el, hogy HOST-ként vagy Device-ként fut-e a PIC program. De ide csak a program indulásakor megy a program. Ötlet?
Sajnos nem fér a panelra IC. Most egy FET-tel van csak hajtva simán a földhöz képest és a kis SOT23 tokos FET illetve a piezon a visszirányú SOD80 tokos dióda is éppen hogy csak odafér.
dsPIC33FJ128GP804-ről van szó, nem találtam az adatlapjában ilyesmiről szóló információt.
Méghogy nem fér el... A SOT23 FET ugyan akkora, mint a 74HCT1G86.
Ebben tényleg nincs. Szerintem a legegyszerűbb a toggle mód két modulra beállítva, ugyan azzal a timerrel és OCxR-rel, ellentétes kezdőállapottal. Gondolom úgyis csak a frekvenciát akarod változtatni, így a kitöltés mindig 50% lehet.
Nem tudom miért van ez így túlbonyolítva. Akor egy nagyobb feladat megoldása pl egy LCD vezérlese mennyi energiát és időt vesz fel ha már egy ilyen apró feladat is túl van bonyolítva.
Mint írtam simán rá kell engedni egy FET-en keresztül a tápot. Nézzétek meg gyári panelokon is így lesz.
Nagy jó példát hoztál . Speciel az LCD is kapacitív és az sem szereti a egyen komponenst, ezért gyakorlatilag ugyan így kell vezérelni. Persze multiplex módban ott már bonyolódnak a jelalakok. Gondolom nem LCD modulra gondolsz, ahol csak a biteket kell billegtetni.
Ráadásul tökéletesen megoldható a feladat egy SOT23 FET helyén.
A hozzászólás módosítva: Nov 24, 2015
LCD modul komplett vezérlésének leprogramozására gondoltam, a hw tervezéssel együtt. Arra gondoltam ha egy piezo buzzer bekötésének ekkora feneket kerítünk akkor egy LCD modullal mi lenne?
Hopsz... valóban, ne haragudj! Ahogy olvastam hogy "kapu" meg hogy "74HC..." reflexből egy legalább 14 lábú tokra asszociáltam.
Nem a frekvenciát változtatnám és a kitöltés maradna állandó, hanem a frekvencia lenne fix és pont a kitöltést változtatom. Hangot (hangfájlokat a PIC memóriájából) játszok le a piezón.
Akkor lehet már belekavarodtam, de rajzoltam egy móricka ábrát. Akkor lesz az egyen komponens 0, ha a két impulzus szélessége egyforma. Innen már jól látszik, hogy a Continuous Pulse módban hogyan kell állítgatni a regisztereket. (Hogy egy ilyen jelnek milyen hatása van a hangra, azt nem tudom )
És próbáltál már lejátszani piezzón ilyet?
A piezzónak tök mindegy lesz a kitöltési tényező, kb. ugyanúgy fog szólni (max. a hangereje lesz kissebb nagyon kis <8-10% kitöltési tényező esetén).
Félreértettem. Ktamas ábrájából már értem mit akar, de a lényeg nem változott. Nem atombomba vezérlésről van szó, kapacitív vagy sem. Frekivel váltja a magasságot kitöltéssel meg a hangerőt."Minek atomreaktor ahol egy gombelem is megteszi?"
Idézet: „Frekivel váltja a magasságot kitöltéssel meg a hangerőt.” Akkor még mindig félreérted, pedig az előbb is írtam: Idézet: „a frekvencia lenne fix és pont a kitöltést változtatom” Atomreaktor? Jelen állás szerint kell egy fet és egy dióda a piezo vezérléséhez, továbbá a PIC-en belül egy OC modul és a PIC 1db lába. Ezt nem tekintitek bonyolultnak, ez idáig teljesen rendben van. (Amúgy szerintem is.) Viszont hogyha nem egy hanem két lábát használnám a PIC-nek az már rögtön atomreaktor lesz?! Csak úgy, minden átmenet nélkül? Hogyha egy egyszerű mezei csippanáshoz egy precíziós 24 bites high-end audio DAC-ot és egy elektroncsöves erősítőt használnék akkor azt én is egy picit talán erősnek érezném... Na de egy láb helyett kettő, és egy OC modul helyett kettő (sőt, ha lenne komplementer kimenetes PWM akkor ugyan úgy csak egy kellene) azért nem egy égbekiáltóan bonyolult dolog szerintem. Főleg, hogy ha az ember ez után az áramkörre ránéz, akkor nem hogy bonyolultabbnak, pont hogy egyszerűbbnek fogja látni! Hiszen eddig volt a piezo alatt egy fet és egy dióda, most meg a piezo csak szimplán közvetlen rá van kötve a PIC két lábára. Hát nem egyszerűbb?! A piezo egy kapacitív alkatrész. Ha egy fet-tel kapcsolgatom akkor a feszültség rajta nagyon gyorsan megjelenik. Viszont amikor kikapcsolom a fetet, akkor a kapacitív piezónk ott marad a levegőben! Persze, ki fog sülni meg hangja is lesz, de én bátorkodtam azt gondolni hogy korrektebb, hogyha a piezó ugyan olyan paraméterekkel van rugdosva az egyik irányba mint a másikba.
Szerintem akkor ugyan arra gondolunk.
Bővebben: Link Idézet: Ezért van az, hogy pl. a kvarcórákban, csak egy alsó tranzisztor kapcsolgat, viszont a piezóval van egy tekercs párhuzamosan. Egy szép rezgőkört alkot a piezóval együtt. De az ellenütemű meghajtás is jó, szerintem. „A piezo egy kapacitív alkatrész. Ha egy fet-tel kapcsolgatom akkor a feszültség rajta nagyon gyorsan megjelenik. Viszont amikor kikapcsolom a fetet, akkor a kapacitív piezónk ott marad a levegőben! Persze, ki fog sülni meg hangja is lesz, de én bátorkodtam azt gondolni hogy korrektebb, hogyha a piezó ugyan olyan paraméterekkel van rugdosva az egyik irányba mint a másikba.” A hozzászólás módosítva: Nov 25, 2015
Rendben meghajlok akaratod előtt. Legyen 2 láb.
Az viszont ziher, hogy ha csak kitöltéssel variálsz nem sok dallam fog kijönni belőle. Miért is jönne, ha egyszer ugyanazon a frekvencián rezeg?!
Szerintem nem. A Te megoldásod (meg az én első javaslatom és Hp41C-é is ) egy ellen fázisú jel, tehát ott mindig van feszültségkülönbség a két jel között, csak a polaritás változik. Ilyenkor viszont, ha nem 50%-os a kitöltés, lesz egyen komponens (hiszen valamelyikből több lesz). A megoldásod akkor működhetne, ha 50% a kitöltés. Van vele még egy probléma, az adatlap szerint :
Idézet: „For proper operation in Delayed One-Shot and Continuous Pulse modes, the OCxR, OCxRS and PRy values must have the following relationships: • OCxRS ≥ OCxR • PRy >=OCxRS” A Te esetedben ez nem teljesül, ezért hogy ekkor mi történik azt tesztelni kellene. Hogy a PWM változásból hogyan lesz hangmagasság változás, azt én sem tudom, de majd kiderül.
Akkor most már biztos vagyok benne hogy félreértjük egymást a mikrovezérlővel való hangkeltést illetően.
Én eddig úgy hoztam létre hangot PIC-kel, hogy az egyik OC modulját beállítottam ha jól emlékszem 200kHz körüli frekvenciára. A PIC programmemóriájába letároltam egy hangfájlt (const char tömbbe) melyet előtte számítógépen 8 bites mono, 16kHz mintavételezésűre konvertáltam. A PIC-ben beállítottam az egyik timert hogy pontosan 62,5us-onként okozzon megszakítást (a 62,5us a 16kHz periódusideje). A megszakításban pedig megfogom a tömb következő értékét és bedobom az OCxR regiszterbe, ezzel átállítva a kitöltési tényezőt. Ha a hangban épp "csend van" akkor 128 a kitöltési tényező, a hanghullám szerint pedig ez 0-ig és 255-ig tud változni. Az egész végeredménye tulajdonképpen egy 200kHz-es négyszögjel melynek a kitöltési tényezője a hang amplitúdója szerint van modulálva. Mivel a választott vivőfrekvencia (200kHz) bőven a hangfrekvenciás tartomány felett van, így nem hallatszik. (Az egyik áramkörömben volt még a PIC után egy 20W-os kis végerősítő is, és hogy ez ne izzadjon a 200kHz-el véletlen se, ezért betettem a PIC kimenetére még egy kis R-C tagot is. Így megszűnik a PWM és tulajdonképpen magát a hanghullámot kapod vissza.) Ez a valóságban szuperül működött sőt, meglepően szépen szólt! Egy 20 másodperces zeneszámot játszottam le vele próbaképp és kimondottan jó hangja volt. Ha valaki nem hiszi hogy így elő lehet állítani hangot, kérem jelezze és készítek róla neki egy szkópábrát meg egy videót. + Lehet hogy más a frekvenciát változtatja? Azt kicsit furcsának találom. És mi van ha egyszerre több frekvenciát akarsz kiadni? Mert egy zene, beszédhang vagy bármi ami nem szinusz az több frekvencia egyidejű jelenlétéből adódik. Ráadásul úgy hogyan állítasz hangerőt? Idézet: Hasonló módon, mint a frekvenciaváltó kimenetén megjelenő szinusz. Szinusz jellel modulált PWM, vagy a kapcsolóüzemű végfok. Persze ehhez az kell, hogy vivőfrekvencia és moduláló frekvencia is legyen, ne csak a hallható tartományon belüli PWM. „Hogy a PWM változásból hogyan lesz hangmagasság változás, azt én sem tudom, de majd kiderül.” A hozzászólás módosítva: Nov 25, 2015
Értem . És a piezo kapacitása és mechanikai tehetetlensége "szűri" ki a vivőfrekvenciát?
Így néz ki a program:
Így pedig a megszakítás:
Így lehet egy hangfájl lejátszását elindítani:
És így néz ki egy hang a programmemóriában:
Az áramkör rajza a mellékelt képen látható. Az autóriasztómban van egy kis végerősítő de simán piezóval is ezt használom, ez látható a második rajzon. És ebből így ez lesz: Bővebben: Youtube
Ja és tessék, itt látható az "egypitty" hang. Miért lenne ennek egyen komponense?
Az "egyen" és a "hang" szerintem kizárják egymást, mert az egyen nem lehet hang. A hang az hullám, az egyen az meg pont hogy nem hullám. Hanem egyen. A hozzászólás módosítva: Nov 25, 2015
Igy mar teljesen vilagos, hogy te mit csinalsz. A keveredes ott lehet, hogy altalaban a piezora az ember egy 1..2 kHz negyszoget kuld ra, es ez szol (sipol, csipog), nem pedig egy hangfrekivel PWM-ben modulalt 200kHz-es negyszoget. A te modszered eroforras igenyesebb, viszont sokkal tobbet ki lehet belole hozni "hangilag", mint egy sima hangfrekis negyszog meghajtassal.
Na, es akkor az egyenkomponensrol. Ha valamire ravezetsz egy 50% kitoltesu, 0-5V kozotti jelet, akkor annak bizony 2.5V lesz az egyenkomponense. Ha ket kimkenetrol, ellenutemben hajtod meg a piezot, akkor mar 0 lesz a DC, hiszen +5V es -5V kozott fog valtozni az amplitudo a piezon. A hozzászólás módosítva: Nov 25, 2015
Bocs hogy beleugatok, de az hogy PWM -el csinálnád, egy elég fontos info volt. Persze nem arra gondolok hogy PWM modul használatával (mert azt tudtuk), hanem hogy a hang előállítása történne így.
Viszont akkor nem értem, hogy jön a képbe az ellenfázisú vezérlés, mert PWM esetén pont a DC komponens hordozza az infót. Idézet: „Ha ket kimkenetrol, ellenutemben hajtod meg a piezot, akkor mar 0 lesz a DC, hiszen +5V es -5V kozott fog valtozni az amplitudo a piezon.” Igen, és ha ezt a 200kHz-et a piezo kiszűri, pont nem fogunk "hallani" semmit, nem?
Amire te gondolsz, az az effektív érték, egyenkomponens helyett az offszetet használjuk jelalakok esetén.
Normál, fetes kapcsolgatásnál ha a hangban épp csend van, akkor a piezón 2,5V van. (Most tekintsünk el a PWM-től vegyük úgy hogy ki van átlagolva.) A hang amplitúdójának változása hatására a 2,5V-os alaphelyzetből elmegy 0V-ig és 5V-ig a piezón a feszültség.
Ha azonban ellenütemben vezérlem a piezót, akkor alaphelyzetben 0V van a piezón, ami a hanghullám szerint 5V-ig és -5V-ig tud elmenni. Emiatt gondolom úgy, hogy ezáltal a hangerő is nagyobb lesz. Továbbá a néhány hozzászólással fentebb leírt dolog miatt is szerintem jobb a piezót ilyen módon meghajtani. (A piezo nem csak töltve hanem kisütve is van.) |
Bejelentkezés
Hirdetés |