итак проект завершен,делитель напряжения см выше , использовал резисторы 2010 ом и 294 ома, в комментах к проге все прописано , шунт- 0.50ома 10вт-падение напряжения на нем и есть потребляемый ток, расчитывается по закону великого Ома)) (U=I*R)
сам БП с регулятором тока и напряжения взял тут
http://www.electronics-lab.com/projects ... index.html полностью работоспособная схема
в качестве контроллера -atmega 328 +кварц и стабилизатор 5в при случае выложу печатку .lay
хотя вполне хватилобы и 128 атмеги
- Код: Выделить всё
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
float opn=4.99; //опорное напряжение вольты
float volt; // переменная в которой храним конечное значение вольт
float var0; // храним промежуточное значение вольт, данные с аналового входа №0
int amper ; //переменная в которой храним конечное значение миллиампер.используем целочисленные значения,и посему интовая переменная
float var1 ; // храним промежуточное значение вольт, данные с аналового входа №1
float T1; // переменная в которой храним конечное значение температуры первого термодатчик (LM35) измеряем температуру выходного тразистора
float var2;
float P; // мощность - призведение ампер на вольт
void setup()
{
lcd.begin(16, 2); //инициализация LCD 1602
}
void loop ()
{
var0 = analogRead(0);
volt =(opn*var0/1024.0);
float U1; // вводим дополнительную переменную чтоб просчитать напряжение после делителя
U1=volt*((2010.0+294.0)/294.0)-(opn*var1/1024.0);//(2010.0+294.0)/294.0 просчитываем падение напряжения на делителе R1 2010ом R2 294ома
//(opn*var1/1024.0)вычитаем падение напряжения на шунте амперметра
var1 = analogRead(1);
amper =((opn*var1/1.0240)/.50); //измеряем напряжение в милливольтах и делим на .50 -сопротивление шунта,конечное значение переменной в миллиамперах
var2 = analogRead(2);
T1=(opn*var2/10.24);// в качестве термодатчика используем аналоговый Lm35 с зависимостью 10мв/град С
P=amper*U1/1000; //делим на 1000 тк.к значение тока в миллиамперах
lcd.setCursor(0,0) ;
lcd.print(U1);
lcd.print(" ");
lcd.setCursor(6,0) ;
lcd.print("V");
//lcd.print(var0);вывод кода АЦП,так на всякий случай
lcd.setCursor(0,1) ;
lcd.print(amper);
lcd.print(" ");
lcd.setCursor(5,1);
lcd.print("mA");
//lcd.print (var1);//вывод кода АЦП,так на всякий случай
lcd.setCursor(8,0) ;
lcd.print(T1);
lcd.print(" C ");
lcd.setCursor(8,1) ;
lcd.print(P);
lcd.print(" Wt ");///
delay(333);//задержка-обновление экрана 3 раза в секунду
}
готов выслушать конструктивную критику , тк к. это мой первый проект
