Premetto che uso Arduino uno, con le conoscenze scolastiche (molto di base) di mio figlio.
Abbiamo collegato una PTC con partitore di tensione ad un ingresso analogico. L'ingresso viene semplicemente elaborato con una isteresi, per attivare una uscita: sotto 290 attacca, sopra 350 stacca.
In casa, il tutto funziona correttamente. Applicando la PTC alla carcassa di un inverter, quando questa sia scalda, l'uscita inizia a ad attaccare e staccare ripetutamente e velocemente, senza un ritmo fisso, a caso, sembra. Dopo un po', Arduino si blocca, nel senso che congela le uscite come sono (altre parti di programma non sortiscono nessun effetto).
Resettando e scaldando la PTC in modo deciso con una pistola termica e riapplicandola all'inverter, tutto funziona.
Qualcuno ha qualche spiegazione?
Ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato.
Grazie.
A quanto detto da UKHeliBob aggiungo ...
... cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO della sezione Italiana del forum, (... e, per evitare future possibili discussioni/incomprensioni, prestando sempre molta attenzione al punto 15), dopo di che, come da suddetto regolamento (punto 16.7), fai la tua presentazione NELL'APPOSITA DISCUSSIONE (... quello che vedi in blu è un link, fai click su di esso per raggiungere la discussione) spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.
Grazie,
Guglielmo
P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto.
P.P.S.: Evitate di utilizzare la traduzione automatica fatta dal browser ... vi impedisce di capire la lingua della sezione dove andate a scrivere ...
Scusa per tutti gli evidenti errori che ho fatto, ma mi sono trovato davanti la possibilità di descrivere il mio problema, improvvisamente e inaspettatamente (non avevo compreso nulla del meccanismo dei nuovi registrati). Scusate ancora per l'enorme inesperienza, non volevo contrariare il regolamento, né eluderlo, si è trattato solo di non comprendere bene quello che succedeva, essendo una cosa nuova.
Roberto
Sembra che si tratti di un problema legato alle emissioni elettromagnetiche dell'invert. Sul dissipatore ci sono montati i mosfet e questi commutano grandi correnti impulsive. Gli ingressi di arduino sono ad alta impedenza, ci significa che assorbono dal circuito (PTC+Resistenza serie) poca corrente, ciò è un bene poiché possiamo abbassare l'impedenza (regime transitorio) attraverso un condensatore posto tra ingresso analogico e GND. In genere il valore sta nel range 100÷1000 nanofarad poliestere.
Puoi verificare i disturbi indotti dall'inverter disabilitando il codice attacca/stacca (che sarebbe poi il contatto del termostato) e stampare sul serial monitor il valore grezzo letto con analogRead().
Se è come suppongo, avvicinando il PTC all'inverter vedrai oscillazioni ampie del valore letto con analogRead().
La ricetta base consiste nell'applicare un condensatore come detto prima. Se anche così le oscillazioni fossero molto ampie occorre un operazionale in funzione di filtro attivo tarato a 30Hz o meno. La ricetta via software prevede il campionamento ad intervalli costanti, accumulando n campioni per poi calcolare la media.
Bene posta anche il codice attuale.
Ciao e benvenuto.
Come detto probabilmente per la lettura si tratta di interferenze EM, sempre presenti nel mondo reale.
Il fatto che vi siano anche dei " system freezes" casuali, è sintomo di un problema hardware ancora più grave.
Arduino è una schedina prototipi senza alcuna protezione da disturbi condotti e irradiati, è come lavorare con un integrato digitale nudo e crudo su una breadboard. Per renderlo adatto ad una applicazione reale in ambiente elettricamente rumoroso, bisogna avere almeno:
- alimentazione stabile
- ingressi/uscite filtrati e disaccoppiati (nessun terminale direttamente esposto a un lungo filo che si allontana dal chip diventando un'antenna)
- nessun percorso di segnali impulsivi o alte correnti che attraversi la sezione logica (quindi si devono curare i percorsi delle masse, e delle alimentazioni, in modo da evitare ciò).
Intanto grazie per le risposte, proverò le indicazioni, ma fra qualche giorno, in quanto mio figlio, che sa scrivere in C, torna dalle vacanze fra un po' di giorni, io so solo usare un cacciavite.
Di seguito provo ad incollare il codice attuale. Il termostato è veramente all'osso. Non state a guardare tutta la parte di programma in grigio che ha altri problemi ed è stata sospesa in testo per il momento.
Pannello.ino (3,4 KB)
Non entro nel merito della logica, ma non vedo nulla che possa portare a blocchi o comportamenti casuali. Il problema è hardware. Serve schema esatto (ricordando a scanso di equivoci che in questo forum per regolamento non si può parlare di nulla che riguardi collegamenti con tensioni superiori alla bassissima tensione di sicurezza).
E' abbastanza chiaro che il problema è hardware, in quanto dipende da disturbi ambientali, dovuti alla sola vicinanza (non "collegamenti") con sistemi con tensioni superiori, tra l'altro molto disturbanti. Ho già compreso anche che probabilmente il progetto difficilmente potrà essere reso funzionante, in quanto mi è impossibile separare tutti gli ingressi uscite, per limitato budget economico e di tempo. Se avessi visto prima questo forum, penso che non mi sarei inoltrato in questo progetto.
Faccio un po' di prove e se trovo qualche spiraglio, magari cerco di fare uno schema dettagliato e complessivo, che al momento non ho.
Grazie.
Mi rifaccio a questa tua frase ...
... se si legge bene il REGOLAMENTO, al punto 15.5, si capisce che le schede NON sono fatte per essere usate così come sono per nessun tipo di applicazione reale ... esse sono un punto di partenza con cui sviluppare progetti corredandole di tutto l'hardware mancante e necessario in un progetto reale.
Guglielmo
Adesso l'ho capito, dopo che ho comprato Arduino, l'ho programmato e collegato. Solo dopo che ho riscontrato i problemi, mi sono iscritto al forum ed ho cominciato a capirci qualcosa.
Sarebbe importante che questo aspetto che sottolinei, Guglielmo, fosse la prima cosa che dicono gli insegnanti agli studenti, quando si approcciano la prima volta ad Arduino (cosa che non è successa nel caso di mio figlio).
Roberto
Il problema naturalmente non è Arduino, che non ha nessuna colpa, ma in generale la "leggerezza" con cui si affronta l'elettronica di base, che genera l'illusione che tutto funzioni in modo semplice e ideale come collegare due lampadine a due interruttori.
Ricordo tanti anni fa a scuola lunghe ore di spiegazioni sui parametri ibridi di un transistor, ma nessuno che abbia mai accennato ai disturbi condotti tra due alimentatori, e c'è stato un periodo in cui pensavo di buttare l'elettronica a mare e darmi alla coltivazione di primule.
Quindi si, la delusione iniziale è naturale, magari si pensava di avere tra le mani un prodotto pari caratteristiche di gestione/collegamento di quelle di un PLC industriale, ma sicuramente c'è la soluzione, d'altra parte un PLC non è magico, li dentro c'è sempre un microcontroller che collegato senza accortezze è soggetto agli stessi identici "problemi".
Qui si tratta probabilmente (in attesa di schema) solo di:
- filtrare l'ingresso analogico per eliminare i disturbi captati (che evidentemente superano l'isteresi)
- filtrare i contatti di quello che immagino sia un relé in uscita per evitare le scintillazioni, evitando inoltre di alimentare la bobina del relé dai 5V della logica di Arduino, se è questo il caso.
- stabilizzare meglio l'alimentazione di Arduino con un condensatore da 100 µF in su
Ma non gli hanno mica detto di trafficare con gli inverter, circa i quali siete ignoranti (che ignorate il loro funzionamento). Girala in positivo, ora hai scoperto le EMI:
PS: ci ho sbattuto il muso e solo dopo ho capito quanto complicate sono le cose descritte semplici da altri.
Ciao.
Comunque, una cosa simile si fa con un semplice amplificatore operazionale reazionato positivamente...