Home Forums Akumuliatoriai / valdymo sistemos / įkrovikliai Kontaktinio akumuliatoriaus prototipas

Viewing 18 posts - 1 through 18 (of 18 total)
  • Author
    Posts
  • #15763
    agniusm
    Participant

    #15765
    minde28383
    Participant

    Atrodo labai graziai. Korpusas is aliumo ir plastmases?
    sitas 10S6P. Kokiu konfiguraciju xSxP dezes planuoji gaminti? Kokia kaina bus?

    #15767
    agniusm
    Participant

    6p, 3p, s konfiguracijos galimos visokios. Korpusas spauzdintas, plasmasinis kol kas. Lietuvoje nežadu pardavinėti, bus kosmosas, ne mūsų algom

    #15922
    agniusm
    Participant

    Gl kas turi po ranka pasijungęs arduino ir kerta truputi, bo aš mekai. Reikia patikrinti tokį reikalą:


    #include <SD.h>
    #include <time.h>
    #include <Wire.h>
    #include <DS1307RTC.h>

    #define SD_CS 10
    #define BUTTON_PIN 12
    #define LED_PIN 13

    int temp = 0;
    int id = 0;
    unsigned long time = 0;
    unsigned long timer;

    int interval = 0;
    int readsCount = 0;
    byte insCount = 0;
    byte RTCEnable = 0;

    void setup () {
    Serial.begin(115200);
    //inicijuojami iejimai/isejimai
    pinMode(LED_PIN, OUTPUT);
    digitalWrite(LED_PIN, LOW);
    pinMode(SD_CS, OUTPUT);
    digitalWrite(SD_CS, HIGH);
    pinMode(BUTTON_PIN, INPUT);
    digitalWrite(BUTTON_PIN, HIGH);
    //SD korteles atidarymas
    if (SD.begin(SD_CS))
    {
    Serial.println("SD card init success"); //pavyko
    readConfig(); //skaitome konfiguracija
    }
    else
    {
    Serial.println("SD card init fail"); //nepavyko
    while (true)
    {
    digitalWrite(LED_PIN, HIGH); //mirksime leda be galo
    delay(100);
    digitalWrite(LED_PIN, LOW);
    delay(10);
    }
    }
    }

    void loop() {
    if (digitalRead(BUTTON_PIN)==LOW) //tikriname ar mygukas nsupaustas
    {
    delay(50);
    if (digitalRead(BUTTON_PIN)==HIGH) return; //isitikaname ar tai ne koks triuksmas
    while (digitalRead(BUTTON_PIN)==LOW) { //ir laukiame kol jis bus atleistas
    delay(5);
    }
    char fname[13];
    if (RTCEnable == 1)
    { //generuojama datos pavidalo failu pavadinimas
    tmElements_t tm;
    Serial.println("Reading time..");
    if (RTC.read(tm)) {
    if (tm.Month<10)
    fname[0] = '0';
    else fname[0] = char(tm.Month/10%10)+48;
    fname[1] = char(tm.Month%10)+48;
    if (tm.Day<10)
    fname[2] = '0';
    else fname[2] = char(tm.Day/10%10)+48;
    fname[3] = char(tm.Day%10)+48;
    if (tm.Hour<10)
    fname[4] = '0';
    else fname[4] = char(tm.Hour/10%10)+48;
    fname[5] = char(tm.Hour%10)+48;
    if (tm.Minute<10)
    fname[6] = '0';
    else fname[6] = char(tm.Minute/10%10)+48;
    fname[7] = char(tm.Minute%10)+48;
    fname[8] = '.';
    fname[9] = 'c';
    fname[10] = 's';
    fname[11] = 'v';
    fname[12] = '\0';
    }
    else
    {
    Serial.println("RTC fail"); //nepavyko gauti datos
    while (true)
    {
    digitalWrite(LED_PIN, HIGH); //mirksime leda be galo
    delay(100);
    digitalWrite(LED_PIN, LOW);
    delay(1000);
    }
    }
    }
    else
    { //generuojama eiliskas failu pavadinimas
    long i = 0;
    do
    {
    i++;
    fname[0] = int(i/10000000)+48;
    fname[1] = int(i/1000000%10)+48;
    fname[2] = int(i/100000%10)+48;
    fname[3] = int(i/10000%10)+48;
    fname[4] = int(i/1000%10)+48;
    fname[5] = int(i/100%10)+48;
    fname[6] = int(i/10%10)+48;
    fname[7] = int(i%10)+48;
    fname[8] = '.';
    fname[9] = 'c';
    fname[10] = 's';
    fname[11] = 'v';
    fname[12] = '\0';
    }
    while (SD.exists(fname));
    }
    Serial.println(fname);
    File dataFile = SD.open(fname, FILE_WRITE);
    if (dataFile) //atsidarome faila rasymui
    {
    id = 1;
    time = 0;
    while (id!= readsCount) //vykdomas skaitymas kol nebus pasiektas norimas duomenu kiekis
    {
    if (digitalRead(BUTTON_PIN)==LOW) //tikriname ar mygukas nsupaustas
    {
    delay(50);
    if (digitalRead(BUTTON_PIN)==LOW) //isitikaname ar tai ne koks triuksmas
    {
    while (digitalRead(BUTTON_PIN)==LOW) { //ir laukiame kol jis bus atleistas
    delay(5);
    }
    dataFile.close(); //baigiamas failo rasymas
    return;
    }
    }
    time +=(unsigned long)interval; //dabartinis laikas
    dataFile.print(time);
    dataFile.print(';');
    for (byte i = 14; i<insCount+14; i++) //skaitomas norimas kiekis duomenu
    {
    temp = analogRead(i);
    dataFile.print(temp);
    dataFile.print(';');
    }
    dataFile.println();
    id++;
    // Serial.print(time);
    // Serial.println(';');
    digitalWrite(LED_PIN, HIGH); //kol daroma nustatyta pauze ledas dega.
    delay(interval);
    digitalWrite(LED_PIN, LOW);
    }
    dataFile.close();
    return;
    }
    }
    }

    boolean readConfig() //konfiguracijos nuskaitymo operaciju funkcija
    {
    char buffer[32];
    int index = 0;
    char ch = 0;
    File dataFile = SD.open("config.txt", FILE_READ);
    if (dataFile) { //atsidaromas failas
    Serial.println("Config file opened");
    ch = dataFile.read();
    while (ch != '\n') //skaitomas pirmas nusktatymas iki Enter
    {
    buffer[index++] = ch;
    ch = dataFile.read();
    }
    buffer[index++] = '\0';
    interval = atoi(buffer); //konvertuojamas nustatymas
    ch = dataFile.read();
    index = 0;
    while (ch != '\n') //skaitomas antras nusktatymas iki Enter
    {
    buffer[index++] = ch;
    ch = dataFile.read();
    }
    buffer[index++] = '\0';
    readsCount = atoi(buffer); //konvertuojamas nustatymas
    ch = dataFile.read();
    index = 0;
    while (ch != '\n') //skaitomas trecias nusktatymas iki Enter
    {
    buffer[index++] = ch;
    ch = dataFile.read();
    }
    buffer[index++] = '\0';
    insCount = atoi(buffer); //konvertuojamas nustatymas
    ch = dataFile.read();
    index = 0;
    while (ch != '\n') //skaitomas trecias nusktatymas iki Enter
    {
    buffer[index++] = ch;
    ch = dataFile.read();
    }
    buffer[index++] = '\0';
    RTCEnable = atoi(buffer); //konvertuojamas nustatymas
    dataFile.close();
    }
    else
    {
    Serial.println("Config file fail");
    return false;
    }
    }

    Man meta klaidą nors prieš tai viskas veikė. Čia loggeris. Iš 5 sensorių renka raw duomenis ir rašo į SD kortelę. Gal sakau kas su time biblioteka?

    exit status 1
    'long unsigned int time' redeclared as different kind of symbol

    #15923
    Lukas
    Participant

    Nabandei pakeist <Time.h> į <TimeLib.h>?

    #15925
    agniusm
    Participant

    Bandziau, tada kažką kito meta. Sakau, gal biblioteka atnaujinta or dėl to neveikia?

    #15927
    Buckis
    Participant

    Pas mane būna taip kad jei pajungti davikliai įrašyt kodo neina, atjungi įsirašo tada pajungi

    #15929
    Tyro
    Participant

    pamėgink pervadinti “time” (su Replace funkcija) yra kitą pavadinimą (time2 ar pan). Gali būti, kad toje “time.h” viduje yra jau kintamasis tokiu vardu.

    Turiu galvoje šį kintamąjį

    unsigned long time = 0;

    #15931
    Tyro
    Participant

    Su SD kortelėmis nelabai turėjau reikalų nes nieko nereikėjo, bet iš to kiek susidūriau rekomenduoju naudoti (ypač logų rašymams) ne SD o SDFat biblioteką – ji daug spartesnė ir lengvesnė. Daugumoje nereikia nieko keisti, tik parašyti kitą failą include eilutėje ir veikia su tais pačiais kreipiniais.

    #15932
    agniusm
    Participant

    Geras su tuo SDfat, ten yra pavyzdys labai spartaus loggerio:
    http://forum.arduino.cc/index.php?topic=228549.0

    #15933
    agniusm
    Participant

    OK, užteko dadėti TimeLib.h

    #15940
    agniusm
    Participant

    Pasitestavau akumuliatorių, gan įdomus rezultatas. Poliuterano medžiaga veikia labai gerai kaip spyruoklė. Prie 50% suspaudimo gaunu vidutiniškai 1.9kgf į 2.54cm².
    Paleidau ant savo kratytuvo, kratytuvas krato akumuliatorių poliuretano suspaudimo kryptimi 2.5 karto per sekundę dažniu, kol akumuliatorius pilnai išsikrauna. Nuosekliame sujungime jokių pokyčių nepastebiu. Kylant akumuliatoriaus temperatūrai, blogėja poliuretano veikimas, bet jis labai neryškus. Jei nekratant jis apie 2kgf/2.54cm²(prie 25C) tai mažiausias apie 1.7kgf/cm²(prie 41C).

    Gal kas kokių pastebėjimų turės ir viską aš čia ne taip interpretuoju.
    https://drive.google.com/open?id=0B56NVZIdTBFObXhKZE9OTUFmUXM

    #15941
    Oldschooler
    Participant

    Testavimo metodika teisinga, iki pilnos laimės reikėtų klimatinės kameros, kad viską pabandyti didelėj drėgmėj ir kokių 40*C . Beje, kokia kratymo 2,5 Hz dažniu amplitudė?

    #15942
    agniusm
    Participant

    Na, apie termo kamerą galvojau, bet man prabanga. Ką turi omenyje amplitudė? Buvau pajungęs akselerometrą, bandžiau kalibruoti bet ką gavau nežinau ar teisinga. Grafiko apačioje geltona linija yra greitėjimas m/s2 į vieną kryptį ir atgal. Šiaip jį stebint rodo 0.98G +x ir 1.02 -x tai kaip ir panašu, nžn, aš tais rodmenimis nepasitikiu. Pvz mano naudojamo Rogers firmos poliuretano spaudimas pagal gamintoją yra 76kPa kas yra 0.775kgf/cm² arba 1.968kgf/2.54cm², taigi labai arti.

    #15943
    Oldschooler
    Participant

    “…Ką turi omenyje amplitudė?…”
    Kai drebini bandinį tuo vibratorium, judesys švytuoklinis, ar ne? Vibravimo amplitudė įdomi d/to, kad svarbu, koks vieno sinuso lanke bandinį paveikia pagreitis. Akselerometras- gerai, maždaug leidžia suprast, kokios apkrovos, t.y. beveik atsako į klausimą.
    Termo kamera- klimatinė kamera- padaryk improvizuotą, iš poliet. šiukšliamaišio, su verdančiu arbat. virduliu viduj. Per valandą vibravimo karštuose garuose (nepersistenk!) žinosi, ar tropinis klimatas, kaip Kuboj, Havanoj, pav., tavo gaminiui neatsilieps… :)
    Miami, Florida, klimatas irgi panašus, o su tokiu produktu, kaip tavoji kontaktinė baterija- garantuotai sudominsi USA rinką !

    #15944
    agniusm
    Participant

    Na tas judesys kiekvienu atveju gausis švytuoklinis kadangi yra periodas, taigi nuos sustojimo iki max greičio or atvirkščiai. O kam toe garai? Nemačiau, kad kas testuotų baterijas garuose, anyway, poliuretanas pats drėgmės daug negeria, didelio drėgnumo aplinkoje 2% Nikelis nelabai reaguos, GFRP vanduo taip pat niekas, lieka celes su kurion nieko negaliu padaryti;)

    #15945
    Oldschooler
    Participant

    Tokie testai- garuose, ir pan. – labiau marketingo reikalas, nei techninis. Baterijos aprašymuose labai gražiai žiūrėtųsi nuorodos i Yutubo klipus, su įvairiu testavimu. Pirkėjui daro įspūdį :) nors objektyviai, tai “izlišestva” .
    Žinai gi, kompresiniais kontaktais niekas nepasitiki, aviacijoj nenaudojami išvis, tai teks pergalėt išankstinius nusistatymus…

    #15946
    Nemirtingasis
    Participant

    Jei nori garantuoti produkto kokybę tai turi atlikti ekstremalius testus, garuose, šaltyje – kameroje ir t.t., tuo labiau, kad kontaktinis variantas nekalia pasitikėjimo, bet jei atliksi tokius testus ir įdėsi video tai pirkėjai tai įvertins ir tai suteiks pasitikėjimo.
    O dėl testų, tai tokiai konstrukcijai manau būtų naudinga (ir ne tik dėl savęs) atlikti smūgio-sutrenkimo testus, kitaip sakant staigius siekiančius keletą G smūgius, tam reikėtu kad savo stende pastatytum atramas i kurias atsitrenks stendo judančioji platforma, gausi staigaus ir stipraus smugio imitacijas, kurios pasitaiko važiuojant ir tikrai siekia daugiau nei 0.98G – 1.02G.

Viewing 18 posts - 1 through 18 (of 18 total)
  • You must be logged in to reply to this topic.