24 февраля 2022 года в 5 утра, без объявления войны, россия напала на Украину.

Они пришли "освобождать народ от нацистов и националистов".
С этого момента наша жизнь изменилась на "до" и "после".
Нас освобождают от наших домов, от наших любимых, от наших родителей и от наших детей....
Тут я не буду никого агитировать или переубеждать, разумный человек найдёт всю информацию
в интернете, а для зомби никакие доводы и факты не послужат аргументом.

Я не умею много писать, да и без мата тут сложно что-то написать.
Поэтому выражу все мои чувства одним фото.

«Спасибо дедушка путин за счастливое детство и мое освобождение». ©

Дополню словами уважаемого человека, широко известного в узких кругах:
тут путин не виноват, не он нажал на кнопку сброса,
- виноват пилот, который нажал на кнопку сброса, мог промахнуться. виноваты жена/мать/брат/друг пилота, которые не позвонили ему, и не сказали "нет войне",
- виноват тот, кто отдал приказ, и виноваты его жена/мать/брат/друг,
- виноват тот, кто цеплял бомбу, потому что он мог её обезвредить, "ну бывает, не сработала",
- виноват кладовщик, виноват водитель, который перевозил эту бомбу. виноваты жена...и т.д., потому что не позвонили и не сказали "нет войне, не вези бомбы",
- виноваты все журналисты оркостана, потому что они врут,
- виноваты недограждане, потому что не сказали журналистам "не врите",
- виноваты все... все 160 миллионов,
- а те 2, 3, 5 тысяч, которые вышли, и которых запаковали, это даже не десятая процента, это погрешность... случайно оказавшиеся в мордоре люди. ©

PS: За несколько часов до вторжения был атакован и взломан крупный интернет хостинг в Киеве, где и размещался мой сайт. Только 16 марта отважным админам удалось частично восстановить работу хостинга. Далеко не все сайты выжили, т.к. были повреждены даже бэкапы.
Нет, нет, я не жалуюсь, нет. В цифровом мире нет ничего ценного, материального...


Due to periodic DDoS attacks, the forum may not be available.

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

Здесь только проекты на ATtiny
Post Reply
User avatar
hardlock
Администратор
Posts: 4010
Joined: 21 Jan 2009 14:48
Location: Minsk - zp.ua
Contact:

Post by hardlock »

Для определения наличия вращения вентилятора, т.е. что он крутится и не заклинил. В софте закоментировано. На практике не проверял.
В первом же посте, прямо под схемой написано
Серым обозначена цепь, которая позволяет контролировать вращение вентилятора.
runy
Пробегал мимо
Posts: 13
Joined: 27 Jul 2016 23:26

Re:

Post by runy »

hardlock wrote: В софте закоментировано.
а это как понять, типо не работает? просто не силен в программировании
User avatar
hardlock
Администратор
Posts: 4010
Joined: 21 Jan 2009 14:48
Location: Minsk - zp.ua
Contact:

Post by hardlock »

Да, функция отключена, т.к. не тестировалась. Просто на плате предусмотрел возможность, но не использовал.
runy
Пробегал мимо
Posts: 13
Joined: 27 Jul 2016 23:26

Re:

Post by runy »

hardlock wrote:Да, функция отключена, т.к. не тестировалась.
а как ее включить?
User avatar
hardlock
Администратор
Posts: 4010
Joined: 21 Jan 2009 14:48
Location: Minsk - zp.ua
Contact:

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

Post by hardlock »

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

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

Code: Select all

    if (!FanStoped & PINB.1)
    { 
    Beep();
    }
runy
Пробегал мимо
Posts: 13
Joined: 27 Jul 2016 23:26

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

Post by runy »

hardlock, я читал первый пост! но если вы не заметили то я писал выше что не разбираюсь в программировании и слово ( закомментированы) мне не о чем не говорит. не могли бы вы выложить прошивку с уже включенными всеми функциями ? Спасибо!
User avatar
hardlock
Администратор
Posts: 4010
Joined: 21 Jan 2009 14:48
Location: Minsk - zp.ua
Contact:

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

Post by hardlock »

runy, скомпилировал.
Attachments
fan.rar
(1.22 KiB) Downloaded 338 times
runy
Пробегал мимо
Posts: 13
Joined: 27 Jul 2016 23:26

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

Post by runy »

Спасибо! я думаю что и другим не сильно подкованным в программировании радио любителям пригодиться при повторении вашей схемы
User avatar
hardlock
Администратор
Posts: 4010
Joined: 21 Jan 2009 14:48
Location: Minsk - zp.ua
Contact:

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

Post by hardlock »

runy, ещё никто не проверил эту функцию... Если так сложно убрать слеши в программе, то может стоит обратить внимание на схему на 2-х транзисторах, типа той, что применяют в блоках питания?
sch_tl431.GIF
sch_tl431.GIF (9.24 KiB) Viewed 7352 times
runy
Пробегал мимо
Posts: 13
Joined: 27 Jul 2016 23:26

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

Post by runy »

hardlock,я буду значит первым! о результатах отпишусь! убрать в программе мне не сложно!простоя не умею! вы выложили готовую схему с прошивкой, которую потом дорабатывали,так почему бы не выложить и готовые прошивки с этими доработками? просто если бы я разбирался в программировании то меня бы здесь не было и я бы вам не писал, а просто тупо взял бы и сделал прошивку под себя! если вы не хотите помогать форумчанам зачем тогда было создавать свой сайт? а похвастаться своими поделками можно было и на YouTube.
User avatar
hardlock
Администратор
Posts: 4010
Joined: 21 Jan 2009 14:48
Location: Minsk - zp.ua
Contact:

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

