<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[forum.rcl-radio.ru &mdash; NEW_DIGITAL_POWER (разработка)]]></title>
	<link rel="self" href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=578&amp;type=atom" />
	<updated>2023-09-29T18:07:19Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.rcl-radio.ru/viewtopic.php?id=578</id>
		<entry>
			<title type="html"><![CDATA[Re: NEW_DIGITAL_POWER (разработка)]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8705#p8705" />
			<content type="html"><![CDATA[<p>Доброго времени суток. Тема хоть и не новая, но интересная и своевременна. Схемотехника понятна, немного шлифануть<br />в мелочах, но это потом. Из предварительного скетча понятен только диапазон напряжения и тока. Всё остальное что он <br />должен делать нет. Скетч я сам написать не смогу. По этому не сочтите за наглость но есть такое пожелание:<br />1. Контролер-ATMEGA8-328 или Arduino.<br />2. Дисплей LCD1602.<br />3.V-&nbsp; 0-30V&nbsp; &nbsp;I-&nbsp; 0-5A.<br />4. Регулировка и переключение между V и I кнопкой энкодера.<br />5. Кнопка управления реле которое отключает только нагрузку&nbsp; ON/OFF.<br />6. Чтобы запоминало последнее установленное значение, а лучше что-бы&nbsp; было 2,3,4 значения ,которые можно установить и они запомнились, естественно потом их можно и менять.<br />Спасибо за Ваши разработки.</p>]]></content>
			<author>
				<name><![CDATA[taban]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=1710</uri>
			</author>
			<updated>2023-09-29T18:07:19Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8705#p8705</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: NEW_DIGITAL_POWER (разработка)]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8645#p8645" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>#define ANALOG_I A3
#define ANALOG_U A6
#define SW       10

#define U_OUT_K 3359
#define I_OUT_K 1730
#define I_STAB_K 4410
#define U_OUT_IND 1382
#define I_0 0

#include &lt;Wire.h&gt;
#include &lt;Encoder.h&gt;           // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip 
#include &lt;U8glib.h&gt;            // https://github.com/olikraus/u8glib/
#include &lt;EEPROM.h&gt;
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST);  // Dev 0, Fast I2C / TWI
Encoder myEnc(7, 8);// DT, CLK

float u_pwm1;
float u_out_pwm1=5;
int pwm1;
unsigned long i_sum,u_sum,times,times1;
int ads_i,i,menu;
int u,u_out,i_stab;
long oldPosition  = -999,newPosition,times3;
bool w,w1;


void setup(){
  analogReadResolution(12);
  analogReference(DEFAULT);//INTERNAL4V096 DEFAULT(Uп)
  pinMode(11,OUTPUT);
  pinMode(A0,INPUT);
  pinMode(ANALOG_I,INPUT);
  pinMode(ANALOG_U,INPUT);
  pinMode(SW,INPUT);        // encoder SW
  Serial.begin(9600);
  Wire.begin();delay(300);
  u_out=EEPROM.read(0)*10.0+EEPROM.read(1);
  i_stab=EEPROM.read(2);
// TIMER_1 D9 OUTPUT
  DDRB = 1 &lt;&lt; PB1;
  noInterrupts();
  TCCR1A=0;TCCR1B=0;
  TCCR1A = 1 &lt;&lt; COM1A1 | 1 &lt;&lt; WGM11;
  TCCR1B = 1 &lt;&lt; WGM13 | 1 &lt;&lt; WGM12 | 1 &lt;&lt; CS10;
  OCR1A = float(u_out)/100.0*U_OUT_K;
  ICR1 = 10000;
// TIMER_3 D2 OUTPUT
  TCCR3A=0;TCCR3B=0;
  DDRF |= (1&lt;&lt;PF2);
  HDR = 1 &lt;&lt; HDR3;
  TCCR3A = 1 &lt;&lt; COM3B1 | 1 &lt;&lt; WGM31;
  TCCR3B = 1 &lt;&lt; WGM33 | 1 &lt;&lt; WGM32 | 1 &lt;&lt; CS30;
  OCR3B = I_STAB_K*float(i_stab)/100.0;// 4700 1A
  ICR3 = 10000;
// TIMER_2 D11 OUTPUT  
  TCCR2A = 0;
  TCCR2B = 0;
  TCNT2 = 0;
  TCCR2A |= (1&lt;&lt;COM2A1);
  TCCR1B |= (1&lt;&lt;WGM22);
  TCCR2A |= (1&lt;&lt;WGM21) | (1&lt;&lt;WGM20);
  TCCR2B |= (1 &lt;&lt; CS21) | (1 &lt;&lt; CS20); 
   TIMSK2 = 1 &lt;&lt; OCIE2A;
  OCR2A = 255; 
// F=32000000/256/32/1=3906.25 Hz
  interrupts();
  u8g.firstPage();do {u8g.setFont(u8g_font_profont12r);
  u8g.drawStr(30,20,&quot;POWER SUPPLY&quot;);
  u8g.drawStr(35,50,&quot;0-30V 0-2A&quot;);
  } 
  while( u8g.nextPage() );
  delay(1000);
}

void loop() {
 if(digitalRead(10)==LOW){menu++;if(menu&gt;2){menu=0;}times3=millis();w=1;delay(200);}

 if(menu==1){
 if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
    u_out=u_out+newPosition;myEnc.write(0);newPosition=0;times3=millis();w=1;w1=1;if(u_out&gt;300){u_out=300;}if(u_out&lt;0){u_out=0;}
    OCR1A = float(u_out)/100.0*U_OUT_K;
    }}
 if(menu==2){
 if(newPosition != oldPosition){oldPosition = newPosition;if(newPosition&gt;1){newPosition=1;}if(newPosition&lt;-1){newPosition=-1;}
    i_stab=i_stab+newPosition;myEnc.write(0);newPosition=0;times3=millis();w=1;w1=1;if(i_stab&gt;200){i_stab=200;}if(i_stab&lt;0){i_stab=0;}
    OCR3B = I_STAB_K*float(i_stab)/100.0;
    }}
    
///////////////////////////////////////////////////////////  
  if(millis()-times&gt;100){times=millis();ads_i++;
   i_sum = i_sum + analogRead(ANALOG_I);
   u_sum = u_sum + analogRead(ANALOG_U);
   }
  if(ads_i&gt;9){ads_i=0;i = i_sum/10.0;i_sum=0; u = u_sum/10.0;u_sum=0;
  Serial.print(&quot;I_out: &quot;);Serial.println(abs(float(i-I_0)/I_OUT_K));
  Serial.print(&quot;U_out = &quot;);Serial.println(float(u)/U_OUT_IND,1);
  }
//// PWM1 ////////////////////////////////////////////////
  u_pwm1=5.00/4095*analogRead(A0)*(u_out+3.00);
  if(u_pwm1&lt;u_out_pwm1){pwm1--;if(pwm1&lt;1){pwm1=1;}}
  if(u_pwm1&gt;u_out_pwm1){pwm1++;if(pwm1&gt;255){pwm1=255;}}
  OCR2A = pwm1;  
//////////////////////////////////////////////////////////
 
/// OLED PRINT ///////////////////////////////////////////
  u8g.firstPage();do {
    u8g.setFont(u8g_font_profont17r);
    u8g.setPrintPos(0, 15);u8g.print(float(u_out)/10.0,1);
    if(menu==0||menu==2){u8g.drawStr(55,15,&quot;&gt;&quot;);}
    if(menu==1){u8g.drawStr(55,15,&quot;*&quot;);}
    u8g.setPrintPos(67, 15);u8g.print(float(u)*10.0/U_OUT_IND,1);
    u8g.drawStr(120,15,&quot;V&quot;); 
    u8g.drawLine(0, 22, 128, 22);  
    u8g.setPrintPos(0, 40);u8g.print(float(i_stab)/100.0,2);
    if(menu==0||menu==1){u8g.drawStr(55,40,&quot;&gt;&quot;);}
    if(menu==2){u8g.drawStr(55,40,&quot;*&quot;);}
    u8g.setPrintPos(67, 40);u8g.print(float(i-I_0)/I_OUT_K,2);
    u8g.drawStr(120,40,&quot;A&quot;);
    u8g.drawLine(0, 47, 128, 47);
    }
  while( u8g.nextPage() );

 if(millis()-times3&gt;5000 &amp;&amp; w==1){
  EEPROM.update(0,u_out/10%10);EEPROM.update(1,u_out%10);EEPROM.update(2,i_stab);
 menu=0;w=0;}
  
}

