zahariaiulian Postat Iunie 20, 2017 Partajează Postat Iunie 20, 2017 Buna ziua, Am intr-o locatie un siste de alarma si un sistem separat pentru automatizare porti. Ce am facut pana in momentul de fata. Cand se armeaza sistemul de alarma imi activeaza o iesire (PGM 2) si imi actioneaza un releu. Sistemul de porti are pe placa zona C, 2 si 3, daca fac un strap individual pe acestea ( adica intre 2 si C sau 3 si C ) imi inchide sau deschide poarta. Zona 2 inchidere si zona 3 deschidere. Pana aici totul bine si frumos. Centrala de alarma cand se armeaza imi activeaza releul pana la dezarmare. Doar ca pe sistemul de porti pe acele zone trebuie sa ii dau un N.C. de cateva secunde si sa revina pe N.O. Pana acum sistemul de alarma se armeaza si imi inchide poarta, dezarmez imi deschide poarta, doar ca nu se mai poate deschide din telecomanda porti, deoarece imi ramane activata zona din centrala ( adica strap intre C si 2. Asa ca am zis sa incerc cu arduino! Din iesirea de la centrala al legat un RELEU. Prin releu trec ceva de genul pushbutton arduino si vad in el 1 sau 0 ( High sau LOW, presupun). M-am documentat pe net si am folosit acest cod pentru arduino // TEST - OPEN/CLOSE GATE SYSTEM. // set pin numbers: const int PGMalarm = 2; // Starea sistemului de alarma. const int GateOpen = 11; // Actioneaza releu 1 - deschide poarta. const int GateClose = 12; // Actioneaza releu 2 - inchide poarta. void setup() { // initialize output PIN: pinMode(GateOpen, OUTPUT); pinMode(GateClose, OUTPUT); // initialize input PIN: pinMode(PGMalarm, INPUT); } void loop() { // read the state of the pushbutton value: const int System = PGMalarm ; // Verificam daca sistemul de alarma este armat! // Daca sistemul este armat atunci starea (System) este HIGH if (System == HIGH) { //Daca sistemul este HIGH atunci este armat si inchide poarta. //Actioneaza releul 1 pentru 5secunde. digitalWrite(GateClose, HIGH); delay(3000); digitalWrite(GateClose, LOW); } if (System == LOW) { // Daca sistemul este LOW atunci este dezarmat si deschide poarta. //Actioneaza releul 2 pentru 5secunde. digitalWrite(GateOpen, HIGH); delay(3000); digitalWrite(GateOpen, LOW); } } Ce doresc eu sa fac, pe acest arduino am o placa cu doua relee. Cand primeste semnal de LOW sau HIGH ( si o sa ramana in HIGH pana la dezarmare ) de la centrala de alarma ( asta inseama ca s-a armat ). Atunci sa imi activeze releul 1 timp de 2-3 secunde si sa revina la starea initiala. Cand se dezarmeaza ( adica din HIGH trece in LOW ) sa imi activeze releul 2 timp de 2-3 secunde apoi sa revina la starea initiala. Nu reusesc sa fac chestia asta, va rog sa imi aratati unde gresesc sau ce sa fac. Va multumesc! Link spre comentariu
caesar07000 Postat Iunie 20, 2017 Partajează Postat Iunie 20, 2017 salut. ce alarma ai acolo? Link spre comentariu
zahariaiulian Postat Iunie 21, 2017 Autor Partajează Postat Iunie 21, 2017 Nu prea are importanta. DSC NEO Toate fac acelasi lucru, iti activeaza o iesire programabila(iti activeaza un minus Atata timp cat sistemul ramane armat) Link spre comentariu
caesar07000 Postat Iunie 21, 2017 Partajează Postat Iunie 21, 2017 cea mai simpla varianta este sa mai pui un microswitch pe poarta care atunci cand este inchisa sa desfaca circuitul intre C si 2 (inchiderea).... Link spre comentariu
nico_2010 Postat Iunie 21, 2017 Partajează Postat Iunie 21, 2017 Desi am incercat cu Arduino IDE nu am reusit sa fac mare lucru si nu pricep de ce. Ai mai jos codul sursa pentru ceea ce vrei tu: * alarma_forum.c * * Created: 21-Jun-17 11:56:33 AM * Author : nico_2010 */ #define F_CPU 16000000UL #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #define GATE_OPEN 3 #define GATE_CLOSE 4 #define GATE_PORT PORTB #define GATE_DDR DDRB #define INPUT_SYS_0 2 #define INPUT_SYS_1 3 #define PORT_INPUT_AL PORTD #define DDR_INPUT_AL DDRD volatile uint8_t state_open=0; volatile uint8_t state_close=0; int main(void) { GATE_DDR |=((1<<GATE_OPEN)|(1<<GATE_CLOSE)); GATE_PORT &=~((1<<GATE_OPEN)|(1<<GATE_CLOSE)); DDR_INPUT_AL &=~(1<<INPUT_SYS_0)|(1<<INPUT_SYS_1); PORT_INPUT_AL |=(1<<INPUT_SYS_0)|(1<<INPUT_SYS_1); EICRA |=(1<<ISC11)|(1<<ISC10)|(1<<ISC01); EIMSK |= (1<<INT0)|(1<<INT1); sei(); /* Replace with your application code */ while (1) { if(state_open) { GATE_PORT |=(1<<GATE_OPEN); _delay_ms(5000); GATE_PORT &=~(1<<GATE_OPEN); state_open=0; } if(state_close) { GATE_PORT |=(1<<GATE_CLOSE); _delay_ms(5000); GATE_PORT &=~(1<<GATE_CLOSE); state_close=0; } } } ISR(INT0_vect) { state_open = 1; } ISR(INT1_vect) { state_close = 1; } Ai si schema principiala, LED-urile urmand a fi inlocuite cu un tranzistoare si relee. In arhiva gasesti tot proiectul, inclusiv fisierul hex pe care il poti incarca direct in microcontrollerul ATMega328. Bafta! alarma_forum.zip Link spre comentariu
zahariaiulian Postat Iunie 21, 2017 Autor Partajează Postat Iunie 21, 2017 Codul asta pot sa il folosesc pentru arduino? Link spre comentariu
nico_2010 Postat Iunie 21, 2017 Partajează Postat Iunie 21, 2017 Da, il poti folosi si pe platforma Arduino (softul a fost creat pentru ATMega328 cu quartz de 16MHz). Dovada mai jos. Link spre comentariu
zahariaiulian Postat Iunie 22, 2017 Autor Partajează Postat Iunie 22, 2017 Da, il poti folosi si pe platforma Arduino (softul a fost creat pentru ATMega328 cu quartz de 16MHz). Dovada mai jos. arduino_OK.png Am incercat sa il pun in functiune si nu functioneaza, daca imi poti spune pe ce pini leg releul. O schema pentru arduino m-ar ajuta mult, pe ce pin bag intrare de la alarma? Multumesc! Link spre comentariu
nico_2010 Postat Iunie 23, 2017 Partajează Postat Iunie 23, 2017 Daca citeai pana la capat si cu atentie postarea nr.5 gaseai si raspunsul cu privire la conectarea releelor "LED-urile urmand a fi inlocuite cu un tranzistoare si relee". Intrarea semnalului de la alarma este marcata pe schema principiala prin prezenta butonului, care va fi inlocuit cu firul care vine de la sistemul de alarma. Schema pentru Arduino Uno Rev3: https://www.arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf Iar pentru Arduino Duemilanove aici: https://cdn.solarbotics.com/products/schematics/arduino-duemilanove-schematic.pdf cu mentiunea ca in loc de ATMega8 este instalat ATMega328 Link spre comentariu
zahariaiulian Postat Iunie 26, 2017 Autor Partajează Postat Iunie 26, 2017 Daca citeai pana la capat si cu atentie postarea nr.5 gaseai si raspunsul cu privire la conectarea releelor "LED-urile urmand a fi inlocuite cu un tranzistoare si relee". Intrarea semnalului de la alarma este marcata pe schema principiala prin prezenta butonului, care va fi inlocuit cu firul care vine de la sistemul de alarma. Schema pentru Arduino Uno Rev3: https://www.arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf Iar pentru Arduino Duemilanove aici: https://cdn.solarbotics.com/products/schematics/arduino-duemilanove-schematic.pdf cu mentiunea ca in loc de ATMega8 este instalat ATMega328 Mi-am batut capu cu schemele astea si tot nu imi dau seama unde si ce sa pun. Nu sunt programator, daca ma puteti ajuta mai "mura in gura". Am o placa arduino uno si o placa cu doua relee tot de la arduino. Va multumesc! Link spre comentariu
MifTy Postat Iunie 26, 2017 Partajează Postat Iunie 26, 2017 (editat) este un exemplu, nu te năpusti!pui tot de la rezistenţa de 1 k în locul tronsoanelor rezistenţă plus led.ai înţeles acum? Editat Iunie 26, 2017 de MifTy Link spre comentariu
nico_2010 Postat Iunie 26, 2017 Partajează Postat Iunie 26, 2017 Ok. Pinii DIGITAL 2 si 3 (asa cum sunt eiu notati langa baretele)i scurtcircuitezi si pe ei aplici semnalul dat de alarma. Pe pinul DIGITAL 11 conectezi itrarea releului de deschidere a portii, iar pe pinul DIGITAL 12 conectezi intrarea releului de inchidere a portii. Link spre comentariu
zahariaiulian Postat Iunie 26, 2017 Autor Partajează Postat Iunie 26, 2017 BUn, ground nu am cum sa il dau din sistemul de alarma in momentul asta, il dau de pe arduino. Cu codul incarcat si ground neactivat releele sunt activate. Daca pun minus se opreste un releu 1 pentru 5 secunde apoi face acelasi lucru si releu 2. Si raman activate. Ce vreau eu sa faca este atunci cand ii dau minus doar un releu 1 sa activeze 5 secunde apoi sa revina la normal. Cand ii iau minus dupa ( 1 ora, 10min, 1zi ) sa activeze doar releu 2 pentru 5 secunde. Se poate chestia asta? Va multumesc! Link spre comentariu
nico_2010 Postat Iunie 27, 2017 Partajează Postat Iunie 27, 2017 1. Monteaza cate un tranzistor NPN prin rezistente de 10k la pinii 11 si 12 ai Arduino. In colectorul lor montezi rezistente de 1k. Din colectoarele lor iei semnalul pentru placa cu relee. 2. Ai o problema cu contactul catre masa (este imperfect) si atunci ai comportamentul pe care l-ai descris. Link spre comentariu
digix Postat Iunie 27, 2017 Partajează Postat Iunie 27, 2017 (editat) Poate ca deja stiai dar nu strica sa-ti reamintesc faptul ca de obicei placile cu relee au intrari care se activeaza pe LOW. Asta este o practica buna pentru ca la pornire pinii GPIO de la Arduino sunt intrari si prin rezistentele interne de pull up se poate usor transmite un HIGH fals pe un GPIO care urmeaza sa fie iesire. Folosind activarea pe LOW pentru modulele de executie se evita comenzile false date in faza de pornire a montajului. Editat Iunie 27, 2017 de digix Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum