Batarya Yönetim Sistemi

Başlatan enesmalikyo, 08 Temmuz 2018, 05:04:52

enesmalikyo

Merhaba arkadaşlar. Biraz üstünde çalıştığım bir batarya yönetim sistemi var. LTC6802-2 entegresi kullanıyorum. İnternette bunu yapan var ama benim bir sorunum var. Entegre ile spi ile haberleşiyorum arduino uno kullanarak ama gerilimler saçma sapan geliyor. Bana yardımcı olabilecek var mı acaba?


Sir Henry Newbolt biography

mehmet

nothing

e-zeki

Hocam pulluplara bağladığın 5V label, Power line değil, label 5V pine bağlı olmadığı için olabilir mi?
Proteusta bazı modeller pullup'ları isterken bazıları istemiyor . Senin entegrede durum ne bilmediğim için resme bakarak önerebileceğim bu var sadece.

enesmalikyo

11 Temmuz 2018, 18:48:23 #3 Son düzenlenme: 13 Temmuz 2018, 16:34:32 gevv
Alıntı yapılan: mehmet - 10 Temmuz 2018, 14:56:52Arduino kodları yok mu?
Kod Seç
#include "SPI.h"
// SDO - PIN 12
// SDI - PIN 11
#define WRCFG 0x01 //Write Configuration Registers
#define RDCFG 0x02 // Read config
#define RDCV 0x04 // Read cells
#define STCVAD 0x10 // Start all A/D's - poll status
#define RDFLG 0x06 //Read Flags
#define RDTMP 0x08 //Read Temperatures
#define STCDC 0x60 //A/D converter and poll Status
#define STOWAD 0x20 //Start Test - poll status
#define STTMPAD 0x30// Temperature Reading - ALL
#define address 0x80
//Functions
byte byteTemp;
void setup()
{
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,INPUT);
pinMode(13,OUTPUT);
digitalWrite(10HIGH);
SPI.setBitOrder(MSBFIRST);
SPI.setDataMode(SPI_MODE3);
SPI.setClockDivider(SPI_CLOCK_DIV16);
SPI.begin();
Serial.begin(9600);
writeReg();
}
void loop()
{
readV();
delay(2000);
}
void writeReg()
{
Serial.println("Writing config...");
digitalWrite(10LOW);
SPI.transfer(address);
SPI.transfer(WRCFG);
SPI.transfer(0x01);//0
SPI.transfer(0x00);//1
SPI.transfer(0x00);//2
SPI.transfer(0x00);//3
SPI.transfer(0x71);//4
SPI.transfer(0xAB);//5
digitalWrite(10HIGH);
}
void readReg()
{
Serial.println("Reading config...");
digitalWrite(10LOW);
SPI.transfer(address);
SPI.transfer(RDCFG);
for(
int i 06i++)
{
byteTemp SPI.transfer(RDCFG);
Serial.println(byteTempHEX);
}
digitalWrite(10HIGH);
}
void readV()
{
digitalWrite(10,LOW);
SPI.transfer(STCVAD);
delay(20); // wait at least 12ms as per data sheet, p.24
digitalWrite(10,HIGH);
byte volt[18];
digitalWrite(10,LOW);
SPI.transfer(0x80);
SPI.transfer(RDCV);
for(
int j 0j<18;j++)
{
volt[j] = SPI.transfer(RDCV);
}
digitalWrite(10,HIGH);
Serial.println(((volt[0] & 0xFF) | (volt[1] & 0x0F) << 8)*1.5*0.001);
Serial.println(((volt[1] & 0xF0) >> | (volt[2] & 0xFF) << 4)*1.5*0.001);
Serial.println(((volt[3] & 0xFF) | (volt[4] & 0x0F) << 8)*1.5*0.001);
Serial.println(((volt[4] & 0xF0) >> | (volt[5] & 0xFF) << 4)*1.5*0.001);
Serial.println("--------------------");
}

enesmalikyo

Alıntı yapılan: e-zeki - 10 Temmuz 2018, 18:23:32Hocam pulluplara bağladığın 5V label, Power line değil, label 5V pine bağlı olmadığı için olabilir mi?
Proteusta bazı modeller pullup'ları isterken bazıları istemiyor . Senin entegrede durum ne bilmediğim için resme bakarak önerebileceğim bu var sadece.
Ares kısmında bağlı sorun yok yani

Monad

10 Eylül 2018, 23:09:57 #5 Son düzenlenme: 10 Eylül 2018, 23:17:13 Monad
Hocam ben de benzer bi projeye uğraşıyorum ama LTC6802 entegresi kütüphanede yok. İnternette hazır kütüphane bulamadım. Kendim komponent oluşturup ekleyim desem entegrenin içi datasheetde yok simülasyon yapamayacağım. Bu sorunu nasıl çözdünüz?

enesmalikyo

Alıntı yapılan: Monad - 10 Eylül 2018, 23:09:57Hocam ben de benzer bi projeye uğraşıyorum ama LTC6802 entegresi kütüphanede yok. İnternette hazır kütüphane bulamadım. Kendim komponent oluşturup ekleyim desem entegrenin içi datasheetde yok simülasyon yapamayacağım. Bu sorunu nasıl çözdünüz?
simulasyon yapmak zor zaten ama isis,ares ve 3d görünümünü ben çizdim size verebilirim