ISR(TIMER2_COMPA_vect) {
  newPosition = myEnc.read()/4;
  }

  </code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2023-09-19T09:47:10Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8645#p8645</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: NEW_DIGITAL_POWER (разработка)]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8582#p8582" />
			<content type="html"><![CDATA[<p>LGT8F328</p><div class="codebox"><pre><code>#define K_PWM1 7.65

float u_pwm1;
float u_out_pwm1=12;
int pwm1;


void setup() {
  pinMode(11,OUTPUT);
  cli();
  TCCR2A = 0;
  TCCR2B = 0;
  TCNT2 = 0;
  TCCR2A |= (1&lt;&lt;COM2A1);
  TCCR1B |= (1&lt;&lt;WGM22);
  TCCR2A |= (1&lt;&lt;WGM21) | (1&lt;&lt;WGM20);
  TCCR2B |= (1 &lt;&lt; CS21)|(1&lt;&lt;CS20); 
  OCR2A = 127; 
  sei();
  analogReadResolution(12);
  pinMode(A0,INPUT);
}

void loop(){
  
  u_pwm1=5.00/4095*analogRead(A0)*K_PWM1;
  if(u_pwm1&lt;u_out_pwm1){pwm1--;if(pwm1&lt;1){pwm1=1;}}
  if(u_pwm1&gt;u_out_pwm1){pwm1++;if(pwm1&gt;255){pwm1=255;}}
  OCR2A = pwm1;
  
  }</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2023-09-11T06:48:42Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8582#p8582</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[NEW_DIGITAL_POWER (разработка)]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8548#p8548" />
			<content type="html"><![CDATA[<p>Линейный регулятор напряжения и тока с микроконтроллерным управлением.</p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2023/09/61086d10405e90a65d8faf10de349ab4.png" alt="http://forum.rcl-radio.ru/uploads/images/2023/09/61086d10405e90a65d8faf10de349ab4.png" /></span> </p><p>ШИМ регулятор</p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2023/09/7eeb51dcbd074e703f0ed7b39483c5c1.png" alt="http://forum.rcl-radio.ru/uploads/images/2023/09/7eeb51dcbd074e703f0ed7b39483c5c1.png" /></span></p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2023-09-10T04:32:48Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8548#p8548</id>
		</entry>
</feed>
