Re: ИП 0-25B 0-2A | СТАБИЛИЗАЦИЯ ПО ТОКУ
Драйвер для Windows установили - https://www.holtek.com/productdetail/-/vg/42B534-x
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
forum.rcl-radio.ru → Разное → ИП 0-25B 0-2A | СТАБИЛИЗАЦИЯ ПО ТОКУ
Драйвер для Windows установили - https://www.holtek.com/productdetail/-/vg/42B534-x
Установил драйвер.Один раз я прошил но второй не получилось!
Извините за мой плохой русский язык!
Какой чип стоит USB-UART преобразователя на плате микроконтроллера. Сделайте снимок настроек платы в Arduino IDE
CH9340C
Установите другой драйвер https://khandishnetwork.com/dl/ch9340se … nload-zip/
Добавлен датчик температуры ds18b20 на радиатор силового транзистора
отключение выхода источника питания при температуре больше 65 гр
#define ANALOG_I A3
#define ANALOG_U A6
#define U_OUT_K 418
#define I_OUT_K 1970
#define I_STAB_K 1210
#define U_OUT_IND 157
#include <OneWire.h> // http://rcl-radio.ru/wp-content/uploads/2018/07/OneWire.zip
#include <Wire.h>
#include <Encoder.h> // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include <EEPROM.h>
#include <MsTimer2.h> // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // Устанавливаем дисплей
Encoder myEnc(6, 5);// DT, CLK
OneWire ds(8); // Вход датчика 18b20
long u_sum,i_sum,times,times0,oldPosition = -999,newPosition,times1;
int u_,ads_i,i_,menu;
int u_out,i_stab;
bool w=1,w2,out=1;
long u_iz;
int t;
void setup(){
delay(200);Wire.begin();lcd.init();lcd.backlight();// Включаем подсветку дисплея
analogReadResolution(12);// АЦП 12 БИТ
analogReference(DEFAULT);//INTERNAL4V096 DEFAULT(Uп)
Serial.begin(9600);
pinMode(7,INPUT); // SW ENCODER
pinMode(4,INPUT_PULLUP); // OUT_ON_OFF
MsTimer2::set(3, to_Timer);MsTimer2::start();
if(EEPROM.read(100)!=0){for(int i=0;i<101;i++){EEPROM.update(i,0);}}// очистка памяти при первом включении
// TIMER_1 D9 OUTPUT
DDRB = 1 << PB1;
noInterrupts();
TCCR1A=0;TCCR1B=0;
TCCR1A = 1 << COM1A1 | 1 << WGM11;
TCCR1B = 1 << WGM13 | 1 << WGM12 | 1 << CS10;
OCR1A = 0;
ICR1 = 10500;
// TIMER_3 D2 OUTPUT
TCCR3A=0;TCCR3B=0;
DDRF |= (1<<PF2);
HDR = 1 << HDR3;
TCCR3A = 1 << COM3B1 | 1 << WGM31;
TCCR3B = 1 << WGM33 | 1 << WGM32 | 1 << CS30;
OCR3B = 0;
ICR3 = 2500;
interrupts();
lcd.setCursor(3, 0);lcd.print(F("Power unit"));
lcd.setCursor(3, 1);lcd.print(F("0-25V 0-2A"));
delay(1000);lcd.clear();
u_out = EEPROM.read(0);i_stab = EEPROM.read(1);
OCR1A = float(u_out)/10.00*U_OUT_K;
OCR3B = I_STAB_K*float(i_stab)/100;
}
void loop() {
if(millis()-times1>5000){t=dsRead(0);}
if(t>60 && millis()>10000){OCR1A=0;OCR3B = 0;}
if(digitalRead(7)==LOW){menu++;delay(300);times0=millis();w=1;w2=1;if(menu>1){menu=0;}}
if(digitalRead(4)==LOW && out==1){out=0;;delay(300);OCR1A=0;OCR3B = 0;}
if(digitalRead(4)==LOW && out==0){out=1;;delay(300);w=1;}
/////////////////////////////////////////////////////////////////////////////////////////////
if(millis()-times>100){times=millis();ads_i++;i_sum = i_sum + analogRead(ANALOG_I);u_sum = u_sum + analogRead(ANALOG_U);}
if(ads_i>9){ads_i=0;i_ = i_sum/10;i_sum=0; u_ = u_sum/10;u_sum=0;
Serial.print("I_out = ");Serial.println(abs(float(i_)/I_OUT_K),2);
Serial.print("I_dig = ");Serial.println(analogRead(ANALOG_I));
Serial.print("U_out = ");Serial.println(abs(float(u_)/U_OUT_IND),2);
Serial.print("U_dig = ");Serial.println(analogRead(ANALOG_U));
Serial.println(OCR1A);
w=1;}
/////////////////////////////////////////////////////////////////////////////////////////////
if(menu==0){
if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition>1){newPosition=1;}if(newPosition<-1){newPosition=-1;}
u_out=u_out+newPosition;myEnc.write(0);newPosition=0;
if(u_out<0){u_out=0;}if(u_out>250){u_out=250;}times0=millis();w=1;w2=1;}
if(u_out>200&&i_stab>100){i_stab=100;}}
/////////////////////////////////////////////////////////////////////////////////////////////
if(menu==1){
if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition>1){newPosition=1;}if(newPosition<-1){newPosition=-1;}
i_stab=i_stab+newPosition;myEnc.write(0);newPosition=0;
if(i_stab<10){i_stab=10;}
if(u_out>200&&i_stab>100){i_stab=100;}
if(i_stab>200){i_stab=200;}times0=millis();w=1;w2=1;}}
/////////////////////////////////////////////////////////////////////////////////////////////
if(w==1){w=0;
if(out==1){
OCR1A = float(u_out)/10.00*U_OUT_K;
OCR3B = I_STAB_K*float(i_stab)/100;
}
// U /////////
lcd.setCursor(1, 0);lcd.print(float(u_out)/10,1);lcd.print("V ");
if(menu==0){lcd.setCursor(0, 0);lcd.print(F("*"));}else{lcd.setCursor(0, 0);lcd.print(F(" "));}
lcd.setCursor(7, 0);lcd.print(F("> "));
if(out==1){
u_iz = (abs(long(u_))*10)/U_OUT_IND;
lcd.setCursor(9, 0);lcd.print(float(u_iz)/10,1);lcd.print("V ");}
else{lcd.setCursor(7, 0);lcd.print(" OUT_OFF");}
// I //////////
lcd.setCursor(1, 1);lcd.print(float(i_stab)/100,2);lcd.print("A ");
if(menu==1){lcd.setCursor(0, 1);lcd.print(F("*"));}else{lcd.setCursor(0, 1);lcd.print(F(" "));}
long i_iz = (abs(long(i_))*100)/I_OUT_K;
lcd.setCursor(7, 1);lcd.print(F(">"));
//if(i_iz<=5){i_iz=0;}
lcd.setCursor(9, 1);lcd.print(float(i_iz)/100,2);lcd.print(" ");
lcd.print(t);
}
//////////////////////////////////////////////////////////////////////////////////
if(millis()-times0>10000 && w2==1){EEPROM.update(0,u_out);EEPROM.update(1,i_stab);menu=0;w2=0;w=1;}
}
void to_Timer(){newPosition = myEnc.read()/4;}
float dsRead(byte x) {
byte data[2], addr[8][8], kol = 0;
while (ds.search(addr[kol])) { // поиск датчиков, определение адреса и кол-ва датчиков
kol++;
}
ds.reset_search(); // Сброс поиска датчика
ds.reset(); // Инициализация, выполняется сброс шины
ds.select(addr[x]); // Обращение к датчику по адресу
ds.write(0x44, 0); // Измерение температуры с переносом данных в память
ds.reset(); // Инициализация, выполняется сброс шины
ds.select(addr[x]); // Обращение к датчику по адресу
ds.write(0xBE); // Обращение памяти
for (byte i=0; i<9; i++) data[i]=ds.read();
int raw=(data[1]<<8)|data[0];
float value = (float)raw / 16.0; return value; // Расчет температуры и вывод
}
Здорово, что сделали версию с экраном 1602!
"ОГРАНИЧЕНИЕ 1А ПОСЛЕ 20В, ДО 20В МАКСИМАЛЬНЫЙ ТОК 2А" - максимальный ток до 20В = 2А, свыше 20В = 1А? Это для того чтобы сохранить пассивное охлаждение радиатора выходного транзистора?
Схема на top25630 позволяет регулировать выходное напряжение? Если да, то в каком диапазоне?
Оф топ: часом не в Мире работаете?
Все ограничения связаны с моим источником питания, он слабоват для 2 А выше 20 В, проседает напряжение.
Для снятия ограничения нужно просто удалить строчку:
if(u_out>200&&i_stab>100){i_stab=100;}}
Схема на TOP256 не позволяет регулировать напряжение.
Привет! Почему напрежения регулеруется до 19,8V? Uin-30V, PWM D9 при 19,8V на изходе e 5V.
Увеличьте на 20-30 % R7, повторите калибровку.
Спасибо, я понял!
Собрал все заново, удалил строку if(u_out>200&&i_stab>100){i_stab=100;}}
но ограничение осталось.
Где в коде меняется верхний предел напряжения?
Какое максимальное напряжение Вы можете установить?
if(u_out<0){u_out=0;}if(u_out>250){u_out=250;}
показометр показывает 25В, выставлено 28, по факту 28 вольт
после 25В напряжение на показометре не растет
if(u_out<0){u_out=0;}if(u_out>250){u_out=250;}
эту строчку правил, может еще где то?
ICR1 увеличьте до 15000 или увеличьте значение R7
Увеличил. Во время прошивки LGT подключена к ноуту , а сама схема обесточена... через 10 секунд из LGT пошел дымок. До этого перепрошивал при включенном основном питании. Платка не плохая, но очень "нежная".
Что-то замкнули по питанию 5 В, в платке стоит диод, скорее всего это он димил, возможно если его заменить то плата еще будет работать.
Завтра попробую, плохо что заказал только одну такую. Есть еще такая без загрузчика, но она работает как то странно, через внешний адаптер FT232RL прошивается без ошибок, но тестовый скетч с миганием встроенного светодиода, диодом не мигает.
Привет!Можешь скомпилить скетч для atmega 328-uno,nano.....?
Проект не совместим с Atmega328, нужно два 16-и битных таймера и 2 12-и битных аналоговых входа.
а можно скетч для такой lgt8f328
ато сделал плату а у меня от скетча на сайте даже экран не загорается.
Вот плата в лекйке.Данный контент доступен только зарегистрированным пользователям.
forum.rcl-radio.ru → Разное → ИП 0-25B 0-2A | СТАБИЛИЗАЦИЯ ПО ТОКУ
Форум работает на PunBB, при поддержке Informer Technologies, Inc
|