Архів категорії: Схемотехніка

ГБО-2 на ВАЗ 2107і без датчика масової витрати повітря

На моїй машині був поламаний датчика масової витрати повітря (скор. ДМРВ), тому я їздив раніше без нього. І на бензині і на газу метан машина якось їздила. Але коли я встановив пропан – з’явилися дуже перевищенні оберти на холостому ходу, до 2500 наприклад.

Дослідження встановило, що мозок авто дуже сильно відкривав канал для подачі повітря холостого ходу за допомогою регулятора холостого ходу (скор. РХХ). Це значення становило 70-80 кроків.

При цьому збільшувалося розрідження і газовий редуктор видавав більше газу, внаслідок чого були підвищені оберти.

Регулювання настройок редуктора призводили до єдиного результату – або 2000 обертів, або двигун заглохав.

При значенні кроків РХХ в районі 20 – були припустимі оберти двигуна – 950-1000. Тому я задумав “перехопити” управління РХХ, я хотів встановлювати його на 20 кроків при переході на газ, а на бензині мозок авто управляв ним.

Для цього були проведені значні дослідження із застосуванням мікроконтроллера ATmega8, а також комп’ютерної техніки.

Відмінності від карбюраторного двигуна.

Справа в тому, що ГБО-2 – це є газовий карбюратор. Оберти двигуна на карбюраторному двигуні виставляються двома факторми:

  1. Розрідженням у впускному колекторі (управляється положенням дросельної заслонки правою ногою)
  2. Кутом випередження запалювання, який залежить напряму від обертів двигуна.

А от інжектор управляє і розрідженням і кутом як йому заманеться. Тому були проведені певні тести, які показали, що дуже часто мозок авто управляє оборотами за допомогою кута випередження іскри.

В результаті перехоплення управління РХХ нічого б не дало, і можливо спочатку авто мало б прийнятні оберти холостого ходу, а пізніше після “самонавчання” вони б ставали перевищені. Тому даний проекто я похоронив.

Для вирішення проблеми я просто купив аналог ДМРВ для даної моделі авто і встановив його. У результаті все працює, лінк на статтю про це

Також хочу сказати, що я побоююсь недовговічності ДМРВ, враховуючи його високу ціну (так званий оригінал 3000 грн, капія-заміна 800 грн), тому задумував цей проект.

Деякі результати проведених наукових досліджень для цього проекту

Для початку перехоплення я підключився до проводів управління РХХ. Спочатку ненароком їх замкнув, на що мозок авто видав помилку (нічого не згоріло). Мозок посилає деякі сигнали для руху крокового двигуна в ту чи іншу сторону. Сигнали мають певний період в часі.

Несподіванкою виявилося те, що невідомо як мозок авто знаходить нульову крапку в кроках двигуна РХХ. Перед цим я читав на форумах в інтернеті, що при увімкненні запалювання мозок повністю закриває канал, висовуючи шток РХХ на максимум в упор – це і є нульова позиція кроків. Потім відводить шток на 20 кроків, наприклад.

Мій же мозок Bosch M7.9.7, наче запам’ятовує позицію РХХ перед тим як я виключив запалювання. Можливо якщо зняти акумуляторну клему, то мозок би шукав “нуль”.

Чому треба шукати нуль? Наприклад я встановлював новий РХХ замість старого. Якщо у нових виставлено 20 кроків, а старий а зняв з виставленими 40 кроками – то як система запрацює справно?

Це все ще загадка для мене.

Для дослідження сигналів я використовував оптопару з сучасних блоків живлення (напр. до телефонів). Оптопара давала сигнал на мікроконтроллер, який зчитував момент зміни і записував час в мілісекундах в масив. Ось приклад результатів:

80 кроків після запуску  (скоріш всього він не шукає 0)
A = x      B = Y

mBan > fval: 1
86,
106,
114,
121,
130,
138,
145,
154,
162

ввів з 80 до 90 кроків

mBan > fval: 1
22
12699
12707
12714
12723
12731

ввів з 90 на 80

