Страница 1 из 2
цифровая регулировка подогрева сидений в АВТО.
Добавлено: Вт дек 25, 2012 12:36:13
Antik
Доброго времени всем любителям сметаны и колбасы
Небольшая предыстория (заранее прошу прощения за "многа букафф") :
Уже давно я катаюсь на своем авто, первую зиму как то пережил морозы, и садиться на ледяное сиденье как то было пофиг по началу. ПОтом уже стало напрягать, и установил подогрев от ВАЗ 2018. который имеет 2 положения, вкл и выкл. жарят они конечно атас, две мягкие части тела просто не способны выдержать такой температуры

. Ну и в эту зиму с долгими поисков автоматической регулировки наткнулся тут на форуме на вот такой регулятор:
http://radiokot.ru/circuit/digital/automat/18/
Все конечно хорошо, но во-первых сей девайс у меня заработал после трехдневных танцев с бубнами ( не верные номиналы связки R2-R3-C2, при которых таймер у меня очень быстро переключался на вторую фазу), а во вторых работает идеально только когда с утра завел например, садишься, они нагреваются быстро, а потом переходят на легкий паодогрев. Но если человек торговый представитель (например) и он постоянно мотается по магазинам с короткими стоянками - прощай попка :-D она поджарится)) (а если подстроечными резисторами убрать время, то будет мало времени при утреннем запуске для прогрева) Короче температурной хар-ки терморезистора не хватает, чтобы регулировать время в больших диапазонах. Как то так...
И вот наконец то момент истины. Прошу помощь аудитории с постройкой подобного девайса на МК, и цифровых датчиках (DS18B20 или DS18S20).
В легком доступе имеются микросхемы (принципиальны ПИК-и):
Спойлер
PCF85116-3
PCF8582 (см. 24C02P)
PCF8583P
PCF8584P
PCF8591P
PCF8594C-2
PCF8598C-2
PIC10F200T-I/OT SMD
PIC10F206T-I/OT SMD
PIC12C508A-04/P
PIC12C508A-04I/P
PIC12C508A-04I/SM SMD
PIC12C509A-04I/P
PIC12C509A-04I/SM SMD
PIC12C672-04I/P
PIC12C672-10I/SM SMD
PIC12F509-I/P
PIC12F509-I/SN SMD
PIC12F629-I/P
PIC12F629-I/SN SMD
PIC12F675-I/P
PIC12F675-I/SN SMD
PIC12F683-I/P
PIC12F683-I/SN SMD
PIC16C505-04I/P
PIC16C505-20I/SL SMD
PIC16C54C-04/P
PIC16C622A-04I/P
PIC16C622A-20I/P
PIC16C711-04I/P
PIC16C711-20I/SO SMD
PIC16C74B-20I/P
PIC16F1936-I/SO SMD
PIC16F505-I/SL SMD
PIC16F628-04I/SO SMD
PIC16F628-20I/P
PIC16F628-20I/SO SMD
PIC16F628A-I/P
PIC16F628A-I/SO SMD
PIC16F630-I/SL SMD
PIC16F676-I/P
PIC16F676-I/SL SMD
PIC16F684-I/P
PIC16F684-I/SL SMD
PIC16F688-I/P
PIC16F689-I/SS SMD
PIC16F690-I/SO SMD
PIC16F690-I/P
PIC16F690-I/SS SMD
PIC16F716-I/P
PIC16F716-I/SO SMD
PIC16F73-I/SO SMD
PIC16F73-I/SP
PIC16F76-I/SO SMD
PIC16F819-I/P
PIC16F819-I/SO SMD
PIC16F84A-04-/P
PIC16F84A-04I/SO SMD
PIC16F84A-20I/P
PIC16F873-04I/SP
PIC16F873-20-I/SP
PIC16F873A-I/SP
PIC16F873A-I/SO SMD
PIC16F874-20I/P
PIC16F874A-I/P
PIC16F874A-I/PT SMD
PIC16F876-04I/SP
PIC16F876-20/SO SMD
PIC16F876-20I/SP
PIC16F876A-I/SO SMD
PIC16F876A-I/SP
PIC16F877-20I/P
PIC16F877A-I/L SMD
PIC16F877A-I/P
PIC16F877A-I/PT SMD
PIC16F88-I/P
PIC16F887-I/P
PIC16F917-I/PT SMD
PIC16LF877A-I/P
PIC18C242-I/SP
PIC18C252-I/SP
PIC18F1220-I/P
PIC18F1220-I/SO SMD
PIC18F1320-I/P
PIC18F1320-I/SO SMD
PIC18F14K50-I/SS SMD
PIC18F2221-I/SO SMD
PIC18F2321-I/SO SMD
PIC18F242-I/SP
PIC18F2450-I/SO SMD
PIC18F2455-I/SP
PIC18F2520-I/SO SMD
PIC18F2520-I/SP
PIC18F2550-I/SP
PIC18F2550-I/SO SMD
PIC18F452-I/PT SMD
PIC18F4550-I/P
PIC18F4550-I/PT SMD
PIC18F6527-I/PT SMD
На счет алгоритма работы давайте подумаем вместе. Можно например установить один датчик в салоне автомобиля в подходящем месте, а второй непосредственно в сиденье вмонтировать, или же обойтись только одним датчиком в сидении. Можно так же добавить регулировку (погрешность датчика) температуры кнопками. или изобразить нечто со светодиодными сегментами для наглядности работы устройства (например уровень мощности на данный момент времени подогрева)
Говорю сразу, в программировании я дуб-дубом, но руки из правильного места растут, паяльник умею держать.
Re: цифровая регулировка подогрева сидений в АВТО.
Добавлено: Вт дек 25, 2012 12:48:03
TheTERMINATOR
Antik писал(а):в программировании я дуб-дубом, но руки из правильного места растут, паяльник умею держать.
Не проще за пару тысяч рублей получить готовое устройство? Пропусть недели на разработку, отладку и купить уже завтра?
Re: цифровая регулировка подогрева сидений в АВТО.
Добавлено: Вт дек 25, 2012 12:51:43
Antik
Где то я уже это слышал
Просто купить - любой может.
Re: цифровая регулировка подогрева сидений в АВТО.
Добавлено: Вт дек 25, 2012 13:03:57
TheTERMINATOR
Дело хозяйское. Но судя по погоде, контроллер нужен сейчас, а не к лету...
Re: цифровая регулировка подогрева сидений в АВТО.
Добавлено: Вт дек 25, 2012 13:12:23
Antik
Да не к спеху, главное сам подогрев есть, но вот только ручками все время приходится его то включать то выключать. А хочется полностью автоматическое устройство, с возможностью подстройки под пользователя.
з.ы. На счет погоды Вы верно сказали

У меня друг подогрев сидений весной делал
А на счет того почему зимой все эти манипуляции, дык это и нужно зимой делать, ведь когда тепло вы не используете подогрев

не летом же настраивать под себя

Re: цифровая регулировка подогрева сидений в АВТО.
Добавлено: Вт дек 25, 2012 15:44:02
korsaj
Есть подобный проект (удерживает температтуру на 38-40 градусах) на PIC12F629(675), написан на Си в MicroC.
Спойлер
Код: Выделить всё
/*
* Project name:
TermRele (Termometr andTimer)
* Copyright:
(c) MikroElektronika, 2005.
* Description:
* Test configuration:
MCU: PIC12F629
Oscillator: Internal, 04.000 MHz
Ext. Modules: -
SW: mikroC v7.0
* NOTES:
None.
*/
#define Data GPIO.GP2
#define Clk GPIO.GP0
#define Strob GPIO.GP1
#define DS &GPIO,GP4
#define Button GPIO.GP3
#define BeepPin GPIO.GP5
unsigned char counter,Des,Edn,FirstByte,SecondByte,Seg1,Seg2,Seg3,Minuts;
unsigned char DesSec,EdnSec,tmp0,tmpH,Seg10,Seg20,Flags;
const unsigned int FTMR0 = 0,FOnTen = 1,TimeDispTemp=8,TenOnTerm = 38,\
FStop = 2,FBeep = 3,TenOffTerm = 40;//,FTMR1 = 1;
const unsigned int Time05SH = 0xB;
const unsigned int Time05SL = 0xDB;
const unsigned char CharArrey[12] = {0b00000011, 0b10011111, 0b00100101,\
0b00001101, 0b10011001, 0b01001001,\
0b01000001, 0b00011111, 0b00000001,\
0b00001001, 0b00111001, 0b11111111};
void LedOut(){
unsigned char i;
for (i = 0; i <=7u; i++){
FirstByte = FirstByte >>1;
if (STATUS.C == 1)
Data = 1;
else
Data = 0;
Clk = 1;
Clk = 0;
}
for (i = 0; i <=7u; i++){
SecondByte = SecondByte >> 1;
if (STATUS.C == 1)
Data = 1;
else
Data = 0;
Clk = 1;
Clk = 0;
}
Strob = 1;
Strob = 0;
}//~
void interrupt(){
static unsigned char i,j;
if (INTCON.T0IF == 1){
TMR0 = 96;
INTCON.T0IF = 0;
Flags.FTMR0=1;
if ((counter & 0b00010000) != 0)
counter = 0b10000000;
switch(counter){
case 0b10000000:{
if (i != 0)
SecondByte = (CharArrey[Seg1] & 0b11111110); //Гасим точку если показываем температуру
else
SecondByte = CharArrey[Seg1];
break;}
case 0b01000000:SecondByte = CharArrey[Seg2]; break;
case 0b00100000:SecondByte = CharArrey[Seg3]; break;
}
FirstByte = counter;
if (Flags.FOnTen == 1)
FirstByte = (FirstByte | 0b00000001);
counter = counter >> 1;
LedOut();}
else{
TMR1H = Time05SH;
TMR1L = Time05SL;
PIR1.TMR1IF = 0;
if (Button == 0){ //Переустанавливаем таймер если кнопка нажата
// Flags.FStop = 1;
Flags.FBeep = 0;
Minuts = 9;
DesSec = 5;
EdnSec = 10;
}
if (j==1){
j = 0;
if (((EdnSec || DesSec) || Minuts) != 0){ //Проверяем досчитал ли до нуля таймер
if (EdnSec == 0){
EdnSec = 9;
if (DesSec == 0){
DesSec = 5;
if (Minuts == 0)
Minuts = 9;
else
Minuts--;}
else
DesSec--;}
else
EdnSec--;
}
Seg1 = Minuts;
Seg2 = DesSec;
Seg3 = EdnSec;
i++;
if (i == TimeDispTemp){
i=0;
Seg1 = Seg10;
Seg2 = Seg20;
Seg3 = 0x0A;
}
}
else
j++;
}
}
void Beep(){
unsigned int k;
for (k=0;k<8000;k++){
BeepPin = ~BeepPin;
Delay_us(125);
}
}
void main() {
unsigned char i; //tmp0,tmpH;
OPTION_REG = 0b10000100; // assign prescaler to TMR0
TRISIO = 0b00010000; // designate gpio as output
GPIO = 0b00000000; // initialize gpio
// counter = 0; // initialize counter
TMR0 = 96;
counter = 0b10000000;
Data = 0;
Clk = 0;
Strob = 0;
BeepPin = 0;
TMR1H = Time05SH;
TMR1L = Time05SL;
T1CON = 0b00110001;
PIE1.TMR1IE = 1;
INTCON = 0b11100000; // enable TMRO interrupt
Minuts = 9;
DesSec = 5;
EdnSec = 10;
Beep();
do{
Flags.FTMR0 = 0;
do{}
while (Flags.FTMR0 != 1); //((Flags.FTMR0 != 1) && (Flags.FTMR1 != 1));
OW_Reset(DS);
OW_Write(DS,0xCC); // Issue command SKIP_ROM
OW_Write(DS,0x44); // Issue command CONVERT_T
Delay_us(1000);
Flags.FTMR0 = 0;
do{}
while (Flags.FTMR0 != 1); //((Flags.FTMR0 != 1) && (Flags.FTMR1 != 1));
OW_Reset(DS);
OW_Write(DS,0xCC); // Issue command SKIP_ROM
OW_Write(DS,0xBE); // Issue command READ_SCRATCHPAD
Flags.FTMR0 = 0;
do{}
while (Flags.FTMR0 != 1); //((Flags.FTMR0 != 1) && (Flags.FTMR1 != 1));
tmp0 = OW_Read(DS); // Get temperature LSB
tmpH = OW_Read(DS); // Get temperature MSB
tmpH = 0;
tmp0 = tmp0 / 2;
if (tmp0 >= TenOffTerm)
Flags.FOnTen = 0;
if (tmp0 < TenOnTerm)
Flags.FOnTen = 1;
while(tmp0 >= 10){
tmp0 = tmp0 - 10;
tmpH++;}
if (tmpH == 0)
Seg10 = 0x0B;
else
Seg10 = tmpH;
Seg20 = tmp0;
Delay_ms(1000);
if (((EdnSec || DesSec) || Minuts) == 0){
if (Flags.FBeep == 0){
Beep();
Flags.FBeep = 1;
}
}
} while(1);
}//~
Re: цифровая регулировка подогрева сидений в АВТО.
Добавлено: Вт дек 25, 2012 17:47:26
Soir
Antik писал(а):Можно например установить один датчик в салоне автомобиля в подходящем месте, а второй непосредственно в сиденье вмонтировать, или же обойтись только одним датчиком в сидении. Можно так же добавить регулировку (погрешность датчика) температуры кнопками. или изобразить нечто со светодиодными сегментами для наглядности работы устройства (например уровень мощности на данный момент времени подогрева)
Вы определитесь с алгоритмом и схемой, подобные устройства у меня есть. Трудно сразу найти, где-то здесь
http://radiokot.ru/forum/viewtopic.php? ... start=1540 плюс-минус пару страниц. И еще где-то выкладывал...
Принцип управления мощностью для переменного тока, но я переделаю под ШИМ, если Вам нужен ШИМ, или под реле если достаточно вкл/выкл... Там в теме все есть, найти тяжело...
Re: цифровая регулировка подогрева сидений в АВТО.
Добавлено: Ср дек 26, 2012 00:53:05
Antik
Спасибо, посмотрю тему.
Re: цифровая регулировка подогрева сидений в АВТО.
Добавлено: Ср дек 26, 2012 01:22:27
minakan
korsaj писал(а):Есть подобный проект (удерживает температтуру на 38-40 градусах)
Я так понял, там есть пищалка, кнопка, вероятно какой то индикатор, а датчик кто? Можно хоть от руки схему нарисовать?
Re: цифровая регулировка подогрева сидений в АВТО.
Добавлено: Ср дек 26, 2012 03:56:16
SfS
Antik писал(а):Да не к спеху, главное сам подогрев есть, но вот только ручками все время приходится его то включать то выключать.
Не приходится. Сел в холодную машину - включил. Как начало попу чуть греть - выключил. Далее обычно тепла тела хватает для поддержания комфортной температуры. Ну по крайней мере на моих авто - так. Даже то, что там два режима есть - "сильный" и "слабый" подогрев - не использую.
Ну может в какомто авто и не так. Не знаю.
Re: цифровая регулировка подогрева сидений в АВТО.
Добавлено: Ср дек 26, 2012 08:12:16
korsaj
Это схема таймера/терморегулятора с обратным отсчетом и датчиком DS18B20. Кнопкой переустанавливается время. На индикаторе показывает температуру и оставшееся время. По окончанию отсчета дает звуковой сигнал.
Из всего этого набора вам нужен только терморегулятор.
Re: цифровая регулировка подогрева сидений в АВТО.
Добавлено: Ср дек 26, 2012 11:30:58
Soir
Antik писал(а):Спасибо, посмотрю тему.
Подобрал наиболее подходящий вариант, отрезал лишнее... По сути это ПИД-регулятор, управление выходом - ШИМ.
Поскольку производились переделки, то нужно проверять, может что нужное оттяпал...
Во вложении проект в Proteus (это еще не схема, но собственно не хватает только выходной части), описание, прошивка.
Re: цифровая регулировка подогрева сидений в АВТО.
Добавлено: Чт дек 27, 2012 12:39:51
Antik
Вот блин, пока рылся в той огроменной теме, пока накидывал схему тут уже нашли за меня все
ув.
Soir, а возможно ли сделать так, как во вложении? Или Вашу версию доработать под два нагревателя с двумя датчиками.
Погонял в протеусе Ваш проект - изумительно

Но десятые градуса для меня будут лишними, хотя не знаю как на железе будет....
Накидал схемку управления двумя сиденьями.
Регулировку температуры достаточно упростить до целых градусов, десятые доли не столь заметны.
И еще возможно ли добавить полное отключение первого и\или второго нагревателя полностью? Например жмем
mode -> загорается
t1 -> жмем на
mode еще раз и удерживаем на 1-2 секунды, и нагреватель отключается полностью, а при повторной процедуре включался на ранее выставленную температуру? (в общем реализовать on\off)
Re: цифровая регулировка подогрева сидений в АВТО.
Добавлено: Чт дек 27, 2012 12:56:31
Soir
Antik писал(а):...а возможно ли сделать так, как во вложении? Накидал схемку управления двумя сиденьями.
Если регулировку сделать Вкл/Выкл, то не сложно. А вот ШИМ уже сложнее, переделывать придется практически все. Это в мои планы пока не входит.
Antik писал(а):Регулировку температуры достаточно упростить до целых градусов, десятые доли не столь заметны.
Это можно, правда и меню придется существенно переделывать.
Antik писал(а):И еще возможно ли добавить полное отключение первого и\или второго нагревателя полностью? Например жмем mode -> загорается t1 -> жмем на mode еще раз и удерживаем на 1-2 секунды, и нагреватель отключается полностью, а при повторной процедуре включался на ранее выставленную температуру? (в общем реализовать on\off)
В этом варианте есть ручное включение/отключение и регулирование. Правда только один канал.
Re: цифровая регулировка подогрева сидений в АВТО.
Добавлено: Чт дек 27, 2012 13:05:25
Antik
Soir писал(а):
В этом варианте есть ручное включение/отключение и регулирование. Правда только один канал.
Давайте сделаем на 2 датчика, без ШИМ, на 2 подогрева.
Re: цифровая регулировка подогрева сидений в АВТО.
Добавлено: Чт дек 27, 2012 13:50:41
Soir
Antik писал(а):Давайте сделаем на 2 датчика, без ШИМ, на 2 подогрева.
Такое тоже уже было... Поищу.
Re: цифровая регулировка подогрева сидений в АВТО.
Добавлено: Чт дек 27, 2012 15:25:39
Antik
Re: цифровая регулировка подогрева сидений в АВТО.
Добавлено: Чт дек 27, 2012 17:38:53
Soir
Antik писал(а):Soir, не оно случаем?
Не совсем... Вот более подходящее. Тут только нет принудительного включения/выключения. Если остальное подходит, я подумаю как его пристроить в меню.
Re: цифровая регулировка подогрева сидений в АВТО.
Добавлено: Чт дек 27, 2012 20:45:07
Antik
Вот это ДА!!! Ув. Soir, покрутив в протеусе Вашу версию - я в восторге

Это то, что мне нужно! пора воплотить на железе данный проект. Особенно понравилась настройка гистерезиса
Преогромнейшее спасибо!
Как сделаю - отпишусь обязательно!
Возможность вкл\выкл была бы не лишней

хотелось бы полностью избавиться от моих (сейчас установленных) громоздких выключателей обогрева.
Re: цифровая регулировка подогрева сидений в АВТО.
Добавлено: Чт дек 27, 2012 21:41:31
Soir
Antik писал(а):Возможность вкл\выкл была бы не лишней

хотелось бы полностью избавиться от моих (сейчас установленных) громоздких выключателей обогрева.
Я добавил, описание во вложении. Только погоняйте хотя бы в Proteus, мог и напутать... Да и попробуйте, будет ли так удобно управлять режимами, можете предложить свой вариант...