Разработка и изготовление контроллера водяного насоса для солнечной водоподъемной установки
Общие сведения по солнечным батареям. Аккумуляция энергии солнечных батарей. Регуляторы зарядки и разрядки аккумуляторов. Выработка технических требований контроллера. Разработка схемы повышающего преобразователя. Анализ полученных осциллограмм.
Рубрика | Физика и энергетика |
Вид | диссертация |
Язык | русский |
Дата добавления | 24.05.2018 |
Размер файла | 3,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Проверка всех радиоэлементов перед монтажом гарантирует работоспособность и успешную настройку прибора. Большинство радиоэлементов можно проверить обычным тестером, а конденсаторы, в том числе и малой емкости (десятки и даже единицы пикофарад), при отсутствии измерителя емкости-с помощью головных телефонов. Конденсатор, заряженный от источника напряжения, разряжают на сопротивление телефонов и судят о годности по щелчку телефоне. Чем больше емкость конденсатора (при неизменном напряжении), тем громче будет звук разряда. При такой проверке нужно подавать напряжение не выше поминального для данного типа конденсаторов.
После сборки проводилась наладка аналоговых узлов и проверка верности функционирования всех функциональных узлов схемы.
3.4 Разработка и отладка программы
В качестве среды разработки будем использовать AVR Studio 4. Программа бесплатно предоставляется самой Atmel. В установке программы нет ничего необычного. Программа AVR Studio предназначена для создания, редактирования, компиляции и отладки программного обеспечения для микроконтроллеров AVR.
Запускаем AVR Studio 4. В меню выбираем Project->Project Wizard. Откроется диалог создания нового или открытия существующего проекта. Нажимаем на кнопку New Project. Теперь нам предлагают выбрать тип проекта. Здесь же выбираем имя проекта, имя файла, содержащего код (надо поставить галочку "Create initial file", если не стоит) и путь, где проект будет сохранен. Если установить флаг "Create folder", в выбранном каталоге будет создан подкаталог с именем, совпадающим с именем проекта. Пример введенных данных представлен на рисунке 3.1.
Рис. 3.1 Создание нового проекта. Шаг первый. Выбор названия и путей.
Вторым этапом мастер предлагает выбрать отладчик. Если у Вас нет аппаратного отладчика, выбирайте AVR Simulator. Это эмулятор микроконтроллера, позволяющий отладить Вашу прошивку, отложив сборку устройства. Кроме того, необходимо выбрать тип микроконтроллера, под который пишется прошивка. Пример введенных данных на этом этапе создания проекта представлен на рисунке 3.2.
Рис. 3.2 Создание нового проекта. Шаг второй. Выбор отладчика
Нажимаем кнопку Finish. Проект создан. Осталось проверить некоторые параметры и можно писать прошивку.
Устанавливаем частоту (поле Frequency) согласно настройкам вашего микроконтроллера (или ту частоту, которую вы планируете использовать). По умолчанию микроконтроллеры фирмы Atmel идут с завода настроенными на частоту 1 МГц. Обратите внимание, что частоту необходимо вводить в герцах, то есть для частоты, равной 1 Мгц в это поле надо ввести значение 1000000.
Написание программы производится по обычным правилам, тка же как в любом текстовом редакторе. При необходимости программу на ассемблере можно написать в любом текстовом редакторе и вставить в нужное место окна программы AVR Studio.
Ассемблирование и отладка
Для сборки прошивки нажимаем клавишу F7 или выбираем пункт меню Buid->Build. Программа должна написать в окне Build о том, что сборка прошла успешно. Теперь можно запустить отладку прошивки. Для этого нажмите комбинацию клавиш Ctrl+Alt+Shift+F5 или выберите пункт меню Debug->Start debugging. Выполнение отладки сразу же остановится на первой команде вашей программы. Ниже перечислены основные команды, которые могут понадобиться при отладке.
Горячая клавиша |
Команда |
Описание команды |
|
Ctrl+Alt+Shift+F5 |
Start Debugging |
Запуск процесса отладки |
|
Ctrl+Shift+F5 |
Stop Debugging |
Прерывание процесса отладки |
|
F10 |
Step Over |
Сделать шаг без захода в функцию |
|
F11 |
Step Into |
Сделать шаг с заходом в функцию |
|
Shift+F11 |
Step Out |
Выполнить программу до выхода из текущей функции |
|
Ctrl+F10 |
Run to Cursor |
Выполнить программу до той строки кода, где установлен курсор |
По остальным командам можно найти информацию во встроенной в программу справочной системе. Выполняя программу по шагам вы видите в окне I/O View состояние всех регистров. В том числе и состояние порта B, с которым мы и работаем. Состояние выключателя можно сымитировать путем занесения вручную в порт B нужного значения. Указать значение на конкретной линии порта можно мышкой, выделив в окне I/O View нужный порт и щелкнув по нужному квадрату, символизирующему бит порта.
Рис.3.3. Программа AVR Studio в режиме отладки
Прошивку заливаем в микроконтроллер любым программатором. Если схема собрана правильно и прошивка залита корректно (не пренебрегайте верификацией), все должно сразу же заработать.
4. СНЯТИЕ ХАРАКТЕРИСТИК И АНАЛИЗ ПОЛУЧЕННЫХ РЕЗУЛЬТАТОВ
Один из вариантов предложенного метода был реализован в контроллере заряда аккумуляторов для солнечной станции мощностью 110 Вт. Устройство управления реализовано на микроконтроллере ATmega16. Силовая часть контроллера выполнена по схеме повышающего преобразователя напряжения на полевом транзисторе IRFP3710.
Управление коэффициентом заполнения происходит с использованием алгоритма поиска максимума зарядного тока аккумуляторной батареи (упрощенного поискового метода МРРТ).
4.1 Анализ полученных осциллограмм
Анализ осциллограмм (рис. 4.1, 4.2) позволяет сделать вывод о существенном влиянии индуктивности рассеяния дросселя на режим работа коммутирующего транзистора. Из-за появления паразитных выбросов энергии было решено использовать демфирующую цепь из последовательно соединенных резистора и конденсатора, параллельно подключенных к выводам силового диода и транзистора. Это позволило значительно снизить выбросы и повысить эффективность контроллера. Для уменьшения индуктивности соединений силовую схему следует изготавливать на двусторонней печатной плате и шириной дорожек не менее 8 мм.
4.2 Проверка номинальных характеристик
Проверка номинальных характеристик проводилась путем постепенного увеличения активной нагрузки силовой части контроллера.
Проверка показала, что значение выходного напряжения аккумулятора при входном напряжении от 10 В до 21В изменяется в пределах от 11,5 В до 28,8 В в зависимости от степени заряда аккумулятора, что удовлетворяет требованиям к системе на 12 или 24В рабочего напряжения.
Перегревов силовых элементов при работе с номинальной выходной мощностью не наблюдалось. Температура теплоотводов силовых элементов не превышала 75 градусов Цельсия, при температуре окружающей среды (воздуха внутри корпуса) 40 градусов.
Рис. 4.1 Напряжение на стоке силового транзистора (D = 70%).
Рис. 4.2 Выходной сигнал ШИМ с ножки микроконтроллера (D = 50%).
Рис. 4.3 Готовое устройство в корпусе.
ЗАКЛЮЧЕНИЕ
В данной диссертационной работе описывается разработка контроллера универсальной солнечной водоподъемной установки индивидуального использования для подъема воды с использованием солнечной энергии. Установка предназначена для контроля заряда и разряда аккумуляторной батареи, а также более эффективного использования солнечной энергии. Контроллер способен отслеживать напряжение и ток подающийся от солнечной панели на аккумуляторную батарею и находить максимальную полезную точку заряда. Одним из важных критериев контроллера является отслеживание температуры аккумуляторной батареи с помощью цифрового термодатчика DS1820 и установка максимального допустимого заряда, что предотвращает перезаряд аккумуляторных батарей в условиях повышенных температур. Также полезной функцией устройства является отслеживание времени, что позволяет не допустить полного разряда аккумуляторных батарей водоподъемной установки ближе к концу дня и позволяет запастись энергией на ночное время суток, для использования ее на освещение и другую полезную работу.
В разработке был использован микроконтроллер фирмы Atmel - ATMega16. Данный микроконтроллер отлично подошел для решения этой задачи, так как имеет 40 выводов и большое количество различной периферии. Для индикации был выбран LCD индикатор, который часто используется в современных устройствах. Устройство позволяет выводить на индикатор ток и напряжение заряда, ток нагрузки, температуру аккумуляторных батарей, реальное время. Также в контроллер можно ввести начальные установки, которые позволяют работать устройству более эффективно. Можно задать тип используемых аккумуляторных батарей, мощность солнечных панелей.
Контроллер является неотъемлемой частью систем солнечной энергетики, и от его эффективности в значительной степени зависит цена и срок окупаемости фотоэлектрических систем.
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
1. Нетрадиционные и возобновляемые источники энергии: Ю. Д. Сибикин, М. Ю. Сибикин -- Москва, КноРус, 2010 г.
2. Возобновляемая энергетика: А. Б. Алхасов -- Москва, ФИЗМАТЛИТ, 2010 г.
3. Гелиоэнергетика. Солнечные электрические станции: Ахмедов Р.Б. - ВИНИТИ, 1986.
4. Герметичные химические источники тока. Элементы и аккумуляторы. Таганова А.А., 2005
5. Правила устройства электроустановок, часть 7, Глава 7.1, Электроустановки жилых, общественных, административных и бытовых зданий. Энергоатомиздат, 1985.
6. MPPT Control Methods in Wind Energy Conversion Systems Quebec Canada
7. Источники электропитания радиоэлектронной аппаратуры: Справочник/ Г.С.Найвельт и др. - М.: Радио и связь, 1986.
8. Источники вторичного электропитания С.С.Букреев, В.А. Головацкий, Г. Н. Гулякович и др.; Под ред. Ю. И. Конева. - М.: Радио и связь, 1983.
9. Силовая электроника. Семенов Б. Ю. 2005
10. Сергеев Б.С. Схемотехника функциональных узлов источников вторичного электропитания: Справочник. - М.: Радио и связь, 1992.
11. Бродин В. Б., Калинин А. В. Системы на микроконтроллерах и БИС программируемой логики. - М.: ЭКОМ, 2002.
12. Трамперт В. Измерение, управление и регулирование с помощью AVR микроконтроллеров. пер. с нем. - Киев, МК-Пресс, 2006. - 208.
13. Мелешин В.И. Транзисторная преобразовательная техника. Москва, Техносфера, 2005г. 632.
14. Дьяконов В.П. и д.р Схемотехника устройств на мощных полевых транзисторах. Справочник. - М.: Радио и связь, 1994г. - 280.
15. Справочник по расчету фильтров Пер. с немецкого Камкина Ю.В., под ред. Слепова Н.Н. - М.: Радио и связь, 1983г.
16. Правила устройства электроустановок. Глава 4.4. Аккумуляторные установки. Энергоатомиздат, 1985.
17. http://www.csb-battery.com/
18. Моин В.С. Стабилизированные транзисторные преобразователи. - М.: Энергоатомиздат, 1986.-376
19. Ферриты и магнитодиэлектрики: Справочник под общей редакцией Горбунова Н.Д. Советское радио, 1968.
20. Аксенов А.И. и др. Отвод тепла в полупроводниковых приборах. - М.: Энергия, 1971.
21. Измерения в электронике: Справочник/ Под ред. В.А. Кузнецова. - М.: Энергоатомиздат, 1987.
22. Аналоговая и цифровая схемотехника. Бубнов А. В., Гвозденко К. Н., Гокова М. В.Издательство: ОмГТУ, 2010
23. Электроника. Цифровые элементы и устройства. Чье Ен Ун Хабаровск: Изд-во ХГТУ, 2002.
24. P-CAD 2006. Схемотехника и проектирование печатных плат. Динц К.М. 2009
25. Визуальное моделирование электронных схем в PSPICE. Хайнеманн Р. Издательство ДМК Пресс, 2008.
26. Искусство схемотехники. Хоровиц П. Хилл У. Издательство Мир, 5-е издание 1998
27. Основы схемотехники микроэлектронных устройств. Белоус А.И. Емельянов В.А. Турцевич А.С. Издательство Техносфера, 2012.
28. Полупроводниковая схемотехника. Титце У. Шенк К. 1982
29. Практическая схемотехника в промышленной автоматике. Гальперин М.В. Издательство Энергоатомиздат, 1987
30. Практическая схемотехника. Контроль и защита источников питания. Книга 4, Шустов М.А., Издательство Аль-текс, 2007.
31. www.promcontroller.ru/
32. www.bibliotekar.ru/
33. bibliozal.ru/
34. alternativenergy.ru/
35. solareview.blogspot.com/
36. solarsoul.net/э
37. solar-battery.narod.ru/э
38. forum.easyelectronics.ru
39. cxemotexnika.org/
40. www.softelectro.ru/
ПРИЛОЖЕНИЕ
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3 Standard
Automatic Program Generator
Project : Charge Controller.
Version :
Date : 26.03.2013
Author : Mukhutdiniv N.
Chip type : ATmega16
Program type : Application
AVR Core Clock frequency: 16,0000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega16.h>
#include <delay.h>
/* include the abs function prototype */
#include <stdlib.h>
// Alphanumeric LCD functions
#include <alcd.h>
//#asm
// .equ __w1_port=0x15
// .equ __w1_bit=3
//#endasm
#include <ds1820.h>
#include <1wire.h>
#include <USART&LCD_Settings.h>
// Standard Input/Output functions
#include <stdio.h>
#include <defines.h>
#include <delay.h> // готовые функции задержек
#include <ds1307.h>
//#include <ds1307_twi.h>
// Declare your global variables here
/************** variables from menu began *********************/
unsigned char menu1,menu2,menu10,accumul_type,accumul_cap,solar_panel,adc_result1,adc3_result1;
char lcd_text[16],lcd_buffer[16];
signed char top; // ЖК-модуль инициализации
//char sign; //переменная для хранения знака датчика температуры
unsigned int adc_result,adc_result2,adc3_result,adc3_result2,adc1_result,adc1_result1,adc1_result2,adc7_result,adc7_result1,adc7_result2; //переменная для хранения температуры
//int adc_result;
int temp,test;
unsigned char hour,minute,sec,week_day,day,month,year;
/************** variables from menu finished ******************/
#define ADC_VREF_TYPE 0x00 // теперь препроцессор везде в тексте программы заменит "ADC_VREF_TYPE" на "0x00"
interrupt [ADC_INT] void adc_isr(void) {
// Прерывания для считывания данных с АЦП
switch (ADMUX) {
case 2: //считывание данных с АЦП2
adc_result = ADCW; //ADCH; trash=ADCL;
ADMUX=0b00000011;
ADCSRA|=(1<<ADSC);
break;
case 3: //считывание данных с АЦП3
adc3_result = ADCW; //ADCH; trash=ADCL;
ADMUX=0b00000111;
ADCSRA|=(1<<ADSC);
break;
case 7: //считывание данных с АЦП7
adc7_result = ADCW; //ADCH; trash=ADCL;
ADMUX=0b00000010;
ADCSRA|=(1<<ADSC);
break;
};
};
void main(void)
{
//настраиваем АЦП и запускаем АЦП2
ADMUX = (0<<REFS1)|(0<<REFS0)|(0<<ADLAR)|(0<<MUX3)|(0<<MUX2)|(1<<MUX1)|(0<<MUX0);
ADCSRA = (1<<ADEN)|(1<<ADSC)|(0<<ADATE)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
accumul_type=2;
#include <pwm.h> //настройки ШИМ
// Input/Output Ports initialization
#include <Ports_initialization.h>
// Global enable interrupts
SREG |=(1<<7); //разрешаем все прерывания
lcd_init(16); // инициализация на 16 символов
w1_init(); //инициализация термодатчика на 1проводной линии
//настройка ds1307 по шине twi
/*twi_master_init(100); /* initialize the TWI in master mode with 100 kHz bit rate */
/* initialize the RTC
square wave output is disabled
SQW/OUT has logic state 0 */
//rtc_init(0,0,0);
//rtc_set_time(12,0,0); /* set time 12:00:00 */
//rtc_set_date(2,1,2,11); // set date Tuesday 1/02/2011 */
//настройка ds1307 по шине I2C
/* initialize the bit-banged I2C functions */
i2c_init();
/* initialize the RTC square wave output is disabled SQW/OUT has logic state 0 */
rtc_init(0,0,0);
//rtc_set_time(10,03,0); /* set time 12:00:00 */
//rtc_set_date(5,28,5,13); // set date Tuesday 24/02/2013 */
while (1)
{
// Place your code here
#include <Menu.h>
/*if (ADMUX==0b00000010){ //Uchar
if ((ADCSRA &(1<<ADIF))) {
adc_result = ADCW; //; trash=ADCL; ADCW*/
adc_result1 = adc_result/28.84; //расчитываем данные полученные с АЦП2
adc_result2 = adc_result/0.02884;
/*delay_us(40);
ADCSRA &=(0<<ADSC);
ADMUX=0b00000011;
ADCSRA =(1<<ADEN)|(1<<ADSC)|(0<<ADATE)|(0<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
delay_us(40);
};
}; */
if (adc_result>392) { PORTB = PORTB | 0b00001000; //реле отключает солнечную панель от перезаряда
}
else {PORTB = PORTB & 0b11110111;
};
if ((adc_result<332)) { PORTB = PORTB & 0b11101111; //реле отключает нагрузку от переразряда
}
else {PORTB = PORTB | 0b00010000;
};
/* if (ADMUX==0b00000011){ //Ichar
if ((ADCSRA &(1<<ADIF))) {
adc3_result = ADCW; //ADCH; trash=ADCL;*/
adc3_result1 = adc3_result/25.6; //расчитываем данные полученные с АЦП3
adc3_result2 = adc3_result/0.256;
/* delay_us(40);
ADCSRA &=(0<<ADSC);
ADMUX=0b00000001;
ADCSRA =(1<<ADEN)|(1<<ADSC)|(0<<ADATE)|(0<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
delay_us(40);
};
};
if (ADMUX==0b00000001){
if ((ADCSRA &(1<<ADIF))) {
adc1_result = ADCW; //ADCH; trash=ADCL; */
adc1_result1 = adc1_result/204.8; //расчитываем данные полученные с АЦП1
adc1_result2 = adc1_result/0.2048;
/* delay_us(40);
ADCSRA &=(0<<ADSC);
ADMUX=0b00000111;
ADCSRA =(1<<ADEN)|(1<<ADSC)|(0<<ADATE)|(0<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
delay_us(40);
};
};
if (ADMUX==0b00000111){ //Uout
if ((ADCSRA &(1<<ADIF))) {
adc7_result = ADCW; //ADCH; trash=ADCL; */
adc7_result1 = adc7_result/7.314; //расчитываем данные полученные с АЦП7
adc7_result2 = adc7_result/0.07314;
/* delay_us(40);
ADCSRA &=(0<<ADSC);
ADMUX=0b00000010;
ADCSRA =(1<<ADEN)|(1<<ADSC)|(0<<ADATE)|(0<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
delay_us(40);
};
}; */
// w1_init();
SREG &=(0<<7); //отключаем прерывания чтобы нормально считать данные с датчика
temp = ds1820_temperature_10(0); //считываем данные с термодатчика
test= temp+600;
top=w1_init();
//считывание времени и датты с DS1307
/* read the time from the RTC */
rtc_get_time(&hour,&minute,&sec);
/* read the date from the RTC */
rtc_get_date(&week_day,&day,&month,&year);
// display the time on the LCD */
SREG |=(1<<7); //включаем прерывания */
//OCR1AL++; //увеличивает ШИМ на ножке ОС1В PD4
OCR1BL=127;
};
}
Реализация меню:
if ((!(but_up))&(menu10<2)) {menu1-- ;
} ;
//delay_ms(30);
// проверка кнопки вверх
if ((!(but_down))&(menu10<2)) {menu1++ ;
} ;
//delay_ms(20);
// проверка кнопки вниз
if ((!(but_up))&(menu10>1)) {menu2-- ;
} ;
//delay_us(100);
// проверка кнопки вверх
if ((!(but_down))&(menu10>1)) {menu2++ ;
} ;
//delay_us(100);
// проверка кнопки вниз
if (!(but_left)) {menu10-- ; menu2=0;
} ;
//delay_us(100);
// проверка кнопки влево
if (!(but_right)) {menu10++ ;
} ;
//delay_us(100);
// проверка кнопки вправо
/*if (!(but_ok)) {menu3=1 ;
} ;
*/ // проверка кнопки ОК
//if (menu<11) {menu=11;};
//if (menu>400) {menu=300;};
switch (menu10) {
case 0: menu10++;
case 1: //1 строка в 1 столбце
switch (menu1) { // во втором уровне
case 0: // если нажатие кнопки выходит за верхний предел столбца
menu1++ ;
case 1:
lcd_clear(); // очистка дисплея
lcd_putsf("> Accumul type>\n Accumul cap >"); // вывод надписи в указанных координатах
break;
case 2: //1 строка в 1 столбце
lcd_clear(); // очистка дисплея
lcd_putsf(" Accumul type>\n> Accumul cap >"); // вывод надписи в указанных координатах
break;
case 3: //3 строка в 1 столбце
lcd_clear(); // очистка дисплея
lcd_putsf(" Accumul cap >\n> Solar Panel >"); // вывод надписи в указанных координатах
break;
case 4: //4 строка в 1 столбце
lcd_clear(); // очистка дисплея
lcd_putsf(" Solar Panel >"); // вывод надписи в указанных координатах
lcd_gotoxy(0,1);
lcd_putsf("> PWM control >");
break;
case 5: //7 строка в 1 столбце
lcd_clear(); // очистка дисплея
//lcd_putsf(" Charge Voltage"); // вывод надписи в указанных координатах
lcd_putsf(" PWM control >");
lcd_gotoxy(0,1);
sprintf(lcd_text, "> I char=%i",adc3_result1);
lcd_puts(lcd_text); // Десятичное изменения в символьной переменной вывод на ЖК-
if (adc3_result1>=10) {
sprintf(lcd_text, ".%u",adc3_result2%100);
}
else{sprintf(lcd_text, ".%u",adc3_result2%100);
};
lcd_puts(lcd_text); // Десятичное изменения в символьной переменной вывод на ЖК-
break;
case 6: //5 строка в 1 столбце
lcd_clear(); // очистка дисплея
//lcd_putsf(" Charge current\n> Charge Voltage"); // вывод надписи в указанных координатах
sprintf(lcd_text, " I char=%i",adc3_result1);
lcd_puts(lcd_text); // Десятичное изменения в символьной переменной вывод на ЖК-
if (adc3_result1>=10) {
sprintf(lcd_text, ".%u",adc3_result2%100);
}
else{sprintf(lcd_text, ".%u",adc3_result2%100);
};
lcd_puts(lcd_text); // Десятичное изменения в символьной переменной вывод на ЖК-
lcd_gotoxy(0,1);
sprintf(lcd_text, "> I out=%i",adc7_result1);
lcd_puts(lcd_text); // Десятичное изменения в символьной переменной вывод на ЖК-
if (adc3_result1>=100) {
sprintf(lcd_text, ".%u",adc7_result2%1);
};
if (adc3_result1>=10) {
sprintf(lcd_text, ".%u",adc7_result2%10);
}
else{sprintf(lcd_text, ".%u",adc7_result2%100);
};
lcd_puts(lcd_text); // Десятичное изменения в символьной переменной вывод на ЖК-
break;
case 7: //5 строка в 1 столбце
lcd_clear(); // очистка дисплея
//lcd_putsf(" Charge current\n> Charge Voltage"); // вывод надписи в указанных координатах
sprintf(lcd_text, " I out=%i",adc7_result1);//,adc3_result1);
lcd_puts(lcd_text); // Десятичное изменения в символьной переменной вывод на ЖК-
if (adc3_result1>=100) {
sprintf(lcd_text, ".%u",adc7_result2%1);
};
if (adc3_result1>=10) {
sprintf(lcd_text, ".%u",adc7_result2%10);
}
else{sprintf(lcd_text, ".%u",adc7_result2%100);
};
lcd_puts(lcd_text); // Десятичное изменения в символьной переменной вывод на ЖК-
lcd_gotoxy(0,1);
sprintf(lcd_text, "> U char=%i",adc_result1);
lcd_puts(lcd_text); // Десятичное изменения в символьной переменной вывод на ЖК-
sprintf(lcd_text, ".%u",adc_result2%1000);
lcd_puts(lcd_text); // Десятичное изменения в символьной переменной вывод на ЖК-
break;
case 8: //6 строка в 1 столбце
lcd_clear(); // очистка дисплея
//lcd_putsf(" Charge Voltage"); // вывод надписи в указанных координатах
sprintf(lcd_text, " U char=%i",adc_result1);
lcd_puts(lcd_text); // Десятичное изменения в символьной переменной вывод на ЖК-
sprintf(lcd_text, ".%u",adc_result2%1000);
lcd_puts(lcd_text); // Десятичное изменения в символьной переменной вывод на ЖК-
lcd_gotoxy(0,1);
sprintf(lcd_buffer,"> ADC U=%i",adc_result);
lcd_puts(lcd_buffer);
break;
case 9: //6 строка в 1 столбце
lcd_clear(); // очистка дисплея
//lcd_putsf(" Charge Voltage"); // вывод надписи в указанных координатах
sprintf(lcd_buffer," ADC U=%i",adc_result);
lcd_puts(lcd_buffer);
lcd_gotoxy(0,1);
sprintf(lcd_buffer,"> Time:%2d:%02d:%02d\n",hour,minute,sec);
lcd_puts(lcd_buffer);
break;
case 10: //6 строка в 1 столбце
lcd_clear(); // очистка дисплея
//lcd_putsf(" Charge Voltage"); // вывод надписи в указанных координатах
sprintf(lcd_buffer," Time:%2d:%02d:%02d\n",hour,minute,sec);
lcd_puts(lcd_buffer);
lcd_gotoxy(0,1);
sprintf(lcd_buffer,"> %2d/%02d/%d",day,month,2000+year);
lcd_puts(lcd_buffer);
break;
case 11: //6 строка в 1 столбце
lcd_clear(); // очистка дисплея
//lcd_putsf(" Charge Voltage"); // вывод надписи в указанных координатах
sprintf(lcd_buffer," %2d/%02d/%d",day,month,2000+year);
lcd_puts(lcd_buffer);
lcd_gotoxy(0,1);
sprintf(lcd_buffer,"> T bat=%i",temp);
lcd_puts(lcd_buffer);
break;
case 13: //8 строка в 1 столбце переполнение
menu1-- ;
case 12: //6 строка в 1 столбце
lcd_clear(); // очистка дисплея
//lcd_putsf(" Charge Voltage"); // вывод надписи в указанных координатах
//sprintf(lcd_text, " T ac = %i",temp);
//lcd_puts(lcd_text); // Десятичное изменения в символьной переменной вывод на ЖК-
sprintf(lcd_buffer," T bat=%-i.%-u\xdfC",test/10,test%10);
lcd_puts(lcd_buffer);
lcd_gotoxy(0,1);
sprintf(lcd_text, "> Device = %i",top);
lcd_puts(lcd_text); // Десятичное изменения в символьной переменной вывод на ЖК-
//sprintf(lcd_text, ".%u",adc_result2%1000);
//lcd_puts(lcd_text); // Десятичное изменения в символьной переменной вывод на ЖК-
break;
} ;
break;
case 3: // если нажатие кнопки выходит за нижний предел столбца
menu10--;
case 2: //2 строка в 1 столбце
switch (menu1) { // во втором уровне
case 0: // если нажатие кнопки выходит за верхний предел столбца
menu1++ ;
case 1: //1 строка в 2 столбце
switch (menu2) {
case 0: // если нажатие кнопки выходит за верхний предел столбца
menu2++ ;
case 1:
if (!(but_ok)) {accumul_type=1; };
if (accumul_type==1) {
lcd_clear(); // очистка дисплея
lcd_putsf(">*Accum servise\n Accum unserv"); // вывод надписи в указанных координатах
}
else{
lcd_clear(); // очистка дисплея
lcd_putsf("> Accum servise\n *Accum unserv"); // вывод надписи в указанных координатах
};
break;
case 3: // если нажатие кнопки выходит за нижний предел столбца
menu2--;
case 2: //2 строка в 1 столбце
if (!(but_ok)) {accumul_type=2;};
if (accumul_type==2) {
lcd_clear(); // очистка дисплея
lcd_putsf(" Acum servise\n>*Acum unserv"); // вывод надписи в указанных координатах
}
else{
lcd_clear(); // очистка дисплея
lcd_putsf(" *Acum servise\n> Acum unserv"); // вывод надписи в указанных координатах
};
break;
};
break;
case 2: //2 строка в 2 столбце
switch (menu2) { // во втором уровне
case 0: // если нажатие кнопки выходит за верхний предел столбца
menu2++ ;
case 1: //1 строка в 1 столбце
if (!(but_ok)) {accumul_cap=1;};
if (accumul_cap==1) {
lcd_clear(); // очистка дисплея
lcd_putsf(">*62A/h Accum\n 100A/h Accum"); // вывод надписи в указанных координатах
break;};
if (accumul_cap==2) {
lcd_clear(); // очистка дисплея
lcd_gotoxy(0,0); // верхняя строка 4 позиция
lcd_putsf("> 62A/h Accum"); // вывод надписи в указанных координатах
lcd_gotoxy(0,1); // спускаемся на нижнюю стрчку
lcd_putsf(" *100A/h Accum"); // выводим текст
break;}
else {
lcd_clear(); // очистка дисплея
lcd_gotoxy(0,0); // верхняя строка 4 позиция
lcd_putsf("> 62A/h Accum"); // вывод надписи в указанных координатах
lcd_gotoxy(2,1); // спускаемся на нижнюю стрчку
lcd_putsf("100A/h Accum"); // выводим текст
break;};
case 2:
if (!(but_ok)) {accumul_cap=2;};
if (accumul_cap==1) {
lcd_clear(); // очистка дисплея
lcd_gotoxy(0,0); // верхняя строка 4 позиция
lcd_putsf(" *62A/h Accum"); // вывод надписи в указанных координатах
lcd_gotoxy(0,1); // спускаемся на нижнюю стрчку
lcd_putsf("> 100A/h Accum"); // выводим текст
break;};
if (accumul_cap==2) {
lcd_clear(); // очистка дисплея
lcd_gotoxy(2,0); // верхняя строка 4 позиция
lcd_putsf("62A/h Accum"); // вывод надписи в указанных координатах
lcd_gotoxy(0,1); // спускаемся на нижнюю стрчку
lcd_putsf(">*100A/h Accum"); // выводим текст
break;}
else{
lcd_clear(); // очистка дисплея
lcd_gotoxy(2,0); // верхняя строка 4 позиция
lcd_putsf("62A/h Accum"); // вывод надписи в указанных координатах
lcd_gotoxy(0,1); // спускаемся на нижнюю стрчку
lcd_putsf("> 100A/h Accum"); // выводим текст
break;};
case 4: // если нажатие кнопки выходит за нижний предел столбца
menu2--;
case 3: //2 строка в 1 столбц2жж
if (!(but_ok)) {accumul_cap=3;};
if (accumul_cap==2) {
lcd_clear(); // очистка дисплея
lcd_gotoxy(0,0); // верхняя строка 4 позиция
lcd_putsf(" *100A/h Accum"); // вывод надписи в указанных координатах
lcd_gotoxy(0,1); // спускаемся на нижнюю стрчку
lcd_putsf("> 200A/h Accum"); // выводим текст
break;
};
if (accumul_cap==3) {
lcd_clear(); // очистка дисплея
lcd_gotoxy(2,0); // верхняя строка 4 позиция
lcd_putsf("100A/h Accum"); // вывод надписи в указанных координатах
lcd_gotoxy(0,1); // спускаемся на нижнюю стрчку
lcd_putsf(">*200A/h Accum"); // выводим текст
break;
}
else {
lcd_clear(); // очистка дисплея
lcd_gotoxy(2,0); // верхняя строка 4 позиция
lcd_putsf("100A/h Accum"); // вывод надписи в указанных координатах
lcd_gotoxy(0,1); // спускаемся на нижнюю стрчку
lcd_putsf("> 200A/h Accum"); // выводим текст
break;};
};
break;
case 3: //2 строка в 2 столбце
switch (menu2) { // во втором уровне
case 0: // если нажатие кнопки выходит за верхний предел столбца
menu2++ ;
case 1: //1 строка в 1 столбце
if (!(but_ok)) {solar_panel=1;};
if (solar_panel==1) {
lcd_clear(); // очистка дисплея
lcd_gotoxy(0,0); // верхняя строка 4 позиция
lcd_putsf(">*100W Panel"); // вывод надписи в указанных координатах
lcd_gotoxy(2,1); // спускаемся на нижнюю стрчку
lcd_putsf("200W Panel"); // выводим текст
break;
};
if (solar_panel==2) {
lcd_clear(); // очистка дисплея
lcd_gotoxy(0,0); // верхняя строка 4 позиция
lcd_putsf("> 100W Panel"); // вывод надписи в указанных координатах
lcd_gotoxy(0,1); // спускаемся на нижнюю стрчку
lcd_putsf(" *200W Panel"); // выводим текст
break;
}
else{
lcd_clear(); // очистка дисплея
lcd_gotoxy(0,0); // верхняя строка 4 позиция
lcd_putsf("> 100W Panel"); // вывод надписи в указанных координатах
lcd_gotoxy(2,1); // спускаемся на нижнюю стрчку
lcd_putsf("200W Panel"); // выводим текст
break;
};
case 2:
if (!(but_ok)) {solar_panel=2;};
if (solar_panel==1) {
lcd_clear(); // очистка дисплея
lcd_gotoxy(0,0); // верхняя строка 4 позиция
lcd_putsf(" *100W Panel"); // вывод надписи в указанных координатах
lcd_gotoxy(0,1); // спускаемся на нижнюю стрчку
lcd_putsf("> 200W Panel"); // выводим текст
break;
};
if (solar_panel==2) {
lcd_clear(); // очистка дисплея
lcd_gotoxy(2,0); // верхняя строка 4 позиция
lcd_putsf("100W Panel"); // вывод надписи в указанных координатах
lcd_gotoxy(0,1); // спускаемся на нижнюю стрчку
lcd_putsf(">*200W Panel"); // выводим текст
break;
}
else {
lcd_clear(); // очистка дисплея
lcd_gotoxy(2,0); // верхняя строка 4 позиция
lcd_putsf("100W Panel"); // вывод надписи в указанных координатах
lcd_gotoxy(0,1); // спускаемся на нижнюю стрчку
lcd_putsf("> 200W Panel"); // выводим текст
break;
};
case 4: // если нажатие кнопки выходит за нижний предел столбца
menu2--;
case 3: //2 строка в 1 столбце
if (!(but_ok)) {solar_panel=3;};
if (solar_panel==2) {
lcd_clear(); // очистка дисплея
lcd_gotoxy(0,0); // верхняя строка 4 позиция
lcd_putsf(" *200W Panel"); // вывод надписи в указанных координатах
lcd_gotoxy(0,1); // спускаемся на нижнюю стрчку
lcd_putsf("> 300W Panel"); // выводим текст
break;
};
if (solar_panel==3) {
lcd_clear(); // очистка дисплея
lcd_gotoxy(2,0); // верхняя строка 4 позиция
lcd_putsf("200W Panel"); // вывод надписи в указанных координатах
lcd_gotoxy(0,1); // спускаемся на нижнюю стрчку
lcd_putsf(">*300W Panel"); // выводим текст
break;
}
else {
lcd_clear(); // очистка дисплея
lcd_gotoxy(2,0); // верхняя строка 4 позиция
lcd_putsf("200W Panel"); // вывод надписи в указанных координатах
lcd_gotoxy(0,1); // спускаемся на нижнюю стрчку
lcd_putsf("> 300W Panel"); // выводим текст
break;
};
};
break;
case 4: //2 строка в 2 столбце
switch (menu2) { // во втором уровне
case 0: // если нажатие кнопки выходит за верхний предел столбца
menu2++;
case 1: //1 строка в 1 столбце
lcd_clear(); // очистка дисплея
lcd_gotoxy(0,0); // верхняя строка 4 позиция
sprintf(lcd_text, "+ PWM=%i",OCR1AL);
if (!(but_ok)) {OCR1AL++;};
lcd_puts(lcd_text); // Десятичное изменения в символьной переменной вывод на ЖК-
lcd_gotoxy(0,1);
sprintf(lcd_text, " PWM=%i",OCR1AL);
lcd_puts(lcd_text); // Десятичное изменения в символьной переменной вывод на ЖК-
break;
case 3: // если нажатие кнопки выходит за нижний предел столбца
menu2--;
case 2: //2 строка в 1 столбце
lcd_clear(); // очистка дисплея
lcd_gotoxy(0,0); // верхняя строка 4 позиция
sprintf(lcd_text, " PWM=%i",OCR1AL);
if (!(but_ok)) {OCR1AL--;};
lcd_puts(lcd_text); // Десятичное изменения в символьной переменной вывод на ЖК-
lcd_gotoxy(0,1);
sprintf(lcd_text, "- PWM=%i",OCR1AL);
lcd_puts(lcd_text); // Десятичное изменения в символьной переменной вывод на ЖК-
break;
};
break;
case 5: // если нажатие кнопки выходит за нижний предел столбца
menu10=1;
break;
case 6: // если нажатие кнопки выходит за нижний предел столбца
menu10=1;
break;
case 7: // если нажатие кнопки выходит за нижний предел столбца
menu10=1;
break;
case 8: // если нажатие кнопки выходит за нижний предел столбца
menu10=1;
break;
case 9: // если нажатие кнопки выходит за нижний предел столбца
menu10=1;
break;
case 10: // если нажатие кнопки выходит за нижний предел столбца
menu10=1;
break;
case 11: // если нажатие кнопки выходит за нижний предел столбца
menu10=1;
break;
case 12: // если нажатие кнопки выходит за нижний предел столбца
menu10=1;
break;
case 13: // если нажатие кнопки выходит за нижний предел столбца
menu10=1;
menu1--;
break;
case 14: // если нажатие кнопки выходит за нижний предел столбца
menu10=1;
} break;
};
// delay_ms (10);
Меню контроллера солнечной водоподъемной станции:
Внутренняя схема контроллера солнечной водоподъемной установки.
Силовая часть схемы контроллера солнечной водоподъемной установки.
Размещено на Allbest.ru
...Подобные документы
Фотоэлектрическое преобразование солнечной энергии. Элементы солнечных батарей. Регуляторы зарядки и разрядки аккумуляторов, отбора мощности батареи. Технические характеристики, устройство и принцип работы современных термоэлектрических генераторов.
реферат [642,5 K], добавлен 16.02.2015История теплового аккумулирования энергии. Классификация аккумуляторов тепла. Аккумулирование энергии в атомной энергетике. Хемотермические энергоаккумулирующие системы. Водоаммиачные регуляторы мощности. Аккумуляция тепла в калориферных установках.
реферат [1,5 M], добавлен 14.05.2014Разработка гибридной системы электроснабжения и комплектов, обеспечивающих резервное электроснабжение в доме при пропадании энергии в сети. Преимущества ветрогенераторов и солнечных батарей. Определение необходимого количества аккумуляторных батарей.
презентация [1,4 M], добавлен 01.04.2015Общие сведения о солнце как источнике энергии. История открытия и использование энергии солнца. Способы получения электричества и тепла из солнечного излучения. Сущность и виды солнечных батарей. "За" и "против" использования солнечной энергии.
реферат [999,0 K], добавлен 22.12.2010Разработка зарядного устройства для аккумуляторов, доступного для изготовления в кружках технического творчества. Отказы аккумуляторных батарей и способы их восстановления. Расчет трансформатора. Изготовление печатной платы и монтаж элементов схемы.
курсовая работа [1,9 M], добавлен 21.06.2013История открытия солнечной энергии. Принцип действия и свойства солнечных панелей. Типы батарей: маломощные, универсальные и панели солнечных элементов. Меры безопасности при эксплуатации и экономическая выгода применения солнечной системы отопления.
презентация [3,1 M], добавлен 13.05.2014Количество солнечной энергии, попадающей на Землю, ее использование человеком. Способы пассивного применения солнечной энергии. Солнечные коллекторы. Технологический цикл солнечных тепловых электростанций. Промышленные фотоэлектрические установки.
презентация [3,3 M], добавлен 06.12.2015Обзор технологий и развитие электроустановок солнечных электростанций. Машина Стирлинга и принцип ее действия. Производство электроэнергии с помощью солнечных батарей. Использования солнечной энергии в различных отраслях производства промышленности.
реферат [62,3 K], добавлен 10.02.2012Анализ технологического процесса промышленной установки и формулирование требований к автоматизированному электроприводу. Проектирование функциональной схемы, расчет нагрузок. Разработка преобразователя электрической энергии, автоматического управления.
дипломная работа [3,1 M], добавлен 09.08.2014Классификация углеродных нанотрубок, их получение, структурные свойства и возможные применения. Основные принципы работы солнечных батарей. Преобразователи солнечной энергии. Фотоэлектрические преобразователи, гелиоэлектростанции, солнечный коллектор.
реферат [492,8 K], добавлен 25.05.2014Расчёт и выбор элементной базы силовой схемы вентильного преобразователя. Построение регулировочных и внешних характеристик вентильного преобразователя. Разработка электрической схемы для управления силовыми полупроводниковыми ключами преобразователя.
курсовая работа [3,2 M], добавлен 12.07.2012Применение нетрадиционной энергетики в строительстве энергоавтономных экодомов. Четыре альтернативные системы получения энергии: установка "солнечных батарей" из фотоэлектрических панелей; солнечные коллекторы; ветроэнергетические установки и миниГЭС.
курсовая работа [2,5 M], добавлен 31.05.2013Потенциальные возможности солнечной энергии, способы ее аккумулирования и преобразования в энергию, необходимую человеку для производственных и бытовых нужд. Развитие возобновляемой энергетики в России и на Урале. Установка солнечных батарей на зданиях.
реферат [32,8 K], добавлен 31.10.2012Анализ вариантов технических решений по силовой части преобразователя. Разработка схемы электрической функциональной системы управления. Способы коммутации тиристоров. Математическое моделирование силовой части. Расчет электромагнитных процессов.
курсовая работа [1,2 M], добавлен 05.06.2013Исследование электроснабжения объектов альтернативными источниками энергии. Расчёт количества солнечных модулей, среднесуточного потребления энергии. Анализ особенностей эксплуатации солнечных и ветровых установок, оценка ветрового потенциала в регионе.
курсовая работа [258,8 K], добавлен 15.07.2012Разработка моделей составных частей системы. Подбор оборудования и определение параметров составных частей: аккумулятора, солнечной панели, инвертора, контроллера заряда, управляемого выпрямителя. Разработка системы управления и комплексной модели.
курсовая работа [2,4 M], добавлен 09.05.2015Использование ветрогенераторов, солнечных батарей и коллекторов, биогазовых реакторов для получения альтернативной энергии. Классификация видов нетрадиционных источников энергии: ветряные, геотермальные, солнечные, гидроэнергетические и биотопливные.
реферат [33,0 K], добавлен 31.07.2012Основные сведения об альтернативной энергетики. Преимущества и недостатки вакуумных коллекторов. Снижение зависимости от поставок энергоносителей. Применение фокусирующих коллекторов. Преимущества использования экологически чистой солнечной энергии.
реферат [346,4 K], добавлен 21.03.2015Использование возобновляемых источников энергии, их потенциал, виды. Применение геотермальных ресурсов; создание солнечных батарей; биотопливо. Энергия Мирового океана: волны, приливы и отливы. Экономическая эффективность использования энергии ветра.
реферат [3,0 M], добавлен 18.10.2013Функциональное назначение, технология и принципы работы козлового крана, требования к его электрооборудованию. Расчет, выбор мощности двигателя перемещения моста. Выбор управляющего контроллера для привода перемещения. Описание схемы контроллера ККТ 62А.
курсовая работа [1,3 M], добавлен 12.05.2014