i2C isolator [löst]

Övriga diskussioner relaterade till komponenter. Exempelvis radiorör, A/D, kontaktdon eller sensorer.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

i2C isolator [löst]

Inlägg av jesse »

Jag behöver en 12-bitars DA-omvandlare på högspänningssidan (>600V isol) som ska styras med MCU. Hittade en enkel DA från Microchip MCP4725 som har I2C-anslutning.
Bild

Jag har inte jobbat med I2C innan, men det verkar ju inte så konstigt. Har t.o.m inbyggd I2C i processorn, (Atmega644) men Atmel kallar det TWI (Two wire Interface).


Problemet är då den optiska isoleringen + min dåliga kunskap om I2C: Data behöver bara skyfflas från µC till DA... ingen data tillbaks alltså. Men I2C måste ju ha ACK-biten, på samma datalinje:
Bild

Så jag vete sjutton hur jag ska isolera dessa galvaniskt. Hade det inte varit för ack (egentligen behövs den inte , då jag kör mycket långsamt och jag vet att DA:n hänger med)...

Jag kan väl lösa detta på några olika (krångliga) sätt, antar jag:
1) skita i ack-överföringen, och försöka modda processorn på nåt vis att strunta i ack-biten.
2) skita i ack-överföring och lura processorn med en fejkad ack in... (fast det kan bli konstigt.. :roll: )
4) skaffa nån slags isolator som kan överföra i två riktningar samma datalina. Finns det sådana? Hur går det till?

Om jag bara behöver överföra i en riktning finns jätteenkla isolatorer från TI: iso7220

Bild

Ful-lösningen är att isolera med en analog optokopplare, men den lösningen är inte så attraktiv. TI har visserligen iso122 - en isolerad förstärkare med 0.02% linjäritet, men den kostar också 190 spänn.

Eller finns det ett mycket smartare sätt som jag inte tänkt på än?
------------------------------------------------
EDIT:
Försöker fatta databladet för ATmega644... Atmels kodexempel är som vanligt helt värdelösa / urusla. Exempel:
while (!(TWCR & (1<<TWINT)));
Wait for TWINT Flag set. This
indicates that the SLA+W has been
transmitted, and ACK/NACK has
been received.
jovisst! Och man vill givetvis att processorn hänger sig i den loopen för evigt om det inte kommer någon acknowledge? :sick:
Senast redigerad av jesse 9 juni 2010, 14:40:22, redigerad totalt 2 gånger.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: i2C isolator

Inlägg av jesse »

Hehe, nu har jag hittat ADUM1251 - I²C isolator:

Bild

trodde inte det existerade sådana , av två orsaker:

1) fanns inte hos Texas Instruments
2) hur sjutton funkar det när datalinjen går låg på ena sidan - och den överför låg till andra sidan... som för tillbaks låg till första.... borde ju vara låst på låg nivå resten av evigheten... hur det funkar fattar jag inte ??? :humm: Kan någon förklara?

EDIT: Aha! De använder tre spänningsnivåer... låg nivå på utgången ligger egentligen på ca 0.6 - 0.9 volt - vilket är tillräckligt för att uppfattas som "låg" av extern logiska kretsar, men inte av den interna sändaren som måste ha < 0.6 volt för att gå låg.

Jaja, då var det bara att köpa några sådana och testa.

Det blev ju en fin monologtråd det här. :D
Folk får gärna kommentera.
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: i2C isolator [löst]

Inlägg av blueint »

Jag har sett någon lösning med dubbla optoisolatorer som spännings-"speglar" på något sätt. Om någon har schemat så vore det intressant att kika på.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: i2C isolator [löst]

Inlägg av jesse »

Du menar analoga signaler? Jo, de är ju inte så ovanliga, men de är inte så noggranna. Jag vill kunna ha 0.025% noggrannhet. En sådan optokopplare ligger nog runt 1% som allra bäst.

Du kanske tänker på en sådan här:

IL388DAA:
Bild

Tanken är att man får två identiska utsignaler från de två fototransistorerna - den ena går till "utgången" på den isolerade sidan, den andra går tillbaks till en OP-förstärkare som feedback som justerar strömmen till lysdioden för att få den exakta utspänningen.
Skriv svar