Обявления

Для полноценной работы рекомендуется пройти регистрацию.

Рекламные сообщения будут удаляться вместе с пользователем. Что есть реклама - буду решать я.

Регулятор 12V вентилятора на ATtiny13

Здесь только проекты на ATtiny

Сообщение hardlock » 28 июл 2016 03:01

Для определения наличия вращения вентилятора, т.е. что он крутится и не заклинил. В софте закоментировано. На практике не проверял.
В первом же посте, прямо под схемой написано
Серым обозначена цепь, которая позволяет контролировать вращение вентилятора.
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3360
Зарегистрирован: 21 янв 2009 15:48
Откуда: zp.ua

Re:

Сообщение runy » 28 июл 2016 10:03

hardlock писал(а): В софте закоментировано.
а это как понять, типо не работает? просто не силен в программировании
runy
Пробегал мимо
 
Сообщения: 10
Зарегистрирован: 27 июл 2016 23:26

Сообщение hardlock » 28 июл 2016 11:09

Да, функция отключена, т.к. не тестировалась. Просто на плате предусмотрел возможность, но не использовал.
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3360
Зарегистрирован: 21 янв 2009 15:48
Откуда: zp.ua

Re:

Сообщение runy » 28 июл 2016 15:50

hardlock писал(а):Да, функция отключена, т.к. не тестировалась.
а как ее включить?
runy
Пробегал мимо
 
Сообщения: 10
Зарегистрирован: 27 июл 2016 23:26

Re: Регулятор 12V вентилятора на ATtiny13

Сообщение hardlock » 29 июл 2016 13:48

runy, Вы первый пост читали? Цитирую:

В прошивке отключен контроль вращения вентилятора. Просто закомментированы следующие строки (97-100):

Код: Выделить всё
    if (!FanStoped & PINB.1)
    {
    Beep();
    }
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3360
Зарегистрирован: 21 янв 2009 15:48
Откуда: zp.ua

Re: Регулятор 12V вентилятора на ATtiny13

Сообщение runy » 29 июл 2016 14:47

hardlock, я читал первый пост! но если вы не заметили то я писал выше что не разбираюсь в программировании и слово ( закомментированы) мне не о чем не говорит. не могли бы вы выложить прошивку с уже включенными всеми функциями ? Спасибо!
runy
Пробегал мимо
 
Сообщения: 10
Зарегистрирован: 27 июл 2016 23:26

Re: Регулятор 12V вентилятора на ATtiny13

Сообщение hardlock » 30 июл 2016 16:11

runy, скомпилировал.
Вложения
fan.rar
(1.22 КБ) Скачиваний: 19
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3360
Зарегистрирован: 21 янв 2009 15:48
Откуда: zp.ua

Re: Регулятор 12V вентилятора на ATtiny13

Сообщение runy » 30 июл 2016 16:43

Спасибо! я думаю что и другим не сильно подкованным в программировании радио любителям пригодиться при повторении вашей схемы
runy
Пробегал мимо
 
Сообщения: 10
Зарегистрирован: 27 июл 2016 23:26

Re: Регулятор 12V вентилятора на ATtiny13

Сообщение hardlock » 30 июл 2016 17:09

runy, ещё никто не проверил эту функцию... Если так сложно убрать слеши в программе, то может стоит обратить внимание на схему на 2-х транзисторах, типа той, что применяют в блоках питания?
sch_tl431.GIF
sch_tl431.GIF (9.24 КБ) Просмотров: 438
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3360
Зарегистрирован: 21 янв 2009 15:48
Откуда: zp.ua

Re: Регулятор 12V вентилятора на ATtiny13

Сообщение runy » 30 июл 2016 20:31

hardlock,я буду значит первым! о результатах отпишусь! убрать в программе мне не сложно!простоя не умею! вы выложили готовую схему с прошивкой, которую потом дорабатывали,так почему бы не выложить и готовые прошивки с этими доработками? просто если бы я разбирался в программировании то меня бы здесь не было и я бы вам не писал, а просто тупо взял бы и сделал прошивку под себя! если вы не хотите помогать форумчанам зачем тогда было создавать свой сайт? а похвастаться своими поделками можно было и на YouTube.
runy
Пробегал мимо
 