mBan > fval: 1
9878
9888
9898
9908
9918


ввів з 82 до 92

mBan > fval: 1
3120
3128
3136
3143
3152


було 82 увів 0

mBan > fval: 1
9346
9355
9366
9375
9385
9396
9406
9416
9426
9436
9447
9457
9467
9476
9487
9496
9506
9517
9527
9537
9547
9557
9567
9576
9587
9596
9606
9618
9628
9638
9648
9658
9668
9678
9688
9697
9707
9718
9728
9738
9748


Коли позиція РХХ фіксована, програма постійно видає струм на РХХ, тому я бачу 22 мілісекунди

було 82 увів 142

mBan > fval: 1
6385
6393
6401
6408
6417
6425
6432
6441
6449
6457
6465
6472
6481
6489
6496
6505
6513
6521
6530
6538
6545
6554
6562
6570
6578
6585
6594
6602
6609
6618


було 83 ввів 86

mBan > fval: 1
7302
7310

Менше 3х кроків бачу тільки один сигнал

Певні кроки тримаються постійно підключеним  струмом на обмотку, наприклад 84

92, 93 є струм на обмотку
94 95 нема
96 97 є
0 1 є
2 3  нема
4 5 є
6 7 нема



-===-=-=-=-=-=-=-===-=--=-=-=---=-

A = Y     B = X

Було десь 6, стало 83 приблизно, це просто для інтервалів
mBan > fval: 1
86
109
118
126
133
142
151
158
167
175
182
191
199
207
215
222
231
239
246
255
263
270
279
287
295
304
312
319
328
336
344
352
359
368
376
383
392
400
407
416


0 1 нема струму
2 3 є 

і так далі

82 ввів 92

mBan > fval: 1
22
8430
8437
8446
8454
8461


86  ввів 96

mBan > fval: 1
22
6329
6336
6345
6353
6361


82 увів 0

mBan > fval: 1
22
5164
5174
5184
5194
5204
5214
5223
5233
5244
5253
5264
5274
5285
5295
5305
5315
5324
5335
5344
5354
5365
5375
5385
5395
5405
5415
5424
5435
5445
5455
5466
5476
5486
5496
5506
5516
5526
5536
5545
5555
5566


90  ввів 80

mBan > fval: 1
22
5290
5301
5310
5320
5331


Ноутбуком виставляю 0 і вимикаю запалювання. потім увімкну

було 87 кроків

mBan > fval: 1
110
118
126
133
142
151
158
167
175
182
191
199
207
215
222
231
239
246
255
263
270
279
288
295
304
312
319
328
336
344
352
359
368
376
383
392
400
408
416
425
433
441
448


-===-=-=-=-=-=-=-===-=--=-=-=---=-


A = X

Ноутбуком виставляю 0 і вимикаю запалювання. потім увімкну

було 87 кроків

mBan > fval: 1
86
109
118
126
133
143
151
158
167
175
183
191
198
207
215
222
231
239
246
255
263
271
279
286
295
304
312
320
328
335
344
352
359
368
376
384
392
399
408
416
423
432
440
448
457

Для отримання графіків сигналів, я модифікував результати досліджень за допомогою не хитрих програм і згодував ці дані певним сайтам, які будують математичні графіки. Ось результати:

5-10ms 80Hz
16-36ms
27-42ms

Ось такі маємо результати. Вони не повні і не мають закінченого висновку, тому що проект було закопано в могилу. Але добре те, що вдалося зчитати імпульси за допомогою контроллера – а це можна використати для іншого важливого проекту – зчитування імпульсів від інфрачервоних пультів ДУ для їх клонування. Це важливо для мене, тому що в мене є акустична система 5.1 BBK з пультом RC-05. Ніяких органів управління, крім пульта – немає. Без цього маленького пульта вся система не працюватиме взагалі.

Електронні схеми в інтернеті

Вам мабуть не цікаво, чому я зацікавився розробкою схем із самих низів – з дискретних елементів як от транзистори, резистори. А я всеодно напишу чому!

В молодості я пару раз хотів зібрати деякі схеми, наприклад підсилювач мікрофону, металошукач і інше. Але після збірки схема не працює. Відлагодити її не є можливим, тому що невідомо за яким принципом працює схема, як її розраховували і т.д.

Взагалі я вважаю схеми в інтернеті в великій більшості є неправильними. І ось цьому доказ. Знаходимо сайт через пошук Гугл “Три схемы УНЧ для новичков”, заходимо на сайт https://cxem.net/sound/amps/amp169.php

Там бачимо якісь схеми, все так гарно і легко, багато хто купився і зібрав ці схеми. Тепер читаємо відгуки!

Я вважаю, що якщо схема викладена в інтернеті, має бути такий підпис:

Я, Іванов Іван Іванович, інженер-конструктор на заводі Промислового Обладнання міста Іванов, розробив цю схему в 2005 році, зібрав її на платі, перевірив роботу при температурі 7 градусів в холодильнику і влітку в закритій машині при температурі +38 градусів, а також при кімнатній температурі. Все працює. Додаю відео з Youtube, де знімаю, що все працює.

ось такій схемі можна довіряти

На практиці ми заходимо на якийсь сайт схем, де намальовані певні принципові електронні схеми – невідомо, хто їх розробив, хто перевірив. Може це студент на парі грався і складав транзистор до резистора і виставив в інтернет.

То як, ви ще вірите схемам в інтернеті і збираєте їх навмання ? Я – ні.

Зменшення коефіціенту підсилення. Зворотній негативний зв’язок

Дана стаття є експериментом для доповнення статті Коефіціент підсилення. Gain. На транзисторі. В тій статті було висунуте припущення про можливість зменшення коефіцієнту підсилення (Gain) у підсилювачі зі спільним емітером біполярного транзистора, а в даній статті те припущення перевірене і підтверджене. Для зменшення Gain викоритовується Negative feedback, який складається з резистора і конденсатора. На схемі вони позначені як Rnf i Cnf

Ось схема експерименту:

RnfCnfUin (V)Uout (V)Gain
00.1u0.030.4515
00.5u0.030.031
01u0.030.155
2.2k 1u 0.03 0.062
7.7k 1u 0.03 0.26.6
12.5k 1u 0.03 0.310
28k 1u 0.03 0.5618.6
2.2k 1u 122

Таким чином ми бачимо, що ставлячи конденсатор в 1 мікрофарад і підбираючи резистор в кілоомах можна добитися необхідного зменшеного підсилення.

Як розрахувати параметри цих двох деталей невідомо, але дуже просто можна підібрати, в разі необхідності.

Arduino UNO. Чергове оновлення функціоналу

При використанні душу на дачі за рік сталася біда – забились якісь труби. Відповідно напір води став менший, а проточний нагрівач все ще гріє сильно як і рік тому назад. Тому вода стає дуже гаряча, і всередині нагрівача спрацьовує запобіжник від перегріву. Він приблизно стпрацьовує при 48-50 градусах Цельсія.

Потім нагрів відключається і йде прохолодна вода – “літньої” температури. Через 30 секунд нагрів включається і все повторюється.

Щоб побороти дане неподобство я вирішив ввести новий функціонал в Arduino UNO – максимальну температуру нагріву. Для цього впаяв іще один світлодіод і 3 саморобні “кпопки”. При перевищенні допустимого максимуму ткмператури нагрів відключається, вмикається червоне світло. Кнопками можна виставити бажану максимальну температуру.

Ось що роблять кнопки

  1. Збільшити t на 1 градус
  2. Показати t на моніторі
  3. Зменшити t на 1 градус

Максимальна температура зберігається в енергонезалежній пам’яті EEPROM. Тобто виставлена температура збережеться і після відключення всіх приладів. Щож, публікую код:

#include <EEPROM.h>

