КТЦ для аккумуляторов
- Войдите на сайт для отправки комментариев
Сб, 17/12/2016 - 01:48
Помогите пожалуйста ребят. Скетч не компилируется. Я чайник. Прибор очень нужен.
// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
#include <EEPROM.h>
#include <Wire.h>
#include <DS1307.h>
#include "RTClib.h"
#include <LiquidCrystal_I2C.h>
int rtc[7];
byte rr[7];
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
#define RELE_NAGRUZKA 2 //объявляем работу реле нагрузки на пине 2
#define RELE_ZARYADKA 3 //объявляем работу реле зарядки на пине 3
int analogPin = 0;
int flag=0;
float val=0;
float valkoef=0;
void setup ()
{
DDRC|=_BV(2) |_BV(3); // POWER:Vcc Gnd
PORTC |=_BV(3); // VCC PINC3
RTC.get(rtc,true);
lcd.init(); // initialize the lcd
lcd.backlight();
lcd.home();
pinMode(RELE_NAGRUZKA, OUTPUT); //инициируем реле только на выход
pinMode(RELE_ZARYADKA, OUTPUT); //инициируем реле только на выход
lcd.clear();
digitalWrite(RELE_NAGRUZKA, HIGH);
digitalWrite(RELE_ZARYADKA, HIGH);
RTC.SetOutput(DS1307_SQW32KHZ);
EEPROM.write (0, rtc[2]); // при старте записываем значение времени, часы
EEPROM.write (1, rtc[1]); // при старте записываем значение времени, минуты
}
void loop ()
{
val = analogRead(analogPin); // считываем значение напряжения с аналогового порта
valkoef=val/74,49; // приводим снятое с аналогового пина значение к обычным вольтам
RTC.get(rtc,true);
lcd.setCursor (0,0);
lcd.print (rtc[2]);
lcd.print (":");
lcd.print (rtc[1]);
lcd.print (":");
lcd.print (rtc[0]);
lcd.print (" str");
lcd.print (EEPROM.read(0));
lcd.print (":");
lcd.print (EEPROM.read(1));
lcd.setCursor (0,1);
lcd.print (valkoef);
lcd.print (" ");
lcd.print (flag);
if (valkoef < 10.72)
{
flag=1;
EEPROM.write(2, rtc[2]); // записыываем время окончания разрядки, часы
EEPROM.write (3, rtc[1]); // записыываем время окончания разрядки, минуы
}
if (flag==1)
{
digitalWrite(RELE_ZARYADKA, LOW); // включаем зарядку
digitalWrite(RELE_NAGRUZKA, HIGH); // выключаем нагрузку
lcd.print (" stp");
lcd.print (EEPROM.read(2)); // выводим время окончания разрядки
lcd.print (":");
lcd.print (EEPROM.read(3));
}
if ((valkoef > 10.72) && (flag==0))
{
digitalWrite(RELE_NAGRUZKA, LOW);
}
else
{
digitalWrite(RELE_NAGRUZKA, LOW);
}
delay(500);
}// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
#include <EEPROM.h>
#include <Wire.h>
#include <DS1307.h>
#include <iarduino_RTC.h>
#include <LiquidCrystal_I2C.h>
int rtc[7];
byte rr[7];
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
#define RELE_NAGRUZKA 2 //объявляем работу реле нагрузки на пине 2
#define RELE_ZARYADKA 3 //объявляем работу реле зарядки на пине 3
int analogPin = 0;
int flag=0;
float val=0;
float valkoef=0;
void setup ()
{
DDRC|=_BV(2) |_BV(3); // POWER:Vcc Gnd
PORTC |=_BV(3); // VCC PINC3
RTC.get(rtc,true);
lcd.init(); // initialize the lcd
lcd.backlight();
lcd.home();
pinMode(RELE_NAGRUZKA, OUTPUT); //инициируем реле только на выход
pinMode(RELE_ZARYADKA, OUTPUT); //инициируем реле только на выход
lcd.clear();
digitalWrite(RELE_NAGRUZKA, HIGH);
digitalWrite(RELE_ZARYADKA, HIGH);
RTC.SetOutput(DS1307_SQW32KHZ);
EEPROM.write (0, rtc[2]); // при старте записываем значение времени, часы
EEPROM.write (1, rtc[1]); // при старте записываем значение времени, минуты
}
void loop ()
{
val = analogRead(analogPin); // считываем значение напряжения с аналогового порта
valkoef=val/74,49; // приводим снятое с аналогового пина значение к обычным вольтам
RTC.get(rtc,true);
lcd.setCursor (0,0);
lcd.print (rtc[2]);
lcd.print (":");
lcd.print (rtc[1]);
lcd.print (":");
lcd.print (rtc[0]);
lcd.print (" str");
lcd.print (EEPROM.read(0));
lcd.print (":");
lcd.print (EEPROM.read(1));
lcd.setCursor (0,1);
lcd.print (valkoef);
lcd.print (" ");
lcd.print (flag);
if (valkoef < 10.72)
{
flag=1;
EEPROM.write(2, rtc[2]); // записыываем время окончания разрядки, часы
EEPROM.write (3, rtc[1]); // записыываем время окончания разрядки, минуы
}
if (flag==1)
{
digitalWrite(RELE_ZARYADKA, LOW); // включаем зарядку
digitalWrite(RELE_NAGRUZKA, HIGH); // выключаем нагрузку
lcd.print (" stp");
lcd.print (EEPROM.read(2)); // выводим время окончания разрядки
lcd.print (":");
lcd.print (EEPROM.read(3));
}
if ((valkoef > 10.72) && (flag==0))
{
digitalWrite(RELE_NAGRUZKA, LOW);
}
else
{
digitalWrite(RELE_NAGRUZKA, LOW);
}
delay(500);
}
Ошибка Arduino: 1.6.12 (Windows 10), Плата:"Arduino Nano, ATmega328"
C:\Users\user\AppData\Local\Temp\untitled502477427.tmp\sketch_dec17a\sketch_dec17a.ino: In function 'void setup()':
sketch_dec17a:25: error: 'RTC' was not declared in this scope
RTC.get(rtc,true);
^
sketch_dec17a:34: error: 'DS1307_SQW32KHZ' was not declared in this scope
RTC.SetOutput(DS1307_SQW32KHZ);
^
C:\Users\user\AppData\Local\Temp\untitled502477427.tmp\sketch_dec17a\sketch_dec17a.ino: In function 'void loop()':
sketch_dec17a:43: error: 'RTC' was not declared in this scope
RTC.get(rtc true);
^
In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:24:0,
from sketch\sketch_dec17a.ino.cpp:1:
sketch_dec17a:43: error: expected ')' before 'true'
RTC.get(rtc true);
^
exit status 1
'RTC' was not declared in this scope
Для того что бы скампилировался нужно установить не достающие библиотеки.
Несколько разных библиотек RTC устанавливал, результата нет. Я готов материально отблагодарить того кто найдет ошибку, просто скетч очень нужен.
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
Куда нибудь в начало. Где переменные бъявляешь.
Скетч под конкретную версию библиотеки DS1307 заточен, где данные с чипа получают в полном объёме и пишут в массив, или искать библиотеку или переписать под свою.
Если переписывать, то заложить основу и для управления током разрядки-зарядки, а библиотеки лучше как бы стандартные (Adafruit к примеру)
Спасибо всем отозвавшимся. Поискав еще решения, наткнулся еще на несколько тем по этому скетчу. Нигде нет решения. В отчаянии даже связался с автором скетча. Его помощь тоже не помогла. Очень хотел сделать такой прибор. Жаль. Сдаюсь...
Спасибо всем отозвавшимся. Поискав еще решения, наткнулся еще на несколько тем по этому скетчу. Нигде нет решения. В отчаянии даже связался с автором скетча. Его помощь тоже не помогла. Очень хотел сделать такой прибор. Жаль. Сдаюсь...
И что сказал автор?
Рано сдаваться однако...
Я закинул проект в IDE и переделываю на другой таймер (какой у меня есть), но всё в вялотекущем, ещё введу разряд калиброванным током
Нигде нет решения. В отчаянии даже связался с автором скетча. Его помощь тоже не помогла. Очень хотел сделать такой прибор. Жаль. Сдаюсь...
"Если ничего не помогает, прочтите, наконец, инструкцию!"
Может, взять дэйташит, да и написать самому все необходимое, а не искать готовое?
Это так по нашему - автор не знающий своё детище
(...алфавит подписал...)
Чтобы сделать прибор для КТЦ мне нужно стать програмистом? Если следовать вашей логике, то все чем мы пользуемся нужно делать самому. На форуме по диагностике авто я бы вам тоже мог написать пару таких гневных "Прочтите инструкцию уже". Но я так никогда не делаю, потому что знаю, что все уметь и знать невозможно. А лучший способ показать что ты умный- это спокойно подсказать человеку. Чего вы делать даже и не собирались.
Люблю новичков, которые приходят и учат, как надо себя вести...
Вам же уже подсказали:
или искать библиотеку или переписать под свою
any more questions?
Спасибо всем отозвавшимся. Поискав еще решения, наткнулся еще на несколько тем по этому скетчу. Нигде нет решения. В отчаянии даже связался с автором скетча. Его помощь тоже не помогла. Очень хотел сделать такой прибор. Жаль. Сдаюсь...
И что сказал автор?
Рано сдаваться однако...
Я закинул проект в IDE и переделываю на другой таймер (какой у меня есть), но всё в вялотекущем, ещё введу разряд калиброванным током
Автор пообещал скинуть свои библиотеки. Жду. Если так, то это будет вообще готовый прибор))) Мне не редко приходится делать КТЦ вручную. То что предлагает автор, уже сильно облегчает работу, а если еще человеку выдать емкость его АКБ с точностью до мАч, то это будет верх))))
Если просто цель измерить емкость, то такой алгоритм подойдет.
Если КТЦ с целью бороться с разбалансом, то лучше импульсный разряд (выкачка)..
Primak, а что вы вцепились за этот скечт как за спасательный круг? Автор его не сильно лучше вас понимает в программировании, судя по коду он ещё вчера "мигал светодиодом". Это видно по стилистике чайника, и по разного рода ошибкам, коих тут дофига. Не вздумайте повторять это, и уж тем более учиться по этому скетчу.
Primak, а что вы вцепились за этот скечт как за спасательный круг? Автор его не сильно лучше вас понимает в программировании, судя по коду он ещё вчера "мигал светодиодом". Это видно по стилистике чайника, и по разного рода ошибкам, коих тут дофига. Не вздумайте повторять это, и уж тем более учиться по этому скетчу.
Этот прибор, будь он рабочим, меня бы полностью устроил. Все модули я под него заказывал на али. Других, подобных скетчей я не нашел. Сам написать скетч не смогу ( я пробовал учиться, диодом моргал, серву двигал и т. п.), не мое это. Что мне остается делать? Только обратиться к вам...
У меня есть готовый заводской прибор, в нём реализовано:
1. Определение ёмкости АКБ 2. Ускоренный заряд 3. Стандартный заряд 4. Тренировка 5. Восстановление
Поэтому быстро точно не получится, будет что-то своё, а по коду Дмитрий уже высказался, там мешанина что в коде что в голове его писавшей
Исходя из этого - новый прибор должен уметь делать что-то еще, к примеру восстановление методом переполюсовки )))
Если просто цель измерить емкость, то такой алгоритм подойдет.
Если КТЦ с целью бороться с разбалансом, то лучше импульсный разряд (выкачка)..
Цель: Измерить емкость автомобильного АКБ. Я ставлю лампочку на 60 ватт и бегаю, ловлю момент, когда напряжение станет 10,5в. Считаю время разряда, умножаю на среднее 5 А и получаю емкость АКБ. Поможет мне прибор? Я думаю очень поможет.
Primak, вам остаётся купить готовый, благо их сейчас в ассортименте. При любых раскладах это лучший вариант. Если прямо очень хочется своими руками сделать -ищите нормальный код, даже на нашем форуме уже штук пять подобных зарядо-разрядников публиковалось. Когда-то я сам был нолём в программировании, находил готовые схемы, программы и прошивки, читал отзывы, и делал устройства, в том числе и зарядники кстати. Есть масса сайтов, гда такого добра навалом -радиокот, паяльник, итп.