Код (C++): int voltPin =0; //напряжение с аккумулятора через делитель int chargePin = 9; //выход на реле подачи зарядного импульса с выпрямителя void setup() { Serial.begin(115200); pinMode(chargePin, OUTPUT); //назначаем 9 пин выходом } void loop() { label: delay(6000); int val = analogRead(voltPin); //создаем переменную val delay(200); int val20 = analogRead(voltPin); float voltage = ((val+val20)/2) * (18.9 / 1023.0); Serial.println("__________Reading___________"); Serial.println("Voltage"); Serial.println(voltage); if(voltage < 13.4) //если напряжение меньше 13.4 Вольта, то подаем импульс { Serial.println("VOLTAGE<13.4 Charge"); digitalWrite(chargePin, LOW); delay(1000); int vall = analogRead(voltPin); //создаем переменную val delay(200); int val201 = analogRead(voltPin); float voltage1 = ((vall+val201)/2) * (18.9 / 1023.0); Serial.println(voltage1); if(voltage1 < 14.7) { digitalWrite(chargePin, LOW); Serial.println("VOLTAGE<14.7 Charge1"); delay(1000); } else { digitalWrite(chargePin, HIGH); Serial.println("Kasanie14.7 na 1 SEC"); goto label; } int val2 = analogRead(voltPin); delay(200); int val202 = analogRead(voltPin); float voltage2 = ((val2+val202)/2) * (18.9 / 1023.0); Serial.println(voltage2); if(voltage2 < 14.7) { digitalWrite(chargePin, LOW); Serial.println("VOLTAGE<14.7 Charge2"); delay(1000); } else { digitalWrite(chargePin, HIGH); Serial.println("Kasanie14.7 na 2 SEC"); goto label; } int val3 = analogRead(voltPin); delay(200); int val203 = analogRead(voltPin); float voltage3 = ((val3+val203)/2) * (18.9 / 1023.0); Serial.println(voltage3); if(voltage3 < 14.7) { digitalWrite(chargePin, LOW); Serial.println("VOLTAGE<14.7 Charge3"); delay(1000); } else { digitalWrite(chargePin, HIGH); Serial.println("Kasanie14.7 na 3 SEC"); goto label; } int val4 = analogRead(voltPin); delay(200); int val204 = analogRead(voltPin); float voltage4 = ((val4+val204)/2) * (18.9 / 1023.0); Serial.println(voltage4); if(voltage4 < 14.7) { digitalWrite(chargePin, LOW); Serial.println("VOLTAGE<14.7 Charge4"); delay(1000); digitalWrite(chargePin, HIGH); } else { digitalWrite(chargePin, HIGH); Serial.println("Kasanie14.7 5SEC"); goto label; } } else { Serial.println("Voltage>13.4V"); digitalWrite(chargePin, HIGH); Serial.println("OverVoltageWAIT"); delay(8000); } } Цель зарядка 12 v АКБ или его имитация в протеусе. В качестве АКБ планирую применить параллельно соединив реостат на 10 к ом и конденсатор на 10 арад. В протеусе можно любые номиналы поставить. А вот,какие модели подйдут для модуля реле и стабилизатора,трансформатора.диодного моста?
Не надо никаких моделей диодных мостов, стабилизаторов, фильтров. Просто - источник DC из генераторов Generator mode. Релюхи в Протеусе - есть в библиотеке Switches and Relays.
Вот накатал в протеусе. Я думаю вам именно это надо. Релюхи : SPST -single pole, single throw - одна группа - один путь DPDT - Double группы - два пути DPST, SPDT - догадаетесь. А конкретное название - оно вам надо ? Вот тут на схеме реле - SPDT. Как источник взял батарею, а не из раздела генераторов. Те подразумевают общую землю, а у вас именно минус коммутируется. В реале ардуина подключится землей к GND_ACC, а плюсом 5в - к +5V на схеме. Не забывайте для LM7805 на входе должно быть больше 9В. Иначе используйте что-то из серии LM317-ых (Low drop voltage).
Вот схема для зарядки до 5V. D9 в режиме PWM открывает IRF510,а данные о температуре,напряжению и току снимаются на три аналоговые пина А0-А2. Мне схема нравиться и хочу ее под 12v переделать. Как на А0-А2 подать данные свыше 5в что бы Мк не сгорел и значение от 0 до 255 AnalogRead не обрезалось?
Вашу схему готов забрать,могли бы пожалуйста сделать,что бы данные на ЖКИ выводились о токе,напряжению. Если менять значения сопротивления RV1 и емкости C1
Про температурный вход - ничего не скажу - не зная что там. А два других: - возьмите два резистора X ком (> 50 ком, < 100 ком ) и два 1.4 * X. Паяйте последовательно X и 1.4X. Свободный конец X - на землю. Точку спайки X и 1.4X - на вход Ардуины. Свободный конец 1.4X - на измеряемое напряжение. Вторую пару так же. Короче - просто ставим делители (1 / 2.4) на входах. А в программе корректируем коэффициент пропорциональности. При подборе -выбираем ближайший в сторону увеличения (1.4X -1.5X), чтоб не превысить 5В на входе.
Ну типа такого. Обратите внимание - Релюха включена, хотя на обмотке нуль с обоих концов. Нонсенс ! - Это тонкости настройки стартового положения элемента симулируемой схемы (SET, RESET и тд.).