Сообщения: 10
Зарегистрирован: 27 июл 2016 23:26

Re: Регулятор 12V вентилятора на ATtiny13

Сообщение hardlock » 30 июл 2016 21:34

runy,
1) прошивку не дорабатывал, а заложил возможность, которую так и не проверил. В прошивке она есть, просто закоментирована.
2) Обычно разбираться в программировании как раз и начинают с таких простых проектах, а вы даже тему прочитать не хотите - уже несколько раз поднимался этот вопрос и скомпилированая прошивка вроде была и инструкция как сделать тоже была.
3) когда создавался этот форум у меня была огромная куча свободного времени. Сейчас же я бОльшую часть постов читаю и отвечаю с телефона - банально нет времени - работа у меня не за компьютером.
4) своими поделками я не хвастаюсь, а БЕСПЛАТНО, без рекламы и СМС :-) делюсь со всеми пользователями интернета. К сожалению много проектов до сих пор не выложено, по озвученой в п. 3 причине. В замен лишь прошу потратить 0,5 - 1 час своего времени на прочтение темы, т.к. большинство вопросов уже обсудили.

ЗЫ: специально достал ноутбук, чтобы ответить.
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3360
Зарегистрирован: 21 янв 2009 15:48
Откуда: zp.ua

Re: Регулятор 12V вентилятора на ATtiny13

Сообщение runy » 30 июл 2016 22:36

hardlock писал(а):runy,
4) своими поделками я не хвастаюсь, а БЕСПЛАТНО, без рекламы и СМС :-) делюсь со всеми пользователями интернета. К сожалению много проектов до сих пор не выложено, по озвученой в п. 3 причине. В замен лишь прошу потратить 0,5 - 1 час своего времени на прочтение темы, т.к. большинство вопросов уже обсудили.
Большое вам за это спасибо!!! Я не хотел вас обидеть :drink: ! А тему я прочитал и не один раз , я видел где обсуждался этот вопрос даже потом сам читал в инете как это сделать! но так как я не разу не связывался с этими программами да еще и на английском :wall: . попробовав несколько рас переделать нечего не получилось, по этому и обратился к вам за помощью.
runy
Пробегал мимо
 
Сообщения: 10
Зарегистрирован: 27 июл 2016 23:26

Re: Регулятор 12V вентилятора на ATtiny13

Сообщение runy » 13 авг 2016 23:39

hardlock писал(а):runy, ещё никто не проверил эту функцию... ]

проверил работает нормально когда вентилятор останавливаешь рукой пищит бузер. только почему то не постоянно а прерывисто! не подскажите почему?
runy
Пробегал мимо
 
Сообщения: 10
Зарегистрирован: 27 июл 2016 23:26

Re: Регулятор 12V вентилятора на ATtiny13

Сообщение hardlock » 14 авг 2016 07:12

runy, да фуннция "Beep" выполнена очень не удачно - написал скорее для "заглушки" или для проверки, чем для реальной работы. Но так и не проверил (((
Получается каждую проверку датчика, если вентилятор стоит, то включаем порт пищалки, затем здержка 100мс, затем выключаем порт пищалки... Т.е. фактически писк 100мс, как и при перегреве. Если надо больше, то надо переделывать вобще, т.к. сильно увеличивать задержку нельзя.
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3360
Зарегистрирован: 21 янв 2009 15:48
Откуда: zp.ua

Re: Регулятор 12V вентилятора на ATtiny13

Сообщение runy » 27 авг 2016 22:02

Здравствуйте! подскажите собрал регулятор все работало отлично, но вот недавно зуммер начал выделываться включаю вентилятор набирает обороты и быстро сбрасывает все как и должно быть зуммер молчит но когда температура поднимается на максимум зуммер начинает пищать и дальше пищит постоянно даже когда температура падает до минимума короче пищит пока не снимешь питание со схемы при повторной подаче питания картина повторяется. все остальное работает как положено! и да чуть не забыл раньше зуммер при повышении температуры до максимума пищал прерывисто а теперь просто пищит постоянно!подскажите в чем может быть причина такого поведения зуммера?
runy
Пробегал мимо
 
Сообщения: 10
Зарегистрирован: 27 июл 2016 23:26

Re: Регулятор 12V вентилятора на ATtiny13

Сообщение hardlock » 27 авг 2016 22:40

runy, т.к. я зумер вобще не применял то и по его поведению ничего не скажу. Попробуйте перепрошить дэвайс. Если будет возможность - поковыряю прошивку, может что увижу.
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3360
Зарегистрирован: 21 янв 2009 15:48
Откуда: zp.ua

Re: Регулятор 12V вентилятора на ATtiny13

Сообщение runy » 28 авг 2016 08:14

дело в том что работало все нормально и вдруг такое :shock: прошивки перепробовал все не помогло! может порт на на 7 ноге выделывается? хотя прошивается нормально и на температуру то же норм реагирует!
runy
Пробегал мимо
 
Сообщения: 10
Зарегистрирован: 27 июл 2016 23:26

Re: Регулятор 12V вентилятора на ATtiny13

Сообщение Sergey_202 » 10 ноя 2016 15:28

Здравствуйте, помогите решить проблему: надо на 7 ноге Tiny 13 переконфигурировать порт на измерение напряжения (при напряжении равном или выше 3.3v надо что бы было pwm =255, независимо от измеряемой температуры), а сигнал превышения температуры перенести на 6ногу Tiny 13 сконфигурировав его на выход, так же если использовать светодиод вместо пищалки хотелось бы получить индикацию работы датчика температуры (если датчик неисправен или нет измерения то подается сигнал с частотой 0,5Гц). Для моих условий эксплуатации требуется независимое от регулировки температуры управление вентилятором, (то есть, вентилятор в штатном режиме эксплуатации работает по заложенному Вами алгоритму, а при наличии на PB2 (7нога) заданного напряжения, вентилятор включается на 100% ) помогите решить проблему я сам слаб очень в программировании и пока никак не осилю Ваши исходники для изменения под мои нужды, может еще кого мой вариант эксплуатации тоже заинтересует.
СПАСИБО.
Sergey_202
Пробегал мимо
 
Сообщения: 5
Зарегистрирован: 10 ноя 2016 12:55

Re: Регулятор 12V вентилятора на ATtiny13

Сообщение Sergey_202 » 19 ноя 2016 23:51

вот что смог осилить:

добавил:
Код: Выделить всё
#define PB2 0x01AA   для возможности корректировки значения входного напряжения на PB2 (7нога)

изменил :
Код: Выделить всё
//DDRB.1 = 1;   из-за переключения PB2 на PB1 (6нога)
  PORTB.1 = 0;
  delay_ms(100);
  PORTB.1 = 1;

PORTB=0b00000010;     переназначение портов
DDRB= 0b00000011;



Код: Выделить всё
#include <tiny13.h>
#include <delay.h>

// 1 Wire Bus functions
#asm
   .equ __w1_port=0x18 ;PORTB
   .equ __w1_bit=3
#endasm
#include <1wire.h>
#define ADC_VREF_TYPE 0x00

#define MIN_TEMP 30
#define MAX_TEMP 65
#define DT 35
#define U5V 0x014D
#define PB2 0x01AA

int PWM_ = 255;
char FanStoped = 1;
int counter = 0;
//eeprom int V;
//eeprom int D;// = 0;
/*eeprom*/ int Max;// = 0;
/*eeprom*/ int Min;// = 0;
char m;


// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}


void Beep(void)
{
  //DDRB.1 = 1;
  PORTB.1 = 0;
  delay_ms(100);
  PORTB.1 = 1;
}

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
  char t1, t2, T, dP;
  // Place your code here
  counter++;
  if (counter > 4700)
  {
    counter = 0;

    w1_init();
    w1_write(0xCC);
    w1_write(0xBE);

    t1=w1_read();   //LSB
    t2=w1_read();   //MSB
    //Ff = (t1 & 0x0F);
    t2 = t2 << 4;
    t1 = t1 >> 4;
    T = (t2 & 0xF0) | (t1 & 0x0F);

    w1_init();
    w1_write(0xCC);
    w1_write(0x44);


    /*
    if (!FanStoped & PINB.1)
    {
      Beep();
    }
    */

    if ((T >= MIN_TEMP) & (T <= MAX_TEMP))
    {

      if (FanStoped)
      {
        PWM_ = Max;
        FanStoped = 0;
        goto e1;
      }
      dP = Max - Min;
      T = T - MIN_TEMP;
      PWM_ = ((dP / DT) * T);
      PWM_ = PWM_ + Min;

      goto e1;
    }


    if (T < MIN_TEMP)
    {
      PWM_ = 0;
      FanStoped = 1;
    }

    if (T > MAX_TEMP)
    {
      PWM_ = 255;
      FanStoped = 0;
      Beep();
    }

    e1:
    OCR0A=PWM_;

  }

}

// Declare your global variables here

void main(void)
{
// Declare your local variables here
char i, j;
int U;
// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

//Разряд DDRx - определяет направление передачи данных (0 - вход, 1 - выход).
//Разряд PORTx - если вывод определен выходом (DDRx = 1), то:
//       если установлена 1 - то на выводе устанавливается лог. 1
//       если установлена 0 - то на выводе устанавливается лог. 0
//       если вывод определен входом (DDRx = 0), то PORTx - определяет
//       состояние подтягивающего резистора (при PORTx = 1 резистор подключен)
//Разряд PINx - доступен только для чтения и содержит физическое значение вывода порта

PORTB=0b00000010;
DDRB= 0b00000011;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 150,000 kHz
// Mode: Fast PWM top=FFh
// OC0A output: Non-Inverted PWM
// OC0B output: Disconnected
TCCR0A=0x83;
TCCR0B=0x02;
TCNT0=0x00;
OCR0A=0xFF;
OCR0B=0x00;

// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=0x00;
MCUCR=0x00;

// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x02;

// Analog Comparator initialization
// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00;

// ADC initialization
// ADC Clock frequency: 600,000 kHz
// ADC Bandgap Voltage Reference: Off
// ADC Auto Trigger Source: None
// Digital input buffers on ADC0: On, ADC1: On, ADC2: On, ADC3: Off, ADC4: On
DIDR0=0x00;
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x84;

// 1 Wire Bus initialization
w1_init();
w1_write(0xCC);
w1_write(0x44);

// Global enable interrupts
#asm("sei")



while (1)
      {
      // Place your code here
      if (Max==0)
      {
        #asm("cli")
        delay_ms(1000);

        Max = read_adc(2);

        j = 5;
        for (i=255; i>1; i=i-j)
        {
          OCR0A = i;
          delay_ms(500);
          U = read_adc(2);
          if ((U < Max - 10) /*& (j == 1)*/)
          {
            Max = i + 5;

            break;
          }
          /* if ((U < Max - 10) & (j > 1))
          {
            i = i + 10;
            OCR0A = i;
            delay_ms(500);
            j = 1;
          } */

        }
        //e3:

        for (i=Max; i>1; i--)
        {
          OCR0A = i;
          delay_ms(100);
          U = read_adc(2);
          if (U < U5V)
          {
            Min = i + 1;
            break;
          }
        }
        //e2:

        FanStoped = 1;

        #asm("sei")
      }

      };
}


По добавленному алгоритму работы должно быть:
PB2 назначить входом АЦП, измеряемое напряжение на входе АЦП сравнить с константой PB2 в условиях, и если измеренное значение равно или выше указанного то ШИМ должен работать на 100% независимо от измеряемой температуры.
Но этого мало хотелось бы добавить индикацию исправности датчика температуры (если неисправен, нет обмена данными) на PB1 сигнал 2 импульса с частотой 0.5 Гц и ШИМ должен работать на 50%, а сигнал превышения заданной температуры 1 импульс с частотой 0.5 Гц.
Как этот проект запустить в Протеусе, что бы можно было отладить?
Sergey_202
Пробегал мимо
 
Сообщения: 5
Зарегистрирован: 10 ноя 2016 12:55

Re: Регулятор 12V вентилятора на ATtiny13

Сообщение Sergey_202 » 24 ноя 2016 15:26

Судя по всему надо добавить что то вроде этого:
Код: Выделить всё
while (1)
        {   
          delay_ms(100);
          Q = read_adc(1);
          if (Q >= PB2)
          {
            PWM_ = 255;
            FanStoped = 0;
          }
        }
        //e4:

        FanStoped = 1;

        #asm("sei")
      }

но насколько правильно не знаю, наверное надо еще зациклить для постоянного слежения за изменением напряжения.
Sergey_202
Пробегал мимо
 
Сообщения: 5
Зарегистрирован: 10 ноя 2016 12:55

Re: Регулятор 12V вентилятора на ATtiny13

Сообщение hardlock » 24 ноя 2016 16:25

Код похож на правду, кроме последней строки. Вместо цикла while поместите его в нужное место в обработчике таймера 0.
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3360
Зарегистрирован: 21 янв 2009 15:48
Откуда: zp.ua

Re: Регулятор 12V вентилятора на ATtiny13

Сообщение Sergey_202 » 25 ноя 2016 12:54

Спасибо за ответ, подскажите куда его надо правильно вставить (что бы этот кусок гармонично смотрелся на фоне Вашего кода), по смыслу он должен быть главнее самого цикла регулирования после поиска напряжения равного 5вольтам надо проверять состояние PB2 и если оно меньше установленного то цикл работает по основному алгоритму, если больше то PWM=255 (то есть та часть которую я смог осилить). Подскажите как сделать индикацию неисправности датчика температуры, могу предложить только такой вариант:
Код: Выделить всё
void Beep2(void)
{
  //DDRB.1 = 1;
  PORTB.1 = 0;
  delay_ms(100);
  PORTB.1 = 1;
  delay_ms(100)
  PORTB.1 = 0;
  delay_ms(100);
  PORTB.1 = 1;
  delay_ms(200)
}



но это только индикация (сигнал 100ms, пауза 100ms, сигнал 100ms, пауза 200ms) цикл повторяется, а вот как это условие привязать к сбою измерения температуры.
Если я не ошибаюсь иначе трудно узнать работоспособность датчика температуры, (без значительного изменения температуры) только по меняющимся оборотам вентилятора, но это не правильно.
Sergey_202
Пробегал мимо
 
Сообщения: 5
Зарегистрирован: 10 ноя 2016 12:55

Re: Регулятор 12V вентилятора на ATtiny13

Сообщение Sergey_202 » 29 ноя 2016 11:58

Man писал(а):Здравствуйте!
Очень хороший проект. Спасибо!
Вот только не хватает возможности принудительно (A/C request) не зависимо от температуры включать вентилятор
на заранее установленную в программе скважность (25-35%) ..необходимо для охлаждения радиатора-конденсатора кондиционера

Соотв. прошу автора доработать программу таким образом
чтобы по 1 или 7 ноге низкий уровень активировал дополнительную нижнюю границу шима ..для начала пусть это будет 30%
и не мешал увеличению шим при дальнейшем росте температуры

..и если не затруднит сразу сделайте:
T min PWM = 94
T max PWM = 101
minPWM = 15%


оказывается я не один такой, как же решить проблему?
Sergey_202
Пробегал мимо
 
Сообщения: 5
Зарегистрирован: 10 ноя 2016 12:55

Re: Регулятор 12V вентилятора на ATtiny13

Сообщение alex-spb » 29 ноя 2016 16:38

Здравствуйте Все.Повторил проэкт-все ОК.Но сейчас хочу использовать часть схемы для другой нужды.Надо использовать ноги 5-6-7 как выходы на которых при достижении определенной темпиратуры будет лог."1"на 1 сек.Т.Е. +10С-5 нога-(1)-1сек. +14С-6 нога-(1)-1сек.+16С- 7 нога-(1)-1сек. Шим не нужен.В программировании не смыслю.Огромная просьба помочь сделать исхоник и ХЕКС. Заранее премного благодарен.
alex-spb
Пробегал мимо
 
Сообщения: 5
Зарегистрирован: 07 ноя 2015 22:35

Re: Регулятор 12V вентилятора на ATtiny13

Сообщение IYra » 30 ноя 2016 17:40

alex-spb писал(а):Надо использовать ноги 5-6-7 как выходы на которых при достижении определенной темпиратуры будет лог."1"на 1 сек.Т.Е. +10С-5 нога-(1)-1сек. +14С-6 нога-(1)-1сек.+16С- 7 нога-(1)-1сек.

Это при росте температуры. А какая логика при спаде ?
IYra
Живу тут
 
Сообщения: 531
Зарегистрирован: 01 фев 2012 19:36
Откуда: Санкт-Петербург

Пред.След.

Вернуться в ATtiny



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5