#define SERIAL_R 49000 // сопротивление последовательного резистора, 49 кОм
#define B 3950 // B-коэффициент
#define THERMISTOR_R 50000 // номинальное сопротивления термистора, 50 кОм
#define NOMINAL_T 25 // номинальная температура (при которой TR = 100 кОм)
#define MANUAL_CORRECTION 0 // РУЧНА КОРЕКЦІЯ температури на виході
const byte tempPin = A0;
int waterFlowNormal, minimumWaterFlow, TC2_OVF;
int afterReset = 0;
int heatOff = 7;
int heatOn = 4;
int transistor = 8;
int overHeat = 9;
int readVal;
bool settingsMaxTempMode = false;
int currentTemperature;

void setup() {
  // put your setup code here, to run once:
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(overHeat, OUTPUT);
  pinMode(transistor, OUTPUT);
  pinMode(5, INPUT_PULLUP);
  pinMode(10, INPUT_PULLUP);
  pinMode(11, INPUT_PULLUP);
  pinMode(12, INPUT_PULLUP);

  // set EEPROM cell for first time, or make it normal value
  byte val;
  val = EEPROM[0];
  if (val > 80) {
    EEPROM[0] = 43;
  }
  if (val < 10) {
    EEPROM[0] = 43;
  }
  
  // timer2 setup from https://www.teachmemicro.com/arduino-timer-interrupt-tutorial/
  TIMSK2 = (TIMSK2 & B11111110) | 0x01;
  TCCR2B = (TCCR2B & B11111000) | 0x07;
  // Timer/Counter 1 initialization
  // Clock source: T1 pin Rising Edge
  // Mode: Normal top=0xFFFF
  // OC1A output: Disconnected
  // OC1B output: Disconnected
  // Noise Canceler: On
  // Input Capture on Rising Edge
  // Timer1 Overflow Interrupt: Off
  // Input Capture Interrupt: Off
  // Compare A Match Interrupt: Off
  // Compare B Match Interrupt: Off
  TCCR1A = (0 << COM1A1) | (0 << COM1A0) | (0 << COM1B1) | (0 << COM1B0) | (0 << WGM11) | (0 << WGM10);
  TCCR1B = (1 << ICNC1) | (1 << ICES1) | (0 << WGM13) | (0 << WGM12) | (1 << CS12) | (1 << CS11) | (1 << CS10);
  TCNT1H = 0x00;
  TCNT1L = 0x00;
  ICR1H = 0x00;
  ICR1L = 0x00;
  OCR1AH = 0x00;
  OCR1AL = 0x00;
  OCR1BH = 0x00;
  OCR1BL = 0x00;
  minimumWaterFlow = 1;
  Serial.begin( 9600 );
  pinMode( tempPin, INPUT );
}

ISR(TIMER2_OVF_vect) {
  TC2_OVF++;
  if (TC2_OVF > 30) { // 30 is 10 LED togles in 19 seconds
    TC2_OVF = 0;
    // Toggle LED
    digitalWrite( 2, digitalRead( 2 ) ^ 1 );
    // now thermistor logic
    int t = analogRead( tempPin );
    float tr = 1023.0 / t - 1;
    tr = SERIAL_R / tr;
    float steinhart;
    steinhart = tr / THERMISTOR_R; // (R/Ro)
    steinhart = log(steinhart); // ln(R/Ro)
    steinhart /= B; // 1/B * ln(R/Ro)
    steinhart += 1.0 / (NOMINAL_T + 273.15); // + (1/To)
    steinhart = 1.0 / steinhart; // Invert
    steinhart -= 273.15; 
    int rxresult = (int)steinhart + MANUAL_CORRECTION;
    currentTemperature = rxresult;
    if (settingsMaxTempMode) {
      byte val;
      val = EEPROM[0];
      Serial.println(val);
    } else {
      if (rxresult < -22) {
        Serial.println("ER");
      } else {
        Serial.println(rxresult);
      }
    }

    if (afterReset < 100) {
      afterReset++;
    }
    //code for timer counting impulses
    if ( TIFR1 & (1 << TOV1 )) { // if it has been overflow
      waterFlowNormal = 1;  // because overflow means in was more than 65535 tics (real test leads from ~5 to ~30)
      TIFR1 = (1 << TOV1 ); // clear the flag of overflow
    }
    else {
      if ((short int)TCNT1 > minimumWaterFlow) {
        waterFlowNormal = 1;
      }
      else {
        waterFlowNormal = 0;
      }
    }
    TCNT1 = 0;  // clear in any case
  }
}

