Author Topic: Помош со PIR сензор  (Read 3029 times)

Offline DS

  • Стручњак
  • ***
  • Posts: 104
  • Gender: Male
Помош со PIR сензор
« Opened on 04.02.2015, Wednesday, 16:18:12 »
Од ебај порачав вакво pir сензорче па ми треба мала помош околу програмирањето на управувачот :)

Code: [Select]
http://carlosdelfino.eti.br/images/sensor/pir/infrared-pir-sensor-detector-module-01.jpg
Значи вака ја користам оваа шема


па сакам да прашам дали можам колово да го напојувам без трафо т.е со оваа шема
Code: [Select]
http://i1162.photobucket.com/albums/q537/0x4E4F/0x4E4F001/transformerless_power_supply.png
и дали кодов  има смисла? :)

Code: [Select]
void main() {

GPIO= 1; // inicizlizacija na IO porti
TRISIO=0; // konfiguriraj gi kako izlezni
TRISIO5= 1; // stavi go gp5 vlezen pin na  kec na pocetok




while(1)
{

while(1)
{
GP4 = 0xFF;           // turn ON diodes on GPIO
    Delay_ms(1000*30);        // wait 3 second
    GP4= 0;              // turn OFF diodes on GPIO
    Delay_ms(1000*30);        // wait 30 second
           }


if (GP5) // ako e kec

GP2=1; stavi na kec

else // ako padne na nula

Delay_ms(1000*60); // cekaJ 60 sec. pa stavi go na nula
GP2=0;

}

}

// SAKAM NA 30 SEKUNDI DA TREPKA DIODATA NA GP4.
// I KOGA KE DOJDE KEC NA GP5 KOJ E VLEZEN PIN
// IZLEZNIOT GP2 DA GO DRZI PUSTEN PRIMER 60 SEKUNDI

// koristam pic 12f675


loading...

Offline SKOLS_OLD

  • Топ Експерт
  • *****
  • Posts: 2782
  • Gender: Male
Одг: Помош со PIR сензор
« Reply #1 on 04.02.2015, Wednesday, 22:22:45 »
Мој предлог:
1.Тоа безтрансформаторско напојување ако го преоптовариш може кондензаторот да експлодира,па затоа наместо такво напојување од стар полнач за мобилен телефон,што на излез дава 5волти 500мили ампери(импулсно напојување-со индуктивитет) тоа ќе ти биде во ред.
2.Наместо микроконтролер,можеш да искористиш транзисторски прекинувач,со еден BC547 и завршена работа.Ако користиш микроконтролер,треба да ги исклучиш компараторите и да ги иницијализираш дигиталните пинови(CMCON регистер мислам дека беше).

Offline batka

  • Топ Експерт
  • *****
  • Posts: 9425
Одг: Помош со PIR сензор
« Reply #2 on 05.02.2015, Thursday, 23:29:34 »
Го имаш проектот овде

Code: [Select]
http://cxem.net/mc/mc115.php

Offline DS

  • Стручњак
  • ***
  • Posts: 104
  • Gender: Male
Одг: Помош со PIR сензор
« Reply #3 on 06.02.2015, Friday, 21:37:18 »
Се обидувам да напишам мој код, на шемата од проектот направив корекција.наместо звучник сакам да управувам реле. напишав еден код, може ли некој да види каде грешам и зошто не работи. во продолжение е кодот со коментари :)

Code: [Select]
void main() {

  ANSEL  = 0;              // Configure AN pins as digital
  ADCON0 = 0;                 // Shut off the A/D Converter
  CMCON  = 7;              // Turn off the comparators
               // configure pins of GPIO as output     izlezni porti,GPIO se IO portite-vlezni
                         // set pin GP5 as input
                                      // inicilizacija oa GP5 na nula, so toa odma da go pusti releto na pocetok :)
    TRISIO = 0b00101000;       //  rest all output
                        //   TRISIO5 = 0xFF;                 // Make GP5 as input

    GPIO   = 0;       // Make all pins 0
   while(1)   {
  
       if (GP5) // ako e nula

       GPIO.GP2=0xFF; //stavi na kec      {izlezen pin}    vkluci rele
                // vaka nema da pomine GP2=1, dali treba vaka :    TRISIO.GP2=1;
                // ili vaka:   GPIO.GP2=1;

                        else // ako stane GP5 -> kec    == 5V
        
        Delay_ms(6000); // cekaJ 6 sec. pa stavi GP5=0      // iskluci rele posle 60 sekundi

         GPIO.GP2=0;    // izlezen gp2 stavi na nula t.e iskluci rele
                 // vaka nema da pomine GP2=0, dali treba vaka :    TRISIO.GP2=0;
                 // ili vaka:   GPIO.GP2=0;
                 // kako se pristapuva do vlezen ili izlezen pin? GP NA PIC12F675 ???

}        // kraj loop


}

