Forum Replies Created
-
AuthorPosts
-
2017/07/27 at 14:56 #16424ArturasLParticipant
Parduotas.
2014/10/29 at 16:06 #8743ArturasLParticipantDar tokie variantai yra… Truputi brangoki:
http://www.ebay.com/itm/1pc-SKE10C-12-DC-to-DC-Converter-Vin-48V-Vout-12V-Iout-840mA-P-10W-Mean-Well-/141247861168?pt=LH_DefaultDomain_0&hash=item20e30751b02014/10/09 at 10:26 #8467ArturasLParticipantTuriu dar viena klausima. Ar galima BMS jungti nuosekliai? Ta prasme jei turiu 3 vienetus po 4S. Sujungus nuosekliai gautusi tarsi 12s?
2014/10/08 at 13:15 #8466ArturasLParticipantAciu, Sarunai,
2014/10/08 at 09:13 #8464ArturasLParticipantOk. Aciu. :)
Renkuosi is dvieju bms gal dar galetm patarti kuris is ju butu tinkamesnis. Baterijos lifepo4 3.6vAr sie bms veiktu su regeneracija, nes buvau rades tokiu kur rase, kad regeneracija sugadintu ju bms?
2014/10/08 at 08:51 #8462ArturasLParticipantO del pako jungimo 12s6p prie bms, tai jungemos 6 celes lygegreciai ir laikoma kaip viena cele? Ar kiekviena cele (72 vienetus) turi savo ackira jungima?
2014/10/07 at 13:38 #8460ArturasLParticipantO kaip kinai daro… Jie buna parduoda pakus is 18650 celiu. Pvz.: 12s6p LiFepo4. Ten jokio bms nera, tik pridedas pakroviklis ant kurio parasyta 42.5v.
Ar su tokiom baterijom geriau elgtis taip: sujunti lygegreciai 6 celes ir gauti 12 tokiu bloku. Ir juos tada prijungent prie BMS 12s?
2014/10/07 at 10:19 #8454ArturasLParticipantSveiki,
Gal galetumet paaiskinti kap vyksta pako krovimas? Tarkim jeigu nusiperku maitbloki Mean Well. Nustatau reikiama itampa. Prijungiu prie bateriju pako. Kiek suprantu celes pasiims kiek joms reikes, kol itampa pako netaps lygi maitblokio. Po to celes tiesiog nustos siurbti srove ar visgi reikalinga dar kazkokia shema kuri atjungtu maitbloki?
2013/08/04 at 09:58 #5959ArturasLParticipantAtsirado siek tiek laisvo laiko. Prisedau prie holo daviklio. Aciu Jonai uz formules, jos padejo suprasti daviklio esme. Zodziu prie 5A ir 5v maitynimo, mikrovaldiklis izduoda mazdaug max reiksme 701, o i priesinga puse max 323. Tai reiskia, kad 5 amperams atvaizduoti i viena puse mikrovaldiklis turi 701 – 512 = 189 dalis. I kita 323 – 512 = -189.
Parsiau funkcija kuri matuoja srove atsizvelgiant i mikrovaldiklio itampa. Isbandziau, veikia mazdaug su 0.1v paklaida (dar nesukalibruota visa sistema). Stai kodas:
//lcd start
#include "U8glib.h"
U8GLIB_64128N u8g(13, 11, 10, 9, 8); //SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//lcd end
//hall config start
int hallSensorPin = 5;
int hallCountAverageQuantity = 255;
int hallMaxValueMAmps = 5000;
//float hallVccMV = 5000;
float hallVccMV;
float hallSensitivityMV = 185;
int hallSensorCalibration = 2;
//hall config end
//hall variables start
int hallSensorValue;
int hallSensorValuesAverage;
long hallTotal;
//hall variables end
//
long readVcc() {
long result;
// Read 1.1V reference against AVcc
ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
delay(2); // Wait for Vref to settle
ADCSRA |= _BV(ADSC); // Convert
while (bit_is_set(ADCSRA,ADSC));
result = ADCL;
result |= ADCH<<8;
result = 1126400L / result; // Back-calculate AVcc in mV
return result;
}
//
//hall function start
float hallValueAmps() {
hallVccMV = readVcc();
float hallValueInAmps = 0.000;
//hall sensor values average start
hallTotal = 0;
for(int i = 0; i <= hallCountAverageQuantity; i++) {
hallSensorValue = analogRead(hallSensorPin);
hallTotal = hallTotal + hallSensorValue;
}
hallSensorValuesAverage = hallTotal / hallCountAverageQuantity + hallSensorCalibration;
//hall sensor values average end
hallValueInAmps = (hallSensorValuesAverage - 512) * (hallMaxValueMAmps / (1024/hallVccMV * hallMaxValueMAmps/1000 * hallSensitivityMV)) / 1000;
return hallValueInAmps;
}
//hall function end
void setup(void) {
}
void loop(void) {
//lcd start
u8g.firstPage();
do {
u8g.setFont(u8g_font_5x8);
u8g.setPrintPos(30, 30);
u8g.print(hallValueAmps(), 3);
} while( u8g.nextPage() );
//lcd end
//delay(1000);
}
Turiu klausima. Jei as matuoju mikrovaldiklio itampa Saruno rekomenduotu budu ar as galiu tuo paciu mikrovaldukliu papildomai matuoti itampa su itampos dalikliu? Nes siuo atveju VREF kintantis.
2013/07/24 at 14:32 #5955ArturasLParticipantPajungiau 5A sensoriu ACS712. Gauti duomenys plaukioja mazdaug 507 iki 515. Parasiau funkcija, kuri paskaiciuotu vidurki is 256 reiksmiu. Duomenys gavosi mazdaug stabilus 512-513.
Pajungiau 1.5A apkrova duomenys pasislinko mazdaug iki 450. Pakeiciau matavimo galus vietomis. Reiksme gavau mazdaug 550.
Kazkaip nesinori aklai kopijuoti formules. Norisi suprasti ka skaiciuoju. Paemus tokia situacikja kaip dabar, jei daviklio reiksme butu 1023 arba 0, tai tikrai ne 5 amperai. Kazkas netaip arba as kazko dar nesuprantu. Ir ka reiskia dokumentacijoje daviklio jautrumas 185mV/A?
2013/07/22 at 20:34 #5949ArturasLParticipantAgniau, del Allegro sensoriaus, kiek suprantu, reiksme priklauso ir nuo sensoriui paduotos itampos. Gal tau pades si nuoroda: http://forum.arduino.cc/index.php?PHPSESSID=q7l4uloqsj4pjb0q1o188bf8o6&topic=133144.0
Ryt pabandysiu parasyti funkcija daviklio parodymu konvertavimui i amperus. Kazkur turiu 5A sensoriu, bus proga paeksperimentuoti.
Pries Jono paaiskinima vis galvojau kaip tas sensorius gali isduoti minusi reiksme, kai lyg mikrovaldiklio analogine dalis isduota nuo 0 iki 1024. Dabar aisku :)
Galvoju kuri man pirkti – Allegro sensoriu ar ACS758LCB-050B-PFF-T ar ACS756KCA-050B-PFF-T. Kiek ziuriu dokumentacija, niekaip nesuprantu kuo jie skiriasi, iskirus tik, kad ACS758 platesnis temperaturos veikimo diapazonas.
u8g.print kaip suklijuoti skirtingus kintamuosius isprendziau taip:
String countToString = String(count);
u8g.print(countToString + "km");2013/07/21 at 19:45 #5944ArturasLParticipantAgniau, paziurejau schema kur pasarinai. Ten kiek supratau matuoja itampa su itampos dalikliu viso pako. Dar demesys krito i holo sensoriu. Kiek supratau is jo duomenys bus gaunami analoginiu budu :) Tai reiktu dabar tiksliai nustatyti kur ir kokie pas tave bus sensoriai ir kokiais duomenimis galima bus operuoti.
Nusiziurejau savo dviraciui holo sensoriu: http://www.ebay.com/itm/50A-100A-150A-200A-Bi-Uni-AC-DC-Current-Sensor-Module-arduino-compatible-/111040360152?pt=LH_DefaultDomain_0&var=&hash=item19da856ed8
Tik nezinau koki geriau butu imti Bi-Directional ar Uni-Directional ir ar apskritai vertas demesio sis sensorius?
Ir dar plokstes stilius kazkoks idomus. Gal (kas zinos ar) yra kazkokia programa ar standartai tokio stiliaus plokstei pasipaisyti?
2013/07/21 at 18:00 #5942ArturasLParticipantVisai nieko tas didelis sriftas atrodo. Man patinka :)
Dabar brandinu ideja kaip pamatuoti kiekvienos celes itampa ir atvaizduoti ja ekranelyje. Netrukus bandysiu braizytis schema… Reiks dar forumieciu pagalbos…
2013/07/21 at 16:01 #5940ArturasLParticipantPatobulinau koda, plius dadejau animacijos. Video idet negaliu, nes pas mane labai letas internetas. Praktiskai beliko tik sensoriu apdorotus duomenis sudeti ir gatavas matuoklis. :) Gal kartais kas zinote, kaip U8GLIB atvaizduoti teksta plius kintamojo duomenis. Kai darau u8g.print(number + “km”); hieroglifus meto.
Naujas kodas:
//lcd
#include "U8glib.h"
U8GLIB_64128N u8g(13, 11, 10, 9, 8); //SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//lcd
int count;
int leftColumnLevel = 0;
int leftCenterNumber = 0;
int rightColumnLevel = 0;
//lcdLeftColumn function start
void lcdLeftColumn(void) {
leftColumnLevel = map(count, 0, 255, 50, 0);
//
u8g.drawBox(0,5,11,54);
if(leftColumnLevel != 0){
u8g.setColorIndex(0);
//min 1, max 50
u8g.drawBox(2,7,7,leftColumnLevel);
u8g.setColorIndex(1);
}
//
u8g.setFont(u8g_font_6x10);
u8g.setPrintPos(13, 12);
u8g.print("F");
//
u8g.setFont(u8g_font_5x8);
u8g.setPrintPos(13, 35);
u8g.print(count);
//
u8g.setFont(u8g_font_6x10);
u8g.setPrintPos(13, 59);
u8g.print("E");
}
//lcdLeftColumn function end
//lcdCenterColumn function start
void lcdCenterColumn(void) {
leftCenterNumber = constrain(count, 0, 99);
u8g.setFont(u8g_font_fub35n);
if(leftCenterNumber < 10){
u8g.setPrintPos(51, 50);
}
else{
u8g.setPrintPos(38, 50);
}
u8g.print(leftCenterNumber);
}
//lcdCenterColumn function end
//lcdRightColumn function start
void lcdRightColumn(void) {
//
u8g.drawFrame(117,5,11,54);
u8g.drawFrame(118,6,9,52);
rightColumnLevel = map(count, 0, 255, 7, 55);
//min 7 max 55
u8g.drawBox(119,rightColumnLevel,7,2);
//
u8g.setFont(u8g_font_6x10);
u8g.setPrintPos(110, 12);
u8g.print("D");
u8g.setFont(u8g_font_5x8);
u8g.setPrintPos(101, 35);
u8g.print(count);
u8g.setFont(u8g_font_6x10);
u8g.setPrintPos(110, 59);
u8g.print("R");
}
//lcdRightColumn function end
void setup(void) {
count = 0;
}
void loop(void) {
//lcd
u8g.firstPage();
do {
//lcdLeftColumn start
lcdLeftColumn();
//lcdLeftColumn end
//lcdCenterColumn start
lcdCenterColumn();
//lcdCenterColumn end
//lcdRightColumn start
lcdRightColumn();
//lcdRightColumn end
} while( u8g.nextPage() );
//lcd
if(count == 0){
delay(1000);
}
if(count == 255){
count = 0;
delay(1000);
}
else{
count = count + 1;
}
delay(100);
}
Atvaizdavimo greiti, milesekundemis, galima keisti su delay(100) (kodo gale). Ji istrinus greitis bus maksimalus.
2013/07/20 at 19:43 #5938ArturasLParticipantNa, nezinau ar gera mintis kiekviena karta duomenis saugoti eeprom. Ten ribotas irasymu skaicius. Likutine baterijos WH, manau, galima butu paskaiciuoti iskarto. Is bendros baterijos WH minus kas kiekviena sekunde suvartojamo WH (tai yra baterijos itampa * holo daviklis amperais / 3600). O likusi atstuma kaip skaiciuoti dar reik pagalvoti :) Nors gal cia kazkur nusigrybavau… :)
2013/07/20 at 17:45 #5936ArturasLParticipantAgniau, as irgi tik mokausi :) Butu puiku, jei kas gerai mokantis programuoti, paziurejes mano koda, pasakytu ka galima butu geriau padaryti :) Pas mane nera tokio stabdymo su lcd. Pajungtas jis per i2c. Stai kodas:
//lcd
#include "U8glib.h"
U8GLIB_64128N u8g(13, 11, 10, 9, 8); //SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//lcd
int count;
//lcdLeftColumn function start
void lcdLeftColumn(void) {
//
u8g.drawBox(0,5,11,54);
u8g.setColorIndex(0);
u8g.drawBox(1,6,9,33);
u8g.setColorIndex(1);
//
u8g.setFont(u8g_font_6x10);
u8g.setPrintPos(13, 12);
u8g.print("F");
u8g.setFont(u8g_font_5x8);
u8g.setPrintPos(13, 35);
u8g.print("25km");
u8g.setFont(u8g_font_6x10);
u8g.setPrintPos(13, 59);
u8g.print("E");
}
//lcdLeftColumn function end
//lcdCenterColumn function start
void lcdCenterColumn(void) {
u8g.setFont(u8g_font_fub35n);
u8g.setPrintPos(38, 50);
u8g.print(count);
}
//lcdCenterColumn function end
//lcdRightColumn function start
void lcdRightColumn(void) {
//
u8g.drawFrame(117,5,11,54);
u8g.drawBox(118,30,9,2);
//
u8g.setFont(u8g_font_6x10);
u8g.setPrintPos(110, 12);
u8g.print("D");
u8g.setFont(u8g_font_5x8);
u8g.setPrintPos(101, 35);
u8g.print("41A");
u8g.setFont(u8g_font_6x10);
u8g.setPrintPos(110, 59);
u8g.print("R");
}
//lcdRightColumn function end
void setup(void) {
count = 10;
}
void loop(void) {
count = count + 1;
if(count == 99){
count = 10;
}
//lcd
u8g.firstPage();
do {
//lcdLeftColumn start
lcdLeftColumn();
//lcdLeftColumn end
//lcdCenterColumn start
lcdCenterColumn();
//lcdCenterColumn end
//lcdRightColumn start
lcdRightColumn();
//lcdRightColumn end
} while( u8g.nextPage() );
//lcd
//atvaizdavimo greitis ms
delay(500);
}O del likusio nuvaziuoti atstumo, jis, manau, priklausytu nuo akumuliatoriaus pako itampos, bendros talpos ir vaziavimo greicio. Ir kiek liko nuvaziuoti butu sokinejantis dytis, nes priklauso nuo vaziavimo greicio :)
2013/07/20 at 15:18 #5934ArturasLParticipantPabandziau padaryti likusi grafika :) Galeciau pabandyti parasyti funkcijas, kurios keistu sonuose esancius stulpelius pagal davikliu duomenis. Reiktu, kad tik parasytum min ir max stulpeliu reiksmes.
2013/07/19 at 10:50 #5931ArturasLParticipantAciu Sarunui ir Jonui uz atsakymus. Jei kam reikes pamatuoti itampa arduino is kurios maitinasi pats mikrovaldiklis galit naudoti sita koda, patikrinta ir veikia:
long readVcc() {
long result;
// Read 1.1V reference against AVcc
ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
delay(2); // Wait for Vref to settle
ADCSRA |= _BV(ADSC); // Convert
while (bit_is_set(ADCSRA,ADSC));
result = ADCL;
result |= ADCH<<8;
result = 1126400L / result; // Back-calculate AVcc in mV
return result;
}
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println( readVcc(), DEC );
delay(1000);
}Ten kur 1126400L pasikoreguokite pagal jusu mikrovaldiklio atramine itampa.
2013/07/16 at 12:44 #5929ArturasLParticipantSarunai, tavo pasiulytas matavimo budas kaip cia: http://www.rlocman.ru/shem/schematics.html?di=73220 ?
Kiek patikimas toks matavimo budas? Kazkur skaiciau, kad mikrovaldiklio vidine atramine itampa kazkiek plaukiojanti yra.
O energijos suvartojimo atzvilgiu, turbut butu maziausia.
2013/07/14 at 19:14 #5925ArturasLParticipantPasipaisiau shema paemes arduino micro leonardo: http://i.imgur.com/j2TQTVy.jpg
Jei noreciau pamatuoti mikrovaldiklio saltinio itampa, ar pakanka sios shemos? Ar reikia mikrovaldiklio analogine kojele kabinti prie maitinimo pliuso. Siuo atveju atramine itampa butu naudojama vidine 1.1v.
Dar keli klausimai:
Kokie privalumai/trukumai kai atramine itampa yra vidine/isorine?
Ar reikalingas kondencatorius c10 prie maitinimo? Ar jis neiskrovines be reikalo baterijos?
AREF, kai naudojama vidine atramine itampa, turi buti prie nieko neprijungtas?
Ka daro kojele Vbus, uvcc, ucap, pe2?
Jei noreciau tiktai matuoti baterijos itampa, koks butu optimaliausias mikrovaldiklio veikimo daznis?
-
AuthorPosts