void loop() {
  if (afterReset < 6) {
    digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
    delay(70);
    digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
    delay(60);
  } else {
    digitalWrite(LED_BUILTIN, LOW);
  }  
  
  byte maxTemperature = EEPROM[0];
  if ((waterFlowNormal == 1) and (currentTemperature <= maxTemperature)) {
    digitalWrite(heatOff, LOW);
    digitalWrite(heatOn, HIGH);
    digitalWrite(transistor, HIGH);
  }
  else {
    digitalWrite(heatOff, HIGH);
    digitalWrite(heatOn, LOW);
    digitalWrite(transistor, LOW);
  }
  if (currentTemperature > maxTemperature) {
    digitalWrite(overHeat, true);
  } else {
    digitalWrite(overHeat, false);
  }
  
  // Button Set Max Temp Minus 1
  readVal = digitalRead(10);
  if (readVal) {
    digitalWrite(overHeat, false);
  }
  else {
    // button pressed
    digitalWrite(overHeat, true);
    byte val;
    val = EEPROM[0];
    EEPROM[0] = val - 1;
    delay(400);
  }
    
  // Button Set Max Temp Plus 1
  readVal = digitalRead(12);
  if (readVal) {
    digitalWrite(overHeat, false);
  }
  else {
    // button pressed
    digitalWrite(overHeat, true);
    byte val;
    val = EEPROM[0];
    EEPROM[0] = val + 1;
    delay(400);
  }

   // Button Read Max Temp To UART
  readVal = digitalRead(11);
  if (readVal) {
    digitalWrite(overHeat, false);
    settingsMaxTempMode = false;
  }
  else {
    // button pressed
    digitalWrite(overHeat, true);
    settingsMaxTempMode = true;
    delay(400);
  }
}

Тести проводив “програмно”, так як код пишу в м. Полтава, а сама установка нагріву і душ знаходяться в будинку в селі Черкасівка. Надіюсь що я не помилився і зможу приймати душ, хоч із зменшеним напором води, але із стабільною температурою (реле буде швидко клацати і підтримувати температуру в межах +/- 1 C). До того ж – це економія електроенергії – зменшений потік води, нагрів включається і виключається. Сусідам не позаздриш – так як 5.5 кВт навантаження спричинятиме поблимування їх неекономних лампочок.

Амплітудна модуляція на практиці

Читаючи статті в інтернеті, стає зрозуміло, що сигнал після амплітудної модуляції повинен виглядати так.

Дійсно виглядає гарно, але як на практиці отримати такий сигнал? Я зміг його отримати за допомогою схеми модуляції на трансформаторі і діоді (на малюнку нижче). Але така схема зменшила подані в неї сигнали в 100 раз. Зі зменшенням амплітуди вихідного сигналу перешкоди стають дуже видимими, тому навіть якщо і підсилити цей сигнал – то вийде суміш корисного сигналу і перешкод.

Тому я вирішив перейти до схеми модуляції на транзисторі. В інтернеті я знайшов тільки одну неробочу схему, які різні користувачі описують і симулюють її в невідомій мені програмі, як я зрозумів її ніхто не паяв і не перевіряв. В симуляторі LTSpice вона також не працює як треба.

Схема, яку копіюють в забугорному інтернеті. В симуляторі LTSpice не видає амплітудної модуляції.

Складається таке враження що взагалі ніхто не збирав реального амплітудного модулятора вдома.