кога ке падне на нула gp5 сакам gp2 да го стави кец и да запали релето :) склопено ми е на протоборд со сите компоненети, кога ке детектира сензорот на излез напонот паѓа на 0в , а така и треба и така ми е во кодот но не пали релето :) anyone? :D
loading...

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
Одг: Помош со PIR сензор
« Reply #4 on 06.02.2015, Friday, 22:12:44 »
За да вклучи релето од шемата погоре, на базата на транзисторот треба да имаш дигитална 1 или 5V
Мислам дека се назначуваат како GPIO.1 итн
Quote
ANSEL = 0; // Configure AN pins as digital
CMCON = 7; // Turn off the comparators
TRISIO = 0; // configure pins of GPIO as output

влезот од пир сензорот конфигурирај го како влез, направи проста програма, кога на влез има 1 на излез нека има 1, ко ќе проработи тоа после играј си со вклучи исклучи зависно од поставувањата
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!

Offline MarkoMK

  • Топ Експерт
  • *****
  • Posts: 1001
  • Gender: Male
Одг: Помош со PIR сензор
« Reply #5 on 07.02.2015, Saturday, 13:47:17 (Edited 07.02.2015, Saturday, 13:49:22) »
Вака, прво околу функцијата, односно што дава на излез конкретниот ПИР сензор (мислам дека тука е целиот проблем): Пир сензорот кога ќе детектира движење дава високо ниво, и тоа не дава импулс него тоа високо ниво трае одредено време кое се подесува со еден од двата тримери на плочката. Со другиот тример се подесува осетливоста. Исто така на плочката има и џампер со кој се подесува дали да се продолжи времето на високо ниво ако се уште има некој во близина на сензорот или да се спушти на ниско ниво (па по потреба пак да уклучи).
Значи овој модул има се што е потребно за да направиш, на пример сјалица да се пали во некоја просторија, ходник, влез, без разлика. Ти само треба да додадеш напојување и реле со транзистор на излезот (out) за оваа основна намена. Не ти требаат микроконтролери.
Секако, во случај да сакаш да експериментираш тогаш стави микроконтролер, ама пази на излезот од пир-сензорот (што кажав на почетокот).
ПС.
Јас имам направено со ист ваков контролер, (со капацитивно напојување и реле) на влезот од зградата моја да се пали светло кога ќе влезе некој и работи одлично веќе неколку години.  :)
Life is too short to remove USB safely ..

Offline DS

  • Стручњак
  • ***
  • Posts: 104
  • Gender: Male
Одг: Помош со PIR сензор
« Reply #6 on 08.02.2015, Sunday, 01:27:46 »
Значи вака во врска си пир сензорот . Како што кажа модулот кој го порачав од ебај има два тримери со кои со едниот се подесува осетливоста , а со другиот времето, колку време ке го држи вклучено релето. Самиот модул кога ке детектира движење на излез дава 3V (логичка единица) . На следнава шема не функционира така, има отрпорник кој што е врзан едниот крај на вцц (5V) на пирот а другиот крај на транзисторот и пикот, па во случајот кога нема движење на влезот на пикот одат 5ВV (логичка единица), а кога има движење напонот паѓа поради pull up отпорникот. така и треба.
http://s9.postimg.cc/4qg708n33/ovaaa.jpg
Знам дека може без микроуправувач, но сакам вака да го направам.. :)
Така ми е кодот, кога на влезот на пикот напонот падне на нула да вклучи релето, ама не функционора... Не знам како се користи во кодот за да го кажам баш тоа.. само
if (GP5)
 GP2=0xFF;
...
.
 
не сака да помине. треба ли некоја библиотека?
loading...

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
Одг: Помош со PIR сензор
« Reply #7 on 08.02.2015, Sunday, 01:40:16 »
вака некако, незнам одамна не сум работел со пик
Code: [Select]
if (gpio.5 == 0)
{
gpio.2 = xx ;
delay_ms(100);
}

треба да направиш споредба, дали пинот е на високо или ниско логичко ниво, или дали има промени од претходно, односно зависи како сакаш да го користиш контролерот, не е баш за овај пример тоа, ама по некогаш сакаш да провериш дали има промена некаква пр од ниско на високо ниво или обратно од високо на ниско логичко ниво
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!

Offline Zan

  • Експерт
  • ****
  • Posts: 883
