PIC->DAC eller: Lång färd mot mål....

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Och I2S *är* hyffsat likt SPI, så det är väl inte omöjligt att det kan fungera.

Med tanke på hur WS signalen skall synkas till dataströmmen, och tills någon be-(visar) motsatsen, så vill jag påstå att det inte går att köra denna DAC's I2S ingång från ett vanlig SPI interface.

För övrigt är väll Cyr's övriga punkter vad många undrar just nu... :-)
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Jag funderar på om man kunde koppla WS till CS (chip-select) från en SPI-port, och på så sätt få rätt förhållande (mer eller mindre) mellan den och datan för ena kanalen.

Det är ju också *möjligt* att just TDA1543 hanterar insignaler som är långt ifrån spec, det är en väldigt simpel audio-DAC utan någon översampling osv så man vet aldrig.

Men iaf, någon i den här stilen tror jag är betydligt lämpligare än TDA1543:
http://www.maxim-ic.com/quick_view2.cfm/qv_pk/1621/ln/
http://www.maxim-ic.com/quick_view2.cfm/qv_pk/1810/ln/

Det är baserat på mycket gissningar (5V matning, DIP-kapsel, spänningsutgång, 10bit upplösning...).
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Helt rätt, det är bara att...

> ...en väldigt simpel audio-DAC utan någon översampling osv...

Jag vet inte om det är samma sak, men databladet säger "4 x oversampling possible"...

Och i alla fall på en PIC har inte SPI modulen/porten någon CS utgång. Det styrs normalt helt separat från SPI modulen innan man skriver en byte till bufferten för att skickas iväg.

Man som sagt, om man inte tänker köra I2S "hela vägen", så är det nog fel DAC (som Jimmy ju konstaterade i första inlägget :-) ).
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Ah, men jag tror "4x oversamling" bara betyder att den klarar 4x "normal" samplingsfrekvens (48KHz).

Helt fel DAC för ändamålet troligen, men jag tror fortfarande det kan vara möjligt att få igång med SPI-porten.... kanske... :)
Användarvisningsbild
exile
EF Sponsor
Inlägg: 496
Blev medlem: 21 oktober 2005, 23:32:07

Inlägg av exile »

En ide är att använda hård vara i PIC:en för att simulera I2S genom att använda två timerar med utgånga och spi (med reservationer för fel då jag van AVR)

- Använd en timmer att skapa en klock singnal med önska frekven (32*önskad uppdaterings frekvens)
- Skapa WS signal genom att skapa använda en timmer PWM, satt till 50% och topp värdet till 32 och använd den andra timmern som klock referns.
- Sätt SPI i slave mode.

Bild

I mjukvara
sätt upp timmrena,SPI(interupt mode och slav) och sätt GPO till en ingång,
När du får första interupten så får du SPI synkront med DAC sätt då GPO till en låg utgång istälet... sedan är det bara att räkna byten du skickar (1 2 3 4, 1 osv...) så kommer du att vara i synk...

Värt att notera är att Audio DAC:ar brukar ha usel DC precision... och många kräver att man en fast frekvens på SCK....

Hoppas de här kan vara till hjälp :)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

The jury is still out... :-) :-)
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Ojdå, det blev mycket att läsa. :)

Kan börja med den numera berömda mätningen. När jag mätte spänningen så låg den på 1v hela tiden, den förklaringen har ni nog tröttnat på gissar jag. Men jag mätte ju ström också, den var mycket riktigt inte 1v. Nu minns jag inte hur många mA jag fick eftersom det har gått ett dygn sedan sist, men det låg på samma värde hela tiden iallafall. (Kan ha varit 11mA om jag inte är helt ute och cyklar på hal is.)

cyr med flera: Jag ska använda DAC'en (plus mer elektronik) till att styra en elektromagnet, så det är inget krav att jag använder just denna DAC.

Jag har än så länge inga siffror att presentera på vilken samplinghastiget, upplösning och linjäritet. Det vet jag först när jag kan testa olika varianter och se hur resultatet blir. Gärna 12bitars upplösning och åtminstone över 5MHz samplingsfrekvens, vore fint om den klarade upp mot 10MHz så man har en liten marginal ifall det skulle visa sig att jag behöver det. Utsignalen vill jag ha så linjär som möjligt, men DAC'ar kanske alltid ger en bra linjär signal ut? Vet inte.. :roll:

Jag behöver 2 kanaler (något som jag inte vet hur man programmerar med I2S eller SPI). Drivspänningen för denna DAC är 5v (den klarar mellan 3v till 8v). Vet inte riktigt vad ni menar med "utsignal" däremot. Det vore iallafall smidigt om den hade inbyggd strömförstärkare så man sparar lite utrymme på kretskortet.

exile's tips har jag funderat på. Det gäller bara att WS sätts vid rätt tid och det är där jag har "fastnat"... Kanske att jag skulle klara det, men det skulle nog bli lite trial&error..... :roll:


Jag har letat efter den här länken jag skrev om. Tyvärr har jag så fasligt mycket bookmarks, så än så länge har jag inte hittat den. Minns inte heller vad sidan hette. ("Tidigare-besökta-sidor" och IE-cachen städade jag tyvärr när jag gjorde en backup.)



Vad tycker ni, ska jag låta den här DAC'en vänta på bättre tider, och istället skaffa en annan? Cyr, har du något tips på DAC ? Inte alldeles för dyr bara eftersom jag tänkt skaffa några stycken för framtida projekt.
Det jag behöver från en DAC är alltså:
2 kanaler,
gärna 12bitar (eller 16, beror på pris,)
åtminstone över 5MHz samplingsfrekvens, vore fint om den klarade upp mot 10MHz,
helst med strömförstärkare,


(Det är lite typiskt att jag behöver D/A istället för tvärt om, för jag har en riktigt bra A/D från Philips som jag tidigare använt till att sampla videosignal.)
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Är du säker på att du behöver flera MHz i samplingsfrekvens? För den du har klarar max 192KHz!

Jag har svårt att se hur du ska kunna producera miljontals med styrvärden i en PIC och skicka dessa (seriellt dessutom) till en DAC. Om du verkligen behöver denna hastighet så bör du nog kolla på parallellt gränssnitt och en mycket maffigare processor (någon DSP eller liknande).
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Jag blandade ihop siffrorna lite. Det var clock-frekvensen som jag skrev, sorry. Jag har bara använt DAC'ar med parallella gränssnitt tidigare, så jag har ingen erfarenhet med "seriella" DAC'ars hastigheter....

I ljudsammanhang är jag välbekant med samplingsfrekvens, men här blir jag lite förvirrad av bitrate/clock-frekvens och samplingsfrekvens. I databladet till DAC'en står det 192kHz vid "word select" och 9.2MHz vid "clock input". Vilket av dessa värden ska jag titta på för att se hur snabbt jag kan skicka in (och få ut) nya värden? Har lite hjärnsläpp för tillfället... :)


En liten längre förklaring av vad jag ska använda DAC'en till: DAC'en kommer sitta i en apparat som ritar med laser. Laserstrålen flyttas med elektromagnetiska armar som det sitter speglar på. Innan jag lärde mig programmera PIC-kretsar så körde jag med en PWM-kostruktion. Där körde jag med tiotalet kHz som "PWM-hastighet". Vet däremot inte vad det skulle krävas för att få samma resultat med en DAC. (En PWM med spolen i elektromagneten har samma funktion som en D/A iochmed att elektromagneten fungerar som ett lågpassfilter..)



edit:

Eftersom jag inte har fått DAC'en att fungera så har jag ju inte så mycket att testa på. Jag föredrar att testa mig fram för då hittar man snabbare de delar som kan förbättras. Men för att ni ska kunna hjälpa mig så har jag kavlat upp ärmarna och räknat lite:

Själva spegel-armen, (den som DAC'en ska flytta med hjälp av lite elektronik), den kan förflytta sig fram och tillbaka i ca 5kHz (kan ev. klara mer nu när jag förflyttat tyngdpunkt och förminskat den.) Som lite marginal så har jag fått tips om att köra med 5 gångers marginal, alltså 25kHz samplingsfrekvens, -eller kanske 50kHz för att vara på den säkra sidan.

Märker att det är mycket lättare att räkna nu när huvudvärken har släppt. Det räckte att baka scones och så var den borta... :D


Alltså: Jag behöver en DAC med samplingsfrekvens på 50kHz och som klarar SPI eller I2C för att undvika problem. Ett annat alternativ är ju annars att köra med parallell överföring. Problemet där är att jag inte har så många pinnar över på PIC-kretsen. RA-portarna behöver jag till annat. Då återstår RC och RB, vilket ger mig max 8bitar per kanal.
Spegelarmen flyttas 35grader, så det kanske skulle räcka...
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> kan förflytta sig fram och tillbaka i ca 5kHz

Alltså att du kan positionera spegeln 5000 gånger/sek i valfri position med 16 bitars upplösning ? Utan översvängning ?

> Som lite marginal så har jag fått tips om att köra med 5 gångers marginal, alltså 25kHz samplingsfrekvens,...

Om nu spegeln rent mekaniskt inte kan positionera sig på fler än 5.000 unika positioner per sekund, varför uppdatera DAC'en oftare ? Det måste väll bara betyda att du skriver samma värde 5 gånger efter varandra till DAC'en !? Varför det ? Eller är tanken att köra med en avancerad styrning där man "rampar" spänningen så att man får en styrning av spegeln för att t.ex minska översvängning och liknande ?

Personligen skulle jag med "marginal" mena att man man kör lite *långsammare* en 5 Khz, för att ha marginal till spegelns mekaniska begränsningar.

> Alltså: Jag behöver en DAC med samplingsfrekvens på 50kHz och som klarar SPI eller I2C för att undvika problem.

Med reservation för att jag inte förstår varför den måste vara mycket snabbare än vad spegeln är, så finns det säkert massor av DAC's som uppfyller det. Jag gjorde en snabb koll hos Microchip (inte den största leverantören på DAC's, men om man redan har ett sample-konto. så...) och hittade t.ex MCP4822 och MCP4922. Dual channel med SPI interface. 8 eller 16 pin DIP. Komplettera med en snabb power-opamp som kan driva spolen.
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Jag blir visst mer citerad än en politiker... :)

Men allvarligt skojjat: Varför jag vill ha DAC'en snabbare än vad spegel-armen är? Jo, om jag skulle köpa en DAC som är långsammare än spegeln så skulle det kvitta hur mycket jag "trimmade" spegeln; den skulle aldrig kunna röra sig snabbare än DAC'en tillät. Om DAC'en däremot vore snabbare än spegeln så har jag ju möjlighet att få konstruktionen ännu snabbare om jag trimmar spegelarmarna. Men det där har jag redan skrivit.

Bara för att DAC'en klarar högre samplingshastighet än vad spegeln rent mekaniskt har nytta av, så behöver det inte innebära att DAC'en måste köra med en högre frekvens bara för att den kan det.. Då har ju inte marginalen något syfte längre. Tipsen om samplingsfrekvensen har jag fått efter diskussioner med erfarna laserscanner-byggare. Mina uträkningar stämmer dessutom med deras, så jag verkar vara på god väg.


>Personligen skulle jag med "marginal" mena att man man kör lite *långsammare* en 5 Khz, för att ha marginal till spegelns mekaniska begränsningar.

Då är vi nog överrens. :) Enda skillnaden är att jag vill välja en DAC som *klarar* högre hastighet om jag skulle behöva det senare.



En fråga ang. DAC'ar med seriellt gränssnitt: Jag testade bara att skicka data till ena kanalen på DAC'en, så hur gör jag för att styra vilken kanal det ska skickas till och på så sätt kunna skicka till båda DAC-kanalerna? Med andra ord: Hur ser jag till att den byter "kanal" vid exakt rätt tillfälle?


Jag har även kvar några obesvarade frågor som jag skrev tidigare:

I databladet till DAC'en (TDA1543) står det 192kHz vid "word select" och 9.2MHz vid "clock input". Vilket av dessa värden ska jag titta på för att se hur snabbt jag kan skicka in (och få ut) nya värden?
Motsvarar "word select" samplingsfrekvensen? Skulle behöva fylla på kunskapsbanken här... Någon som har lite info om hur det fungerar?



Annars är ju ett alternativ 2st DAC med *parallella* gränssnitt. För att få det så snabbt och "rent" som möjligt så skulle jag då koppla 2st 8bitars DAC'ar direkt till PIC-kretsen. Tidigare var jag lite tveksam till om 8bitar skulle räcka. 8 bitar skulle ju ge 256 nivåer till 35 graders förflyttning. Dvs 7 nivåer/grad. På nära håll skulle det räcka, men på längre avstånd skulle säkert "hoppen" synas.
OBS: För att ni inte ska undra: Eftersom jag använder andra pinnar på PIC-kretsen till annat, så har jag bara PortB och PortB lediga för DAC'ar. Därav min maxgräns till 8bitar/DAC. När projektet hunnit längre så kanske jag kan få ledigt några pinnar så jag kan köra med 10bitar, så därför vore det bra att skaffa 12bit DAC'ar om jag nu väljer att köra parallellt gränssnitt.


Vore hemskt kul om jag kunde få lite hjälp/info/tips/förslag. Tycker att jag har svarat på fler frågor än jag fått svar på... :roll:

Jag gillar att vända på saker för att se problemet från ett annat håll, så:
Vad har ni för erfarenheter när det gäller att styra något via en DAC?
Kan inte ni skriva lite så man får lite tips? Vilken samplingsfrekvens har ni valt och varför, vilken DAC, mm... Då får jag lite info att jämföra med. Det vore intressant. :)




Liten kort parantes förresten:

Jag vet inte om ni minns mattelektionerna, men min lärare brukade säga att om man skulle räkna ut avståndet mellan jorden och månen och fick svaret "2.3cm" så borde man märka att det inte verkade rimligt. -Innan man skrev ett svar så skulle man alltså fundera på om man hade förstått frågan och om det svar man tänkt lämna verkade rimligt.
...Kan vi inte införa det på forumet också?

Diskussionerna blir oftast lättare att följa när man slipper svara på saker man inte ens har skrivit. -För jag kan inte hitta något ställe där jag påstått att jag mätt ström och fått resultatet i volt, eller att DAC'en har en debugger.


Men tack för all hjälp så här långt! Jag uppskattar det verkligen, trots att det gett mig många frågetecken i utbyte. :)

Tyvärr har jag efter 25 inlägg inte hittat några DAC'ar att jämföra. Inte heller något inköpsställen som är billigare än Elfa. Men det kanske är svårt att få tag i billiga DAC'ar? För en tid sedan frågade jag samma sak i en annan tråd utan resultat. Tips och priser på några olika DAC'ar hade inte varit i vägen heller.

edit: Kortade ner inlägget något, om det nu märks.. :D
Senast redigerad av JimmyAndersson 24 oktober 2005, 08:21:01, redigerad totalt 3 gånger.
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Jag förstår din tanka på att inte låta DAC'n vara flaskhalsen, låter bra!

Vad jag har förstådd på vad jag har läst är det just nivåbytet på höger/vänster kanalen (WS) som är grejen som berättar för DAC'n att "nu kommer det en ny dataskur, ta emot", jag har inte lusläst databladet så jag vill inte svära i kyrkan på det men....

Detta kan förklara de frekvenser du undrar på:
För varje WS-flank bör det alltså komma 16 "clock input"-pulser (eller hur många bits som ska skiftas in för att styra varje omvandling).
Du kan alltså skicka datan in ganska snabbt (9,6MHz) och växla kanal med 192KHz, det betyder att skiftregistret in klarar 9,6MHz och den logik som överför data från skiftregistret till utgångsregistret klarar att göra det med 192KHz.

Sen mätningen: du skrev tydligt att du hade mätt 1V och då det blev påpekat att kretsens utgång var strömutgång fasthöll du att den minsann var 1V hursomhelst. Du ser skillnaden? Först en del senare skrev du att strömmen var mätt till stadiga 1mA och då snacka vi ju rätt mätning.
Senast redigerad av Icecap 24 oktober 2005, 06:56:52, redigerad totalt 1 gång.
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Nu förstår jag! Bra förklaring av WS-grejjen :)

Jo, ibland försöker man förtydliga något, men så missar man nåt annat. Skriftspråket har sina nackdelar och fördelar. :D


sodjan: Alla Elfas DAC'ar över 8bit-nivån är rysligt dyra. Kollade på några sajter man kan sampla ifrån, men antingen skulle man vara medlem eller vänta i 6 veckor! Du tipsade om Mikrochip. Jag har inget "sample"-konto där (av någon konstig anledning). Det såg ut som om det gick att köpa direkt därifrån. Såg däremot inget om övriga kostnader som frakt?
Sedan kikade jag på Farnell, men än en gång ångrar jag att jag inte regstrerat företag ännu, (en sak på "to-do-listan" som jag hela tiden skjuter framför mig...)

Annars får jag väl kolla Tradera... Jag skulle förresten troligen ha varit lycklig ägare till de två LCD-displayerna du sålde (i ett paket för några dagar sedan), om inte min login till Tradera helt plötsligt hade vägrat fungera tio minuter innan auktionen slutade. :?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Hej.
Jag måste be att få kommentera ett par saker...

Först, du har helt *uppenbart* valt fel typ av DAC, vilket i sig är hela orsaken till att det har blivit lite rörigt i tråden.

"WS-grejen" förklarade jag för tre dagar sedan i inlägget daterat "21-Okt-2005 11:01" och det är även kommenterat i mitt inlägg samma dag 19:05. Kanske att Icecap lyckades beskriva det tydligare, men mitt intryck blir att du inte har läst tidigare inlägg.

> Tycker att jag har svarat på fler frågor än jag fått svar på...

Där går våran uppfattning *kraftigt* isär !!!

> För jag kan inte hitta något ställe där jag påstått [...] att DAC'en har en debugger.

Du skrev "I debuggern ser allt ok ut."
Jag tolkade självklart detta som debuggern i MPALB (MPSIM), inget annat.
Jag frågade vad du menar med "ok". D.v.s om det ser ok ut utifrån vad DAC'en förväntar sig. Självklart har jag varken skrivit, trott eller antytt att du skulle påstått att DAC'en skulle ha en debugger !

> det kanske är svårt att få tag i billiga DAC'ar?

DAC's finns från ett par 10'or till 1000 tals kronor, helt beroende på hastighet m.m. Men det du begär är ju att andra ska sitta och leta åt dig. :-)

> Alla Elfas DAC'ar över 8bit-nivån är rysligt dyra.

TC1321, 10 bitar I2C interface 8-pin SOIC, 73-421-08, 38:90 + moms.
Men visst, för 12 bitar och däröver handlar det oftast om ett par hundringar/st.

> inte hittat några DAC'ar att jämföra.

Jag tittade lite snabbt på www.ti.com, där finns 146st DAC's, bl.a 57st 12-bitars och 40st 16-bitars. Jag har inte kollat vilka av dom som kan samplas (det brukar inte vara alla), utan det får du göra själv...
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Nedanstående DAC's kan samplas från TI. Jag valde några med ca 0.1 MSPS och SPI interface.

TLV5618:
"The TLV5618A is a dual 12-bit voltage output DAC with a flexible 3-wire serial interface."


DAC8532:
"The DAC8532 is a dual channel, 16-bit Digital-to-Analog Converter (DAC) offering low power operation and a flexible serial host interface."

DAC8830:
"The DAC8830 is a single, 16-bit, serial-input, voltage-output digital-to-analog converter operating from a single 3V to 5V power supply."

EDIT: Obs att ovanstående bara är tre exempel, det finns massor fler som kan passa bättre beroende på vilka krav man har...
Skriv svar