До речі. Коли я бачу схему якогось жучка на 3х деталях – я відразу ж її забраковую. Бо я гарантую, що при збірці вона не запуститься. Як мінімум там немає температурної стабілізації – тобто можливо у радіолюбителя +18 градусів у сараї було, коли він оте паяв, а ти збереш при +25 у квартирі – і не працюватиме. Таке мене не цікавить. Мене цікавить схема, яка пояснюється науково і для якої деталі розраховуються по формулах.

Єдине що я зміг досягти на транзисторі – це ось такий сигнал:

Дійсно, він передається і приймається радіоприймачем, але сигнал спотворений. Одна з його половин зрізана буде при демодуляції – щось там буде чути в динамік, але неякісна передача нас теж не повинна цікавити. Тому я бачу єдиний вихід – підсилювати сигнали з генераторів до значних напруг, наприклад 22 вольта, подавати все це в трансформаторний модулятор. На виході отримаємо більш-менш чистий сигнал, який теж підсилимо до 22 вольт. Заодно висока напруга призведе до передачі радіосигналу на більшу відстань.

Розпізнав транзистор за допомогою форуму

Є у мене невідомий транзистор з 4ма ногами. Що воно таке я не знав, тому сфотографував, виміряв тестером і вирішив спитати на форумах. Знайшов через пошук найбільш адекватний форум по електроніці і створив там тему. Люди розпізнали що то транзистор КП327Б – польовий МОП-транзистор (N-Channel MOSFET) з двома затворами і діодами, без них він би згорів від статики пальців. Застосовується в підсилювачах дециметрового діапазона в телевізійній техніці. Дуже вузькоспеціалізована деталь.

Ось посилання на datasheet http://www.quartz1.com/price/PIC/415N0142216.pdf
Ось посилання на форум http://www.tehnari.ru/f117/t267555/
Ось посилання на схему http://rfanat.ru/s5/rst_102.html

Є ідеї, що зробити з цього транзистора?

Коефіціент підсилення. Gain. На транзисторі

Повертаючись до схеми підсилювача на біполярному транзисторі з спільним емітером, про яку я писав раніше, хотілось би розглянути цікаві питання коефіцієнта підсилення (англійською Gain). Розглянувши формули, мені стало зрозуміло, що фактично Gain не залежить від характеристики b (hFE) транзистора, про це так і писав Хоровіц. Все тому що b (hFE) не є статичною і змінюється від транзистора до транзистора.

Також, використовуючи пораду з книги Хоровіца і Хілла, резистор емітера має бути в 10 разів менший за резистор колектора. Саме це спричинює те, що мінімальний Gain каскаду стає рівним приблизно 10. Формула виглядає так Gain = Rc / (25 + Re); Re = 0.1Rc. Враховуючи, що резистор колектора приймає значення такі як 12500 (Ом) наприклад, опір в 25 (Ом) практично нічого не вирішує. При Rc = 12500, Gain = 9,8.

Надійна схема підсилювача зі спільним емітером.

Таким чином файл розрахунків даної схеми в Екселі дає такі, незвичні результати. Коли ми виставляємо Gain менше 10, то резистор R3 і його конденсатор приймають від’ємне значення. Це значить що ці деталі не треба впаювати і вони не зможуть забезпечити менше підсилення. А от коли ми виставляємо Gain рівний 10, то резистор R3 приймає занадто велике значення, наприклад 60 кОм. Це означає що схема буде працювати і без цих 2х деталей.

Симулятор видає підсиленя в 10 разів. Це вірна схема.

В симуляторі підтверджено, що для зменшення Gain менше 10 можна використовувати негативний зворотній зв’язок, наприклад конденсатор 0,1 мкФ і резистор 15к. Таким чином можна дійти і до підсилення в 2 рази. Проблема в тому, що немає формул для розрахунку цих деталей.

Симулятор видає підсиленя в 2 раз. Резистором можна плавно регулювати. Думаю це реально, але треба перевірити. 18.02.2021 перевірено! Все працює.

Також залишається відкритим питання максимального рівня підсилення. Недавно при збірці підсилювача я зміг дійти до Gain = 37, і то сигнал почав спотворюватись і використовувався транзистор з високим b (hFE) = 450 (BC547C). Симулятор видає коефіцієнти в 400 при замиканні Re великим конденсатором в 1000 мкФ, але чи на практиці це реально не знаю. Я б рекомендував брати реальний Gain до 25, і якщо треба ставити наступний каскад підсилення. 25 * 25 = 625, що є багато.

Симулятор видає підсиленя в 400 разів. Це утопія, але треба перевірити.
Транзистор BC547C

Часы реального времени с AliExpress

Решил приобрести для своего личного проекта часы реального времени. Я знал что в китайском интернет-магазине такая плата должна быть. Воспользовавшись поиском я выбрал себе подходящий модуль. В основном он содержить микросхему-чип DS1302 1649C2 +163AN и кварцевый резонатор на “часовую частоту” – 32.768 кГц (кто не знал). Так же на плате установлено гнездо для обычной 3х вольтовой батарейки – таблетки, схожей на ту, что устанавливается в каждый системный блок персонального компьютера для тех же целей.

Модуль сам имеет название RTC Module и на нем есть штекерные выходы с такими названиями: VCC, GND, CLK, DAT, RST. Чтобы использовать модуль, нужно с помощью микроконтроллера подключиться к нему и узнавать время. Так же нужно это время установить.

Вообще-то можно использовать и микроконтроллер с часовым кварцом для реализоции подобный часов. Но тут скрывается только одно самое главное преимущество чипа DS1302 – это сверх малый ток потребления. На батарейке часы будут работать более одного года. Таким образом ваш проект может иметь перебои в электропитании, но после подачи источника тока он получит точное время от модуля, который работал от батарейки.

Фото модуля реального времени DS1302

Цель покупки модуля реального времени DS1302 с AliExpress

Мой проект, для которого я решил купить данный модуль весьма правильный и серйозный. Так как я имею дом в деревне, я испытываю трудности в выращивании сельскохозяйственной продукции – через малое количесво дождей. Таким образом полив становится неотлемьемым залогом успеха в данном дачном деле. Так как я не проживаю на селе постоянно я решил, что нужно поливать огород по времени, например каждый вечер по несколько десятков минут. Для этого нужно точное время, которое не собьется при исчезновении электричества переменного тока 220 вольт. Для этого и был куплен этот модуль. Но реальзация проекта задерживается, уже на один год как. И сам модуль еще даже не проверен.

Если же вы представляете более серйозный проект по реализации часов – то вам наврятли подойдеть копеечные китайские поделки. Ван жужно обратить внимание на цп 2 хронотрон , на сайте которого можно выбрать сертифицированные профессиональные первичные часы с несколькими резервными источниками питания. Конечно цена отличается в разы, но и качество тоже.

Для реализации своей затеи я хочу использовать микроконтроллер с реле на 5В, а так же датчик “сухого хода”, чтобы не спалить насос. Но датчик сухого хода по сути правильно может работать только в системе повышения давления – когда в квартире слабой напор воды, насосом его поднимают. По-этому придется “обрабатывать” данные с датчика сухого хода програмно-цифровым методом. Учитывая тот факт, что внутри датчика “сухого хода” стоит геркон и двусторонний симистор придется сделать вывод – раскурочить плату симистора или подстроится под напряжение 220 вольт – например можно подключить импульсный блок питания на 220в – > 5 в, и подать сигнал на вход микроконтроллера. Конечно это извращение, но в некоторых проектах такой подход уже работает, тем более что излишних блоков питания валом, например от зарядок Nokia.

Генератор на LM358 (зсув фаз)

Я вирішив розпочати викладати в інтернет всі свої збірки електронних пристроїв і плат. Можливо деякі з них будуть: працюючі, наполовину робочі, неробочі. Я думаю додавати до кожного запису фотографію, бо так набагато цікавіше.

Цього разу я познайомлю вас, своїх читачів, з генератором синусоїдальних коливань на 431 Гц. Звісно точність цієї частоти умовна, тому що по-перше сигнал має невеликі відхилення від синусоїди, а по-друге точно виміряти нічим.