Одг: Помош со PIR сензор
« Reply #8 on 08.02.2015, Sunday, 09:58:56 »
DS, може да кажеш кој компајлер го користиш? Јас користам mikoBasic од Mikroelektronika. Иако не знам програмски јазик C, гледам дека има премногу грешки во твојот код.
Пиновите од овој микроконтролер (PIC12F675) се означуваат со
Code: [Select]
GPIO.0
GPIO.1
GPIO.2
GPIO.3
GPIO.4
GPIO.5

Секој пин, што е дефиниран како излез, може да има вредност или 1 или 0. Не може да има вредност 0xFF, како што си напишал.

За да го вклушиш релето, напиши
Code: [Select]
GPIO.2 = 1


За да го исклучиш релето
Code: [Select]
GPIO.2 = 0

кога ке падне на нула gp5 сакам gp2 да го стави кец и да запали релето
Ова напишано во mikroBasic изгледа вака
Code: [Select]
if GPIO.5 = 0 then
    GPIO.2 = 1
else
    GPIO.2 = 0
end if
Ова е наједноставно, без никакви услови и временски задршки.
Пробај, па кажи што си направил.
Жан

Offline i_ivica

  • Нов член
  • *
  • Posts: 22
  • Gender: Male
Одг: Помош со PIR сензор
« Reply #9 on 12.02.2015, Thursday, 17:45:29 »
Условот "IF", како што го имаш напишано

Code: [Select]
      if (GP5) // ako e nula
}

е исполнет доколку вредноста на GP5 е различна од '0'. Значи доколку сакаш условот да биде исполнет  во случај кога GP5 e '0', тогаш треба да напишеш:

Code: [Select]
    if (GP5 == 0)
ili
    if (!PG5)

каде знакот " ! " е знак за негација.

Исто така, сите команди кои сакаш да се извршат доколку е исполнет условот, се стават во загради:
Code: [Select]
    if (uslov) {
        komanda1;
        komanda2;
        .
        .
        komandaN;
    } else {
        komanda1;
        komanda2;
        .
        .
        komandaN;
    }

освен доколку имаш само една команда.

Кај тебе после else-от ќе се изврши само првиот ред, односно функцијата за доцнење, додека:
Code: [Select]
GPIO.GP2=0;    // izlezen gp2 stavi na nula t.e iskluci rele

ќе се извршува во секој случај, односно, без оглед на условот. Ова значи дека секогаш релето ќе ти се исклучува. Затоа и овој ред треба да го ставеш во заградите кои припаѓаат на else делот.

Offline DS

  • Стручњак
  • ***
  • Posts: 104
  • Gender: Male
Одг: Помош со PIR сензор
« Reply #10 on 13.02.2015, Friday, 01:39:08 »
ви благодарам на сите за помошта, некако успеав да го испрограмирам, најобично со if-else ,ке треба да се досреди со интерапти :)
наидов на друг проблем, направив плочка за шемата и сега на плочката ставив трафо 12V ac, при тоа најдов грец од напојување од компјутер кое што го поврзав на плочката, но напонот расте многу на 20-25V dc, до грецот е нешто ? :)
loading...

Offline BorceBT

  • Топ Експерт
  • *****
  • Posts: 1826
  • Gender: Male
    • www.trajkovski.net
Одг: Помош со PIR сензор
« Reply #11 on 13.02.2015, Friday, 02:33:24 »
Ако трафото дава 12V AC тогаш после грецот и кондензаторот имаш 12V * 1.41= 16.9. 20-25 неможе да добиеш, стави некој отпорник од 470 оми 1 ват да не има некој ripple напон таму што го лажи унимерот и мери пак. Или можеби немаш кондензатор после грецот и се буни унимерот.
Никогаш неможеш да знаеш се, но секогаш можеш да знаеш повеќе.

Offline DS

  • Стручњак
  • ***
  • Posts: 104
  • Gender: Male
Одг: Помош со PIR сензор
« Reply #12 on 14.02.2015, Saturday, 19:45:42 »
AC 15V, а DC после грецот 25V. правилно ли е тоа? :) 15*1.41=21.15V
loading...

Offline Zan

  • Експерт
  • ****
  • Posts: 883
Одг: Помош со PIR сензор
« Reply #13 on 14.02.2015, Saturday, 20:51:18 »
Има ли кондензатор после грецот?
Жан

Offline DS

  • Стручњак
  • ***
  • Posts: 104
  • Gender: Male
Одг: Помош со PIR сензор
« Reply #14 on 15.02.2015, Sunday, 14:09:00 »
ставив кондензатор после грецот,паралелно 2200 микрофаради напонот расте на 50V :/
loading...