Poll
Question: come posso gestire un interrupt correttamente ?
1 - 0 (0%)
2 - 2 (100%)
Total Voters: 2

Pages: [1]   Go Down
Author Topic: interrupt anomali con la BOX  (Read 464 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti,

Sto implementando da poco con arduino, ho scritto il seguente semplicissimo programma:

 void setup () {

   //porta seriale
   Serial.begin (9600);

   //Creo un gestore di interrupt e lo associo al pin
   attachInterrupt(0, GestInt, RISING);

 }
 

 void loop () {

   Serial.println (".");
   delay (5000);
    
 }
 
 void GestInt()
{
   Serial.println ("1");
}

Sto utilizzando arduinoMega2560 all'interno della seguente BOX: http://store.arduino.cc/it/index.php?main_page=product_info&cPath=11_15&products_id=79

Al momento non ho "attaccato" nulla al pin di interrupt.
Il problema è il seguente:
Maneggiando la BOX mentre all'interno è in esecuzione arduino col programma sopra citato, viene lanciata la funzione GestInt() autonomamente, a causa presuppongo di una corrente generata al contatto con le dita sulla BOX di arduino.
Anche maneggiando Arduino senza BOX accade questo, e con maggior evidenza.

E' possibile che i pin di interrupt di arduino siano sensibili a un amperaggio cosi' basso generato dal tatto ? e che basti toccare il silicio di arduino o addirittura la BOX per attivare un interrupt?
Se cosi' fosse, come posso risolvere il problema almeno che non avvenga con la box ?
dovrei riceve degli impulsi di durata 250ms, e ad ogni impulso laciare la relativa funzione.
aggiungo che Ho lo stesso problema anche utilizzando ArduinoUno.

Ringrazio tanto in aticipo per l'aiuto... !







 




Logged

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 7
Posts: 2961
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

1) sicuro che serva un  interrupt per fare questa cosa?

2) le istruzioni di lettura e scrittura della seriale non vanno mai messe in una routine di interrupt perchè a loro volta ne fanno uso.

3) su un pin di arduino lasciato flottante puoi leggere tensioni variabili quindi dovresti mettere una resistenza di pulldown( o pullup a seconda della logica che adotti), per tenere il pin al potenziale desiderato e non randomico.
 
 
« Last Edit: March 06, 2012, 02:10:46 pm by BrainBooster » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

grazie mille della risposta,

come potrei fare senza utilizzare gli interrupt ?

io ho un impulsto di max 30 V, di durata 250 ms, con candenza random che devo ricevre da arduino.

Per ridurre la tensione ho utilizzato un componente L7805CV, dando cosi' in ingresso su arduno 5V.

appena ricevuto l'impulso dovrei fare inviare a arduino via seriale una stringa !

con queste condizioni quale soluzione migliore potrei utilizzare ?

grazie mille ancora in anticipo !


Logged

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 7
Posts: 2961
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

con un semplice digital read smiley
Logged

Ivrea
Offline Offline
God Member
*****
Karma: 5
Posts: 680
"La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché." Albert Einstein
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non puoi utilizzare un 7805, quei circuiti integrati servono per regolare un'alimentazione, non un segnale. Sono molto lenti all'accensione ed inoltre sempre all'accensione hanno un transitorio dove l'uscita oscilla per un po' e poi si stabilizza. Non sono fatti per fare quello che vuoi fare te. Io userei un buon vecchio partitore resistivo.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

grazie a entrambi per la risposta...

Avevo fatto anche il calco della ressitenza del partitore che mi serviva, ma poi mi hanno consigliato di utilizzare L7805, forse perche' non ho bisogno di precisione, e gli impulsi non sono moto ravvicinati...(max 30 sec) ?

hai ragione al massimo come hai detto tu janos utilizzo il buon vecchio partore !

con la readdigital() ottengo lo stesso discorso BrainB: al tatto ogni tanto parte automaticamente una lettura di stato HIGH, (i pin digital sembrano essere sensiblissimi anche al tatto della box esterna).

quindi ho risolto con una semplice lettura analogica;
sapendo che il segnale ALTO dura massimo 250 ms e ha cadenza massima di 60sec :


state = analogRead(sigPin);
   
     if (state > 800){
       Serial.println ("1"); //// 1 litro erogato
       delay(3000);

     }   

800 dovrebbe essere sui 4 Volt vero ? facendo la proporzione:

1024/5 = 800/x => X = 800*5/1024 = 3,9 V

in questo modo al tatto non capito mai dentro all'IF essendo la tensione ricercata abbastanza alta e pare che sto risolvendo il problema.

Potrebbe andare bene la segente logica ?
potrei provare comunque col componente L7805 visto che non ho bisogno di precisione, o abbandono anche l'idea di provare ?

grazie mille in anticipo...








Logged

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 7
Posts: 2961
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

il 7805 per questo uso è proprio negatvo smiley
Invece vedrei meglio la strada partitore +pulldown e lettura digitale o se vuoi anche analogica con soglia.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao, grazie ancora per la risposta...

ho quindi optato per l'utilizzo del partitore... e lettura analogica con soglia !

cosa intendi per " +pulldown" ?

allego lo schema fatto con Frit.

la resistenza da 100 ohm è data come nota all'interno del generatore di impulsi.

Potrebbe andare come piccolo schema elettrico ?

grazie mille in anticipo ancora !




* arduinoSchema2.jpg (31.3 KB, 1057x602 - viewed 8 times.)
Logged

Pages: [1]   Go Up
Jump to: