RISOLTO:Aiuto interfernza 220v ac

Salve a tutti,
grazie a voi ho scoperto il mondo arduino! ho costruito un semplicissimo circuitino con un arduino, dei modulini 433Mhz tx/rx e due relay.
Serve per alzare ed abbassare la tapparella elettrica al semplice tocco del tasto senza dover rimanere con il dito premuto per tutta la corsa della stessa.
Oltre a poter pilotare il tutto con un telecomandino 433 o con un altro arduino dal PC.
Funziona TUTTO! … pero’…
Spesso all’accensione di una luce o di un elettrodomestico la tapparella parte DA SOLA…
Per il comando uso un semplice circuito in pullup con due resistenze da 20K verso vcc (5v) e due pulsanti verso massa che se aperti lasciano i pin definito come INPUT a 5v (HIGH) e se il pulsante e’ premuto lo portano a massa. (se non sono stato chiaro posto il circuito.
Ripeto FUNZIONA TUTTO !!!

PERO’… l’interferenza con la 220 lo fa sfarfallare…
Ho rimosso l’alimentazione 5v verso 220 con una batteria ma il problema rimane lo stesso!
ho staccato i relay ma il problema rimane lo stesso!!! (lo vedo daI LED )
Tramite la seriale ho visto che arduino “CREDE” che il pulsante sia stato premuto… ma ho usato un pullup standard che non ha nioente a che fare con la 220!

Potrebbero servire dei condensatori in parallelo ai pulsanti?
Potrebbe dipendere dal fatto che i pulsanti distano dall’ arduino circa 2 metri?

Che puo’ essere??

AIUTOOOOOOOOO!

P.

I tre fili (1massa + 2 pulsanti) devono andare direttamente a Arduino senza essere in comune con altri conduttori. Installa resistenze di pull-up da 3,3k o meno, e in parallelo alle stesse un condensatore da 0,22uF. Il tutto devi collegarlo quanto più vicino ad Arduino.

Ti invitiamo a presentarti qui: http://forum.arduino.cc/index.php?topic=113640.0
e a leggere il regolamento: http://forum.arduino.cc/index.php?topic=149082.0

Serve per alzare ed abbassare la tapparella elettrica al semplice tocco del tasto senza dover rimanere con il dito premuto per tutta la corsa della stessa.

se era per questo ci sono vari tipi di pulsanti commutatori "tipo uomo presente" e "tipo uomo assente" o meglio quelli che restano premuti e te ne puoi andare :) :)

Se hai scritto sul forum 99/100 hai bisogno di aiuto, non è necessario scriverlo nel titolo Le informazioni sono insufficienti, provare a ipotizzare è inutile, per quanto ne sappiamo potresti anche non aver impostato i pin in output e lasciati flottanti stessa cosa per gli input, hai usato un debounce? un antirimbalzo? il ricevitore 433 è schermato a parte l'antenna ovviamente? il software è corretto?

Potrebbe dipendere dal fatto che i pulsanti distano dall' arduino circa 2 metri?

no, su dei segnali aperto/chiuso i 2 metri non fanno la differenza.

sketch e schema danno un idea più completa sicuramente ciao

Innanzitutto GRAZIE!
Cerco di darvi qualche info in piu’.
I pin di input li ho settati cosi’:

int tapparella=16; 
int salita=13;     
int discesa=12;    
int bottone1=14;     
int bottone2=15;    
...
void setup()    
{   
pinMode(salita, OUTPUT);    
 pinMode(discesa, OUTPUT);   
 pinMode(tapparella , INPUT); 
 pinMode(bottone1 , INPUT);    
 pinMode(bottone2 , INPUT); 
 digitalWrite(tapparella, HIGH); 
 digitalWrite(bottone1, HIGH);    
 digitalWrite(bottone2, HIGH);   
...
}

lo schema l’ho scarabocchiato ed allegato… spero si capisca!
In pratica mi suggerite di passare da quello attuale a SX a quello di DX?
Purtroppo non riesco a fare i collegamenti piu’ corti… Se usassi del cavo schermato sarebbe meglio?
Per quanto riguarda il circuito, ho usato un arduino per questa semplice attivita’ perche’ in realta’ funge anche da contaimpulsi wireless per tre sensori di tapparella per l’antifurto, oltre ad avere un controllo per cui “stoppa” il motore della tapparella se non “sente” un impulso ogni 2 secondi… evitando di far continuare a muovere la tapparella se ci fosse un ostacolo…
…“cazziatemi” tranquillamente se non sono stato chiaro!
GRAZIE1000 per l’aiuto!

