Pages: [1] 2 3 4   Go Down
Author Topic: Analisi impulsi contatto a tapparella per antifurti  (Read 5174 times)
0 Members and 1 Guest are viewing this topic.
Vasto (CH)
Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

salve, sto provando Arduino per la prima volta
e vorrei capire come fare per attivare un output
a seguito dell'analisi di un'input, che mi legge il contatto NC
che si apre e si chiude in tempi che si misurano col millesimo di secondo,
insomma, di un contatto a fune per tapparelle..
per l'esattezza questo


si può fare?
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 517
Posts: 12321
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma in due parole più semplici vuoi realizzare un contatore di impulsi, per fare in modo da annullare eventuali falsi allarmi dovuti al vento o a piccoli spostamenti della tapparella?
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Vasto (CH)
Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma in due parole più semplici vuoi realizzare un contatore di impulsi, per fare in modo da annullare eventuali falsi allarmi dovuti al vento o a piccoli spostamenti della tapparella?

bravo!
Logged

MC
Offline Offline
God Member
*****
Karma: 14
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Alcuni modelli ce l'hanno già di serie la scheda analisi, sei sicuro che il tuo non rientri tra quelli?
Mi pare tanto il sensore tapparelle della bramhs ...
Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Vasto (CH)
Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Alcuni modelli ce l'hanno già di serie la scheda analisi, sei sicuro che il tuo non rientri tra quelli?
Mi pare tanto il sensore tapparelle della bramhs ...


no questo sensore è della CSA, non ha scheda di analisi incorporata,
è passivo, va cablato fino in centrale, o fino alla sua scheda di analisi,
ci sono anche i piezo, ma questo non lo è.. semplimente un NC da analizzare col contaimpulsi..
so benissimo che esistono già delle schede di analisi,
faccio impianti da 15 anni..
voglio semplicemente smanettare con Arduino, così per spasso..
perciò mi interessa sapere come si fà un contaimpulsi con Arduino..
Logged

MC
Offline Offline
God Member
*****
Karma: 14
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tranquillo non volevo ne scoraggiarti ne rimproverarti, ci mancherebbe altro.
Questo forum è frequentato anche da molti appassionati smanettoni senza molta esperienza nel campo, quindi magari poteva anche essere soltanto un informazione che ad un utente meno attento poteva essere sfuggita.

Puoi fare tranquillamente la scheda analisi con arduino, così te la imposti come meglio credi, o addirittura farla super configurabile.
Usi un  pin digitale come ingresso per contare gli impulsi, e un altro digitale  che pilota un transistor, o ancor meglio un fotoaccoppiatore per mandare poi il segnale di allarme alla centrale.
Non vedo grossi problemi  smiley
Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Vasto (CH)
Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

tranquillo, sono io che scrivo male,
non avevo intenzione di mostrarmi stizzito o rimproverato,
questioni di punteggiatura..  smiley-sweat
comunque ti ringrazio, ma la mia esperienza inizia con gli antifurti
e finisce con gli antifurti, e automatismi..
ma riguarda pur sempre centraline già predisposte
dove non devi fare altro che collegare i fili come manuale
e programmare come manuale..

per arduino sono inesperto anche io come tanti altri,
perciò scusami se ti chiedo di approfondirmi ciò che mi hai detto,
perchè io pensavo di poter collegare i miei due fili uno al pin
mentre l'altro al +5v oppure al GND, con qualche resistenza
per non generare corticircuiti nella scheda e poi fare una programmazione..
se così non si può fare e ci vuole altro, ti pregherei di mostrarmi
come si fanno i collegamenti e come si programma..

al momento ho solo una bredboard, dei filetti rigidi ricavati dal cavo UTP
e qualche LED.. e qualche altro spicciolo in tasca, casomai
dovessi fare un salto all'elettrodroghiere..  smiley-red

...sensori di vario genere per antifurto invece ne ho  a iosa!



Logged

Genova
Offline Offline
Faraday Member
**
Karma: 38
Posts: 3260
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ci sono i discriminatori di impulsi, sono piccole schedine fatte  per i  roller switch dove selezioni con i dip quanti impulsi vuoi prima di dare l'allarme, alla fine è un serial 8 bit Sn74xxxx non mi ricordo il numero, stesso utilizzo per i sensori volumetrici, ma una centrale seria ha già nel software un opzione per farlo.

ciao
« Last Edit: January 18, 2013, 08:22:19 am by pablos » Logged

no comment

MC
Offline Offline
God Member
*****
Karma: 14
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si, puoi farlo non è niente di molto diverso di quello che hai detto.
Sostanzialmente la prima cosa da fare è capire il tipo di uscita del tuo sensore, se è un contatto fisico (rele ,contatto o reed) o se è una open collector.
Se è passivo, quindi non alimentato ne con batterie a bordo, è al 100% un contatto , quindi è semplice.

Io ti consiglio di fare cosi tanto per cominciare:

Prendi una resistrenza da 10k e vai a comporre lo schema come illustrato nella foto sotto:



Sostituisci i 2 contatti utilizzati dello switch e metti le 2 terminazioni del tuo sensore.
Per le prove serve qualcosa che ti indichi lo stato dell'uscita verso la centrale( che per ora per semplicita ometteremo).
Utilizzi il led a bordo scheda collegato al pin 13. Acceso contatto chiuso, spento contatto aperto(per le prove va più che bene)

A livello hardware sei già pronto a fare prove!

Ora serve uno straccio di sketch:

Code:

// constants won't change. They're used here to
// set pin numbers:
const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin

// Variables will change:
int ledState = HIGH;         // the current state of the output pin
int buttonState;             // the current reading from the input pin
int lastButtonState = LOW;   // the previous reading from the input pin

// the following variables are long's because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long lastDebounceTime = 0;  // the last time the output pin was toggled
long debounceDelay = 50;    // the debounce time; increase if the output flickers

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // read the state of the switch into a local variable:
  int reading = digitalRead(buttonPin);

  // check to see if you just pressed the button
  // (i.e. the input went from LOW to HIGH),  and you've waited
  // long enough since the last press to ignore any noise:  

  // If the switch changed, due to noise or pressing:
  if (reading != lastButtonState) {
    // reset the debouncing timer
    lastDebounceTime = millis();
  }
  
  if ((millis() - lastDebounceTime) > debounceDelay) {
    // whatever the reading is at, it's been there for longer
    // than the debounce delay, so take it as the actual current state:
    buttonState = reading;
  }
  
  // set the LED using the state of the button:
  digitalWrite(ledPin, buttonState);

  // save the reading.  Next time through the loop,
  // it'll be the lastButtonState:
  lastButtonState = reading;
}


Tratto dal playground descrimina la chiusura del contatto con debounce.

Con questo sketch avrai l'accensione del led ad ogni chiusura del contatto.
Modificando lo sketch puoi ottenere il condizionamento del segnale che desideri, ovviamente le politiche da adottare e la logica di analisi da applicare devi deciderle tu!
Buon divertimento
Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Vasto (CH)
Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ci sono i discriminatori di impulsi, sono piccole schedine fatte  per i  roller switch dove selezioni con i dip quanti impulsi vuoi prima di dare l'allarme, alla fine è un serial 8 bit Sn74xxxx non mi ricordo il numero, stesso utilizzo per i sensori volumetrici, ma una centrale seria ha già nel software un opzione per farlo.

ciao

grazie, ma ripeto, voglio capire come si fà per scopo di studio,
non perchè sul mercato non ci siano prodotti che lo fanno già..
i prodotti di antifurto che io tratto a momenti fanno anche il caffè,
ma non mi interessa, voglio usare sta scheda e fare esperienza..




Ora serve uno straccio di sketch:

Code:


const int buttonPin = 2;     
const int ledPin =  13;   

int ledState = HIGH;         
int buttonState;             
int lastButtonState = LOW;   

long lastDebounceTime = 0; 
long debounceDelay = 50;   

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

void loop() {
 
  int reading = digitalRead(buttonPin);

  if (reading != lastButtonState) {
   lastDebounceTime = millis();
  }
 
  if ((millis() - lastDebounceTime) > debounceDelay) {
 
    buttonState = reading;
  }
 
  digitalWrite(ledPin, buttonState);

  lastButtonState = reading;
}




if (reading != lastButtonState) {
   lastDebounceTime = millis();
  }
questa non l'ho capita, ma in pratica che fa?
Logged

Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non sarebbe meglio usare un interrupt per contare gli impulsi ?

Tipo:

Code:
// quando conteggio 5 impulsi dò allarme
const byte MAX_IMPULSI = 5;

volatile byte cnt = 0;


void isr() {
    cnt++;
}


void setup() {
    attachInterrupt(0, isr, FALLING);
    Serial.begin(115200);
}


void loop() {
    // questo controllo forse andrebbe eseguito ogni 10..50ms
    if (cnt >= MAX_IMPULSI) {
        cnt = 0;
       
        Serial.println("Allarme");
    }
}
Logged

Vasto (CH)
Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

 smiley-confuse

e qui già comincio a non capirci più un tubo!
Logged

MC
Offline Offline
God Member
*****
Karma: 14
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Era il passo seguente tuxduino, ma tu mi hai rovinato la sorpresa!  smiley-mr-green

Poi comunque non userei ne RISING ne FALLING, ma CHANGE , in maniera tale da rendere utilizzabile senza modifiche sia contatti NO che NC  smiley-cool


Quote

if (reading != lastButtonState) {
   lastDebounceTime = millis();
  }
questa non l'ho capita, ma in pratica che fa?


Fine a se stessa quella parte di codice non fa altro che vedere se lo stato del pin digitale in ingresso è di valore diverso rispetto all'ultima lettura.

Nel globale quella serie di istruzioni non fa altro che monitorare senza interruzione lo stato in ingresso del tuo sensore e si accorge della chiusura del contatto, con la funzionalità di debounce, che detta in parole povere ti consente di discriminare chiusure di contatto inferiori ad un determinato lasso di tempo. (viene utilizzata per filtrare il rumore e rendere più 'pulito' il segnale proveniente da contatti meccanici)
 
« Last Edit: January 18, 2013, 11:29:55 am by niki77 » Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Vasto (CH)
Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ma in questo modo, se mi discrimina chiusure di contatto inferiori ad un lasso di tempo
(anche se il mio contatto è sempre chiuso e mi serve analizzare l'apertura)
in pratica non mi fà l'esatto opposto di quello che mi serve?

in realtà a me serve appunto analizzare aperture di un contatto NC inferiori ad un lasso di tempo,
talmente breve che neanche il mio tester se ne accorge, sono io ad accorgermene
perchè mi varia qualcosa sul mio display..

quindi la funzionalità di debounce mi fà tutto l'opposto no?
Logged

Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Poi comunque non userei ne RISING ne FALLING, ma CHANGE , in maniera tale da rendere utilizzabile senza modifiche sia contatti NO che NC

Giusto, tanto basta adeguare il numero di impulsi oltre il quale scatta lo stato di allarme...
Logged

Pages: [1] 2 3 4   Go Up
Jump to: