LTC2944

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
rolex42
Inlägg: 522
Blev medlem: 11 augusti 2009, 17:12:49
Ort: Uppsala

LTC2944

Inlägg av rolex42 »

Fick hem 2 LTC2944 Samples igår som jag lödde på adapter PCB. (Har inte provat ännu att lödningen lyckats).
Tänkte skriva en Arduino lib.
Lödningen var en utmaning.
Kikade bla på Mooshim och Ghlargh för tips.
Det är inte så enkelt som det verkar på filmerna.
Jag skulle behöva ett bra mikroskop. Helst ett som inte kräver en PC.
Nu sitter jag med mobilen och 8x lupp.
rolex42
Inlägg: 522
Blev medlem: 11 augusti 2009, 17:12:49
Ort: Uppsala

Re: LTC2944

Inlägg av rolex42 »

Ett problem som kan uppstå är att Arduino Wire lib aktiverar intern pull-up på i2c pinnarna.
Och en del kretsar tål inte pull-up till 5V.
Denna krets har enl databladets Absolute Max.
SCL, SDA, ALCC Voltage............................... –0.3V to 6V

Då borde det väl fungera utan modifiering av pull-up i Wire?
floppen
Inlägg: 109
Blev medlem: 14 september 2012, 13:28:32

Re: LTC2944

Inlägg av floppen »

rolex42
Inlägg: 522
Blev medlem: 11 augusti 2009, 17:12:49
Ort: Uppsala

Re: LTC2944

Inlägg av rolex42 »

Har laddat ner Linduino och det verkar finnas 2943 & 2945. Ska kolla om de är användbara.

För att kolla min lödning kollade jag på Brainy-Bits och körde följande i2c-scanner. Enl databladet ska jag hitta en device med address 1100100, 0x64

Kod: Markera allt

#include <Wire.h>

void setup() {
  Wire.begin();
 
  Serial.begin(115200);
  Serial.println("\nI2C Scanner");
}
 
void loop() {
  byte error, address;
  int nDevices;
 
  Serial.println("Scanning...");
  nDevices = 0;
  for(address = 1; address < 127; address++ )   {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
 
    if (error == 0)    {
      Serial.print("I2C device found at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");
 
      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Unknow error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");
 
  delay(5000);           // wait 5 seconds for next scan
}
I2C_Scanner_LTC2944.png
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
rolex42
Inlägg: 522
Blev medlem: 11 augusti 2009, 17:12:49
Ort: Uppsala

Re: LTC2944

Inlägg av rolex42 »

LINDUINO inkluderar förutom kod för LTC2943 som i stort sett är samma som LTC2944, även deras egen I2C.
Betydligt mer komplex som jag uppfattar det än Wire.

Efter mycket strul med en bränd Arduino Nano. Felsökning för att komma fram till det.
Därefter helt övertygad om att jag eldat upp båda LTC2944 när jag blåste på med hetluften.

LINDUINOs kod i sin grundform har jag inte fått att fungera.
Först fick jag ju kontakt med kretsarna med I2C Scanner som använder Wire.
Men sen får jag inte läsning av register att fungera med Wire.
Till slut svarar (åtminstone ena kretsen) när jag dissikerat LINDUINOs kod och plockat det jag behöver:

Kod: Markera allt

LTC2943_2
Start loop ...
I2C device found at address 0x64  !
charge_code= 32766
Charge: 5570.2202 mAh
temp_code= 37824
Temperature 21.2 C
Start loop ...
I2C device found at address 0x64  !
charge_code= 32766
Charge: 5570.2202 mAh
temp_code= 37824
Temperature 21.2 C
rolex42
Inlägg: 522
Blev medlem: 11 augusti 2009, 17:12:49
Ort: Uppsala

Re: LTC2944

Inlägg av rolex42 »

En ändring som behöver göras för LTC2944 är:

Kod: Markera allt

const float LTC2943_FULLSCALE_VOLTAGE = 70.8;
(Som för LTC2943 är 23.6)
rolex42
Inlägg: 522
Blev medlem: 11 augusti 2009, 17:12:49
Ort: Uppsala

Re: LTC2944

Inlägg av rolex42 »

Man ska tydligen göra en del modifieringar i koden om man kör LINDUINO utan Linears demoboard.
Finns beskrivet på sidan Going Generic.
Skriv svar