Sida 1 av 5

Vad ska man tänka på om man isolerar SPI genom optokopplare?

Postat: 22 november 2014, 12:41:58
av Magnus_K
Tänkte kolla om ni har några bra "tips-från-coachen" när det kommer till att isolera SPI-kommunikation?

Funderingarna uppkom genom att jag försöker hitta en lösning på att mäta 0-200 VDC med en µC.
Enklaste lösningen borde vara en spänningsdelare men det innebär ju inte ett speciellt säkert system om något skulle hända som tex överspänning, trasig resistor etc.

Banorna jag funderar på är att ha en "offer-ADC" som tar in spänningen genom en delare och skickar SPI till min µC genom någon slags isolator.
Jag har läst att det finns flera olika typer som till exempel magnetiska, induktiva och optiska.

Har ni testat något och vad bör man tänka på?
Hade jag bara haft en optokopplare hemma så skulle jag testa att proba före och efter kopplaren och se hur signalen påverkas...

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Postat: 22 november 2014, 12:52:25
av Icecap
Det är inte så svårt faktisk - om du inte behöver höga hastigheter. Så det är dags att fundera över uppdateringshastighet osv.

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Postat: 22 november 2014, 17:42:53
av Magnus_K
Hastigheter var det ja...
Bara hunnit kika lite på det än men jag tror att kring 100 kb/s borde bli bra (?).

Detta grundar jag på att :
  • - min µC klarar av det lätt med sin 8MHz klocka
    - MCP3201 verkar vara en populär och billig 12-bitars A/D -omvandlare och den har sin sampling rate på 100 kSPS (och det är väl ingen idé att ha snabbare kommunikation än den kan sampla?)
    - snabbare optokopplare drar också snabbt iväg i pris verkar det som men 100 kb/s-kopplare verkar man kunna få för ganska vettiga priser, kanske runt 30:-
Låter detta som rimliga slutsatser?

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Postat: 22 november 2014, 17:46:58
av hanzibal
Kolla stig- och falltider för tilltänkt optokopplare och se till att dessa är tillräckligt korta relativt pulslängden för den bussklockfrekvens du tänkt använda.

Om du exempelvis tänkt köra SPI på 1Mhz så är pulslängden 0,5us (vid 50% pulskvot). En ganska vanlig optokopplare är t.ex. EL817 som enligt bladet har stig- och falltider uppåt 20us och funkar alltså inte alls för SPI på 1MHz som alltså kräver en mycket snabbare optokopplare.

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Postat: 22 november 2014, 17:48:50
av sodjan
För att överföra data från en 12-bit ADC som samplar med 100 KS/s så behöver
du absolut minst 100*12 Kbit/s. Och det är enbart själva värdet som sådant,
sen tillkommer overhead i själva SPI kommunikationen/protokollet.

Vad som inte framgår är om du faktiskt behöver 100 KS/s. Hinner du
göra något vettig med värderna på din "µC" (vad nu det är)? Du har
bara 10 us på dig mellan varje nytt värde...

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Postat: 22 november 2014, 20:48:59
av Magnus_K
Ja det var ett bra exempel hanzibal. Det är klart ja. Ju högre frekvens innebär mer data på mindre tid men fall/stig-tiderna kan ställa till det för kopplaren. Detta ska jag titta vidare på!

Tror inte att jag verkligen behöver 100 KS/s. Det jag vill göra är som sagt att mäta spänningen, skicka vidare den till min µC som sedan ska presentera spänningen på en LCD.
Jag har inte bestämt än om jag ska vidarebehandla datan och representera den ut till en DAC via SPI eller från en inbyggd.

Hade lite förhoppning om att kunde komma fram till en hanterbar hastighet utan att ställa för stora krav på design och komponenter.

Det är bra det du skriver sodjan att om ADC samplar med 100 KS/s och är 12 bitar så behöver jag kommunicera med en hastighet av 1200 Kb/s (1,2MHz?) plus overhead. Det blir inte aktuellt.
Däremot så kan väl den få sampla hur mycket som helst men jag plockar datan med den hastighet jag vill?

Säg att jag önskar uppdatera µC:n med ADC-data 10 ggr per sekund. Behöver jag då alltså kommunicera med en hastighet av 10 x 12 bit = 120 b/s = 120 Hz plus overhead, hur mycket det nu kan vara.
Tänker jag tokigt?