Так як це звукова частота, то я також провів вимірювання частоти на “слух” пристрою “Андроїд смартфон” за допомогою програми Keuwlsoft Audio frequency counter. Він видав результат 431 Герц. А от якщо рахувати по формулі зсуву фаз, то мало б бути 442 Гц.

Взагалі схема працює гарно, але тільки при певному діапазоні напруги живлення, що дуже бісить. При напрузі більше 7 вольт коливання затухають повністю. А при напрузі живлення 4,78 вольт маємо амплітуду коливань 0,04 вольт.

Фотографії практичної реалізації генератора на LM358 по схемі зсуву фаз

Передня сторона
Зворотня сторона

Як ви розумієте, генератор використовує тільки половинку чіпа операційного підсилювача LM358. Саме тому я дошив іще одну макетну плату, щоб зібрати на іншій половинці інтегрального чіпа підсилювач вихідного сигналу. Коли це буде зроблено – я не знаю, як кажуть коли рак на горі свисне.

Конструювання розміщення елементів проводив в DipTrace, а потім паяв на макетній платі “на глаз”. А ось і принципова схема даного пристрою:

Якщо хтось з читачів має великий досвід, хотілось би отримати відповіді на такі питання:

  • Чому коливання затухають вище 7 вольт?
  • Чи реально генерувати частоту порядку 1 МГц на такій схемі?

Простая цифровоя индикация из мик-ра

В этом посте я хотел бы поднять вопрос о различных способах вывода цифровых данных из микроконтроллера на глаз пользователя. Вот сейчас у меня стоит задача вывести температуру из Arduino UNO на 2 “дисплея”, расстояния между которыми не меньше 10 метров.

Простой светодиод

С помощью обычного светодиода выводят простые состояния, например 1 или 0, ВКЛ или Выкл. Так же светодиод может быть мигающим быстро, медленно или определенное количество раз. Довольно простой и эффективный способ индикации для человеческого глаза, но он не способен вывести много информации. Для управления таким индикатором вам не понадобится специальная библиотека, или специальное подключение, все очень просто.

Светодиодный семисегментный цифровой индикатор

7 сегментный индикатор

1 штука может выводить цифры от 0 до 9, так же можно показывать некоторые буквы: E, h, H, П, Р С, Ь. Так же в семисегментном имеется точка. Каждый отдельный сегмент подключается через резистор к чипу контроллера, по-этому управление похоже на простой LED. Для каждой цифры в коде можно создать массив, и для включения индикации пробежаться по нужному массиву.

Жидкокристаллический индикатор

жк индикация

ЖК дисплей имеет возможность выводить не только буквы, цыфры – но и графики, рисунки, таблицы. Он состоит из множества точек. Управление данным индикатором утруднено, если вы его подключаете напрямую – экран имеет много выводов. В код вам скорее всего придется добавить специальную библиотеку, так как написать её с нуля самому под силу только настоящему программисту с опытом. Так же есть ЖК дисплеи с контроллером, подключать их проще по протоколу I2C, но цена на такую деталь заоблачная.

На сайте https://krasavica.info/ можно найти много фотографий девушек, и почти все из них красавицы. Если вы смотрите с персональноко компьютера, то можно установить выбранную красавицу фоном рабочего стола.

19 светодиодов

С помощью подключения 19 светодиодов можно вывести данные от 0 до 99,5 с точностью 0,5. Первый ряд из 9 светодиодов покажет нам сколько десяток (0 – не горит ниодин, 9 – горят все). Второй ряд из 9 светодиодов покажет нам сколько единиц (0 … 9). Третий ряд из 1 LED покажет есть ли половинка 0,5 или нет. Даже древняя микросхема ATmega8 имеет на своем борту достаточно портов для управления светодиодами, остаются даже выводы приема/передачи информации UART RXD TXD. Всего у микрочипа 28 ног. Такой подход избавит вас от необходимости покупки всяких там дисплеев, если у вас накопилось много светодиодов.

На этой плате показывается цифровое значение 24,5