P.

pullup.jpg

i pin da usare sono 4

pinMode(3, INPUT); // comando salita  
pinMode(4, INPUT);  // comando discesa
pinMode(5, OUTPUT);  // relay salita
pinMode(6, OUTPUT);  // relay discesa

perchè nel setup hai messo questo? digitalWrite(tapparella, HIGH); stai dicendo al motore di muoversi

pablos: perchè nel setup hai messo questo? digitalWrite(tapparella, HIGH); stai dicendo al motore di muoversi

Probabilmente per attivare pullup interna. Ma meglio usare pinMode(tapparella, INPUT_PULLUP);

Accidenti siete piu' rapidi voi nelle risposte che io nel correggere i miei errori!

Si i DigitalWrite li ho messi per attivare le resistenze di pullup interne... almeno cosi' ho letto! Gli input sono i pin 14 e 15 (pulsanti) e 16 (contatto sensore tapparella). Mentre gli output sono i pin 12 e 13 che vanno alla schedina con i relay.

Grazie... domattina provo con la:

pinMode(tapparella, INPUT_PULLUP);

Speriamo bene! Per il condensatore che ne dite lo metto come nel disegno? Grazie ancora!

P.

mancava un pezzo quando ha risposto XD.... Ma perchè usare logica invertita e non un semplice http://arduino.cc/en/tutorial/button

vabbè ... hai provato a vedere se senza ricevitore 433 e lasciando tutto com'è i disturbi arrivano lo stesso?

Si ho tolto il ricevitore 433 ma stesso problema! Ho anche ricablato il tutto evitando che i tre fili dei pulsanti passassero nello stesso corrugato della 220... ma niente! Mi rimane il condensatore in parallelo alla resistenza!!!!!

Per il condensatore che ne dite lo metto come nel disegno?

mettilo ... prova

a me quel programma e quello schema non mi convincono molto

  • hai tolto il ricevitore 433 Mhz
  • hai alimentato arduino con delle batterie
  • hai 1,5 mt di filo per i comandi con input forzati a +5v a riposo
  • hai 2 relè che isolano arduino dalla rete 220v

come fanno a muoversi da sole con interferenze 220v ?? tra un po' neanche una bobina di Tesla nelle vicinanze lo disturberebbe :D :D :D

Esatto.... ora, a parte i condensatori, non so che provare... magari funziona perfettamente per ore ma poi allo scatto di un rele' passo passo delle luci, o del motore di un'altra tapparella.... parte!. Dimenticavo ho provato pure un'altro arduino! ma NIENTE!

Si ma anche se mettendo i condensatori funziona, riduci le probabilità, ma sei sempre a rischio che prima o poi riappaia il problema.
Anche ipotizzando che sia un disturbo e che quei fili facciano da antenna, sono pochi mV per brevissimo tempo, ma hai già i pin a +5v, non è possibile che la causa sia un disturbo elettromagnetico nel tuo caso, sei isolato dai motori e dalla rete 220, c’è qualcosa che non ci dici.

Ma hai messo un debounce nel software? http://arduino.cc/en/Tutorial/Debounce ovvero il pulsante deve essere premuto per un tot di ms per dare il consenso (un impulso troppo breve tipo disturbo non viene accettato e te l’ho chiesto qualche post indietro )
hai usato un cavo twistato sui comandi?

Grazie Pablos, no i fili non sono twistati. Pero' ho letto con attenzione lo sketch che mi hai suggerito. Il problema in cui mi ero imbattuto, e che avevo risolto, eliminava il rimbalzo SOLO dopo la pressione del tasto. In pratica dopo aver registrato la pressione di un pulsante attivavo l'output solo se dall'ultimo comando "buono" erano trascorsi 50ms (misurando con millis() ). In realta' non facevo alcun controllo sulla lunghezza del comando!

Ora provo! Grazie1000

Grazie Pablos, e grazie a tutti. Con debounce ho risolto i miei problemi ora tutto OK!

Grazie1000

mi fa piacere, grazie a te per averci comunicato la soluzione del problema.

ciao