EDIT: Särskrivning...

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Postat: 22 november 2014, 20:50:19
av Icecap
Ska värdet visas på ett display är 3 uppdateringar/sekund allt som behövs, mer än det är bara flimrande tal.

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Postat: 22 november 2014, 20:53:25
av Magnus_K
Ah, det visste jag inte. Tack för det! :tumupp:

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Postat: 22 november 2014, 23:39:54
av hanzibal
Magnus_K skrev:Säg att jag önskar uppdatera µC:n med ADC-data 10 ggr per sekund. Behöver jag då alltså kommunicera med en hastighet av 10 x 12 bit = 120 b/s = 120 Hz plus overhead, hur mycket det nu kan vara.
Ja och enligt databladet sid 19 har chipets SPI-interface en overhead på 3 klockperioder (2 + nullbit) varpå de 12 databitarna sedan följer. Alltså 3 / 15 = 1 / 5 = 20% overhead.

Du måste alltså öka SPI-klockfrekvensen med 20% i förhållande till önskad nettodatahastighet så för 120 bps behöver klockan alltså vara minst 120 x 1,2 = 144 Hz.

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Postat: 22 november 2014, 23:51:28
av Magnus_K
Perfekt, tack! Ska bläddra igenom databladet lite senare och se om jag kan räkna ut ungefär vilken maxgräns just denna har.
Ska ta och kika på lite olika optokopplare men EL817 verkar ju vara en vettig att ha i lådan i alla fall. Samt att den antagligen räcker till detta projekt.

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Postat: 22 november 2014, 23:58:55
av sodjan
Men nu så är det ju sannolikt orealistiskt att köra en SPI bus
i 144 b/s. Och normala optokopplare (om du ska köra med det)
lär väl komma upp i ett par tiotal Kb/s i alla fall.

> Ah, det visste jag inte.

Vad var det du inte visste? Att man inte kan läsa av en
LCD som uppdateras 100.000 ggr/sekund med ögat?

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Postat: 23 november 2014, 00:05:14
av Micke_s
Analog devices adum serie kanske? Digitala 4kanalers isolatorer..

Titta på adum1401 tex

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Postat: 23 november 2014, 00:15:12
av hanzibal
sodjan skrev:Men nu så är det ju sannolikt orealistiskt att köra en SPI bus
i 144 b/s. Och normala optokopplare (om du ska köra med det)
lär väl komma upp i ett par tiotal Kb/s i alla fall.
Ja, det var ett räkneexempel, i praktiken hade man nog kört SPI-klockan så snabbt som optokopplaren och ADC-chipet tillåter.
Magnus_K skrev:Perfekt, tack! Ska bläddra igenom databladet lite senare och se om jag kan räkna ut ungefär vilken maxgräns just denna har.
Ska ta och kika på lite olika optokopplare men EL817 verkar ju vara en vettig att ha i lådan i alla fall. Samt att den antagligen räcker till detta projekt.
Med EL817 kommer du nog inte upp mer än i kanske 10kHz emedan den där adum1401 tycks vara uppåt 1000 ggr snabbare och 4-pack dessutom.

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Postat: 23 november 2014, 00:42:34
av Magnus_K
@Micke_s:
Det var ju en riktigt fin IC! Hade aldrig hört talas om just "Interface-isolatorer" vilket säkert är exakt det jag borde använda här.
Den här gången faller det nog på att ELFA bara hade en som var hålmonterad, och den var 6-kanalig. Kommer egentligen bara behöva 1 kanal och jag tänkte försöka hålla mig till hålmonterat ett tag till. Ska å andra sidan ha detta i bakhuvet!
Dom optokopplarna jag har kikat på är dom som klassas som "High Speed/Logik" hos ELFA -> Länk_till_det_sortimentet

@hanzibal:
Om jag kan komma upp till kring 10kHz så blir det ju kanoners. Har lagt på några såna här till min nästa beställning.

Re: Vad ska man tänka på om man isolerar SPI genom optokoppl

Postat: 23 november 2014, 00:47:25
av hanzibal
På sid 22 i bladet för mcp3201 står förresten att lägsta tillåtna klockfrekvens är 10kHz för att ADCn skall fungera korrekt. Då ligger du troligen nära eller tom över gränsen för vad EL817 klarar innan den storknar.