Go Down

Topic: Analisi impulsi contatto a tapparella per antifurti (Read 6 times) previous topic - next topic

niki77

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  :)
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

diablotron

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!




pablos

#7
Jan 18, 2013, 02:19 pm Last Edit: Jan 18, 2013, 02:22 pm by pablos Reason: 1
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
no comment

niki77

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: [Select]


// 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
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

diablotron


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: [Select]



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?

Go Up