Post by hardlock »

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

ЗЫ: специально достал ноутбук, чтобы ответить.
runy
Пробегал мимо
Posts: 13
Joined: 27 Jul 2016 23:26

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

Post by runy »

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

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

Post by runy »

hardlock wrote:runy, ещё никто не проверил эту функцию... ]
проверил работает нормально когда вентилятор останавливаешь рукой пищит бузер. только почему то не постоянно а прерывисто! не подскажите почему?
User avatar
hardlock
Администратор
Posts: 4010
Joined: 21 Jan 2009 14:48
Location: Minsk - zp.ua
Contact:

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

Post by hardlock »

runy, да фуннция "Beep" выполнена очень не удачно - написал скорее для "заглушки" или для проверки, чем для реальной работы. Но так и не проверил (((
Получается каждую проверку датчика, если вентилятор стоит, то включаем порт пищалки, затем здержка 100мс, затем выключаем порт пищалки... Т.е. фактически писк 100мс, как и при перегреве. Если надо больше, то надо переделывать вобще, т.к. сильно увеличивать задержку нельзя.
runy
Пробегал мимо
Posts: 13
Joined: 27 Jul 2016 23:26

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

Post by runy »

Здравствуйте! подскажите собрал регулятор все работало отлично, но вот недавно зуммер начал выделываться включаю вентилятор набирает обороты и быстро сбрасывает все как и должно быть зуммер молчит но когда температура поднимается на максимум зуммер начинает пищать и дальше пищит постоянно даже когда температура падает до минимума короче пищит пока не снимешь питание со схемы при повторной подаче питания картина повторяется. все остальное работает как положено! и да чуть не забыл раньше зуммер при повышении температуры до максимума пищал прерывисто а теперь просто пищит постоянно!подскажите в чем может быть причина такого поведения зуммера?
User avatar
hardlock
Администратор
Posts: 4010
Joined: 21 Jan 2009 14:48
Location: Minsk - zp.ua
Contact:

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

Post by hardlock »

runy, т.к. я зумер вобще не применял то и по его поведению ничего не скажу. Попробуйте перепрошить дэвайс. Если будет возможность - поковыряю прошивку, может что увижу.
runy
Пробегал мимо
Posts: 13
Joined: 27 Jul 2016 23:26

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

Post by runy »

дело в том что работало все нормально и вдруг такое :shock: прошивки перепробовал все не помогло! может порт на на 7 ноге выделывается? хотя прошивается нормально и на температуру то же норм реагирует!
Sergey_202
Пробегал мимо
Posts: 12
Joined: 10 Nov 2016 11:55

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

Post by Sergey_202 »

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

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

Post by Sergey_202 »

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

добавил:

Code: Select all

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

Code: Select all

 //DDRB.1 = 1;   из-за переключения PB2 на PB1 (6нога)
  PORTB.1 = 0;
  delay_ms(100);
  PORTB.1 = 1;

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

Code: Select all

#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
Пробегал мимо
Posts: 12
Joined: 10 Nov 2016 11:55

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

Post by Sergey_202 »

Судя по всему надо добавить что то вроде этого:

Code: Select all

while (1)
        {    
          delay_ms(100);
          Q = read_adc(1);
          if (Q >= PB2)
          {
            PWM_ = 255;
            FanStoped = 0;
          }
        }
        //e4:

        FanStoped = 1;

        #asm("sei")
      }
но насколько правильно не знаю, наверное надо еще зациклить для постоянного слежения за изменением напряжения.
User avatar
hardlock
Администратор
Posts: 4010
Joined: 21 Jan 2009 14:48
Location: Minsk - zp.ua
Contact:

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

Post by hardlock »

Код похож на правду, кроме последней строки. Вместо цикла while поместите его в нужное место в обработчике таймера 0.
Sergey_202
Пробегал мимо
Posts: 12
Joined: 10 Nov 2016 11:55

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

Post by Sergey_202 »

Спасибо за ответ, подскажите куда его надо правильно вставить (что бы этот кусок гармонично смотрелся на фоне Вашего кода), по смыслу он должен быть главнее самого цикла регулирования после поиска напряжения равного 5вольтам надо проверять состояние PB2 и если оно меньше установленного то цикл работает по основному алгоритму, если больше то PWM=255 (то есть та часть которую я смог осилить). Подскажите как сделать индикацию неисправности датчика температуры, могу предложить только такой вариант:

Code: Select all

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
Пробегал мимо
Posts: 12
Joined: 10 Nov 2016 11:55

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

Post by Sergey_202 »

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

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

..и если не затруднит сразу сделайте:
T min PWM = 94
T max PWM = 101
minPWM = 15%
оказывается я не один такой, как же решить проблему?
alex-spb
Пробегал мимо
Posts: 14
Joined: 07 Nov 2015 21:35

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

Post by alex-spb »

Здравствуйте Все.Повторил проэкт-все ОК.Но сейчас хочу использовать часть схемы для другой нужды.Надо использовать ноги 5-6-7 как выходы на которых при достижении определенной темпиратуры будет лог."1"на 1 сек.Т.Е. +10С-5 нога-(1)-1сек. +14С-6 нога-(1)-1сек.+16С- 7 нога-(1)-1сек. Шим не нужен.В программировании не смыслю.Огромная просьба помочь сделать исхоник и ХЕКС. Заранее премного благодарен.
IYra
Живу тут
Posts: 712
Joined: 01 Feb 2012 18:36
Location: Санкт-Петербург

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

Post by IYra »

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