Arduino Forum

International => Italiano => Generale => Topic started by: ricki158 on Aug 16, 2017, 05:31 pm

Title: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Aug 16, 2017, 05:31 pm
Buongiorno a tutti,
volevo chiedervi dei consigli per fare con Arduino un misuratore con visualizzatore.
Vi spiego meglio il mio problema:
- Abbiamo una pista di macchinine Slot con 4 corsie e vogliamo monitorare il voltaggio di picco, siccome la regola è che non si possono usare più volt di quelli forniti dall'alimentatore e qualcuno ha fatto il furbetto. Naturalmente siccome le macchine sono molto veloci, non è possibile monitorare ad occhio il picco, ma questo verrà salvato e scritto a parte rispetto al voltaggio attuale.
- Sarebbe interessante anche fare una piccola "telemetria" considerando anche l'assorbimento di corrente dei motori, salvandola da qualche parte.
- Manca anche un sistema per contare quante volte una macchina è uscita di pista e in caso quanto tempo ha perso.
- Una cosa importante per il tempo, nella nostra pista in legno, è la temperatura e l'umidità dell'ambiente e sarebbe interessante monitorarlo o semplicemente avere un termometro a portata di mano, cosa che attualmente non c'è e che avendo un Arduino da installare si potrebbe fare semplicemente con un LM35 (umidità non saprei come ma credo ci siano i misuratori che fanno temperatura e umidità assimee ma non ne ho mai usati).
- Infine sarebbe bello avere uno speed trap alla fine del rettilineo, il che significherebbe avere due sensori a infrarossi per ogni corsia, sistemati ad una distanza ben specifica.

Il sistema di cronometraggio della pista è l'IST, per chi conosce il mondo delle Slot.

Quello che più mi interessa attualmente è fare il monitoraggio della tensione, della corrente e la continuità. Per farlo avrei bisogno di un'entrata analogica per ogni pista, collegata ad un partitore di tensione opportuno siccome la pista viaggia a 12v, ma questo significherebbe già 4 entrate analogiche occupate. Per il monitoraggio della corrente invece? Come potrei fare? Non esiste qualcosa che possa fare l'uno e l'altro facendomi guadagnare porte? Ho letto di un acs758, ma non ho capito se misura contemporaneamente sia la tensione che la corrente e come faccia a farlo. Mentre per la continuità non saprei proprio.

Ringrazio tutti per le risposte.
Riccardo
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: astrobeed on Aug 16, 2017, 06:10 pm
Tensione e corrente richiedono due misure diverse, la prima è in parallelo, la seconda in serie, non è possibile misurare la tensione applicata alla pista partendo dalla sola misura in corrente, idem al contrario per la corrente.
Se devi monitorare tensione e corrente di quattro tracce hai bisogno di otto ingressi analogici, di conseguenza non puoi usare una UNO, ti serve una MEGA2560.
L'ACS758 è un sensore per alte correnti, fondo scala minimo 50A, decisamente esagerato per l'uso con auto slot dove anche prendendo in considerazione la corrente di spunto difficilmente si va oltre i 10A.
Con solo l'ACS758, o altri sensori corrente con fondo scala minore, non puoi misurare la tensione applicata alla traccia sotto esame.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Aug 16, 2017, 07:46 pm
Ok per cui devo valutare un altro metodo per misurare la corrente. Cosa posso fare?
Potrei usare dei multiplexer analogici per aumentare il numero delle porte? (cioè ho sufficiente velocità per le letture?) Vorrei evitare di scomodare un Mega2560 anche perché vorrei mettere un ATMega328 StandAlone. I valori vorrei leggerli tramite un display OLED, per cui il collo di bottiglia credo sia nella parte analogica più che nella parte digitale, quindi senza passare a qualcosa di più grosso potrei risolvere ampliando le entrate analogiche in quel modo.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: docsavage on Aug 16, 2017, 07:53 pm
Scusa se ti faccio domande Che ti sembreranno banali, ma è  per chiarire le idee


Le macchinine vanno solo in un senso, vero?
Hai idea della massima core te che assorbono, in gara e all' avvio?


Come te la cavi con la programmazione?

Devi salvare i dati di temperatura e umidità, su una sd?


Anche i tempi persi per fuori pista, vanno salvati?

Due misure per pista richiedono due ingressi analogici

Per quattro piste una UNO non basta, anch'io  voto MEGA

Ci sono sensori di tensione e corrente in SPI, anche che fanno tutte e due le misure, ma mi sembra eccessivo

Anche multiplex lo vedo eccessivo,

Comunque tutto quello che hai scritto si può fare


Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: docsavage on Aug 16, 2017, 07:57 pm
Ok, ho letto solo dopo...

I sensori basati su lmp92064 andrebbero bene, ma io non li so usare
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Aug 16, 2017, 08:13 pm
Le macchine vanno in un solo verso si.

Non ho idea ma sarebbe interessante misurarlo sul circuito, per avere anche idea se un motore è buono, in base a come va e quanto assorbe. Assorbimento di picco si parla di 8 Ampere per motori molto molto spinti e lavorati. Sul mio comando ho un transistor MJ802 (100 Volt, 200 Watt, 30 Ampere) e se non uso un dissipatore o una ventola comincia a scaldare, per dare una specie di paragone.

Con la programmazione imparo facendo domande. Guarda questo topic: http://forum.arduino.cc/index.php?topic=449092.0 (http://forum.arduino.cc/index.php?topic=449092.0)

Il salvataggio dei dati non sono sicuro che serva, temperatura e umidità interessano per la sessione di tutti e servono solo come indice in relazione ai tempi. D'estate i tempi si alzano, d'inverno si abbassano. E' più che altro per capire quanto lenta è la pista rispetto al tempo ideale.

Mi interessa contare quante volte esco di pista da un reset e al massimo quanto tempo ho perso per tutte le uscite che ho fatto, magari salvando il tempo perso per ogni uscita. (corriamo in 4 alla volta, ogni 3 minuti cambiamo corsia, quindi sarebbe da resettare ad ogni cambio corsia. durante la corsa ci sono dei "ponti", ovvero togliamo la corrente perché un commissario sta sistemando le auto uscite di pista e ci mette troppo tempo, oppure c'è stato un incidente grosso, oppure le auto escono in posizioni scomode. naturalmente quando c'è il "ponte" si deve fermare il conteggio del tempo di uscita, perché sono tutti fermi.)

Perché eccessivo SPI e multiplex mentre una MEGA2560 no? Non ho problemi a farmi PCB.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: docsavage on Aug 16, 2017, 08:34 pm
Vedevo più  semplice la mega, ma se puoi farti il pcb ok
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: astrobeed on Aug 16, 2017, 10:02 pm
Ma perché ti devi complicare la vita per niente ?
Hai una idea di quanto sia critico usare componenti come gli LM92064, assolutamente inutile nel caso specifico, di quanto costano con i vari componenti di contorno, in particolare la rsense di potenza ?
Usa una mega compatibile, la paghi meno di 20 Euro, una manciata di passivi, quattro sensori corrente hall da10-20A, se vuoi anche temperatura e umidità aggiungi un LM35 e un DHT22, problema risolto.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: docsavage on Aug 16, 2017, 11:04 pm
Posto che io sarei d'accordo con astro....

Casomai i sensori potrebbero essere ina219

Iic, misura della corrente higside...


Forse meglio degli altri

Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Aug 17, 2017, 09:19 am
Si ho visto il datasheet di quel componente e mi sono messo un po' le mani tra i capelli.
Ho provato a buttare lì l'idea dei mux perché in passato li ho usati per leggere 36 potenziometri e 10 fader perché volevo farmi un mixer.
Allora per leggere la corrente guardo quei componenti la, mentre per fare una misura di continuità come posso muovermi?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: docsavage on Aug 17, 2017, 09:48 am
Oh no.....

Niente continuità mentre scorre corrente

Ammenocche tu non voglia fare con onde convogliate in rf, ma lasciamo stare


Io farei auto assente = tensione sì ma corrente no

In logica, quindi, non con misure...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Aug 17, 2017, 10:31 am
Si ma se ho l'auto ferma ho 0 tensione e 0 assorbimento, quando "frena" il motore si comporta da generatore perché è in corto circuito. Ho bisogno di chiarirmi un po' le idee.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: astrobeed on Aug 17, 2017, 11:06 am
Non so come funziona la frenata sulle slot car, però troverei logico che sia realizzata con due modalità, frenatura elettrica tramite un carico variabile applicato alla pista, p.e. una resistenza di potenza, in modo sfruttare il freno motore dovuto alla generazione di energia elettrica, con segno opposto, da parte del motore quando gira senza alimentazione, e un sistema di alimentazione con polarità inversa per frenate con molta forza.
Se devi verificare la presenza dell'auto sulla pista hai un solo modo semplice per farlo, la tensione minima applicata alla pista deve essere almeno di qualche decimo di Volt, in questo modo se l'auto è presente ci sarà comunque un leggero assorbimento di corrente, bastano 20-30 mA, non sufficiente per far girare il motore, ma sufficiente per confermare la presenza dell'auto sulla traccia.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Aug 17, 2017, 01:33 pm
Allora, ci sono vari modi per alimentare le piste e vari modi per frenare una macchina Slot.

Noi sulla nostra pista abbiamo un alimentatore unico a 12 Volt che va alle postazioni. Su ogni postazione c'è una presa sulla quale si collega il regolatore che va al positivo della propria pista e quindi ad un polo del motore. Il polo negativo è comune a tutte le piste.

In un'altra pista invece ci sono 4 alimentatori tarati per ogni pista. Il proprietario di questa pista però mi ha detto che per il suo sistema di monitoraggio tensione ha dovuto togliere dei disturbi, perché a vuoto la tensione oscillava. Non so altro però, non so di quanto fosse l'oscillazione ne quali disturbi potesse avere. Appena possibile mi faccio passare tutto il materiale. Però lui ha fatto solo il monitoraggio della tensione. Io volevo provare a fare qualcosa di più completo.

Per quanto riguarda la frenata, noi usiamo un solo dei due metodi, siccome le frenate sono molto veloci:
- Di solito mettiamo un potenziometro fra i due poli del motore e quando il comando torna alla posizione di partenza chiude il circuito tra il polo positivo e il potenziometro. Il potenziometro è di solito uno a filo, per cui di potenza, da una decina di Ohm.
- Sennò c'è la possibilità del "tutto freno" ovvero quando si chiude il contatto i poli del motore sono cortocircuitati, non c'è nessuna possibilità di regolazione della frenata e il motore frena sempre al massimo.
- Un'altra variante del potenziometro è quella di mettere un transistor e con un potenziometro "normale" regolare il guadagno di corrente che passa tra collettore ed emettitore (il potenziometro è tra emettitore e base) e il contatto del freno da tensione di 12 Volt alla base del transistor tramite una resistenza.
- Infine c'è la possibilità del cosiddetto "freno PWM" dove alimento un 555 che oscilla su un MOSFET collegato tra i poli del motore. Con questa soluzione ho notato un picco (che sembra quello che dici tu quando parli del secondo metodo di frenatura, ovvero dare una tensione contraria) e poi un mantenimento lungo il duty cycle. Questo produce una frenata importante all'inizio ma poi un mantenimento, il che è diverso dal normale e su qualche pista aiuta perché hai la botta iniziale ma poi in entrata curva la macchina scorre.

Sarebbe interessante provare la tua seconda opzione, ovvero tensione contraria, ma se non viene usata neanche dai produttori un motivo ci sarà. Probabilmente si è una frenata tosta ma forse frena troppo per essere controllata adeguatamente, gli spazi di frenata sono minimi e quindi non si riesce a mettere la macchina come si vuole, l'inversione di polarità può creare danni al motore che è già sollecitato (sono motorini che fanno 60k giri) senza contare i problemi alla trasmissione corona / pignone. Io ho lo schema elettrico del freno PWM sul quale ho visto la curva ed ho notato questo picco inverso di tensione, ma non so come mai succeda. Credevo il 555 non potesse farlo.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: astrobeed on Aug 17, 2017, 02:10 pm
La frenata tramite tensione inversa è da farsi sotto stretto controllo della corrente richiesta dal motore, quindi serve una certa quantità di elettronica per implementarlo, cosa che andrebbe ad incidere non poco sul costo dei sistemi di controllo per le slot car.
Per dirla tutta la soluzione ideale, senza barare, è usare un controllo del motore a quattro quadranti, ovvero tramite pwm in lap mode, però non ho idea se sia consentito dal regolamento e serve il controllo diretto della traccia, tutte e due le rotaie, senza avere nulla in comune con le altre.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: docsavage on Aug 17, 2017, 07:18 pm
Beh...


Qui parliamo di misure, non di controllo

Se ho capito bene il regolatore è del giocatore

E causa frenatura in ctocto non possiamo nemmeno usare piccole correnti per sapere se la macchina è in pista

Tocca misurare la corrente, che potrebbe anche essere negativa, niente shunt analogici quindi, o almeno non facilmente

È un casino
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Aug 18, 2017, 02:53 pm
Purtroppo di elettronica non inerente Arduino non ne possiamo parlare più di tanto.
I forum di Slot non dicono molto e di sicuro non mettono formule o dati particolari purtroppo.
La frenata con tensione inversa è meglio evitarla come dicevo per quei motivi. Meglio dare meno interferenze possibili agli altri concorrenti.

Ma i tester come fanno a "misurare" la continuità dei diodi? Oppure vedere se le tracce non sono interrotte su un PCB...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: docsavage on Aug 18, 2017, 09:07 pm
fai almeno una cosa:

misura con un tester 10Adc la corrente consumata da una pista in ogni condizione possibile
in particolare sarebbe interessante sapere la corrente di corto circuito della pista, per prevedere il caso di una macchinina con motore impiantato

Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: docsavage on Aug 19, 2017, 08:37 am
.
.
.

Ma i tester come fanno a "misurare" la continuità dei diodi? Oppure vedere se le tracce non sono interrotte su un PCB...
applicano una limitata tensione al componente in prova

E misurano la debole corrente

Non, ripeto non, è consigliato a componente montato
Non, ripeto non, si può fare a circuito in tensione
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: astrobeed on Aug 19, 2017, 08:54 am
In realtà è possibile verificare se un diodo funziona quando è montato sul circuito, a seconda di quello che deve fare può bastare un tester, è sufficiente misurare la tensione ai suoi capi e se è quella prevista dal costruttore il diodo funziona, oppure serve un DSO per verificare l'andamento del segnale ai capi del diodo.
Idem per le piste del pcb, verificando la differenza di potenziale, o il segnale, tra GND o Vdd, tra due punti di un pcb è possibile capire se la pista che li unisce è interrotta oppure no.
Tornando alla questione pista l'unico modo, semplice, per stabilire se l'auto è sul tracciato è quello che ho suggerito io, fare in modo che anche con il pulsante di controllo a zero ci sia sempre un minimo di corrente attraverso il motore, 20-30 mA bastano e non hanno alcun effetto sull'auto, se l'auto non è presente la corrente rimane a zero, se è presente ma non in moto c'è il piccolo flusso di corrente a segnalarlo.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: docsavage on Aug 19, 2017, 09:15 am
Rimane il problema della frenatura in ctocto, che ti mette in corto il circuito di misura della continuità

E il problema accessorio che il regolatore, manetta di comando, chiamalo come vuoi, non è accessibile perché del giocatore non della pista

Comunque, applicare apposta una tensione o misurare la tensione già applicata non cambia molto


Per come la vedo io considerare la macchina fuori pista per tensione applicata ma corrente zero è equivalente a mettere un circuito di continuità specifico

Ieri ho avuto febbre a 38,

stanotte ho sognato un 555 astabile a vari kHz, che inietta attraverso un condensatore un segnale su un solo lato della pista
La pista è disaccoppiata in ac con una induttanza adeguata

Presenza segnale ac sull'altro lato della pista significa presenza auto, oppure freno in ctocto attivo, oppure ancora disturbi dovuti alla commutazione. Ma a sua volta questo implica auto presente e in funzione

Voi dite che è colpa della febbre?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Aug 19, 2017, 04:14 pm
No, la febbre non c'entra, e' un normale sistema di controllo a segnale sovrapposto :D
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: docsavage on Aug 19, 2017, 04:39 pm
ecco,
tenetelo presente
io da malato penso cose normali

da sano.........
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Aug 21, 2017, 02:49 am
Quindi da applicare al negativo della pista, così da poter "tornare indietro" ad ogni pista. Chissà se può andare ad influire sul comportamento delle macchine.

Intanto comincio ordinando una Mega e tirando qualche cavo fino alla postazione della direzione gara.

Come schermo OLED sufficientemente grande cosa posso usare? Non ne ho mai usati e non so cosa offre internet.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Aug 21, 2017, 02:25 pm
Dato che suppongo si parli di continuita' nel senso macchina presente / macchina assente, e dato che dovrebbe usarlo per 4 macchine insieme, anche mentre viaggiano, frenano, e cosi via, il sistema piu semplice potrebbe essere quello di usare 4 diversi circuiti, con 4 frequenze facilmente arrestabili da delle robuste induttanze in serie sui positivi delle tracce (in modo che i regolatori non interferiscano), ed iniettate una in ogni pista positiva tramite accoppiamento capacitivo ... si misura sempre tramite accoppiamento capacitivo l'attenuazione di tale frequenza, e si mette all'interno delle macchine un condensatore fra le spazzole (che non interferisce con il funzionamento del motore) ...

Macchina presente = frequenza piu o meno cortocircuitata dal condensatore verso massa = attenuazione alta al punto di misura

Macchina assente = frequenza NON cortocircuitata verso massa = attenuazione scarsa o quasi inesistente

;)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Aug 21, 2017, 05:09 pm
Purtroppo sarebbe meglio non toccare le macchine. Dovrei convincere la gente a mettere un condensatore e quindi aggiungere peso. Insomma non tutti sarebbero d'accordo..
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Aug 21, 2017, 05:55 pm
... per due grammi in piu ? ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: astrobeed on Aug 21, 2017, 06:55 pm
Due grammi su una slot car da gara sono come 20 kg su una formula 1. :)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Aug 21, 2017, 07:49 pm
:D
Delle volte neanche riusciamo a capire come mai alcune macchine, con stessi componenti e assettate alla stessa maniera hanno comportamenti differenti oppure sono più veloci.
Se poi imponiamo alle persone di aggiungere un condensatore, più di qualcuno potrebbe storcere il naso. Onde evitare ciò preferirei non toccare né i modelli né i comandi.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Aug 22, 2017, 09:50 am
C'e' poco da fare, allora ... per trasmissione o per attenuazione, sempre un condensatore in parallelo alle spazzole, ci si deve mettere ... magari anche solo 1u ceramico da un quarto di grammo, ma serve ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: astrobeed on Aug 22, 2017, 09:52 am
Il problema di base è che non puoi modificare controller e auto, i proprietari sicuramente non lo permettono, quindi alla fine può solo misurare tensione e corrente sulle varie tracce, punto e basta. :)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: docsavage on Aug 22, 2017, 10:11 am
Sarebbe un po' che lo dico...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Aug 22, 2017, 10:29 am
Si, fino li ci ero arrivato persino io :D ... il mio discorso era sulla ipotetica implementazione di un sistema presenza/assenza della macchina (o per meglio dire, contatto/noncontatto delle spazzole), non sulle altre misure che poteva o meno fare ;) ... ovvio che se non si puo, non si puo ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Aug 23, 2017, 03:49 pm
Ragazzi, siete una forza!! Quindi in pratica mi state dicendo che non si può fare.
Chiedo un'altra volta. Che display OLED posso prendere, che sia grande? Non ne ho mai usato uno e non so cosa c'è in commercio.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Aug 23, 2017, 04:02 pm
... Quindi in pratica mi state dicendo che non si può fare.
...
Non proprio ... ti stiamo dicendo che, per quanto riguarda il controllo di presenza dell'auto sulle tracce, modificando le auto si potrebbe, ma senza una modifica all'auto non si puo fare ... mentre per quanto riguarda misure di correnti e tensioni, mi sembra ti abbiano gia detto che si puo, anche se ti servono 8 ingressi analogici, per 4 tracce, perche' ogni parametro ha bisogno del proprio ingresso (4 per le 4 tensioni e 4 per le 4 correnti) ... inoltre se vuoi anche temperatura, umidita', eccetera, ovviamente servono ulteriori ingressi analogici ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Aug 23, 2017, 04:07 pm
Si intendevo il controllo sulla presenza o meno.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Aug 23, 2017, 04:11 pm
Senza una minima modifica all'auto, non mi viene in mente alcun altro sistema ... a parte ovviamente quello suggerito come alternativa, di far circolare una minima tensione in permanenza fra le tracce e rilevarne l'assorbimento ... ma che con le correnti ed extratensioni dovute alle manovre, avrebbe un sacco di problemi, e sarebbe estremamente difficile da implementare, specie se anche i regolatori fossero degli utenti come le auto ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: docsavage on Aug 23, 2017, 04:26 pm
Auto presente= Tensione presente corrente presente

auto assente = tensione presente corrente assente

NON determinato (ma ininfluente) tensione assente

è il massimo fattibile, mi spiace


controllare una cosa, però...

che a causa di normative EMC non sia già obbligatorio il condensatore citato
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Aug 23, 2017, 04:40 pm
Ci avevo pensato, ma se dicono di non volere peso extra, possibile che non ci sia (o che lo rimuovano, magari :D) ... se c'e', comunque, si puo provare ...

Se poi non fosse possibile aprire le auto, forse basterebbe costruire un circuitino con un 555 sui 500KHz o frequenza simile, collegarlo ad un sistema di rilevazione (accoppiato in modo capacitivo), e poi misurare se c'e' attenuazione e quanta collegando i capi alle spazzole dell'auto ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: docsavage on Aug 23, 2017, 05:31 pm
oh beh...

se fosse obbligatorio, per ragioni EMC

si obbliga la verifica dell'auto, con misura esplicita, con lo stesso circuito che rileva la presenza

o meglio ancora, si aggiunge per regolamento che un auto "assente" ovvero che non risulta in pista col circuitino non avrà una eventuale vittoria omologata

se ci fosse l'obbligo...........
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Sep 07, 2017, 02:44 pm
Ho parlato con un po' di piloti e il guru per noi slottisti... "Beh tu prova a vedere, se è interessante si può provare a renderlo obbligatorio".
Però non sono molto preparato su questa parte dell'elettronica.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Sep 10, 2017, 06:58 pm
Ho fatto alcune ricerche ed è lo stesso metodo utilizzato nei plastici per trenini per capire se un treno è deragliato o meno.
In pratica si tratta di mettere un'impedenza in serie al positivo, dopo questa bisogna iniettare la frequenza. Il condensatore serve per cortocircuitare la frequenza e quindi abbassare l'ampiezza del segnale.
Nei trenini vengono usate frequenze da 100 kHz.

A questo punto però sorgono altri due problemi:
-1: Qualcuno può usare un regolatore in PWM per il motore. Usare una frequenza molto alta potrebbe non influire sulla regolazione in PWM;
-2: Se le spazzole (magari perché troppo lunghe o perché dopo un'uscita si sono arricciate) vanno in cortocircuito fra di loro? Se vanno in cortocircuito sul telaio e quindi sul corpo del motore e quindi sui magneti del motore? Possono succedere danni?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Sep 10, 2017, 07:08 pm
si usano due o trecento KHz, e non dovrebbero interferire con i PWM, basta calcolare opportunamente le impedenze ...

Se va qualcosa in corto, fa gli stessi danni sia con che senza il sistema ed i condensatori, quelli non influiscono ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Sep 10, 2017, 08:08 pm
Eh, il calcolo di impedenze e condensatori non l'ho mai fatto. 300 KHz ok. I danni in quel senso corrispondono solo alla macchina che non si muove o che in curva non ha potenza, su un sistema di regolazione "lineare" come l'ho io.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Feb 02, 2018, 06:49 pm
Buongiorno a tutti,
alla fine ho preso l'hardware che mi deve ancora arrivare dalla Cina.
La scelta per il momento, per quello che serve a noi con maggiore celerità, è ricaduta su due display 1.8" TFT con connessione SPI ed un Arduino Pro Micro Clone.

Display:
https://www.ebay.it/itm/1-8-Inch-TFT-LCD-Touch-Panel-Board-Display-Module-For-Arduino-UNO-MEGA-Nano-HOT/311967275698?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649

Arduino Pro Micro:
https://www.ebay.it/itm/Pro-Micro-5V-16MHz-ATmega32U4-Replace-ATmega328-Arduino-Pro-Mini/122745843861?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649

Innanzitutto non ho mai fatto un collegamento con lo standard SPI.

Questo è il pettine della breakout board dei due display:

(http://g01.a.alicdn.com/kf/HTB1oC_1PXXXXXaBXVXXq6xXFXXXX/New-Stylish-1-8-inch-128-x-160-Pixels-For-Arduino-TFT-font-b-LCD-b.jpg)

Nell'ordine abbiamo:

1 GND
2 VCC
3 NC
4 NC
5 NC
6 RESET
7 A0
8 SDA
9 SCK
10 CS
11 SCH (?)
12 MISO
13 MOSI
14 SD_CS
15 LED+
16 LED-

Allora, la mia domanda iniziale è:
- Basta un Arduino Pro Micro per pilotare due display? Io ero rimasto che il display veniva pilotato via SPI ma siccome c'è anche la memoria SD non ci sto capendo molto. In ogni caso come devo fare i collegamenti? Quei due pin SCK e SDA ricordano molto un i2c ...
- Nell'inserzione dice touch display. Siccome ne so veramente pochissimo, è veramente touchscreen? In tal caso eliminerei due pulsanti che devo mettere assolutamente per selezionare una delle 4 piste e azzerare eventualmente i valori.

Innanzitutto queste due domande.

Intanto spiego cosa andrò a fare: ho un alimentatore che alimenta 4 postazioni con 12v, la GND è su una delle due "trecce" della corsia, le 4 corsie hanno la GND in comune. Nelle postazioni i concorrenti inseriscono il proprio regolatore (presa BiTicino MAGIC 3 poli, +, - REG) con il quale regolano la velocità e la frenata delle macchine. Noi vogliamo andare a monitorare la tensione in pista dei concorrenti, salvando il picco massimo, per essere sicuri che non ci sia nessuno che bara. (dal momento che per regolamento nessuno può fornire alla macchina una tensione maggiore rispetto a quella fornita dall'alimentatore)

Devo fare dunque una misurazione del voltaggio tra la GND dell'alimentatore e il positivo della pista. (alcune piste invece hanno un alimentatore per ogni corsia, ma il GND comune... in pratica non cambia nulla siccome hanno in comune la GND) Quindi per ogni positivo delle corsie metto verso GND una resistenza / fusibile da 1 Ohm 1/4 W per proteggere qualsiasi cosa possa accadere sulla pista, poi faccio un partitore di tensione con resistenza di "precisione" da 680 k Ohm 1/4 W e verso massa un trimmer multigiro da 200 k Ohm, prelevo dunque la tensione tra la resistenza e il trimmer e metto verso massa in anti parallelo un diodo da 5.1 v per sicurezza verso l'entrata di Arduino. E' un Arduino Pro Micro, quindi funziona a 5 v con regolatore di tensione interno.

Per quanto riguarda l'alimentazione di Arduino e dei display, 220v CA, un piccolo trasformatore a 12 v CC, per Arduino Pro Micro visto che ha l'alimentatore interno non c'è problema, per i display metterò un LM7805 in package TO220 con un paio di condensatori in entrata e in uscita da 100 nF e un paio di condensatori più grossi elettrolitici sempre in entrata in uscita, sempre tra entrata / uscita e massa. Naturalmente le masse di alimentazione e della pista per le misure vanno separate.

Detto ciò e tralasciato per il momento il discorso sulla connessione con i display (e il codice da scrivere che ancora devo studiare visto che, e lo ripeto per l'ennesima volta, non ho mai lavorato con questi display), veniamo al codice semplice semplice per intanto effettuare le misurazioni.

** il primo pezzo di codice arriverà fra qualche giorno **
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: gpb01 on Feb 02, 2018, 07:47 pm
1. Studia QUI (https://www.corelis.com/education/SPI_Tutorial.htm) e QUI (https://learn.sparkfun.com/tutorials/serial-peripheral-interface-spi) come funziona un bus SPI e come viene selezionato il device con cui vuoi parlare

2. Il bus SPI è un bus molto veloce e ... collegarlo con i "cavetti", come dovrai fare (visto che la Pro Mini NON ha quel connettore che è fatto per la MEGA) può essere fonte di molti problemi! Tienili molto corti e speriamo bene.

Guglielmo
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Feb 02, 2018, 08:40 pm
E perché non cominciare semplicemente con 4 comparatori tra Vcc e +Alimentatore?
4 bei led rossi di superamento soglia, a seguire 4 flip-flop per mantenere l'informazione
e poi passi ad arduino, ma intanto hai anche una "controprova" HW che nessuno tarocca nulla.
poi non ho capito come farebbe un concorrente a taroccare il suo regolatore, cosa è? la sua manetta di comando?, e cosa ci tiene dentro? un reattore nucelare tascabile, una pila ricaicabile? un supercondensatore?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Feb 03, 2018, 11:50 am
1. Studia QUI (https://www.corelis.com/education/SPI_Tutorial.htm) e QUI (https://learn.sparkfun.com/tutorials/serial-peripheral-interface-spi) come funziona un bus SPI e come viene selezionato il device con cui vuoi parlare

2. Il bus SPI è un bus molto veloce e ... collegarlo con i "cavetti", come dovrai fare (visto che la Pro Mini NON ha quel connettore che è fatto per la MEGA) può essere fonte di molti problemi! Tienili molto corti e speriamo bene.

Guglielmo
1. Grazie mille! Per quanto riguarda l'infarinatura, mi ci metto sotto. Invece volevo avere qualche consiglio sul collegamento alla breakout board. Perché ci sono molti pin e non capisco quali usare. Purtroppo ho richiesto il datasheet ma mi hanno mandato quello del controller che hanno tutti e le dimensioni della board.

2. In che senso problemi sul connettore? Io metterò degli strip femmina su una millefori sulla quale mi collego con dei cavetti da 0.30 mm2. La lunghezza massima dei cavetti sarà sui 50 mm. Potrei usare anche un cavo con i poli twistati e schermati. Io pensavo comunque di mettere i due display e al centro Arduino Pro Micro. E se serve metto due pulsanti, uno per selezionare la pista, l'altro per resettare i valori massimi.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Feb 03, 2018, 11:58 am
E perché non cominciare semplicemente con 4 comparatori tra Vcc e +Alimentatore?
4 bei led rossi di superamento soglia, a seguire 4 flip-flop per mantenere l'informazione
e poi passi ad arduino, ma intanto hai anche una "controprova" HW che nessuno tarocca nulla.
poi non ho capito come farebbe un concorrente a taroccare il suo regolatore, cosa è? la sua manetta di comando?, e cosa ci tiene dentro? un reattore nucelare tascabile, una pila ricaicabile? un supercondensatore?
Guarda, per quanto riguarda il come si fa a barare, non lo so (e rabbrividisco pensando che, non essendoci nulla in palio, ci sia qualcuno che lo fa), però ho sentito di pile, ho sentito di induttanze... però non so come si debba fare per far funzionare l'accrocchio. So solo che su una tensione massima di 12 v qualcuno girava con picchi di 13.1-2 v in rettilineo (qualcuno sapendo di queste cose ha fatto un voltmetro di questo tipo in altre piste... potrei copiare il loro progetto ma mi piacerebbe imparare qualcosa e farlo mio, specialmente nella gestione del display ed eventualmente in quella del touchscreen). Oppure la prima parte della gara era normale, la seconda superlativa. Oppure in uscita della curva e nel primo pezzo di rettilineo si è affiancati, poi l'avversario va via in una maniera che non è imputabile ad un rapporto finale diverso o cosa.

Per quanto riguarda l'hardware, può essere un'idea anche la tua, ma siccome ho Arduino, volevo fare tutto tramite lui.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Feb 03, 2018, 12:15 pm
... poi l'avversario va via in una maniera che non è imputabile ad un rapporto finale diverso o cosa.
... quello dipende dal flusso canalizzatore ... :D
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Feb 03, 2018, 12:57 pm
Pigliate pigliate in giro :D Non pensavo nemmeno io mi prendesse così.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Feb 05, 2018, 08:25 pm
Allora, per quanto riguarda i collegamenti:

I due display devono avere in comune il "Clock" e il "MOSI" dell'SPI, perché la comunicazione è unidirezionale verso i display. Quello che cambia sono i pin CS, A0 e RESET che devono essere specifici dei due display. Quindi in pratica per pilotarne due mi bastano 2 + 3 + 3 = 8 pin.

Quindi sostanzialmente devo collegare ad Arduino i pin 8 e 9 (SDA e SCK) dei display e i pin 10, 7 e 6 (CS, A0, RESET) di ogni display. Questo a seguito di quello che ho visto fare per la libreria di Adafruit per la gestione del chip ST7735.

Per quanto riguarda il codice, ho trovato qualcosa in internet di già pronto, però volevo fare (di testa mia) una funzione, che però alla fine ricalca perfettamente quella che ho trovato in un sito: in poche parole vado a fare una misurazione con salvataggio in un array.

Code: [Select]

#define sclk 13               /* clock della comunicazione SPI, in comune */
#define mosi 11               /* comunicazione unidirezionale master -> slave, in comune */
#define cs1 10                /* selezione dello slave 1, primo display */
#define rs1 9                 /* , primo display */
#define rst1 8                /* reset dello slave 1, primo display */
#define cs2 7                 /* selezione dello slave 2, secondo display */
#define rs2 6                 /* , secondo display */
#define rst2 5                /* reset dello slave 2, secondo display */

#include <SPI.h>              /* libreria per comunicazione SPI */
#include <Adafruit_GFX.h>     /* libreria grafica di Adafruit */
#include <Adafruit_ST7735.h>  /* libreria per il chip ST7735 di gestione del display */

Adafruit_ST7735 display1 = Adafruit_ST7735(cs1, rs1, rst1);   /* creazione oggetto display1 per la libreria Adafruit di gestione del chip del display */
Adafruit_ST7735 display2 = Adafruit_ST7735(cs2, rs2, rst2);   /* creazione oggetto display2 per la libreria Adafruit di gestione del chip del display */

#define VREF  5.0             /* calibrazione della tensione di riferimento delle misure */
#define nCanali  4            /* numero dei canali da leggere */
#define nCampioni  128        /* numero dei campionamenti per leggere una media */

/* siccome Arduino legge in entrata al massimo 5 v, devo dividere con un partitore di tensione la Vin. Per fare ciò utilizzo una Ra = 680 k Ohm e una Rb = trimmer 200 k Ohm. */
/* il valore dei seguenti div sarà dato da Vin(max) / 5 . Vin(max) viene calcolata con 5 / (Rb / (Ra + Rb)). Quindi div = (Ra + Rb) / Rb. Ma siccome Ra è fisso, basta inserire il valore di Rb */

int Ra1 = 680000;             /* valore in Ohm di Ra1 */
int Rb1 = 200000;             /* valore in Ohm di Rb1 */
int Ra2 = 680000;             /* valore in Ohm di Ra2 */
int Rb2 = 200000;             /* valore in Ohm di Rb2 */
int Ra3 = 680000;             /* valore in Ohm di Ra3 */
int Rb3 = 200000;             /* valore in Ohm di Rb3 */
int Ra4 = 680000;             /* valore in Ohm di Ra4 */
int Rb4 = 200000;             /* valore in Ohm di Rb4 */

int divisore[4] = {((Ra1 + Rb1) / Rb1), ((Ra2 + Rb2) / Rb2), ((Ra3 + Rb3) / Rb3), ((Ra4 + Rb4) / Rb4)};   /* array di valori fissi dati dalle resistenze di ogni canale */
int misura[4] = {0, 0, 0, 0};                     /* array di valori delle misure digitali sui vari canali */
int Vmisura[4] = {0.00, 0.00, 0.00, 0.00};        /* array di valori delle misure delle tensioni sui vari canali in riferimento a VREF */
int Vmax[4] = {0.00, 0.00, 0.00, 0.00};           /* array di valori delle misure delle tensioni massime sui vari canali in riferimento a VREF */
int Vmin[4] = {100.00, 100.00, 100.00, 100.00};   /* array di valori delle misure delle tensioni minime sui vari canali in riferimento a VREF */

byte contCampioni = 0;        /* contatore dei campionamenti  */
byte contGenerale = 0;        /* contatore generale per cambiare di volta in volta la lettura e la scrittura nell'array corrispondente */

void lettura(){
  while (contCampioni < nCampioni) {    /* finché il contatore dei campionamenti è inferiore al numero dei campionamenti voluti */
    for (contGenerale = 0; contGenerale < nCanali; contGenerale++) {    /* varia contGenerale da 0 al numero dei canali */
      misura[contGenerale] += analogRead(A0 + contGenerale);    /* salva nell'array misura i valori dei canali in digitale */
    }
    contCampioni++;           /* aggiungi un "passo" al contatore dei campionamenti */
    delay(0);                 /* tempo nel quale aspetto */
  }
}

void maxmin(){
  for (contGenerale = 0; contGenerale < nCanali; contGenerale++) {   /*  */
    Vmisura[contGenerale] = ((misura[contGenerale]>>7) * VREF) / 1024.0;    /*  */
    if(Vmisura[contGenerale] > Vmax[contGenerale]){                 /*  */
      Vmax[contGenerale] = Vmisura[contGenerale];                   /*  */
    }
    if(Vmisura[contGenerale] < Vmin[contGenerale]){                 /*  */
      Vmin[contGenerale] = Vmisura[contGenerale];                   /*  */
    }        
  }
}


Una delle cose che non capisco è l'uso dei campionamenti. Cioè il ciclo while mi fa continuare fino a che non arrivo al 128° passo. Poi? Che senso ha? (Per inciso la mia funzione è praticamente identica, c'è solo il ciclo while in più). Dopodiché anziché il ciclo while non posso usare un semplice millis() con il quale ciclo tutte le funzioni che mi interessano? Infine dovrò fare una funzione di reset maxmin collegata a due pulsanti, in maniera che uno gestisca l'avanzamento del contatore dell'array e l'altro, quando premuto, azzera quel tale oggetto presente nell'array.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Feb 06, 2018, 06:42 pm
Alcune non chiare cose: come hai calcolato il divisore di tensione? Mi sembra sbagliato.
Tutte le misure intere? Sei sicuro?
 Perché tenere traccia del minimo? Sarà zero, per auto ferma o frenata in corto circuito, è  inutile da memorizzare
Il riferimento di tensione difficile che sia costante, conviene magari prevedere un riferimento esterno oppure una funzione di taratura, dove fai leggere ad ogni canale la piena tensione delalimentatore e la usi per autotarare i rapporti dei partitori
Invece per rispondere alla tua domanda,  Perché  128 letture?
Chi ha scritto aveva idee strane, la somma di 128 letture di un intero potrebbe superare (e probabile lo farà ) la capacità  di un intero, mandando a quel paese i calcoli.
Ho letto che in passato hai già fatto qualcosa con gli ingressi analogici, parti da quello che sai tu, non copiare a muzzo
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Feb 06, 2018, 07:07 pm
Alcune non chiare cose: come hai calcolato il divisore di tensione? Mi sembra sbagliato.
Beh, 5 v x 4.34 fanno 21.7 v che sono i volt massimi in entrata.

Quote
Tutte le misure intere? Sei sicuro?
No, gli array con i valori con due cifre dopo la virgola no. Solo che non ho grande esperienza di tipi di variabili e sarei andato a cambiarli più avanti.

Quote
Perché tenere traccia del minimo? Sarà zero, per auto ferma o frenata in corto circuito, è  inutile da memorizzare
Pensavo potesse essere utile in qualche modo.

Quote
Il riferimento di tensione difficile che sia costante, conviene magari prevedere un riferimento esterno oppure una funzione di taratura, dove fai leggere ad ogni canale la piena tensione dell'alimentatore e la usi per auto tarare i rapporti dei partitori
Come riferimento prendo i 5 volt massimi del riferimento per i convertitori A/D. C'è un modo per auto tarare questo valore in maniera interna?

Quote
Invece per rispondere alla tua domanda,  Perché  128 letture?
Chi ha scritto aveva idee strane, la somma di 128 letture di un intero potrebbe superare (e probabile lo farà ) la capacità  di un intero, mandando a quel paese i calcoli.
Ah ecco mi sembrava! Quindi non cambia nulla se faccio la funzione come voglio io.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Feb 06, 2018, 08:09 pm
Beh, 5 v x 4.34 fanno 21.7 v che sono i volt massimi in entrata.


non era 12V? ho letto male?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Feb 06, 2018, 09:25 pm
Si, l'alimentatore è a 12 v, ma siccome voglio andare a vedere se ci sono dei picchi massimi sopra i 12 v, devo calcolare il partitore in modo che la mia Vout sia 5 volt e la mia Vin sia, diciamo 15 volt, ma mettiamo almeno 20 volt per sicurezza. Il partitore fatto dalla resistenza da 680 k Ohm e il trimmer da 200 k Ohm fanno in modo che come tensione massima posso avere 21,7 volt, se voglio leggere con Arduino al massimo 5 volt (più di 5 volt lo danneggerei).
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Feb 06, 2018, 09:41 pm
appena venuta in menta cosina alternativa, molto KaTTiva verso i furbi
4 bei diodi Schottky tra il piu' delle piste e il piu' dell'alimentatore, se uno fa il furbo lo schottky gli cortocircuita la manetta di comando sul +12, vedi che dalla volta dopo non lo fà più nessuno
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Feb 06, 2018, 10:53 pm
No ma un voltmetro per tenere sotto controllo le tensioni comunque ci serve e ci interessa avere, al di là dei furbetti.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Mar 27, 2018, 11:46 am
Buongiorno a tutti, torno sul topic dopo un pezzo che non scrivevo nulla.
Sto ancora aspettando i display dalla Cina, intanto però è arrivato l'Arduino Pro Micro di concorrenza.

Subito una domanda: come lo alimento? Vedo sullo schema che c'è un ponte fra "valle" e "monte" del regolatore di tensione. Chiudendo il ponte il microprocessore e tutte le uscite sono alimentate a 5 volt, mentre lasciandolo aperto viene alimentato a 3.3 volt. I 5 volt però provengono dalla presina USB che non mi piace, io vorrei un'alimentazione dedicata senza tenere collegata la USB e in caso collegarmi con il PC per fare degli aggiustaggi nel software.
In pratica mi dovrei fare un circuito di regolazione della tensione da 12 Volt (trasformatore esterno dalla 220 di rete) a 5 Volt con un semplice LM7805 e poi portare il positivo al VCC sul pin 4.

Ho capito che posso gestire due display diversi tramite SPI, due pin di reset, due pin cs, due pin rs, un pin per il clock e uno mosi, in tutto fanno 8 pin. Però dovrò scoprire come funzionano i pin dei display.

Per il codice, l'ho rifatto con le mie idee, non so se sia corretto e spero si capisca "fra le righe" che cosa voglio fare:

Code: [Select]

#define sclk 13                                       /* clock della comunicazione SPI, in comune */
#define mosi 11                                       /* comunicazione unidirezionale master -> slave, in comune */
#define cs1 10                                        /* selezione dello slave 1, primo display */
#define rs1 9                                         /* , primo display */
#define rst1 8                                        /* reset dello slave 1, primo display */
#define cs2 7                                         /* selezione dello slave 2, secondo display */
#define rs2 6                                         /* , secondo display */
#define rst2 5                                        /* reset dello slave 2, secondo display */

#include <SPI.h>                                      /* libreria per comunicazione SPI */
#include <Adafruit_GFX.h>                             /* libreria grafica di Adafruit */
#include <Adafruit_ST7735.h>                          /* libreria per il chip ST7735 di gestione del display */

Adafruit_ST7735 display1 = Adafruit_ST7735(cs1, rs1, rst1);   /* creazione oggetto display1 per la libreria Adafruit di gestione del chip del display */
Adafruit_ST7735 display2 = Adafruit_ST7735(cs2, rs2, rst2);   /* creazione oggetto display2 per la libreria Adafruit di gestione del chip del display */

#define Vref  5.0                                     /* calibrazione della tensione di riferimento delle misure */

/*
siccome Arduino legge in entrata al massimo 5 v, devo dividere con un partitore di tensione la Vin.
Per fare ciò utilizzo una Ra = 680 k Ohm e una Rb = trimmer 200 k Ohm.
*/

/*
il valore dei seguenti div sarà dato da Vin(max) / 5 .
Vin(max) viene calcolata con 5 / (Rb / (Ra + Rb)). Quindi div = (Ra + Rb) / Rb.
Ma siccome Ra è fisso, basta inserire il valore di Rb.
*/

int Ra1 = 680000;                                     /* valore in Ohm di Ra1 */
int Rb1 = 200000;                                     /* valore in Ohm di Rb1 */
int Ra2 = 680000;                                     /* valore in Ohm di Ra2 */
int Rb2 = 200000;                                     /* valore in Ohm di Rb2 */
int Ra3 = 680000;                                     /* valore in Ohm di Ra3 */
int Rb3 = 200000;                                     /* valore in Ohm di Rb3 */
int Ra4 = 680000;                                     /* valore in Ohm di Ra4 */
int Rb4 = 200000;                                     /* valore in Ohm di Rb4 */

int Vdigital[4] = {0, 0, 0, 0};
int VdigitalMAX[4] = {0, 0, 0, 0};
int Vanalog[4] = {0.00, 0.00, 0.00, 0.00};
int VanalogMAX[4] = {0.00, 0.00, 0.00, 0.00};
int coef[4] = {((Ra1 + Rb1) / Rb1), ((Ra2 + Rb2) / Rb2), ((Ra3 + Rb3) / Rb3), ((Ra4 + Rb4) / Rb4)};   /* array di valori fissi dati dalle resistenze di ogni canale */

void readCH(byte n){
  unsigned int Somma;
  byte Sample = 0;
  for (Sample <= 31; Sample++;){
    Somma = Somma + analogRead(n);
  }
  Vdigital[n] = Somma / 32;
  Somma = 0;
  Sample = 0;
}

void conversionDA(byte n){
  Vanalog[n] = (Vref * Vdigital[n]) / 1023 ;
  VanalogMAX[n] = (Vref * Vdigital[n]) / 1023 ;
}

void detectMAX(){
  for (byte contCH = 0; contCH < 3; contCH++) {
    if(Vdigital[contCH] > VdigitalMAX[contCH]){
      VdigitalMAX[contCH] = Vdigital[contCH];
    }
  }
}

bool select = false;
bool reset = false;

void keyboard(){
  byte keyboard = analogRead(A4);
  if (keyboard > 725){select = true;}
  else {select = false;}
  if(keyboard < 724 && keyboard > 0){reset = true;}
  else {reset = false;}
}

void resetMAX(){
  byte contMAX = 0;
  if (select){contMAX++;}
  for (byte contMAX; contMAX <= 3;){
    if (reset){VdigitalMAX[contMAX] = 0;}
  }
}

void printCH0(){
  display1.setTextColor(ST7735_GREEN,ST7735_BLACK);
  display1.setTextSize(2);
  display1.setCursor(40, 15);
  display1.print("VERDE ");
  display1.setCursor(40, 33);
  display1.print(Vanalog[0] * coef[0], 1);
  display1.print("V ");

  display1.setTextColor(ST7735_WHITE,ST7735_BLACK);
  display1.setTextSize(1);
  display1.setCursor(30, 53);
  display1.print("Vmax ");
  display1.print(VanalogMAX[0] * coef[0], 1);
  display1.print("V ");
}

void printCH1(){
  display1.setTextColor(ST7735_YELLOW,ST7735_BLACK);
  display1.setTextSize(2);
  display1.setCursor(25, 80);
  display1.print("GIALLA ");
  display1.setCursor(40, 100);
  display1.print(Vanalog[1] * coef[1], 1);
  display1.print("V ");

  display1.setTextColor(ST7735_WHITE,ST7735_BLACK);
  display1.setTextSize(1);
  display1.setCursor(30, 120);
  display1.print("Vmax ");
  display1.print(VanalogMAX[1] * coef[1], 1);
  display1.print("V ");
}

void printCH2(){
  display2.setTextColor(ST7735_RED,ST7735_BLACK);
  display2.setTextSize(2);
  display2.setCursor(40, 15);
  display2.print("ROSSO ");
  display2.setCursor(40, 33);
  display2.print(Vanalog[2] * coef[2], 1);
  display2.print("V ");

  display2.setTextColor(ST7735_WHITE,ST7735_BLACK);
  display2.setTextSize(1);
  display2.setCursor(30, 53);
  display2.print("Vmax ");
  display2.print(VanalogMAX[2] * coef[2], 1);
  display2.print("V ");
}

void printCH3(){
  display2.setTextColor(ST7735_BLUE,ST7735_BLACK);
  display2.setTextSize(2);
  display2.setCursor(25, 80);
  display2.print("BLU ");
  display2.setCursor(40, 100);
  display2.print(Vanalog[3] * coef[3], 1);
  display2.print("V ");

  display2.setTextColor(ST7735_WHITE,ST7735_BLACK);
  display2.setTextSize(1);
  display2.setCursor(30, 120);
  display2.print("Vmax ");
  display2.print(VanalogMAX[3] * coef[3], 1);
  display2.print("V ");
}

void setup() {
  display1.initR(INITR_BLACKTAB);      /* inizializza il chip ST7735 per il display1 */
  display1.fillScreen(ST7735_BLACK);   /* pulisci il display1 */
  display1.setTextColor(ST7735_WHITE); /* imposta il bianco come colore del testo */
 
  display1.setTextSize(1);             /* imposta la grandezza del testo */
  display1.setCursor(5,0);             /* imposta la posizione sul display1 */
  display1.println("GOSLOT");          /* scrivi */
  display1.setTextColor(0XFF00);       /* imposta il colore rosso per il testo */
  display1.setCursor(12,150);          /* imposta la posizione sul display1 */
  display1.println("Voltaggio MAX: 22 v"); /* scrivi */

  display2.initR(INITR_BLACKTAB);      /* inizializza il chip ST7735 per il display2 */
  display2.fillScreen(ST7735_BLACK);   /* pulisci il display2 */
  display2.setTextColor(ST7735_WHITE); /* imposta il bianco come colore del testo */

  display2.setTextSize(1);             /* imposta la grandezza del testo */
  display2.setCursor(5,0);             /* imposta la posizione sul display2 */
  display2.println("GOSLOT");          /* scrivi */
  display2.setTextColor(0XFF00);       /* imposta il colore rosso per il testo */
  display2.setCursor(12,150);          /* imposta la posizione sul display2 */
  display2.println("Voltaggio MAX: 22 v"); /* scrivi */
}

void loop() {
  keyboard();
  readCH(0);
  readCH(1);
  readCH(2);
  readCH(3);
  detectMAX();
  resetMAX();
  conversionDA(0);
  conversionDA(1);
  conversionDA(2);
  conversionDA(3);
  printCH0();
  printCH1();
  printCH2();
  printCH3();
}
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Mar 27, 2018, 12:12 pm
In pratica, i pin dei display dovrò provarli per vedere le connessioni da fare.
Ho il dubbio sull'alimentazione dell'Arduino.
Non sono sicuro che le funzioni di acquisizione siano corrette: l'idea è di acquisire 32 valori e farne la media. Tutto mantenendomi in digitale. Solo nel momento in cui ho bisogno di un valore da stampare vado a convertire in analogico e poi solo nel momento in cui devo stampare fisicamente sullo schermo moltiplico il valore analogico per il proprio coefficiente.
Ho qualche problema sul capire i tipi di variabili da usare:

- ho degli array formati da 4 elementi che vanno da 0 a 1023;
- ho degli array formati da 4 elementi che vanno da 0 a 5 volt con 2 cifre dopo la virgola;
- ho un array formato da 4 elementi che saranno costanti ma composti da un numero con virgola attorno ai 4,4;
- i valori delle resistenze potrei inserirli come #define, non ha senso dichiararli come variabili. idem l'array precedente;
- Vref c'è modo di controllarlo automaticamente e internamente all'Arduino oppure devo fare una misura e inserirlo a mano? Questo perché se lo facesse automaticamente non avrei problemi dovuti a qualsiasi tipo di fluttuazione e la misura finale non sarebbe affetta da quel errore;
- ho cercato di essere il più "generico" possibile, così da riusare la stessa funzione soltanto cambiando la variabile in ingresso, ma è giusto quello che ho scritto? Si poteva fare meglio?

In realtà non so nemmeno se questo codice funziona, la pista non è a casa mia e dobbiamo trovare una sera per tirare i cavi e fare un bel lavoro con un bel connettore, quindi sostanzialmente sto lavorando alla "cieca" senza poter provare sul campo il codice.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Mar 27, 2018, 03:41 pm
Infine ho scoperto che esistono dei convertitori AD a 16 bit con varie porte d'ingresso che comunicano via i2c. Non mi ricordo però in questo momento le sigle. Comunque a quel punto potrei fare sia un voltmetro che un amperometro con un singolo Arduino. Con resistenze note, molto precise e che non variano con la temperatura (o che variano linearmente nel tempo) posso calcolarmi la corrente passante attraverso la misurazione della caduta di potenziale ai capi della resistenza nota e faccio la conversione AD direttamente con il convertitore che è a più porte. Inoltre comunicando via i2c ne posso mettere abbastanza da soddisfare i miei bisogni.
Unico problema: non so che cosa ci sia in commercio in grado di convertirmi una tensione da 0 a 24 v, senza fare altri partitori.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Mar 29, 2018, 03:22 pm
Ragazzi, scusatemi se sono impaziente, ma ho bisogno di un vostro aiuto, se non altro per cominciare.

Mi sono reso conto che mi mancano le basi, cioè il pin out dell'Arduino Pro Micro.
Cioè il pin out ce l'ho ma non ho capito come chiamo dal codice le porte, né quali siano analogiche e quali digitali.

(https://cdn.sparkfun.com/assets/9/c/3/c/4/523a1765757b7f5c6e8b4567.png)

Questo è il pin out. Io collego le 4 entrate analogiche ai pin A0, ..., A3 che nel codice Arduino saranno 18, ..., 21 giusto?
Quindi quando andrò a fare l'analogRead sarà readCH0 = analogRead(18), corretto?

Poi ho bisogno di un'altra porta analogica per i due bottoni che metto in parallelo.

Poi ho bisogno di 8 pin per la comunicazione digitale con i due display.

Il problema è che ho bisogno che mi facciate capire i pin fisici come li chiamo nel software.

Dopodiché volevo chiedere anche come alimentare questa board.

Grazie mille in anticipo per le risposte
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Mar 31, 2018, 04:50 pm
Bastava avere il tempo per fare qualche prova:

per l'alimentazione era come dicevo io, 7805 esterno con qualche condensatore, positivo al VCC, negativo a GND. Nessun tipo di diodo, nessun ponte sulla scheda. L'USB continua a funzionare anche con l'alimentazione esterna collegata.

Per quanto riguarda il richiamo dei pin, bisogna seguire i numeri azzurri come numerazione, oppure i nomi analogici verdi.

Chiarito questo punto ho sistemato il codice. Volevo chiedere se è corretto e se devo inserire qualche return.

Grazie mille buona giornata e buona Pasqua.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Apr 07, 2018, 02:52 am
Allego l'ultima versione dello sketch.

Ho sistemato le funzioni con il ciclo for che non potevano funzionare, ho sistemato la funzione per selezionare e cancellare il massimo, ho aggiunto dei temporizzatori con millis() per temporizzare la lettura dei tasti e per temporizzare il refresh dei due display. Ho aggiunto un segno vicino alla stampa del valore del massimo sui display per sapere quale valore è selezionato e pronto per essere cancellato.

Mi sono accorto però che la velocità di stampa sui display è abbastanza lenta, infatti se notate ho tenuto le funzioni di stampa commentate poiché volevo avere una certa velocità nella scrittura seriale per monitorare i valori che mi servono. Non mi sono ancora arrivati i display e per questo motivo non posso provare subito.

Voi notate qualche errore? Qualche miglioria che posso fare?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Apr 24, 2018, 02:31 am
Buongiorno a tutti.

Ho fatto lo schema elettrico e il PCB con Eagle, allego il file zip del progetto.

Intanto con SolidWorks sto facendo il disegno del mobiletto. Mi devono ancor arrivare i due display e dopo posso provare senza problemi.

Nel mentre volevo chiedervi alcune cose che non mi sono troppo chiare:

potrei fare un Amperometro misurando la caduta di tensione di una resistenza, utilizzando per l'acquisizione  un convertitore analogico / digitale a 16 bit. A questo punto, vedendo il mio schema, come inserisco queste resistenze? Un capo della resistenza (che immagino dovrà essere molto precisa) ha un certo potenziale che sto già misurando (tramite il partitore di tensione) mentre l'altro capo della resistenza dove lo collego? A massa? Quindi poi dovrei misurare il potenziale a valle della resistenza (quindi a massa), trovare la caduta di tensione sottraendo i due valori, la caduta di tensione dividerla per una resistenza molto precisa (diciamo, 0.2 / 0.1% di tolleranza, ma che valore di resistenza?) e a questo punto per la legge di Ohm so la corrente passante per la resistenza. Se la corrente assorbita dal motore è minore della corrente massima che può passare per la resistenza molto precisa, devo trovarmi una certa differenza di potenziale, giusto?

E' questo il modo corretto?

Altro problema: quando apro Eagle nel menù ad albero, ogni volta che cerco di entrare in Libraries\lbr\itspice Eagle mi crasha. Anche se aggiungo un path, per le librerie, quando in Libraries cerco di aprire la cartella, Eagle mi continua a crashare.

Ultimo problema: nel progetto dell'orologio radio controllato ho fatto qualche piccolo errore, tra cui un componente aveva un pad quadrato anziché ottogonale. L'ho aggiornato nella libreria ma nella board non mi viene aggiornato. Ho provato ad eliminare il componente dallo schema per poi re inserirlo ma, quando cerco il componente con il manager dei componenti, nella mia libreria trovo il componente corretto, vedendolo dalla preview, mentre una volta che mi viene inserito, mi inserisce la versione precedente del componente. Come faccio a risolvere?

Non trovo più il topic sulla realizzazione dei PCB qui sul forum.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Apr 24, 2018, 09:52 am
due righe al volo, che sto uscendo ... per la corrente, puoi usare le resistenze in serie al negativo della pista, basta che il GND di arduino sia in comune con il negativo lato pista (non lato alimentatore) EDIT: errore mio, lato alimentatore, non lato pista ... in questo modo sul capo rella resistenza lato alimentatore pista avrai una tensione positiva rispetto al GND di arduino ... ma il tutto non sara' galvanicamente isolato, e gia hai gli ingressi per la tensione connessi ...

Oppure, meglio ancora, puoi usare dei sensori totalmente isolati, tipo ad esempio la serie ACS della Allegro (https://www.allegromicro.com/en/Products/Current-Sensor-ICs/Fifty-To-Two-Hundred-Amp-Integrated-Conductor-Sensor-ICs.aspx), che esiste in diversi formati per diverse correnti massime, e' totalmente isolata fra lato corrente e lato misura, e ci sono gia diversi tipi di breakout o schedine pronte all'uso ;)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Apr 24, 2018, 10:28 am
per la corrente, puoi usare le resistenze in serie al negativo della pista, basta che il GND di arduino sia in comune con il negativo lato pista (non lato alimentatore) ... in questo modo sul capo rella resistenza lato alimentatore avrai una tensione positiva rispetto al GND di arduino ...



non mi è chiaro...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Apr 24, 2018, 11:08 am
Io attualmente ho il negativo comune delle 4 piste separato dal negativo dell'Arduino: il partitore di tensione per abbassare a MAX 5 Volt è a GND della pista, prima ho inserito anche 4 resistenze verso massa per le 4 piste per togliere eventuali disturbi. La parte logica invece ha la sua GND di alimentazione.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Apr 24, 2018, 04:15 pm
non mi è chiaro...
Non ti e' chiaro perche' ho sbagliato a scrivere io :P :D

Volevo dire di collegare la massa di Arduino lato alimentatore, non lato pista, cosi sul lato pista della resistenza avrebbe avuto una tensione positiva proporzionale alla corrente circolante ... ma sono stato distratto da un'evento imprevisto (di genere femminile, se serve come attenuante :P) ed ho scritto una ca...volata, grazie per avermelo fatto notare ... corretta ...


> ricky158: i sensori ACS sono la soluzione migliore comunque ... danno gia una tensione proporzionale alla corrente circolante, sono precisi, e praticamente non causano cadute di tensione (non sia mai che magari i concorrenti poi non si lamentino che non hanno vinto perche' gli mancava un decimo di volt ... :D)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Apr 24, 2018, 04:34 pm
Ok, adesso è chiaro.
Imprevisti del genere sono sempre graditi
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Apr 24, 2018, 10:45 pm
Non ti e' chiaro perche' ho sbagliato a scrivere io :P :D

Volevo dire di collegare la massa di Arduino lato alimentatore, non lato pista, cosi sul lato pista della resistenza avrebbe avuto una tensione positiva proporzionale alla corrente circolante ... ma sono stato distratto da un'evento imprevisto (di genere femminile, se serve come attenuante :P) ed ho scritto una ca...volata, grazie per avermelo fatto notare ... corretta ...


> ricky158: i sensori ACS sono la soluzione migliore comunque ... danno gia una tensione proporzionale alla corrente circolante, sono precisi, e praticamente non causano cadute di tensione (non sia mai che magari i concorrenti poi non si lamentino che non hanno vinto perche' gli mancava un decimo di volt ... :D)
Ottimo allora ho fatto bene a tenere le masse separate.

Per gli ACS mi informo al negozio, ho paura che mi ingrandisca notevolmente il circuito. Comunque io metterei comunque due convertitore AD 16 bit uno per la tensione e uno per gli ACS così da una parte vado ad aumentare la precisione usando 16 bit anziché 10, dall'altra utilizzo solamente 2 pin SDA SCL anziché 8 pin analogici. Gli ACS lavorano in un range 0-5 Volt se non ho capito male, giusto? Quindi con gli AD1115 non serve nemmeno un partitore di tensione. Magari testo prima gli ACS e poi penserò a fare una seconda versione di questo circuito.

Invece per quanto riguarda il problema con Eagle?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Apr 25, 2018, 11:48 am
...
Per gli ACS ...
ci sono per diverse portate di corrente, serve vedere quanta corrente al massimo puo assorbire la macchina (anche di picco), e poi si sceglie quello piu adatto ...


Quote
Invece per quanto riguarda il problema con Eagle?
il pad ? ... prova ad allegare qui zippata la libreria che ti da problemi e gli do una controllata ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Apr 25, 2018, 05:11 pm
ci sono per diverse portate di corrente, serve vedere quanta corrente al massimo puo assorbire la macchina (anche di picco), e poi si sceglie quello piu adatto ...


il pad ? ... prova ad allegare qui zippata la libreria che ti da problemi e gli do una controllata ...
Pensavo di prendere quello da 50 Ampere, che da come ho capito è la portata più bassa, ACS756.
Io porto il cavo fino a dentro al mobiletto e quello deve scorrere sull'ACS756. Per questo motivo penso possa diventare un casino, ma comunque è una bella soluzione poco invasiva. Speravo che, avendo una morsettiera e già tutto sulla scheda, fosse più semplice e meno "volante" come realizzazione.

Per quanto riguarda la libreria e il progetto, allora, zippo e posto sull'altro topic, perché è un problema inerente più a quel progetto. Inoltre non trovo più dove ho descritto quali layer ho messo in quali gerber (il layer Dimension devo inserirlo nel layer milling?)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Apr 25, 2018, 05:19 pm
...
Io porto il cavo fino a dentro al mobiletto e quello deve scorrere sull'ACS756 ...
Puoi anche installare l'ACS dentro o sotto la pista, o all'uscita della morsettiera che va alla pista, o dove ti pare, magari in una scatoletta isolata, ed usare un cavetto schermato a 3 poli per collegarlo alla strumentazione, magari giusto per prudenza aggiungendo un paio di condensatorini filtro alla scheda dall'ACS lato alimentazione ... nessuno dice che devi girare con il cavo ad alta corrente di qua e di la, in fondo ;)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Apr 25, 2018, 05:41 pm
No non hai capito, non è un problema. Cioè i 5 cavi (4 "fasi" e massa comune) da 2.5 mmq mi arrivano già al circuito stampato e si collegano sulla morsettiera. Poco male, devo ingrandire il PCB, far stare 4 ACS756 e far passare prima i cavi attorno agli ACS e poi nella morsettiera.

Quindi dovrò rifare il PCB per mettere 2 moduli ADC1115 e far stare gli ACS, tutto in un 100x100.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Apr 26, 2018, 10:29 am
Scusami, ho detto una stupidaggine:
l'ACS va installato sul ramo che si vuole monitorare! Per cui non posso metterlo in "parallelo" al motore.
Ho preso su eBay degli ACS712 da 30 A, dei modulini già pronti con morsettiera a vite. A questo punto mi basta portare 6 cavi (4 linee, +5 e GND) con un cavo ethernet per esempio, oppure con dei cavetti da 0.50 mmq.

Ora però devo rifare lo schema elettrico calcolando gli ADC1115 e dovrò rifare pure il programma.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Apr 26, 2018, 11:16 am
Cavo ethernet ? ... spero non per l'alimentazione ...

Facciamo cosi, puoi buttare giu, anche al volo, uno schema preciso del cablaggio della parte di potenza ? ... tipo, dall'alimentazione delle auto, ad un connettore (immagino io, non sono sicuro) che consente ai corridori di usare i loro regolatori (perche' suppongo che usino i loro), alle tracce della pista ... giusto per avere le idee un po piu chiare e non darti suggerimenti sbagliati ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Apr 26, 2018, 11:29 am
No aspetta:
gli ADS712 li metto sotto la pista, sul cavo che dal regolatore del giocatore va alla pista.
Questi moduli hanno 3 pin, +5 Volt, GND e V out, pensavo di usare un cavo di diametro minore per alimentarli e per portare ad Arduino la tensione.

Inoltre stavo pensando che per "leggere" la tensione, siccome non devo più leggere la corrente nel mobiletto di Arduino, posso utilizzare dei cavi più fini anche per la parte di tensione.

Tra il posto dove devo fare i collegamenti e la postazione dove c'è il direttore di gara con il mobiletto di Arduino ci sono circa 3 metri.

A questo punto posso usare 5 cavi da 0.50 mmq per la misurazione della tensione (4 positivi e un negativo comune) ed altri 6 cavi da 0.50 mmq per la misurazione della corrente (4 tensioni, un +5 Volt e un GND).

Prendo un connettore a 11 o 12 poli tipo MIDI per intenderci e la parte esterna al mobiletto è finita.
Dentro dovrò solamente mettere un'altra morsettiera a 4 poli a vite e inserire i due moduli ADS1115, ai quali devo dare due indirizzi differenti.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Apr 26, 2018, 11:31 am
Non porto corrente, per questo motivo pensavo di usare cavi più fini.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Apr 26, 2018, 04:29 pm
4 o 5 metri di comune cavo schermato per antifurti da 2x0.75+4x0.22 ... ad esempio https://www.ebay.it/itm/Cavo-schermato-4x0-22-2x0-75-mmq/183158561522 ... o uno qualsiasi equivalente ... e risolvi anche il problema dei disturbi captati, collegando lo schermo al negativo (da un lato solo del cavo, preferibilmente lato alimentazione)

poi chiedevo uno schema perche' mi era venuto un dubbio ... i regolatori sono dei clienti, giusto ? ... e probabilmente saranno unita' PWM a commutazione secca, senza filtri ... per cui e' difficile sapere se generano disturbi da commutazione sulla linea che va alle auto, ma si puo supporre di si ... quindi un bel filtro robusto LC sulla linea di potenza per ogni ACS, anche autocostruendo le bobine con dei toroidi antidisturbo e lo stesso filo che porta alimentazione alle auto, non gli farebbe certo male, anzi ...

EDIT: ho avuto tempo solo per dare un'occhiata al volo, ma la sezione degli ingressi secondo me' andrebbe modificata in questo modo ... ;)

(https://forum.arduino.cc/index.php?action=dlattach;topic=495276.0;attach=255083)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Apr 26, 2018, 05:31 pm
Ah caspita, non sapevo dell'esistenza di una cosa del genere. Come non pensavo fosse così importante fare questa schermatura.

Ne deduco che dovrei fare la stessa cosa per i 5 cavi per misurare la tensione.

"I regolatori sono dei clienti" non l'ho capita. Se intendi che ogni concorrente ha il proprio regolatore e non viene invece fornito da chi gestisce la pista... si è proprio così.

Per quanto riguarda la tecnologia dei regolatori: in realtà la maggior parte sono regolatori "analogici" (fra l'altro me ne dovrò costruire uno) ma qualcuno ha qualche soluzione PWM, non ho idea se filtrate o no.

Per questo motivo ho previsto 4 resistenze da 1 M Ohm verso massa per le 4 linee che leggono la tensione.

Questi filtri come li costruisco? Non conosco questa elettronica...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Apr 26, 2018, 06:12 pm
Intanto ho modificato lo schema elettrico inserendo i condensatori e i due ADS1115.

Per gli ADS1115 non mi è chiaro se lavorano a 5 Volt e anche il collegamento i2c è a 5 Volt, oppure devo abbassare a 3.3 Volt e devo fare degli adattatori di livello con due transistor. In ogni caso mancano due resistenze di pull-up da 4K7 Ohm su SDA e SCL.

In più non sono sicuro per quanto riguarda gli indirizzi: nel primo ADS1115 ho messo il pin degli indirizzi a GND, nel secondo ADS1115 ho messo il pin degli indirizzi a +5 Volt.

Devo leggere il datasheet appena ho un attimo di tempo.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Apr 26, 2018, 06:15 pm
sarebbe meglio avere tutto schermato ... meglio ancora, un cavo per ogni linea, ci sono sa 2x0.5 (o 2x0.75) piu 4x0.22, per cui ogni cavo potrebbe portare in modo schermato sia i segnali dell'ACS che la tensione da misurare con gli ADC

Si, intendevo quello, che ogni cliente si porta il proprio regolatore ... immagino ognuno abbia a disposizione un connettore dove arriva l'alimentazione e partono i fili verso le slot, giusto ? ... per cui non c'e' neppure modo di sapere se il regolatore del cliente regola lato positivo o lato negativo, quindi per evitare rischi, ogni linea dovra' essere isolata ... l'ACS lo e' gia, suppongo anche i moduli ADC, ma meglio esserne sicuri ...

Bobine per i filtri ... basta trovare 4 toroidi in ferrite da 4 o 5 cm di diametro, anche quelli che si recuperavano nei case dei PC (c'erano avvolti i fili dei led) andrebbero bene, ed avvolgerci dentro alcune spire (quelle che ci stanno) fatte con i cavi che portano corrente alla pista, ovviamente una coppia di cavi per ogni toroide ... a proposito, che sezione di cavo usi per collegare le slot ai regolatori ?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Apr 26, 2018, 06:40 pm
sarebbe meglio avere tutto schermato ... meglio ancora, un cavo per ogni linea, ci sono sa 2x0.5 (o 2x0.75) piu 4x0.22, per cui ogni cavo potrebbe portare in modo schermato sia i segnali dell'ACS che la tensione da misurare con gli ADC

Si, intendevo quello, che ogni cliente si porta il proprio regolatore ... immagino ognuno abbia a disposizione un connettore dove arriva l'alimentazione e partono i fili verso le slot, giusto ? ... per cui non c'e' neppure modo di sapere se il regolatore del cliente regola lato positivo o lato negativo, quindi per evitare rischi, ogni linea dovra' essere isolata ... l'ACS lo e' gia, suppongo anche i moduli ADC, ma meglio esserne sicuri ...

Bobine per i filtri ... basta trovare 4 toroidi in ferrite da 4 o 5 cm di diametro, anche quelli che si recuperavano nei case dei PC (c'erano avvolti i fili dei led) andrebbero bene, ed avvolgerci dentro alcune spire (quelle che ci stanno) fatte con i cavi che portano corrente alla pista, ovviamente una coppia di cavi per ogni toroide ... a proposito, che sezione di cavo usi per collegare le slot ai regolatori ?
Io pensavo a 2x0.5 + 4x0.22 per il cavo degli ACS, mentre un semplice 6x0.22 per il cavo della tensione. Entrambi ovviamente schermati.

C'è un unico alimentatore per le 4 piste e la regolazione nelle singole postazioni viene fatta sul positivo.

Coppia di cavi intendi positivo regolato e massa, giusto? Mi basterebbe mettere questo filtro all'uscita di ogni postazione. Le masse poi sono in comune essendoci un unico alimentatore.

La sezione dei cavi non me la ricordo adesso, come minimo un 2.5 mmq sicuramente.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 02, 2018, 03:39 am
Ho rifatto sia lo schema che il PCB. Ho inserito una morsettiera nuova per i cavi che portano il segnale per la misurazione della corrente, ho messo i due convertitori analogico - digitale, già che ci sono ho messo anche un DHT11 per avere un termometro che è sempre interessante collegare temperatura e umidità ai tempi sul giro. Sono riuscito a stare in 99 mm di larghezza.

Allego schema elettrico e circuito stampato. Questa dovrebbe essere la versione più evoluta del progetto, in grado di misurare tensione, corrente, calcolare quante volte un concorrente è uscito in una tale corsia, misurare temperatura e umidità.

Una volta mandato in stampa il PCB (devo sistemare quel pin quadrato anziché lungo sul progetto dell'orologio sveglia radiocontrollato) procederò con il test, ma nel frattempo continuo a sviluppare il codice per gestire il tutto.

Pensavo di utilizzare in questo modo i due pulsanti:

- schermata iniziale: temperatura su un display, umidità sul secondo display. i due tasti non possono fare nulla, se tengo premuto per 2 secondi il tasto select allora cambio schermata.
- schermata tensioni: due tensioni su un display, due tensioni sul secondo display. select seleziona le tensioni e con reset azzero i massimi. se tengo premuto per 2 secondi il testo select allora cambio schermata.
- schermata correnti: due correnti su un display, due correnti sul secondo display. select seleziona le correnti e con reset azzero i massimi. se tengo premuto per 2 secondi il tasto select allora cambio schermata.
- schermata uscite: due uscite su un display, due uscite sul secondo display. select seleziona le uscite e con reset azzero l'uscita. se tengo premuto per 2 secondi il tasto select allora torno alla prima schermata.

Come gestisco queste funzioni?

Tutte le funzioni di calcolo pensavo di farle andare in parallelo e comunque di gestire i dati in array.

Non so come fare per quanto riguarda la gestione del tasto select, ovvero come fare in modo che lo premo una volta, se tengo premuto non incrementa ancora, se tengo premuto per 2 secondi cambia schermata.

Non so come gestire il cambio delle schermate.

Riuscite a darmi qualche idea?

Grazie mille
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 06, 2018, 08:48 pm
Mi sono arrivati i display ed ho avuto modo solo ora di provarli.
Devo intanto fare una considerazione: non posso mettere il MOSI e il SCLK dove mi pare ma devo seguire i pin di Arduino. Quindi i pin 16 MOSI e 15 SCLK (scheda Arduino Pro Micro che l'equivalente della scheda Arduino Micro).
Per quanto riguarda i display, funzionano ma uno ha delle righe verticali colorate e i colori sono poco forti. In più "vibra".  Quando però carico lo sketch smette di vibrare e si vede normalmente. L'ho già bruciato? Credo di aver fatto un corto per sbaglio.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 07, 2018, 01:09 am
Aggiornamento:

Arduino alimentato tramite USB del PC --> uno schermo ha le righe, l'altro perfetto
Arduino alimentato tramite 7805 esterno come schema elettrico --> entrambi gli schermi hanno le righe
Arduino alimentato tramite USB di una batteria tampone per cellulare --> entrambi gli schermi sono perfetti

Inoltre quando ho alimentato tutto il circuito dall'esterno con un alimentatore regolabile in tensione e corrente, quindi dando 12 v al 7805, ho notato che c'era un assorbimento di circa 400 mA e il regolatore di tensione scaldava parecchio.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 07, 2018, 10:31 am
Buongiorno,
volevo chiedervi una revisione del codice.

Code: [Select]

#define errorDelay 1000                               /* tempo minimo per il conteggio di un errore */
#define errorDelay2 5000                              /* tempo massimo per il conteggio di un errore */
byte error[4] = {0, 0, 0, 0};                         /* array che contiene il numero proggressivo degli errori */

void Error(byte n){

  if (Vdigital[n] < 50 && Adigital[n] < 50){          /* se tensione e corrente sono circa a 0 */
    unsigned long errorTime = millis();               /* salva i millisecondi una sola volta per calcolare il tempo in cui tensione e corrente sono circa a 0 */
    unsigned long errorTime2 = millis();              /* salva i millisecondi una sola volta per calcolare il tempo in cui tensione e corrente sono circa a 0 */
    if (millis() - errorTime = errorDelay){error[n]++;}  /* se tensione e corrente sono circa a 0 per più di 1000 millisecondi aggiungi 1 all'errore */
    if (millis() - errorTime2 = errorDelay2){error[n]--;}  /* se tensione e corrente sono circa a 0 per più di 5000 millisecondi togli 1 all'errore, poiché la macchina ha problemi tecnici oppure è stata tolta o è stato chiamato un "ponte" */
  }
 
}

void resetError(){
 
  if (reset) {error[varSEL] = 0;}                     /* se reset è true, azzera l'elemento dell'array degli errori corrispondente al canale selezionato */
}


Con questo codice vorrei che, quando la macchina non c'è o è ferma, se è ferma per più di 1 secondo mi segnala un errore ma se è ferma per più di 5 secondi l'errore non lo conta. In più poi con i due pulsanti di selezione e reset posso portare a 0 il conteggio degli errori.
E' corretto? Ho messo l'uguale in modo che solo quando è trascorso il tempo errorDelay mi aggiunge 1, idem per errorDelay2.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Patrick_M on May 08, 2018, 09:47 am
in tutti gli if  l'uguale deve raddoppiare :)
Code: [Select]

    if (millis() - errorTime == errorDelay){error[n]++;}  /* se tensione e corrente sono circa a 0 per più di 1000 millisecondi aggiungi 1 all'errore */
    if (millis() - errorTime2 == errorDelay2){error[n]--;}  /* se tensione e corrente son
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on May 08, 2018, 11:05 am
Secondo me non va
I tempi sono salvato ogni volta in un blocco di codice, in variabile locale non statica
E perlomeno bizzarro, se non completamente ciccato
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 09, 2018, 02:31 am
Perché dici?
Io ho bisogno di salvare il tempo di millis() quando non ho ne tensione ne corrente. Prendo quello come 0 e da lì inizio a dire "bene, se il tempo trascorso fra l'inizio dell'evento "non c'è tensione né corrente" è maggiore di 1000 mS allora aggiungi uno all'errore, se è maggiore di 5000 mS togli uno all'errore".

Solo che per fare una cosa del genere devo per forza di cose farlo in locale. Ma effettivamente se ad ogni clock faccio girare la funzione, e la condizione del primo if è vera, ad ogni clock le due variabili errorTime ed errorTime2 mi si aggiornano.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on May 09, 2018, 08:02 am
Non sono ancora riuscito a capire bene come è il tuo schema è che programma vuoi usare
Quindi non ti posso rispondere nello specifico
Il tuo schema è definito?
Se si mi dici quale è?
Adesso non leggo 7 pagine di post, mi perderei, dovresti farne un riassunto
Poi se vuoi ti do una mano
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 09, 2018, 10:09 am
Allego schema elettrico, PCB e programma.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on May 09, 2018, 07:04 pm
Scusa, ma non so aprire quei file
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on May 09, 2018, 07:36 pm
per il programma
scrivo qui liberamente
Code: [Select]

void readCH_V(byte n){
  unsigned long Somma;                                /* variabile che contiene la somma di tutti i campionamenti (1023 * 32 = 32736 al massimo) */
  for (byte i=0; i < Sample; i++){                    /* ciclo for per i campionamenti, da 0 a 31, quindi 32 campionamenti */
    Somma += CH_V[n];                                 /* ad ogni ciclo aggiungi una lettura */
  }
  Vdigital[n] = Somma / Sample;                       /* salva nell'array la media dei campionamenti  */
}

void readCH_A(byte n){
  unsigned long Somma;                                /* variabile che contiene la somma di tutti i campionamenti (1023 * 32 = 32736 al massimo) */
  for (byte i=0; i < Sample; i++){                    /* ciclo for per i campionamenti, da 0 a 31, quindi 32 campionamenti */
    Somma += CH_A[n];                                 /* ad ogni ciclo aggiungi una lettura */
  }
  Adigital[n] = Somma / Sample;                       /* salva nell'array la media dei campionamenti  */
}



ma sbaglio o qui sommi 32 volte una lettura che hai fatto una volta sola?
poi fai la media, ma il valore non cambia
semmai devi fare 32 letture, non sommare 32 volte la stessa
quanto dura una singola lettura?
vabbe' comunque se vuoi la media di 32 letture devi fare 32 letture, altrimenti è inutile
Code: [Select]

void multilettura_V()
{
    // leggo 32 volte e sommo 32 differenti letture
    for (byte j = 0; j < Channel; j++)
    {
        int Somma = 0

        for (byte i = 0; i < Sample; i++)
           {
               Somma = ads_V.readADC_SingleEnded(j);
           }

        Vdigital[j] = Somma / Sample;
    }
}


che oltretutto non usa array ausiliari
temo però che scoprirari che fare 32 letture è più lungo che usare 32 volte la stessa
Perchè ti incasini così, qui?
Code: [Select]

void keyboard()
{
    varKeyboard = analogRead(KeyboardPin);              /* lettura del pin analogico della tastiera */

    if (varKeyboard > 767)
    {
        select = true;   /* se la lettura è maggiore del valore, allora il pulsante select è premuto e la variabile booleana è true */
    }
    else
    {
        select = false;   /* in caso contrario la variabile booleana è false */
    }

    if (varKeyboard < 767 && varKeyboard > 255)
    {
        reset = true;   /* se la lettura è minore del valore e allo stesso tempo maggiore di 255, allora il pulsante reset è premuto e la variabile mooleana è true */
    }
    else
    {
        reset = false;   /* in caso contrario la variabile booleane è false */
    }
}


usa questa, meno storie
Code: [Select]

void tastiera(){
   varKeyboard = analogRead(KeyboardPin);              /* lettura del pin analogico della tastiera */
   select=(varKeyboard>767); // diretto, non trovi più semplice?
   return; // via, lavoro fatto pulsante trovato
   reset=(varKeyboard>255); // l'altro caso NON è possibile, siam già usciti dalla funzione
}


Non trovi sia più semplice?
comunque non ti sei accorto che reset e select vengono riconosciute in arancione? non credo sia il caso di usare nomi di variabile che sono anche nomi "definiti"
quin invece:
Code: [Select]

    if (select && ((millis() - selectTime) == selectDelay))
    {
        if (mode < 3) mode++;    /* se select è premuto per più di 1 secondo allora aggiungi uno a mode. se mode va oltre 3 azzera mode */
        else mode = 0;
    }


Credo tu voglia dire che se select è premuto passa al modo successivo, dopo il modo 3 riconìmicia da zero
potrebbe anche andare, ma ti rendi conto che usare una uguagliaza invece che un maggiore è pericoloso?
se ti scappa il millisecondo l'uguaglianza non sara MAI più verificata
qui:
Code: [Select]

void conversionDA_V(byte n)
{
    Vanalog[n] = ((Vref * Vdigital[n]) / stepSample) * coef_V[n];  /* conversione tensione da digitale intero ad analogico decimale, da 0 a 22 Volt */
    VanalogMAX[n] = ((Vref * Vdigital[n]) / stepSample) * coef_V[n];  /* conversione tensione MAX da digitale intero ad analogico decimale, da 0 a 22 Volt */
}


Perchè non fai le converisioni direttamente alla lettura e non ti togli dalle balle gli array digitali?

devo andare a cena, magari andiamo avanti dopo


Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 09, 2018, 08:33 pm
Purtroppo adesso non riesco a risponderti, però allego lo schema elettrico in PDF.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 09, 2018, 08:48 pm
per il programma
scrivo qui liberamente
Code: [Select]

void readCH_V(byte n){
  unsigned long Somma;                                /* variabile che contiene la somma di tutti i campionamenti (1023 * 32 = 32736 al massimo) */
  for (byte i=0; i < Sample; i++){                    /* ciclo for per i campionamenti, da 0 a 31, quindi 32 campionamenti */
    Somma += CH_V[n];                                 /* ad ogni ciclo aggiungi una lettura */
  }
  Vdigital[n] = Somma / Sample;                       /* salva nell'array la media dei campionamenti  */
}

void readCH_A(byte n){
  unsigned long Somma;                                /* variabile che contiene la somma di tutti i campionamenti (1023 * 32 = 32736 al massimo) */
  for (byte i=0; i < Sample; i++){                    /* ciclo for per i campionamenti, da 0 a 31, quindi 32 campionamenti */
    Somma += CH_A[n];                                 /* ad ogni ciclo aggiungi una lettura */
  }
  Adigital[n] = Somma / Sample;                       /* salva nell'array la media dei campionamenti  */
}



ma sbaglio o qui sommi 32 volte una lettura che hai fatto una volta sola?
poi fai la media, ma il valore non cambia
semmai devi fare 32 letture, non sommare 32 volte la stessa
quanto dura una singola lettura?
vabbe' comunque se vuoi la media di 32 letture devi fare 32 letture, altrimenti è inutile
Code: [Select]

void multilettura_V()
{
    // leggo 32 volte e sommo 32 differenti letture
    for (byte j = 0; j < Channel; j++)
    {
        int Somma = 0

        for (byte i = 0; i < Sample; i++)
           {
               Somma = ads_V.readADC_SingleEnded(j);
           }

        Vdigital[j] = Somma / Sample;
    }
}


che oltretutto non usa array ausiliari
temo però che scoprirari che fare 32 letture è più lungo che usare 32 volte la stessa
Intanto ti ringrazio per aver dato un'occhiata. Rispondo per il momento solo a questo.

Sono ancora abbastanza novizio per quanto riguarda la programmazione, quindi fare più cose in una singola funzione anziché fare più funzioni per me non è così semplice. Basti vedere gli errori che ho fatto.

Io avevo cominciato con il pensare una variabile Somma che aggiunge di volta in volta i valori letti, questo per 32 passi. Arrivati al 32esimo faccio la media e salvo il valore digitale medio. Salvo i valori digitali per tentare di lavorare con interi (anche se dividendo interi non sono sicuro di ottenere un intero) anziché con numeri con la virgola e quindi rallentare l'operazione.

Il tuo codice elimina una funzione e praticamente mi fa sia la lettura dall'ADC su tutti e 4 i canali, sia la media. L'unica cosa che non capisco è come mai dividi Somma sui Sample se non vai a fare una somma. Cioè io faccio 32 letture e ogni lettura la salvo in Somma, dopodiché Somma la divido per Sample, ma io non ho sommato ad ogni passo quello che ho letto prima a quello che sto leggendo adesso, per cui non capisco come mai faccio la divisione per Sample.

Non dovrei invece fare un

Somma += ads_V.readADC_SingleEnded(j);

Nel ciclo for?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on May 10, 2018, 12:13 am
Il tuo codice elimina una funzione e praticamente mi fa sia la lettura dall'ADC su tutti e 4 i canali, sia la media. L'unica cosa che non capisco è come mai dividi Somma sui Sample se non vai a fare una somma. Cioè io faccio 32 letture e ogni lettura la salvo in Somma, dopodiché Somma la divido per Sample, ma io non ho sommato ad ogni passo quello che ho letto prima a quello che sto leggendo adesso, per cui non capisco come mai faccio la divisione per Sample.

Non dovrei invece fare un

Somma += ads_V.readADC_SingleEnded(j);

Nel ciclo for?
esatto, era rimasto nella tastiera
Rientrato da cena, troppo stanco, e troppo tardi, ci si pensa domani
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 10, 2018, 02:15 am
Code: [Select]

#define Vref  6.144                                   /* calibrazione della tensione di riferimento delle misure per ADS1115 */
#define stepSample 32767                              /* numero di step massimi per ADS1115 che fa un campionamento a 16 bit. in realtà sono 15 bit più il segno. quindi 2^15 = 32768, con lo 0 sono 32767 passi. */

#define Ra1 680000                                    /* valore in Ohm di Ra1. 681 k Ohm 1% */
#define Rb1 200000                                    /* valore in Ohm di Rb1. potenziometro multigiro 200 k Ohm */
#define Ra2 680000                                    /* valore in Ohm di Ra2. 681 k Ohm 1% */
#define Rb2 200000                                    /* valore in Ohm di Rb2. potenziometro multigiro 200 k Ohm */
#define Ra3 680000                                    /* valore in Ohm di Ra3. 681 k Ohm 1% */
#define Rb3 200000                                    /* valore in Ohm di Rb3. potenziometro multigiro 200 k Ohm */
#define Ra4 680000                                    /* valore in Ohm di Ra4. 681 k Ohm 1% */
#define Rb4 200000                                    /* valore in Ohm di Rb4. potenziometro multigiro 200 k Ohm */

float coef_V[4] = {((Ra1 + Rb1) / Rb1), ((Ra2 + Rb2) / Rb2), ((Ra3 + Rb3) / Rb3), ((Ra4 + Rb4) / Rb4)};  /* array di valori fissi dati dalle resistenze di ogni canale. */

#define sensitivity 0.66                              /* coefficiente per ACS712 */

#define Sample 32                                     /* numero dei campionamenti */
#define Channel 4                                     /* numero dei canali */

int Vdigital[4] = {0, 0, 0, 0};                       /* array di valori di tensione, convertiti in digitale tra 0 e 65535. i valori sono interi. */
int VdigitalMAX[4] = {0, 0, 0, 0};                    /* array di valori di tensione massimi, convertiti in digitale tra 0 e 65535. i valori sono interi. */

int Adigital[4] = {0, 0, 0, 0};                       /* array di valori di corrente, convertiti in digitale tra 0 e 65535. i valori sono interi */
int AdigitalMAX[4] = {0, 0, 0, 0};                    /* array di valori di corrente massimi, convertiti in digitale tra 0 e 65535. i valori sono interi. */

float Vanalog[4] = {0.00, 0.00, 0.00, 0.00};          /* array di valori di tensione, convertiti in analogico tra 0 e 5 v. i valori sono a 2 cifre decimali. */
float VanalogMAX[4] = {0.00, 0.00, 0.00, 0.00};       /* array di valori di tensione massimi, convertiti in analogico tra 0 e 5 v. i valori sono a 2 cifre decimali. */

float Aanalog[4] = {0.00, 0.00, 0.00, 0.00};          /* array di valori di corrente, convertiti in analogico tra 0 e 5 v. i valori sono a 2 cifre decimali. */
float AanalogMAX[4] = {0.00, 0.00, 0.00, 0.00};       /* array di valori di corrente massimi, convertiti in analogico tra 0 e 5 v. i valori sono a 2 cifre decimali. */

#include <Wire.h>                                     /* libreria per comunicazione i2c */
#include <Adafruit_ADS1015.h>                         /* libreria per ADS1115 */

Adafruit_ADS1115 ads_V(0x49);                         /* creazione oggetto ads_V per la libreria ADS1015 di gestione del sensore per le tensioni */
Adafruit_ADS1115 ads_A(0x48);                         /* creazione oggetto ads_A per la libreria ADS1015 di gestione del sensore per le correnti */

void read_V(){
  for (byte j = 0; j < Channel; j++){                 /* ciclo for per leggere tutti i canali */
    unsigned long Somma = 0;                          /* variabile che contiene la somma di tutti i campionamenti ((2^15 -1) * 32 = 1.048.544 al massimo) */
  for (byte i = 0; i < Sample; i++){                  /* ciclo for per i campionamenti, da 0 a 31, quindi 32 campionamenti */
    Somma += ads_V.readADC_SingleEnded(j);            /* ad ogni ciclo aggiungi una lettura */
  }
  Vdigital[j] = Somma / Sample;                       /* salva nell'array la media dei campionamenti  */
  if (Vdigital[j] > VdigitalMAX[j]){                  /* if per trovare il valore più alto */
    VdigitalMAX[j] = Vdigital[j];                     /* se trovo un valore più alto del precedente lo salvo al posto del precedente */
  }
  Vanalog[j] = ((Vref * Vdigital[j]) / stepSample) * coef_V[j];  /* conversione tensione da digitale intero ad analogico decimale, da 0 a 22 Volt */
  VanalogMAX[j] = ((Vref * Vdigital[j]) / stepSample) * coef_V[j];  /* conversione tensione MAX da digitale intero ad analogico decimale, da 0 a 22 Volt */
  }
}
 
void read_A(){
  for (byte j = 0; j < Channel; j++){                 /* ciclo for per leggere tutti in canali */
  unsigned long Somma;                                /* variabile che contiene la somma di tutti i campionamenti ((2^15 -1) * 32 = 1.048.544 al massimo) */
  for (byte i = 0; i < Sample; i++){                  /* ciclo for per i campionamenti, da 0 a 31, quindi 32 campionamenti */
    Somma += ads_A.readADC_SingleEnded(j);            /* ad ogni ciclo aggiungi una lettura */
  }
  Adigital[j] = Somma / Sample;                       /* salva la media dei campionamenti  */
  if (Adigital[j] > AdigitalMAX[j]){                  /* if per trovare il valore più alto */
    AdigitalMAX[j] = Adigital[j];                     /* se trovo un valore più alto del precedente lo salvo al posto del precedente */
  Aanalog[j] = ((((Vref * Adigital[j]) / stepSample) - 2.5) / sensitivity);  /* conversione corrente da digitale intero ad analogico decimale */
  AanalogMAX[j] = ((((Vref * Adigital[j]) / stepSample) - 2.5) / sensitivity);  /* conversione corrente MAX da digitale intero ad analogico decimale */
  }
  }
}


Ho riunito le parti di acquisizione dati, di media, di rilevamento del massimo e di conversione dei valori tutte sotto un'unica funzione intanto.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 10, 2018, 02:22 am
qui:
Code: [Select]

void conversionDA_V(byte n)
{
    Vanalog[n] = ((Vref * Vdigital[n]) / stepSample) * coef_V[n];  /* conversione tensione da digitale intero ad analogico decimale, da 0 a 22 Volt */
    VanalogMAX[n] = ((Vref * Vdigital[n]) / stepSample) * coef_V[n];  /* conversione tensione MAX da digitale intero ad analogico decimale, da 0 a 22 Volt */
}


Perchè non fai le converisioni direttamente alla lettura e non ti togli dalle balle gli array digitali?
Per come ho detto prima, pensavo di ottenere dei valori interi e quindi più velocità nelle operazioni. Sennò posso benissimo fare come hai detto se mi dici che non cambia nulla. Sarebbero comunque due array risparmiati.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on May 10, 2018, 07:01 am
OK, si ricomincia:
anche nelle mie di funzioni, scritte ieri al volo tra il fortunale e la cena, ci sono dei bei bacherozzi,
ad esempio la seconda funzione:
Code: [Select]

void tastiera(){
   varKeyboard = analogRead(KeyboardPin);              /* lettura del pin analogico della tastiera */
   select=(varKeyboard>767); // diretto, non trovi più semplice?
   return; // via, lavoro fatto pulsante trovato
   reset=(varKeyboard>255); // l'altro caso NON è possibile, siam già usciti dalla funzione
}

c'è un errore, deve diventare cosi':
Code: [Select]

void tastiera(){
   varKeyboard = analogRead(KeyboardPin);              /* lettura del pin analogico della tastiera */
   if(select=(varKeyboard>767))
      return; // via, lavoro fatto pulsante trovato
   reset=(varKeyboard>255); // l'altro caso NON è possibile, siam già usciti dalla funzione
}

ma rimane comunque compatta
adesso altra domanda,
cosa hai provat finra?
letture, vanno?
display, vanno?
insomma, hai provato qualcosa, e se sì, cosa?
Invece una nota per come creare le funzioni:
secondo me una funzione in C deve "fare" una "funzione" utile allo scopo, una "unità" di azione
ti sconsiglio vivamente di leggere i valori digitali con una funzione, convertirli in analogico con un'atra, calcolare il massimo con una terza e farne la media con una quarta, prima o dopo la conversione
primo, chiamiamoli interi e non digitali, semai interi non scalati, e float  scalati quelli che dici analogici
secondo a te serve conoscere cosa? tensione attuale, media e massima di 4 canali?
ok, decidi se lavori in intero o in float, se decidi per intero usi solo valori interi e semmai scali solo sul display, durante le print
se decidi per float, i valori interi non escono mai dalla funzione di lettura
poi la funzione di lettura deve essere una "unità" d'azione, deve fare TUTTA la lettura e solo la lettura, dritta come ti serve, esempio:
Code: [Select]

per 4 canali
   ripetuto 32 volte
      leggo
      sommo
   calcolo la media
   scalo in float
   carico array letture
   e controllo se superiore max
      carico array massimi
      -
   -
-

fuori dalle balle un sacco di array intermedi e dunzioni che fanno mezzi lavori
ok, a dopo e buona giornata
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 10, 2018, 08:52 am
Si in effetti se si riesce a mettere tutto sotto un'unica funzione è meglio, se poi ho un ciclo for e riutilizzo, tanto meglio.

In università mi hanno spiegato che comunque ogni misurazione la si fa prendendo una media di misure, per questo motivo prendo i 32 campioni.

A me interessa la tensione istantanea e la tensione massima.

Questa la versione finale per quel codice, ho eliminato anche la conversione inutile per quanto riguardava gli array delle tensioni e delle correnti massime (se converto in analogico o se parto in analogico con gli array delle tensioni e delle correnti, poi quando vado a comparare i valori con quelli massimi, l'array dei massimi sarà già convertito in analogico, prendendo i valori dall'altro array).

Code: [Select]

#define Vref  6.144                                   /* calibrazione della tensione di riferimento delle misure per ADS1115 */
#define stepSample 32767                              /* numero di step massimi per ADS1115 che fa un campionamento a 16 bit. in realtà sono 15 bit più il segno. quindi 2^15 = 32768, con lo 0 sono 32767 passi. */

#define Ra1 680000                                    /* valore in Ohm di Ra1. 681 k Ohm 1% */
#define Rb1 200000                                    /* valore in Ohm di Rb1. potenziometro multigiro 200 k Ohm */
#define Ra2 680000                                    /* valore in Ohm di Ra2. 681 k Ohm 1% */
#define Rb2 200000                                    /* valore in Ohm di Rb2. potenziometro multigiro 200 k Ohm */
#define Ra3 680000                                    /* valore in Ohm di Ra3. 681 k Ohm 1% */
#define Rb3 200000                                    /* valore in Ohm di Rb3. potenziometro multigiro 200 k Ohm */
#define Ra4 680000                                    /* valore in Ohm di Ra4. 681 k Ohm 1% */
#define Rb4 200000                                    /* valore in Ohm di Rb4. potenziometro multigiro 200 k Ohm */

float coef_V[4] = {((Ra1 + Rb1) / Rb1), ((Ra2 + Rb2) / Rb2), ((Ra3 + Rb3) / Rb3), ((Ra4 + Rb4) / Rb4)};  /* array di valori fissi dati dalle resistenze di ogni canale. */

#define sensitivity 0.66                              /* coefficiente per ACS712 */

#define Sample 32                                     /* numero dei campionamenti */
#define Channel 4                                     /* numero dei canali */

float V[4] = {0.00, 0.00, 0.00, 0.00};                /* array di valori di tensione, convertiti in analogico tra 0 e 5 v. i valori sono a 2 cifre decimali. */
float VMAX[4] = {0.00, 0.00, 0.00, 0.00};             /* array di valori di tensione massimi, convertiti in analogico tra 0 e 5 v. i valori sono a 2 cifre decimali. */

float A[4] = {0.00, 0.00, 0.00, 0.00};                /* array di valori di corrente, convertiti in analogico tra 0 e 5 v. i valori sono a 2 cifre decimali. */
float AMAX[4] = {0.00, 0.00, 0.00, 0.00};             /* array di valori di corrente massimi, convertiti in analogico tra 0 e 5 v. i valori sono a 2 cifre decimali. */

#include <Wire.h>                                     /* libreria per comunicazione i2c */
#include <Adafruit_ADS1015.h>                         /* libreria per ADS1115 */

Adafruit_ADS1115 ads_V(0x49);                         /* creazione oggetto ads_V per la libreria ADS1015 di gestione del sensore per le tensioni */
Adafruit_ADS1115 ads_A(0x48);                         /* creazione oggetto ads_A per la libreria ADS1015 di gestione del sensore per le correnti */

void read_V(){
  for (byte j = 0; j < Channel; j++){                 /* ciclo for per leggere tutti i canali */
    unsigned long Sum = 0;                            /* variabile che contiene la somma di tutti i campionamenti ((2^15 -1) * 32 = 1.048.544 al massimo) */
    for (byte i = 0; i < Sample; i++){                /* ciclo for per i campionamenti, da 0 a 31, quindi 32 campionamenti */
      Sum += ads_V.readADC_SingleEnded(j);            /* ad ogni ciclo aggiungi una lettura */
    }
    V[j] = ((Vref * (Sum / Sample)) / stepSample) * coef_V[j];  /* tensione analogica decimale ottenuta dalla media dei campionamenti, da 0 a 22 Volt */
    if (V[j] > VMAX[j]){                              /* if per trovare il valore più alto */
      VMAX[j] = V[j];                                 /* se trovo un valore più alto del precedente lo salvo al posto del precedente */
    }
  }
}
 
void read_A(){
  for (byte j = 0; j < Channel; j++){                 /* ciclo for per leggere tutti in canali */
    unsigned long Sum;                                /* variabile che contiene la somma di tutti i campionamenti ((2^15 -1) * 32 = 1.048.544 al massimo) */
    for (byte i = 0; i < Sample; i++){                /* ciclo for per i campionamenti, da 0 a 31, quindi 32 campionamenti */
      Sum += ads_A.readADC_SingleEnded(j);            /* ad ogni ciclo aggiungi una lettura */
    }
    A[j] = ((((Vref * (Sum / Sample)) / stepSample) - 2.5) / sensitivity);  /* corrente analogica decimale ottenuta dalla media dei campionamenti */
    if (A[j] > AMAX[j]){                              /* if per trovare il valore più alto */
      AMAX[j] = A[j];                                 /* se trovo un valore più alto del precedente lo salvo al posto del precedente */
    }
  }
}


Unica cosa che non ho capito: queste due funzioni inglobano 6 funzioni che prima lavoravano parallelamente. In questo modo ho molte meno variabili array.
Tu però avevi trovato il problema delle letture, che erano 32 letture della stessa cifra e non ne capivi il senso.
Variazioni sostanziali però, rispetto alla mia funzione (funzione che faceva solo quello) non ne vedo, ovvero:

-definisco una variabile locale di somma
-ciclo con for per il numero di campioni che mi serve
  -ad ogni ciclo sommo le letture
-uscito dal ciclo calcolo la media

Dal punto di vista concettuale non noto differenze, anche nel codice mi sembra quasi uguale, solo che tu "salti" le funzioni intermedie.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on May 10, 2018, 09:30 am
Scusa, un dubbio ... e' un sistema "real-time", cioe' ti servono dati piu o meno in tempo reale, quindi perche' 32 letture per fare la media ? ... 4 o 8 non sarebbero state sufficenti ? (il che fra l'altro avrebbe pure velocizzato un po il tutto ... ;))
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 10, 2018, 11:42 am
La lettura non viene fatta fisicamente dal processore, ci sono gli ADC esterni e per questo pensavo fossero abbastanza veloci.
I dati mi servono in tempo reale ma le macchinine viaggiano a 30 km/h di media su una pista da 40 metri, il giro lo fanno in circa 5 secondi. Per cui le variazioni sono continue. Un certo delay lo ammetto, per questo mi interessa salvare il valore di picco, perché il picco indica che qualcuno sta barando.
Non so però quanto siano "lente" 32 letture, io pensavo fossero veloci quanto 32 cicli a 16 Mhz, poiché devo solo fare una lettura dell'i2c (in realtà dovrei andare a calcolare quanto è veloce la comunicazione i2c). Quindi un ciclo dovrebbero essere 62.5 nanoSecondi, per 32 cicli sono 2000 nanoSecondi, quindi 2 microSecondi, che reputavo comunque un tempo abbastanza breve.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on May 10, 2018, 12:33 pm
Sì,  ma non ho ancora capito:
Hai già  fatti prove o è  tutto ipotesi?
Hai provato a fare letture?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 10, 2018, 12:34 pm
No perché mi devono arrivare i convertitori dalla Cina. Nel frattempo mi sono portato avanti.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Silente on May 10, 2018, 12:35 pm
...
E qui partono le mie domande da ignorante:
Se ti serve una media precisa e veloce, e calcolare il picco in modo altrettanto veloce non potresti lavorare su una singola lettura?
Mi spiego:
Leggi una misura
Stabilendo un limite di "misura errata", superiore e inferiore la confronti con essi (se necessario.
Da li, se passa, la sommi ad una variabile media, e dimezzi il risultato. Hai la media di tutte le misure.
E sempre se passa, la confronti con una variabile di picco, se é superiore aggiorni il picco.
Se il picco é superiore al limite di "gioco corretto" lo segnali, agisci, e resetti tutto.

Può andare?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on May 10, 2018, 03:56 pm
Potrebbe anche fare una media progressiva ... anche con soli tre punti, volendo ... assegni tre variabili (o celle di array, come preferisci, fai le prime tre letture nel setup giusto per dargli dei valori, poi durante la lettura fai leggi e emtti in variabile1 > fai la media > leggi e metti in variabile2 > fai la media > leggi e metti in variabile3 > fai la media > leggi e metti in variabile1 > ... eccetera, usandole a rotazione ... sempre le stesse tre variabili, poca memoria occupata, se c'e' un picco di sicuro dura piu delle tre letture, quindi lo rilevi, hai comunque una lettura media anche se continua ... o no ? ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 10, 2018, 04:44 pm
Inizia ad essere un po' complicato per i miei livelli di programmazione...
O forse lo scoglio più grande è capire come realizzare la cosa.

In pratica devo fare un for che scrive su un array, dopodiché gli elementi di questo array li sommo e li divido per il numero di elementi, credo di aver capito così. Non mi è chiaro però come fare per farlo "continuamente" senza aspettare di riempire l'array. E non so come farlo fare nel setup.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on May 10, 2018, 05:39 pm
pseudocodice, da rivedere e correggere, e sono sicuro che ci siano modi migliori, ma a me al momento viene in mente solo qualcosa del genere ...

Code: [Select]

...
int valori[2];
...

void setup()
{
   ... resto del setup

   for(aa=0; aa>=2; aa++)
   {
      valori[aa]=valore letto dall'ADC;
   }
}

void loop()
{
   ... resto del codice
   
   if (aa>=3) aa=0;
   valori[aa]=valore letto dall'ADC;
   aa++;
   media=(valori[0]+valori[1]+valori[2])/3
}


dichiari un'array lungo quanti elementi vuoi, in questo caso tre ... nel setup non fai altro che fare tre letture (anche di seguito, senza for, tanto sono solo tre e solo per riempire l'array ... si puo perfino farne a meno, in effetti) ... nel codice non fai altro che eseguire le letture e metterle nell'array, incrementando l'indice, e con l'if lo riazzeri se supera il numero di celle che ti servono ... per la media ti limiti a sommare il contenuto delle tre celle e dividere per tre ... (si potrebbe anche mettere quelle 4 righe in una funzione, volendo, o creare una funzione per ogni canale, con i propri array separati)

solo come possibile idea, ovviamente ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on May 10, 2018, 07:44 pm
mah, io son dubbioso
vedo un fracco di lavoro senza alcun output
ma devo essere positivo
quando ti arrivano i sensori ricominciamo,
prima è inutile, si macinerebbe solo aria
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 10, 2018, 10:54 pm
Intanto domani vado a montare sulla pista gli i sensori di corrente e stendo i cavi, così giusto per metterci al lavoro.

Comunque secondo voi lo schema elettrico va bene? Così mando a PCBWay i gerber.
Più che altro mi spaventa quel problema sui display che sembra come se ricevessero troppa corrente.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 12, 2018, 12:13 am
Questo il problema che dicevo:

Questo è alimentato con la batteria tampone esterna a 5 v, quindi USB e alimentatore interno di Arduino Pro Micro, quindi 3.3 v

(http://i63.photobucket.com/albums/h128/Riccardo_Tj_Pich/Elettronica/Voltmetro%20Pista%20Slot/th_CECF1061-38D5-43C5-9BC6-894526EDE520_zpsda5dh63g.jpg) (http://s63.photobucket.com/user/Riccardo_Tj_Pich/media/Elettronica/Voltmetro%20Pista%20Slot/CECF1061-38D5-43C5-9BC6-894526EDE520_zpsda5dh63g.jpg.html)

Questa foto invece è alimentato dal PC a 5 v, quindi USB, alimentatore interno di Arduino e uscita a 3.3v

(http://i63.photobucket.com/albums/h128/Riccardo_Tj_Pich/Elettronica/Voltmetro%20Pista%20Slot/th_C9DDF93E-CDF0-49D5-9173-3C2E4246EF9C_zpsmlbowlml.jpg) (http://s63.photobucket.com/user/Riccardo_Tj_Pich/media/Elettronica/Voltmetro%20Pista%20Slot/C9DDF93E-CDF0-49D5-9173-3C2E4246EF9C_zpsmlbowlml.jpg.html)

Se invece alimento esternamente un LM7805 con 12 v, alimento quindi la scheda e tutto il resto a 5 v, entrambi i display mi fanno le righe verticali. I display, dalla descrizione su eBay e dai componenti presenti sulle shield dei display, sembrano avere un alimentatore interno così da poter alimentare tutto a 5 v anziché 3.3 v, per cui forse non gli sto dando troppa tensione.

Voi cosa ne pensate?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 14, 2018, 11:20 am
Seguendo il datasheet allegato (è il datasheet solo del display, non del modulo completo) si legge che il Vled è di 3.2 v mentre Iled è 30 mA.
Considerando che alimento a 5 v ed ho due schermi in parallelo, mi serve una resistenza per limitare la corrente a 60 mA.
(5 v - 3.2 v) / 0.060 A = 30 Ohm, utilizzo una resistenza da 32 Ohm.
Inoltre la resistenza deve dissipare P = V x I, cioè (5 v - 3.2 v) x 0.060 = 0.108 W che è comunque minore di 1/4 W, per cui posso usare una resistenza normalissima. Quando ho tempo provo a ricablare tutto sulla breadboard e inserirci una resistenza in serie all'alimentazione dei display, per provare a risolvere il problema delle righe verticali.

Mi sembra però strano poiché dovrebbe esserci comunque un regolatore interno al modulo dei display per abbassare la tensione di alimentazione da 5 v a 3.3 v, sennò brucerei tutto.

Inoltre se alimento la scheda Arduino con l'USB (quindi alimento a 5 v e l'alimentatore interno alla scheda abbassa a 3.3 v tutte le uscite, il processore e anche i display) collegandola al PC uno dei due schermi mi fa le righe, mentre se alimento con una batteria tampone per cellulare entrambi gli schermi sono perfetti.

Non mi so spiegare questo problema se non con un problema di corrente non limitata, per questo motivo pensavo di inserire la resistenza.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on May 14, 2018, 05:44 pm
Il backlight di quei cosi in genere e' fatt ocon uno o due led bianchi (collegati in parallelo se due), e se sono come quelli che avevo visto tempo fa, dandogli i 70mA che consigliano loro gli si accorcia la vita, meglio stare sui 30 massimi ... anche perche' quel datasheet mi sembra un po confuso, in un punto si dice corrente del backlight 70mA, subito dopo dice 30mA ... poi bisogna vedere lo stampato, perche' dal display vero e proprio escono le connessioni dirette ai led, senza resistenza di limitazione ... serve vedere sullo stampato dove e come sono connessi ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: MightyPegas on May 14, 2018, 08:02 pm
Non so però quanto siano "lente" 32 letture, io pensavo fossero veloci quanto 32 cicli a 16 Mhz, poiché devo solo fare una lettura dell'i2c (in realtà dovrei andare a calcolare quanto è veloce la comunicazione i2c). Quindi un ciclo dovrebbero essere 62.5 nanoSecondi, per 32 cicli sono 2000 nanoSecondi, quindi 2 microSecondi, che reputavo comunque un tempo abbastanza breve.
Ciao,
magari 2 uS, ci metterei la firma! :)
purtroppo l'I2C è terribilmente più lento... per default il è clock è 100KHz, ben lontano dai 16MHz della MCU.
Per ogni lettura che qui effettui il sistema invia 2 byte (indirizzo slave+reg da leggere) e aspetta la risposta che sono 3 byte (indirizzo slave + 16bit, se ricordo bene lo slave rimanda indietro il proprio indirizzo) quindi 5 byte tra scrittura e lettura, oltre 500 uS in totale che moltiplicato 32 letture sono minimo 16 mS, altro che 2 uS...
Inoltre 31 delle 32 letture sono inutili...
Da quanto ho visto tu usi l'ADS1115 con le impostazioni di default per cui hai 128 campionamenti/S che (correggetemi se sbaglio) non sono per canale, ma in totale, quindi /4 sono 32 campioni/S per canale, ovvero uno ogni 71 mS.
Quindi otterrai al massimo due diversi valori nel caso capiti a cavallo tra una lettura e l'altra, altrimenti uno solo.

Massimo
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 14, 2018, 08:17 pm
Il backlight di quei cosi in genere e' fatt ocon uno o due led bianchi (collegati in parallelo se due), e se sono come quelli che avevo visto tempo fa, dandogli i 70mA che consigliano loro gli si accorcia la vita, meglio stare sui 30 massimi ... anche perche' quel datasheet mi sembra un po confuso, in un punto si dice corrente del backlight 70mA, subito dopo dice 30mA ... poi bisogna vedere lo stampato, perche' dal display vero e proprio escono le connessioni dirette ai led, senza resistenza di limitazione ... serve vedere sullo stampato dove e come sono connessi ...
Il datasheet mi sembra che dica 70 mA MAX, 30 mA valore tipico, per questo ho detto 60 mA.

Ciao,
magari 2 uS, ci metterei la firma! :)
purtroppo l'I2C è terribilmente più lento... per default il è clock è 100KHz, ben lontano dai 16MHz della MCU.
Per ogni lettura che qui effettui il sistema invia 2 byte (indirizzo slave+reg da leggere) e aspetta la risposta che sono 3 byte (indirizzo slave + 16bit, se ricordo bene lo slave rimanda indietro il proprio indirizzo) quindi 5 byte tra scrittura e lettura, oltre 500 uS in totale che moltiplicato 32 letture sono minimo 16 mS, altro che 2 uS...
Inoltre 31 delle 32 letture sono inutili...
Da quanto ho visto tu usi l'ADS1115 con le impostazioni di default per cui hai 128 campionamenti/S che (correggetemi se sbaglio) non sono per canale, ma in totale, quindi /4 sono 32 campioni/S per canale, ovvero uno ogni 71 mS.
Quindi otterrai al massimo due diversi valori nel caso capiti a cavallo tra una lettura e l'altra, altrimenti uno solo.

Massimo
Eh ho ragionato solo sui clock della MCU, tralasciando la comunicazione i2c, perché non avevo idea delle velocità e di come calcolarle.
Correggerti non ho le competenze per farlo, non ho mai usato un convertitore AD, per cui...


Pensavo anche che, va bene raggruppare tante funzioni, però se ciclo con un for i 4 canali, non posso parallelamente fare la media dei campionamenti. La funzione per come è scritta adesso fa la media sul primo canale, poi si sposta sul secondo, poi sul terzo, poi sul quarto e poi torna indietro.
Mentre se io la scrivessi in maniera differente, inserendo come argomento della funzione il numero del canale e chiamando nel loop le 4 funzioni per i 4 canali, allora le medie me le calcolerebbe in parallelo. Giusto?
Spero di essermi spiegato.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: MightyPegas on May 14, 2018, 09:04 pm
Questo è alimentato con la batteria tampone esterna a 5 v, quindi USB e alimentatore interno di Arduino Pro Micro, quindi 3.3 v

Questa foto invece è alimentato dal PC a 5 v, quindi USB, alimentatore interno di Arduino e uscita a 3.3v

Se invece alimento esternamente un LM7805 con 12 v, alimento quindi la scheda e tutto il resto a 5 v, entrambi i display mi fanno le righe verticali. I display, dalla descrizione su eBay e dai componenti presenti sulle shield dei display, sembrano avere un alimentatore interno così da poter alimentare tutto a 5 v anziché 3.3 v, per cui forse non gli sto dando troppa tensione.
Che vuoi dire con "Questo è alimentato con la batteria tampone esterna a 5 v, quindi USB"? Lo alimenti sia con la batteria che con l'USB o che altro?

E con "alimento quindi la scheda e tutto il resto a 5 v" invece? Non manderai mica i display a 5V vero?
dai doc che hai allegato in un altro msg risulta che sia la logica e l'I/O che i led vanno a 3.3V (come la stragrande maggioranza di questi display).
Se hai il Pro Micro a 5V 16MHz inoltre dovrai usare un adattatore di livello 5V->3.3V per comunicare con il display, o usare un partitore resistivo per abbassare il livello dei segnali da Arduino al display...
Con il 7805 senza dissipatore devi stare un po' attento... E' vero che può operare fino a 150° ma se si tiene più basso è meglio assai :) Inoltre come dici in un altro post stai intorno ai 400mA e calcolando che in input hai 12V stai dissipando quasi 3W...
Io ci vedrei meglio un convertitore DC/DC, più efficiente e non scalda... Magari 2, uno per i 5V ed uno per i 3.3V...

Massimo
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: MightyPegas on May 14, 2018, 09:55 pm
Mentre se io la scrivessi in maniera differente, inserendo come argomento della funzione il numero del canale e chiamando nel loop le 4 funzioni per i 4 canali, allora le medie me le calcolerebbe in parallelo. Giusto?
Spero di essermi spiegato.
Allora… intanto il numero dei campioni/S puoi aumentarlo fino a 860 (215 per canale sempre se non sbaglio), ma per farlo devi fare una correzioncina sulla include della libreria, perché questa era stata fatta per l'ADS1015 e manca l'ultima combinazione per il settario dei campioni/S (sul 1015 gli ultimi due  sono uguali, sul 1115 no).
In questa maniera avresti un campione ogni 7.6 mS.

Poi sì, cambiando la funzione puoi farlo in parallelo...
Se hai abbastanza memoria puoi fare un array per ogni canale…
Personalmente ad ogni ciclo di loop richiamerei la funzione che legge i 4 canali (1 sola volta!), memorizza i valori e ricalcola la media in maniera ottimizzata (1 sottrazione, 1 addizione ed una divisione per ogni canale) e eventuali altri calcoli (come il valore di picco).
In questa maniera avresti i dati sempre aggiornati con un impatto decisamente inferiore sulle prestazioni che fare tante letture consecutive e somme come adesso.

Massimo
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 15, 2018, 12:20 am
Che vuoi dire con "Questo è alimentato con la batteria tampone esterna a 5 v, quindi USB"? Lo alimenti sia con la batteria che con l'USB o che altro?

E con "alimento quindi la scheda e tutto il resto a 5 v" invece? Non manderai mica i display a 5V vero?
dai doc che hai allegato in un altro msg risulta che sia la logica e l'I/O che i led vanno a 3.3V (come la stragrande maggioranza di questi display).
Se hai il Pro Micro a 5V 16MHz inoltre dovrai usare un adattatore di livello 5V->3.3V per comunicare con il display, o usare un partitore resistivo per abbassare il livello dei segnali da Arduino al display...
Con il 7805 senza dissipatore devi stare un po' attento... E' vero che può operare fino a 150° ma se si tiene più basso è meglio assai :) Inoltre come dici in un altro post stai intorno ai 400mA e calcolando che in input hai 12V stai dissipando quasi 3W...
Io ci vedrei meglio un convertitore DC/DC, più efficiente e non scalda... Magari 2, uno per i 5V ed uno per i 3.3V...

Massimo
Allora, mi spiego meglio.

Intanto Arduino Pro Micro non esiste, è una versione cinese.
Se alimento Arduino Pro Micro tramite porta USB, la tensione mi entra nell'alimentatore interno della scheda che la porta a 3.3 v, tutte le uscite sono a 3.3 v e la MCU non gira a 16 MHz ma a 8 MHz.
Io ho provato a collegare entrambi i display, alimentando la scheda Arduino Pro Micro tramite USB prima con il computer, ritrovandomi con uno schermo a righe verticali e l'altro perfetto, poi con una batteria tampone per cellulare, ritrovandomi con entrambi gli schermi perfetti.

Il mio progetto invece prevede di alimentare tutto a 5 v applicando i 5 v in uscita da un LM7805 al pin "VCC" della scheda Arduino Pro Micro, tenendo le uscite a 5 v e la MCU a 16 MHz. Facendo così ho registrato un assorbimento di 400 mA, LM7805 che scaldava molto ed entrambi gli schermi con le righe verticali.

Ma questo è comprensibile se lo schermo è fatto per 3.3 v anziché 5 v.

Quello che non capisco è che se lo faccio alimentare dalla scheda Arduino Pro Micro che mi dovrebbe far uscire già 3.3 v, a seconda della sorgente a monte del regolatore entrambi i display funzionano nella maniera corretta oppure solamente uno ha problemi.

Questo è il retro del modulo:

(http://i63.photobucket.com/albums/h128/Riccardo_Tj_Pich/Elettronica/Voltmetro%20Pista%20Slot/th_AF038980-9491-4F01-9629-8312096F3029_zpsubh9twed.jpg) (http://s63.photobucket.com/user/Riccardo_Tj_Pich/media/Elettronica/Voltmetro%20Pista%20Slot/AF038980-9491-4F01-9629-8312096F3029_zpsubh9twed.jpg.html)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 15, 2018, 12:57 am
Allora… intanto il numero dei campioni/S puoi aumentarlo fino a 860 (215 per canale sempre se non sbaglio), ma per farlo devi fare una correzioncina sulla include della libreria, perché questa era stata fatta per l'ADS1015 e manca l'ultima combinazione per il settario dei campioni/S (sul 1015 gli ultimi due  sono uguali, sul 1115 no).
In questa maniera avresti un campione ogni 7.6 mS.
Ti blocco subito, non so come si modifica la libreria, non so nemmeno "leggere fra le righe" in una libreria per capire quale pacchetto di funzioni ha.

Quote
Poi sì, cambiando la funzione puoi farlo in parallelo...
Se hai abbastanza memoria puoi fare un array per ogni canale…
Personalmente ad ogni ciclo di loop richiamerei la funzione che legge i 4 canali (1 sola volta!), memorizza i valori e ricalcola la media in maniera ottimizzata (1 sottrazione, 1 addizione ed una divisione per ogni canale) e eventuali altri calcoli (come il valore di picco).
In questa maniera avresti i dati sempre aggiornati con un impatto decisamente inferiore sulle prestazioni che fare tante letture consecutive e somme come adesso.

Massimo
Io aspetterei che mi arrivino per fare delle prove.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: MightyPegas on May 15, 2018, 01:25 am
Intanto Arduino Pro Micro non esiste, è una versione cinese.
...
Io ho provato a collegare entrambi i display, alimentando la scheda Arduino Pro Micro tramite USB prima con il computer, ritrovandomi con uno schermo a righe verticali e l'altro perfetto, poi con una batteria tampone per cellulare, ritrovandomi con entrambi gli schermi perfetti.
Il Pro Micro cinese dovrebbe essere il clone (tanto per cambiare) del Pro Micro di Sparkfun. Ci avevo messo gli occhi sopra per via delle dimensioni e del supporto USB :)
Se con la batteria va bene e con il computer no, dato l'assorbimento di 400mA dovrebbe dipendere dalla USB del PC che non ce la fa... Avevo letto la corrente nominale delle USB quando ancora facevo assistenza, ma non me la ricordo più :( ricordo però che all'epoca la maggior parte dei PC erano molto al di sotto...

Quote
Il mio progetto invece prevede di alimentare tutto a 5 v applicando i 5 v in uscita da un LM7805 al pin "VCC" della scheda Arduino Pro Micro, tenendo le uscite a 5 v e la MCU a 16 MHz. Facendo così ho registrato un
Aspetta, aspetta...
i Pro Micro che conosco io sono o 3.3V 8MHz o 5V 16MHz, due modelli distinti.
I cinesi ne hanno fatto uno che si può commutare da uno all'altro?!?

Quote
assorbimento di 400 mA, LM7805 che scaldava molto ed entrambi gli schermi con le righe verticali.

Ma questo è comprensibile se lo schermo è fatto per 3.3 v anziché 5 v.
Che scaldi è normale, come ti dissi sta dissipando quasi 3W senza aletta.
Lo schermo che hai è un modello generico (cioè non uno di quelli dotati di shield per essere collegati sopra all'Uno o il Mega per es) e quasi tutti quelli che ho visto su AliExpress (un centinaio abbondante, e non esagero) sono a 3.3V con i segnali a 3.3V

Quote
Quello che non capisco è che se lo faccio alimentare dalla scheda Arduino Pro Micro che mi dovrebbe far uscire già 3.3 v, a seconda della sorgente a monte del regolatore entrambi i display funzionano nella maniera corretta oppure solamente uno ha problemi.
Questo potrebbe esser dovuto alle diverse tolleranze dei componenti elettronici. Se la USB del PC non ce la fa, la tensione di alimentazione si abbassa e, se diminuisce oltre un certo limite, il regolatore lineare da 3.3v presente sulla Pro Micro non riesce più a garantire il voltaggio nominale che quindi si abbassa a sua volta.
Risultato: i componenti con minor tolleranza iniziano a malfunzionare.
Prova anche con qualche alimentatore dei cellulari con uscita USB (da 1A). Se con quello pure va bene, allora è l'USB del PC...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: MightyPegas on May 15, 2018, 01:31 am
Ti blocco subito, non so come si modifica la libreria, non so nemmeno "leggere fra le righe" in una libreria per capire quale pacchetto di funzioni ha.

Io aspetterei che mi arrivino per fare delle prove.
Per questo ti posso dare una mano io o qualcun altro :)
Si tratta solo di aggiungere una #define...

Massimo
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 15, 2018, 08:46 am
https://www.ebay.it/itm/Pro-Micro-5V-16MHz-ATmega32U4-Replace-ATmega328-Arduino-Pro-Mini/122745843861?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649 (https://www.ebay.it/itm/Pro-Micro-5V-16MHz-ATmega32U4-Replace-ATmega328-Arduino-Pro-Mini/122745843861?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649)

Effettivamente non c'è scritta da nessuna parte questa cosa. Non so dove l'ho letta e perché mi è rimasta in mente.

Comunque c'è un ponticello che se chiuso ti permette di alimentarlo direttamente con i 5 v della USB. Se vedi in alto a sinistra, a sinistra della presa USB c'è SJ1. Chiuso quel ponticello dovrebbe bypassare il regolatore di tensione e portare 5 v direttamente al Mega32U4. Questo dicevo delle due "versioni".

Si ma 400 mA mi sembrano comunque tanti per non aver collegato nulla se non Arduino e i due display.


Comunque al posto dell'LM7805 metto un regolatore di tensione a 3.3 v e il discorso dovrebbe essere uguale, perché tanto gli ADS1115 reggono 3.3 v sia di alimentazione che logici, il DHT11 regge i 3.3 v, i due pulsanti reggono i 3.3 v e non dovrebbe esserci il problema per i valori logici, poiché le proporzioni sono comunque quelle. Solo che mi preoccupa il fatto che assorba così tanto, non è possibile se il datasheet dice che la retroilluminazione consuma 30 mA e dovrebbe essere solo quella la parte più onerosa.
Inoltre mettendo un LM7833 dovrò ponticellare i ponti sui display per bypassare i regolatori di tensione (che credo funzionino solo per la tensione allo schermo, la parte logica e la retroilluminazione deve per forza di cose essere a 3.3 v) e dovrei essere ok.
Non mi spiego il consumo anomalo.

Per la spiegazione sulle librerie... sono tutto orecchi! Anche per imparare qualcosa di nuovo, partendo da una libreria capire che funzioni ci sono.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on May 15, 2018, 09:33 am
Uhm ... dove l'hai preso il display ? ... c'e' un link con qualche immagine chiara ?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 15, 2018, 09:57 am
https://www.ebay.it/itm/1-8-Inch-TFT-LCD-Touch-Panel-Board-Display-Module-For-Arduino-UNO-MEGA-Nano-HOT/311967275698?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649 (https://www.ebay.it/itm/1-8-Inch-TFT-LCD-Touch-Panel-Board-Display-Module-For-Arduino-UNO-MEGA-Nano-HOT/311967275698?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649)

(http://g01.a.alicdn.com/kf/HTB1oC_1PXXXXXaBXVXXq6xXFXXXX/New-Stylish-1-8-inch-128-x-160-Pixels-For-Arduino-TFT-font-b-LCD-b.jpg)

EDIT: ho appena trovato questo link, dovrò leggerlo con più attenzione http://eessential.blogspot.it/2017/12/18-128-x-160-tft-lcd.html (http://eessential.blogspot.it/2017/12/18-128-x-160-tft-lcd.html)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on May 15, 2018, 10:19 am
Non sono sicuro, ma ... mi sembra di vedere che la pista marcata led+ passa attraverso una "R1" da 0 ohm (ma non si capisce dove va la led-, se a massa o va al display con un'altra pista) ... comunque se R1 e' da 0 ohm, serve metterne una esterna per forza, o bruci i led alla lunga ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 15, 2018, 11:12 am
Dal link che ho messo al blog:

Quote
LED+, SD_CS,  MOSI and SCK have 4.7-Ohm series resistors.  LED- is shorted to GND.  The display is advertised to work with Arduino, but it appears to take only 3V input.
In questo momento non ho il display in mano per controllare comunque.

Mi fa strano comunque che alimentando Arduino Pro Micro tramite USB dovrei già fornire ai display 3.3 v.

EDIT: guardando la foto che ho messo io si vede che R1 è da 4R7 quindi 4,7 Ohm.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on May 15, 2018, 11:52 am
... veramente sulla foto che hai messo io su R1 leggo 0 ;) ... comunque 4.7 ohm potrebbero anche andare bene per alimentare i led dai 3.3V di Arduino (SE e' da 4.7 ohm ... cosa che comunque io non farei, collegarlo all'uscita del 3.3V, senza metterci almeno altri 10 ohm in serie), se al led+ gli dai 5V, mettici in serie almeno un centinaio di ohm ... perche' collegare direttamente il pin led+ al 5V, con 4.7 ohm di resistenza, finiresti per dargli fra 250 e 450 mA ai poveri led (dipende dalla loro caduta interna, ma comunque sono sempre troppi :P ... considera anche che i led scaldano, e li sono integrati nel display, il che significa che se li sovralimenti, oltre a rovinarsi, scaldano anche lo schermo ed il chip che c'e' sopra, rischiando di danneggiarli)

Inoltre quelle schede hanno un regolatorino a 3.3V integrato (che ovviamente NON aimenta il led ;)), se le alimenti a 5V ed arduino va a 5V va lasciato tutto com'e' (ed i segnali dati andrebbero ridotti a 3.3V con dei partitori resistivi, almeno), mentre se alimenti VCC con gia i 3.3V, credo che il ponticello JP1 vada chiuso (ma controlla bene con il venditore prima, perche' neppure io ho il display qui, sto andando di logica vedendo le piste sulla tua foto)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 15, 2018, 11:58 am
Ecco scoperto l'assorbimento anormale del 7805.

Comunque la foo del post #125 è puramente rappresentativa. La foto al mio modulo la puoi vedere nella pagina precedente oppure nel link infondo al post #125.

A questo punto alimento tutto a 3.3 v e mi tolgo il pensiero.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: MightyPegas on May 15, 2018, 12:23 pm
Comunque c'è un ponticello che se chiuso ti permette di alimentarlo direttamente con i 5 v della USB. Se vedi in alto a sinistra, a sinistra della presa USB c'è SJ1. Chiuso quel ponticello dovrebbe bypassare il regolatore di tensione e portare 5 v direttamente al Mega32U4. Questo dicevo delle due "versioni".
C'ho perso un po' di tempo sopra sia per innata curiosità sia perché prima o poi ne prenderò qualcuno...
La cosa è abbastanza semplice. Gli originali Sparkfun arrivano con il ponticello regolarmente aperto o chiuso a seconda della versione, i cinesi lo hanno tutti aperto, e questo spiega anche delle stranezze...

Mi pare di aver capito che tu abbia già visto lo schema del Pro Mini qui (https://cdn.sparkfun.com/datasheets/Dev/Arduino/Boards/Pro_Micro_v13b.pdf).
L'alimentazione proveniente dalla USB è collegata tramite un diodo sul pin RAW (input di tensione non regolata) che a sua volta è collegato all'input del regolatore di tensione (5V o 3,3V a seconda della versione). Il ponticello in questione collega il pin +V dell'USB con l'uscita del regolatore bypassandolo e fornendo quindi direttamente tensione ai circuiti.
Ora, nel caso della versione 3.3V col ponticello aperto tutto ok...
In quella a 5V invece la tensione dell'USB passa attraverso il diodo che (se è un normale diodo al silicio) l'abbassa di 0.6/0.7V e poi entra nel regolatore che si aspetterebbe una tensione non inferiore ai 5.5V (quel chip ha un dropout di 450mV).
Risultato: con l'USB alimenti il tutto con una tensione ben inferiore ai 5V... dovresti essere poco al di sotto dei 4V. Puoi verificare misurando la tensione sul pin VCC del Pro Micro.
Se così è, la stranezza è che funzioni... Le specifiche del 32U4 indicano una tensione minima di 4.5V a 16MHz.

Quote
Si ma 400 mA mi sembrano comunque tanti per non aver collegato nulla se non Arduino e i due display.
L'assorbimento è in effetti anomalo... lo misuri sull'uscita del 7805 o sui 12V in entrata?.
L'uscita del 7805 poi dove la colleghi? sul pin RAW o sul VCC?

Quote
Comunque al posto dell'LM7805 metto un regolatore di tensione a 3.3 v
...
Inoltre mettendo un LM7833 dovrò ponticellare i ponti sui display per bypassare i regolatori di tensione (che credo funzionino solo per la tensione allo schermo, la parte logica e la retroilluminazione deve per forza di cose essere a 3.3 v) e dovrei essere ok.
No, vista la versione che hai devi avere i +5V... Dalla foto che hai allegato nell'altro post si vede che il pin VCC del display passa attraverso quel che sembra un regolatore, quindi puoi alimentare tutto a 5V
Per i led dovrai mettere una resistenza di valore adeguato come suggerito da Etemenanki.
Sugli ingressi del display invece dovrai mettere un partitore resistivo per abbassare i segnali a 3.3V (per fortuna con l'SPI è facile, i collegamenti sono o input o output nessun I/O come l'I2C).

Quote
Per la spiegazione sulle librerie... sono tutto orecchi! Anche per imparare qualcosa di nuovo, partendo da una libreria capire che funzioni ci sono.
Per il momento (mi è appena arrivato un po' di lavoro da fare) posso dirti che per per le librerie adafruit sul loro sito trovi tutorial (https://learn.adafruit.com/adafruit-4-channel-adc-breakouts/downloads) e altre cose utili. Inoltre ci sono degli sketch di esempio insieme alla libreria...
Il seguito alla prossima puntata ;)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 15, 2018, 01:03 pm
C'ho perso un po' di tempo sopra sia per innata curiosità sia perché prima o poi ne prenderò qualcuno...
La cosa è abbastanza semplice. Gli originali Sparkfun arrivano con il ponticello regolarmente aperto o chiuso a seconda della versione, i cinesi lo hanno tutti aperto, e questo spiega anche delle stranezze...

Mi pare di aver capito che tu abbia già visto lo schema del Pro Mini qui (https://cdn.sparkfun.com/datasheets/Dev/Arduino/Boards/Pro_Micro_v13b.pdf).
L'alimentazione proveniente dalla USB è collegata tramite un diodo sul pin RAW (input di tensione non regolata) che a sua volta è collegato all'input del regolatore di tensione (5V o 3,3V a seconda della versione). Il ponticello in questione collega il pin +V dell'USB con l'uscita del regolatore bypassandolo e fornendo quindi direttamente tensione ai circuiti.
Ora, nel caso della versione 3.3V col ponticello aperto tutto ok...
In quella a 5V invece la tensione dell'USB passa attraverso il diodo che (se è un normale diodo al silicio) l'abbassa di 0.6/0.7V e poi entra nel regolatore che si aspetterebbe una tensione non inferiore ai 5.5V (quel chip ha un dropout di 450mV).
Risultato: con l'USB alimenti il tutto con una tensione ben inferiore ai 5V... dovresti essere poco al di sotto dei 4V. Puoi verificare misurando la tensione sul pin VCC del Pro Micro.
Se così è, la stranezza è che funzioni... Le specifiche del 32U4 indicano una tensione minima di 4.5V a 16MHz.
Si tutto esatto, ma se io alimento normalmente e il regolatore di tensione abbassa a 3.3 v vuol dire che il Mega 32u4 riceve 3.3 v e funziona, solo che avevo letto da qualche parte che funzionava a 8 Mhz.

Quote
L'assorbimento è in effetti anomalo... lo misuri sull'uscita del 7805 o sui 12V in entrata?.
L'uscita del 7805 poi dove la colleghi? sul pin RAW o sul VCC?
L'assorbimento lo misuro sull'alimentatore regolabile in tensione / corrente.

Io voglio alimentare tutto il circuito (Arduino Pro Mini, i display e altro che vedi nello schema che ho postato qualche pagina fa) attraverso un alimentatore esterno a 12 v dalla 220 v di casa, non collegandomi alla USB e utilizzando la USB solo per fare modifiche al codice caricato. Per fare questo entro con 12 v e abbassavo la tensione con un LM7805, applicando i 5 v in uscita direttamente al pin VCC di Arduino Pro Micro.

Quote
No, vista la versione che hai devi avere i +5V... Dalla foto che hai allegato nell'altro post si vede che il pin VCC del display passa attraverso quel che sembra un regolatore, quindi puoi alimentare tutto a 5V
Per i led dovrai mettere una resistenza di valore adeguato come suggerito da Etemenanki.
Sugli ingressi del display invece dovrai mettere un partitore resistivo per abbassare i segnali a 3.3V (per fortuna con l'SPI è facile, i collegamenti sono o input o output nessun I/O come l'I2C).
Ma scusami un secondo, non posso alimentare il Mega 32u4 a 3.3 v tenendolo a 8 Mhz, i display a 3.3 v (ponticellando e bypassando il regolatore di tensione sui display) e tutto il resto del circuito a 3.3 v (i ADS1115 accettano i 3.3 v e così anche il DHT11 e la mia pulsantiera)? Così non dovrei inserire le resistenze per l'SPI.

Quote
Per il momento (mi è appena arrivato un po' di lavoro da fare) posso dirti che per per le librerie adafruit sul loro sito trovi tutorial (https://learn.adafruit.com/adafruit-4-channel-adc-breakouts/downloads) e altre cose utili. Inoltre ci sono degli sketch di esempio insieme alla libreria...
Il seguito alla prossima puntata ;)
Ok grazie, per il momento guardo.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 15, 2018, 01:24 pm
Ho visto lo schema elettrico qui: https://cdn-learn.adafruit.com/assets/assets/000/036/145/original/sensors_schem.png?1475541078 (https://cdn-learn.adafruit.com/assets/assets/000/036/145/original/sensors_schem.png?1475541078)

Ci sono già le resistenze di pull-up su ogni modulo, per cui non serve che metto le due resistenze sul mio circuito.

Mentre di default c'è R3 che mette a GND l'indirizzo, per cui su uno dei due moduli non serve che faccio il collegamento a GND, mentre sull'altro devo togliere R3 e mettere sul mio circuito una resistenza da 10 K Ohm dai 3.3 v.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on May 15, 2018, 03:26 pm
...
A questo punto alimento tutto a 3.3 v e mi tolgo il pensiero.
puoi farlo, ma metti comunque un 10 ohm in serie alla connessione del led+, che male non gli fa ;) ... li generi esternamente ? ... LM1117-33 ? ... filtra bene tutto quanto, almeno 100uF sia sugli ingressi che sulle uscite, ed anche almeno un paio di 100n su ingresso ed uscita del regolatore, il piu vicino possibile ... se poi aggiungi qualche altro condensatore qui e la, neppure quello gli fa male ;) ...

Considera anche che se li ricavi da un'alimentatore a 12V, il regolatore dovra' dissipare un casino e tre quarti di potenza in calore (casino = unita' di misura spannometrica, via di mezzo fra "un bel po" ed "uno sproposito", recentemente riconosciuta dal sistema metrico internazionale :P :D) e ti tocchera' metterci dissipatore e ventola, oppure potrai usarlo per cuocerci la bistecca (finche' dura) ... fai molto meglio ad usare uno di quegli alimentatori a spina da 5V 1000mA o simili (almeno 1A, tanto per stare sul sicuro)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: MightyPegas on May 15, 2018, 03:34 pm
Si tutto esatto, ma se io alimento normalmente e il regolatore di tensione abbassa a 3.3 v vuol dire che il Mega 32u4 riceve 3.3 v e funziona, solo che avevo letto da qualche parte che funzionava a 8 Mhz.
...
Ma scusami un secondo, non posso alimentare il Mega 32u4 a 3.3 v tenendolo a 8 Mhz, i display a 3.3 v (ponticellando e bypassando il regolatore di tensione sui display) e tutto il resto del circuito a 3.3 v (i ADS1115 accettano i 3.3 v e così anche il DHT11 e la mia pulsantiera)? Così non dovrei inserire le resistenze per l'SPI.
No, non ci siamo capiti :)
Se hai il quarzo con sopra scritto 16.000 allora è la versione a 5V/16MHz ed il regolatore onboard è da 5V. Quella schedina non sa neanche come siano fatti i 3.3V :).
Il regolatore cercherebbe di abbassarla a 5V, ma è già più bassa! e quindi si abbassa ancor di più.
Quando vai con la USB ed il ponticello aperto sottoalimenti sia la scheda che tutto ciò che a lei è collegato come alimentazione...

Dovrebbe essere possibile selezionare l'oscillatore interno ad 8MHz giocherellando con i FUSE e quindi poter andare anche con solo 3.3V (che devi fornire tu perché il regolatore è da 5V), ma a che pro? Per risparmiare 6/8 resistenze sull'SPI ed andare però a metà potenza di elaborazione? Di solito si cerca di renderli più veloci, non più lenti :)

Quote
L'assorbimento lo misuro sull'alimentatore regolabile in tensione / corrente.
calcolando il consumo del 7805, del circuito e la sovralimentazione dei led del display, forse ci siamo :)

Come intendi fare è giusto, un unico alimentatore ed un regolatore con il quale mandi avanti tutto. C'è giusto da pensare bene al che tipo di regolatore installare. Il 7805 va benissimo, ma in via precauzionale devi metterci anche un dissipatore e qualche genere di protezione (fusibile + diodi protezione e altro). Questi hanno infatti il viziaccio che se saltano ti scaricano sull'uscita la tensione che hanno in ingresso, ovvero scarichi 12V su tutti gli apparecchi friggendoli...
Sono più propenso all'ipotesi di Etemenanki, alimentatore da 5V e via (se salta no problem).

Massimo
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 15, 2018, 03:41 pm
puoi farlo, ma metti comunque un 10 ohm in serie alla connessione del led+, che male non gli fa ;) ... li generi esternamente ? ... LM1117-33 ? ... filtra bene tutto quanto, almeno 100uF sia sugli ingressi che sulle uscite, ed anche almeno un paio di 100n su ingresso ed uscita del regolatore, il piu vicino possibile ... se poi aggiungi qualche altro condensatore qui e la, neppure quello gli fa male ;) ...

Considera anche che se li ricavi da un'alimentatore a 12V, il regolatore dovra' dissipare un casino e tre quarti di potenza in calore (casino = unita' di misura spannometrica, via di mezzo fra "un bel po" ed "uno sproposito", recentemente riconosciuta dal sistema metrico internazionale :P :D) e ti tocchera' metterci dissipatore e ventola, oppure potrai usarlo per cuocerci la bistecca (finche' dura) ... fai molto meglio ad usare uno di quegli alimentatori a spina da 5V 1000mA o simili (almeno 1A, tanto per stare sul sicuro)
Si esattamente. Io avevo pensato al LM7833 perché della stessa famiglia del LM7805. Non ho mai fatto un regolatore a 3.3 v e non so quale sia meglio utilizzare. Sempre e solo 5 v. Grazie per la sigla!
I condensatori ci sono già ma solo per il regolatore di tensione in entrata e uscita, 100 uF e 100 nF. Il circuito è comunque abbastanza piccolo.

Grazie per avermelo ricordato, pensavo all'alimentatore da rete a 12 v perché avevo bisogno di regolare a 5 v ma ora le condizioni sono cambiate. Pensavo comunque di mettere un'aletta passiva per l' LM1117-33 in TO220 sdraiato.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 15, 2018, 03:54 pm
No, non ci siamo capiti :)
Se hai il quarzo con sopra scritto 16.000 allora è la versione a 5V/16MHz ed il regolatore onboard è da 5V. Quella schedina non sa neanche come siano fatti i 3.3V :).
Il regolatore cercherebbe di abbassarla a 5V, ma è già più bassa! e quindi si abbassa ancor di più.
Quando vai con la USB ed il ponticello aperto sottoalimenti sia la scheda che tutto ciò che a lei è collegato come alimentazione...

Dovrebbe essere possibile selezionare l'oscillatore interno ad 8MHz giocherellando con i FUSE e quindi poter andare anche con solo 3.3V (che devi fornire tu perché il regolatore è da 5V), ma a che pro? Per risparmiare 6/8 resistenze sull'SPI ed andare però a metà potenza di elaborazione? Di solito si cerca di renderli più veloci, non più lenti :)
calcolando il consumo del 7805, del circuito e la sovralimentazione dei led del display, forse ci siamo :)

Come intendi fare è giusto, un unico alimentatore ed un regolatore con il quale mandi avanti tutto. C'è giusto da pensare bene al che tipo di regolatore installare. Il 7805 va benissimo, ma in via precauzionale devi metterci anche un dissipatore e qualche genere di protezione (fusibile + diodi protezione e altro). Questi hanno infatti il viziaccio che se saltano ti scaricano sull'uscita la tensione che hanno in ingresso, ovvero scarichi 12V su tutti gli apparecchi friggendoli...
Sono più propenso all'ipotesi di Etemenanki, alimentatore da 5V e via (se salta no problem).

Massimo
Ok mi state confondendo un po' le idee.

Quindi che mi conviene fare? Alimentatore 5 v che entra direttamente sul VCC di Arduino, resistenze sulla SPI, resistenza da 100 Ohm in serie all'alimentazione ?

Passata l'idea dei 3.3 v?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on May 15, 2018, 04:01 pm
Se parti dai 5V, un'aletta passiva dovrebbe bastare ... il case TO220 da solo, senza alette, puo dissipare al massimo 1W in calore (ma e' il massimo, da pelare le dita ... sarebbe sempre meglio rimanere a meta' di questo valore) ... poi il componente inizia a friggere ...

Partendo dai 5V, devi eliminarne 1.7 ... il che ti da una dissipazione di 170mW per ogni 100mA assorbiti dal circuito ... una piccola aletta puo risultare sufficente, e se circola abbastanza aria ed il tutto non assorbe troppo, perfino senza potrebbe bastare ...

Se ad esempio tu fossi partito dai 12V,  avresti dovuto eliminare 8.7V, che significavano 870mW in calore per ogni 100mA di corrente assorbita dal carico ... come minimo anche con un'aletta passiva, sarebbe diventato parecchio caldo (a meno che l'aletta non fosse stata abbastanza larga)

EDIT: riguardo al post sopra ... se alimenti il tutto a 5V (occhio a scegliere un'alimentatore stabilizzato, non un caricabatteria USB cinesata ;)), la resistenza da 100 ohm andrebbe in serie al solo led, non all'alimentazione del tutto ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 15, 2018, 04:46 pm
Se parti dai 5V, un'aletta passiva dovrebbe bastare ... il case TO220 da solo, senza alette, puo dissipare al massimo 1W in calore (ma e' il massimo, da pelare le dita ... sarebbe sempre meglio rimanere a meta' di questo valore) ... poi il componente inizia a friggere ...

Partendo dai 5V, devi eliminarne 1.7 ... il che ti da una dissipazione di 170mW per ogni 100mA assorbiti dal circuito ... una piccola aletta puo risultare sufficente, e se circola abbastanza aria ed il tutto non assorbe troppo, perfino senza potrebbe bastare ...

Se ad esempio tu fossi partito dai 12V,  avresti dovuto eliminare 8.7V, che significavano 870mW in calore per ogni 100mA di corrente assorbita dal carico ... come minimo anche con un'aletta passiva, sarebbe diventato parecchio caldo (a meno che l'aletta non fosse stata abbastanza larga)

EDIT: riguardo al post sopra ... se alimenti il tutto a 5V (occhio a scegliere un'alimentatore stabilizzato, non un caricabatteria USB cinesata ;)), la resistenza da 100 ohm andrebbe in serie al solo led, non all'alimentazione del tutto ...
No aspetta non ci sto capendo più niente.

Io al Mega 32u4 posso oppure non posso dare 3.3 v?

Se non posso farlo allora alimentatore da 12 v, metto 4 diodi 1N4007 (così cadono 4 x 0.7 v arrivando a 9.2 v, eliminando 4.2 v cioè 420 mW ogni 100 mA), un LM7805, una aletta, le resistenze in serie su CLK, MOSI, RS1, DS1, RST1, RS2, DS2, RST2 (quali valori?) e cambiare la resistenza su entrambi i display con una da 150 Ohm.

Se invece posso farlo allora alimentatore da 5 v, metto 1 diodo 1N4007 (così cadono 1 x 0.7 v arrivando a 4.3 v, eliminando 1 v cioè 100 mW ogni 100 mA), un LM1117-33, una aletta e cambiare la resistenza su entrambi i display con una da 15 Ohm.


Corretto il ragionamento?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 17, 2018, 08:46 am
Quote
Operating Voltage Range (V)    2.7 to 5.5
http://www.microchip.com/wwwproducts/en/ATmega32u4 (http://www.microchip.com/wwwproducts/en/ATmega32u4)

E immagino non ci siano problemi a 3.3 v con una frequenza di 16 Mhz.
Infatti dallo schema SparkFun si vede il regolatore di tensione a 3.3 v e l'oscillatore esterno a 16 MHz.
L'oscillatore esterno garantisce i 16 MHz. Solo nel caso non ci sia l'oscillatore il microchip può usare l'oscillatore interno a 8 MHz, e neanche "automaticamente" ma attraverso i FUSE all'interno dei registri iniziali. Esattamente come l'Atmel Mega 328 P, immagino.
La possibilità del scegliere la tensione credo sia relativa solo agli input / output del microchip alla tensione voluta. Se alimento con il ponticello chiuso allora avrò tutto a 5 v, mentre passando per il regolatore di tensione avrò tutti i pin a 3.3 v. Ma sempre alla frequenza di 16 MHz.

Per tanto farò così:

Quote
Se invece posso farlo allora alimentatore da 5 v, metto 1 diodo 1N4007 (così cadono 1 x 0.7 v arrivando a 4.3 v, eliminando 1 v cioè 100 mW ogni 100 mA), un LM1117-33, una aletta e cambiare la resistenza su entrambi i display con una da 15 Ohm.
Vorrei solo un "approvato" o no da voi, giusto per essere certi di questa cosa :D

Grazie ancora.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 17, 2018, 10:06 am
Fra l'altro, se alimento i display a 3.3 v, la caduta dei led dovrebbe essere di 3.2 v. Quindi (3.3 - 3.2) / 4.7 = 21 mA e non serve mettere nessuna resistenza in serie all'alimentazione.
Però dovrò ricordarmi di ponticellare il regolatore di tensione sul display per alimentare tutto a 3.3 v.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on May 17, 2018, 10:54 am
Se hai un regolatore a 3.3V a bordo, la MCU andra' a 3.3V ... occhio solo a quanto assorbira' il resto del circuito, per non sovraccaricarlo ...

Se il display ha il proprio regolatore, puoi anche alimentare entrambi a 5V, tanto sia i pin della MCU che le linee dati del display alla fine saranno a 3.3V, e cosi il regolatore della MCU scaldera' ancora di meno ...

E no, ovviamente, il led andra' alimentato con i 5V e la R da 100 ohm, e non con i 3.3V, in modo da non passare attraverso il regolatore a bordo e ridurne la dissipazione (avendo l'anodo scollegato dal resto ed il catodo in comune con il GND, e' possibile farlo senza problemi)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 17, 2018, 11:34 am
Se hai un regolatore a 3.3V a bordo, la MCU andra' a 3.3V ... occhio solo a quanto assorbira' il resto del circuito, per non sovraccaricarlo ...

Se il display ha il proprio regolatore, puoi anche alimentare entrambi a 5V, tanto sia i pin della MCU che le linee dati del display alla fine saranno a 3.3V, e cosi il regolatore della MCU scaldera' ancora di meno ...

E no, ovviamente, il led andra' alimentato con i 5V e la R da 100 ohm, e non con i 3.3V, in modo da non passare attraverso il regolatore a bordo e ridurne la dissipazione (avendo l'anodo scollegato dal resto ed il catodo in comune con il GND, e' possibile farlo senza problemi)
No guarda non voglio usare il regolatore di tensione della scheda Arduino Pro Micro perché quel regolatore puoi alimentarlo solamente con la USB. Per questo motivo faccio un regolatore esterno a 3.3 v e alimento il pin VCC della scheda Arduino Pro Micro.

In questo modo alimento la MCU a 3.3 v e la linea SPI è a 3.3 v (anziché 5 v e quindi il problema di mettere le resistenze). C'è un regolatore di tensione sul display per il display in sé ma c'è solo una resistenza calcolata per 3.3 v per limitare la corrente per i led della retroilluminazione. Per cui senza pensare di farmi due alimentazioni separate inutili vado a fare tutto a 3.3 v, la MCU l'alimento a 3.3 v, la SPI è a 3.3 v, il regolatore di tensione per il display in sé lo bypasso chiudendo il ponte, la resistenza per i led della retroilluminazione va già bene.

Il regolatore esterno poi a 3.3 v (partendo da 5 v) e in TO 220 scalderà poco per il poco assorbimento, per il case grande e per il piccolo "salto" di tensione dall'entrata.

Appena riesco sostituisco il LM7805 con il LM1117-33, rifaccio i collegamenti e alimento a 5 v. Vediamo.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on May 17, 2018, 11:58 am
No guarda non voglio usare il regolatore di tensione della scheda Arduino Pro Micro perché quel regolatore puoi alimentarlo solamente con la USB. Per questo motivo faccio un regolatore esterno a 3.3 v e alimento il pin VCC della scheda Arduino Pro Micro....
Scusa, ma non capisco ... stai parlando di questa, giusto ?

(https://store-cdn.arduino.cc/uni/catalog/product/cache/1/image/1000x750/f8876a31b63532bbba4e781c30024a0a/a/0/a000053_iso_3.jpg)

Se si, dallo schema elettrico (https://content.arduino.cc/assets/arduino_micro_schematic.pdf) risulta che il pin "Vin" passa dal regolatore a 5V (quindi va alimentato almeno a 7V), la MCU viene alimentata dai 5V, ed il 5V entra nel secondo regolatore a 3.3V ... se pero' mandi il 3.3V nel VCC, il regolatore a 3.3V a bordo non riceve piu tensione sufficente a lavorare correttamente, per cui tutto quello che colleghi a quel pin non riceve piu 3.3V ... al massimo, si puo provare a mandare contemporaneamente il 3.3V esterno sia al VCC che al pin 3.3V, in teoria il regolatore interno a 3.3V non dovrebbe soffrirne (oppure ignorarlo del tutto, dato che sembra che internamente alla scheda sia collegato a nulla ... basta ricordarsi che NON ci sono 3.3V su quel pin, ma di meno, se al VCC si danno 3.3V, e quindi non usarlo piu come uscita a 3.3V) ... comunque per il led del retroilluminatore il problema non si pone in ogni caso, basta che prendi i 5V che butti nel regolatore esterno che ti genere il 3.3V ...

Suggerivo questo sistema perche' il fatto di avere una resistenza cosi bassa (4.7 ohm) in serie al led, non e' il massimo, basta una piccola variazione della tensione di soglia del led, causata magari dal cambio di temperatura, per variare di parecchio la corrente che ci circola attraverso ... mentre con i 100 ohm alimentati a 5V, la cosa diventa ininfluente (oltre a toglierti una parte del carico dal regolatore, che quindi in ogni caso scaldera' di meno ;))
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 17, 2018, 12:33 pm
Nono sto parlando di questo:

https://www.sparkfun.com/products/12640 (https://www.sparkfun.com/products/12640)

In documents trovi lo schemino elettrico al quale faccio riferimento.

http://cdn.sparkfun.com/datasheets/Dev/Arduino/Boards/Pro_Micro_v13b.pdf (http://cdn.sparkfun.com/datasheets/Dev/Arduino/Boards/Pro_Micro_v13b.pdf)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on May 17, 2018, 02:44 pm
Allora hai anche meno problemi ... metti i 5V nel pin RAW (1), magari con un diodo in serie, lasciando il ponte aperto, e li usi anche per la scheda del display (che ha il suo regolatore) e per il led (con la 100 ohm in serie) ... il regolatore della pro micro alimentera' solo la MCU, quindi non dovrebbe quasi scaldare ... e tu te la cavi con una resistenza ed un diodo ;)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 18, 2018, 12:22 pm
Beh si, se uso un LM7805 serve un diodo tra l'uscita del LM7805 e il pin RAW?
In questo caso comunque utilizzerei un alimentatore esterno da 12 v , quindi metterei almeno 4 diodi in serie tra l'entrata a 12 v e l'LM7805.

Comunque ho fatto una piccola misurazione:
alimentando con la USB, sul pin RAW mi ritrovo 4.6 v (la caduta di tensione del diodo sembra essere di 0.4 v), però mi ritrovo anche 4.6 v sul pin VCC! Non è che il regolatore di tensione si è bruciato?

EDIT: ho provato con alimentatore esterno LM7805, 5 v applicati al pin RAW, sul VCC mi ritrovo la stessa identica tensione. A questo punto credo che il MIC5219-3.3 sia bruciato.

Ho collegato anche entrambi i display e il DHT11, per i display ho collegato solo i led della retroilluminazione con resistenza in serie da 100 Ohm e l'alimentazione del display in se (poi c'è anche lì l'alimentatore interno dei display) e come assorbimento ho letto 95 mA.
Il LM7805 scalda perché è alimentato a 12 v, però se mettessi 4 diodi a monte del regolatore così da abbassare la tensione in entrata sarebbe molto meglio.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on May 18, 2018, 04:18 pm
... A questo punto credo che il MIC5219-3.3 sia bruciato.
...
O quello, o il ponticello e' chiuso (basta anche un filino di stagno, controlla bene, magari con un tester)[/quote]



Quote
4 diodi a monte del regolatore
Vanno bene, ma anche 5 volendo, cosi la dissipazione viene distribuita in parte sui diodi ed il regolatore scalda di meno ... ogni diodo (tipo 1N4007 o simili) fa cadere circa 0.85V (gli 0.7 indicati sono "a vuoto", sotto carico ne cadono un po di piu), quando arrivi fra 7.5V e 9V all'ingresso del 7805 sono sufficenti ... mi raccomando i condensatori dal lato regolatore, non prima dei diodi ;)

Il diodo fra il 7805 e l'ingresso RAW puoi anche fare a meno di metterlo ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 18, 2018, 05:41 pm
O quello, o il ponticello e' chiuso (basta anche un filino di stagno, controlla bene, magari con un tester)

Il ponticello non è chiuso. Credo sia il regolatore di tensione. Mercoledì prossimo me ne arriva uno nuovo e proverò a sostituirlo. E' in SOT-23-5.


Quote
Vanno bene, ma anche 5 volendo, cosi la dissipazione viene distribuita in parte sui diodi ed il regolatore scalda di meno ... ogni diodo (tipo 1N4007 o simili) fa cadere circa 0.85V (gli 0.7 indicati sono "a vuoto", sotto carico ne cadono un po di piu), quando arrivi fra 7.5V e 9V all'ingresso del 7805 sono sufficenti ... mi raccomando i condensatori dal lato regolatore, non prima dei diodi ;)

Il diodo fra il 7805 e l'ingresso RAW puoi anche fare a meno di metterlo ...
Più che altro di volta in volta che lo schema cambia faccio le modifiche anche alla scheda, solamente che 5 diodi non riesco a farli stare, 4 si ma dovrebbero andare comunque bene.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on May 18, 2018, 06:11 pm
Si, toglieresti comunque da 3.2 a 3.4 V dai 12 ... tutto calore in meno che dovra' dissipare il regolatore, alla fine ... anche i diodi scalderanno un po ovviamente, ma distribuendo il calore da dissipare fra vari elementi, si va comunque meglio che far fare tutto al povero TO220 ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 21, 2018, 12:48 am
Sui display ho cambiato le resistenze con resistenze da 100 Ohm, ho anche aggiunto due condensatori all'alimentatore interno (che non erano montati ma erano previsti), tutto 0805 ma ci va uno standard più piccolo. Ho pulito tutto con l'alcol isopropilico. I display rimangono bianchi con delle bolle dentro. Stasera una sfortuna dietro l'altra.
Avevo già comprato due display diversi, stesso standard e, credo, stesso chip. Cambia solo la base che sembra più solida. A questo punto devo aspettare i due display nuovi.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on May 21, 2018, 09:44 am
... I display rimangono bianchi con delle bolle dentro.
Ehm, cosa intendi ? ... hai una foto ? ... perche' detto cosi, sembra quasi che tu li abbia cotti ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 21, 2018, 09:51 pm
Oggi sono tornato a casa e sono tornati ad essere neri, però non scrivono nulla.

Intanto ho comprato questi display: http://www.instructables.com/id/Beginner-Arduino-Using-a-18-Inch-TFT-Display/ (http://www.instructables.com/id/Beginner-Arduino-Using-a-18-Inch-TFT-Display/)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on May 22, 2018, 09:33 am
... sono tornati ad essere neri, però non scrivono nulla.
...
Mi da sempre piu l'impressione di display cotti ... (sono almeno saporiti ? :D)

Scherzi a parte, non e' che li hai alimentati a 5V (chiudendo il ponticello, che con i 5V va lasciato aperto, e chiuso solo con i 3.3V), oppure surriscaldati troppo ? ... o magari collegati con i segnali al micro a 5V senza partitori ? (le resistenze in serie non servono, in quel caso servono dei partitori) ... altro non mi viene in mente al momento ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 22, 2018, 11:15 am
Nono, che poi la prima volta che li ho provati non mi sono fatto problemi ad alimentare tutto a 5 v, sia la parte logica, sia l'alimentazione del display sia la retroilluminazione.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: MightyPegas on May 23, 2018, 12:33 pm
Ciao,
scusa se sono scomparso improvvisamente, ma ho una rogna colossale per le mani :(

Comunque ho fatto una piccola misurazione:
alimentando con la USB, sul pin RAW mi ritrovo 4.6 v (la caduta di tensione del diodo sembra essere di 0.4 v), però mi ritrovo anche 4.6 v sul pin VCC! Non è che il regolatore di tensione si è bruciato?

EDIT: ho provato con alimentatore esterno LM7805, 5 v applicati al pin RAW, sul VCC mi ritrovo la stessa identica tensione. A questo punto credo che il MIC5219-3.3 sia bruciato.
Sicuro che sia un MIC5219-3.3? Leggi la sigla sul regolatore... sia l'originale Sparkfun che i cloni hanno la sigla che finisce in "33" nel caso del 3.3V..

Noi ci siamo abituati un po' male  con gli Arduino e relativi cloni ad avere disponibili entrambe le tensioni a 5V e 3.3V che sono ben marcate sulla serigrafia (5V e 3V3 di solito).
Il Pro Micro che hai tu non ha la doppia tensione come ho provato a spiegarti... (avevo controllato le sigle dei regolatori presenti sulle basette dei cloni). Se hai la versione a 5V/16MHz hai il regolatore da 5V mentre nella 3.3V/8MHz è a 3.3V.
E' questo il motivo per cui applicando i 5V sul RAW non ottieni i 3.3V, il regolatore non è bruciato...
Se hai un alimentatore regolabile prova a mandare 6-7V sul pin RAW e vedrai che che sul Vcc avrai 5V...

Quote
E immagino non ci siano problemi a 3.3 v con una frequenza di 16 Mhz.
(estratto dal datasheet del 32U4)
• Maximum Frequency
- 8MHz at 2.7V - Industrial range
- 16MHz at 4.5V - Industrial range

I 16MHz li puoi avere dai 4.5V in su...

Quote
Infatti dallo schema SparkFun si vede il regolatore di tensione a 3.3 v e l'oscillatore esterno a 16 MHz.
Sullo schema vedi un MIC5219 "generico" che esiste sia in versione 5V che in versione 3.3V... Non è specificato a quale dei due sia riferito lo schema...

Massimo
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 23, 2018, 01:52 pm
Ciao,
scusa se sono scomparso improvvisamente, ma ho una rogna colossale per le mani :(

Sicuro che sia un MIC5219-3.3? Leggi la sigla sul regolatore... sia l'originale Sparkfun che i cloni hanno la sigla che finisce in "33" nel caso del 3.3V..

Noi ci siamo abituati un po' male  con gli Arduino e relativi cloni ad avere disponibili entrambe le tensioni a 5V e 3.3V che sono ben marcate sulla serigrafia (5V e 3V3 di solito).
Il Pro Micro che hai tu non ha la doppia tensione come ho provato a spiegarti... (avevo controllato le sigle dei regolatori presenti sulle basette dei cloni). Se hai la versione a 5V/16MHz hai il regolatore da 5V mentre nella 3.3V/8MHz è a 3.3V.
E' questo il motivo per cui applicando i 5V sul RAW non ottieni i 3.3V, il regolatore non è bruciato...
Se hai un alimentatore regolabile prova a mandare 6-7V sul pin RAW e vedrai che che sul Vcc avrai 5V...

(estratto dal datasheet del 32U4)
• Maximum Frequency
- 8MHz at 2.7V - Industrial range
- 16MHz at 4.5V - Industrial range

I 16MHz li puoi avere dai 4.5V in su...

Sullo schema vedi un MIC5219 "generico" che esiste sia in versione 5V che in versione 3.3V... Non è specificato a quale dei due sia riferito lo schema...

Massimo
Si, ma se ho un quarzo esterno, credo la frequenza sia fissata.

Ho guardato lo schema SparkFun e son risalito al componente, il codice sul componente non mi dice niente.
Ad ogni modo deve per forza di cose essere un 3.3 v, non avrebbe senso sennò avere il bypass del regolatore. Comunque proverò.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on May 23, 2018, 03:37 pm
Aspetta, ma se hai la stessa del link che hai postato, c'e' scritto nella descrizione ... "Running at 16MHz and 5V" ... per cui, il regolatore a bordo e' da 5V, ed il ponticello a quel punto serve solo per mandare i 5V nel RAW ...

Per fare quello che vuoi tu ed alimentare tutto a 3.3V, ti serve questa (https://www.sparkfun.com/products/12587), esteticamente uguale, ma con il regolatore da 3.3V ... che a quel punto potresti si alimentare dal RAW a 5 o 6 V ed avere sulla logica i 3.3V, per cui niente adattatori di livello con il display (e forse e' quello che ti ha rovinato i display, se la schedina era alimentata a 5V, anche i segnali che mandavi al display lo erano, e lui non li sopporta)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 24, 2018, 09:35 am
Aspetta, ma se hai la stessa del link che hai postato, c'e' scritto nella descrizione ... "Running at 16MHz and 5V" ... per cui, il regolatore a bordo e' da 5V, ed il ponticello a quel punto serve solo per mandare i 5V nel RAW ...

Per fare quello che vuoi tu ed alimentare tutto a 3.3V, ti serve questa (https://www.sparkfun.com/products/12587), esteticamente uguale, ma con il regolatore da 3.3V ... che a quel punto potresti si alimentare dal RAW a 5 o 6 V ed avere sulla logica i 3.3V, per cui niente adattatori di livello con il display (e forse e' quello che ti ha rovinato i display, se la schedina era alimentata a 5V, anche i segnali che mandavi al display lo erano, e lui non li sopporta)
Altra differenza di questa scheda sarà anche il firmware del 32u4 che sarà impostato per il clock interno a 8 MHz.
Per cui non posso, sulla mia scheda, cambiare il regolatore da 5 v a 3.3 v. Oppure la variazione di frequenza la fa automaticamente?

Guarda, quando ho alimentato il tutto inconsapevolmente funzionava. Adesso che ho provato a dargli 3.3 v invece non funziona.

Nell'ultimo link del secondo tipo di display che ho preso dice espressamente che ha provato ad alimentare a 5 v e a 3.3 v ma non funzionava nulla, poi ha trovato in internet la soluzione, cioè alimentare a 5 v (non mi sembra sia scritto questo) e mettere in serie le resistenze da 1 K Ohm su SCLK, MOSI, DS, RST, CS.

Piano piano sta venendo fuori un gran casino comunque.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 25, 2018, 01:22 pm
Oggi sono arrivati i display nuovi. Per qualità costruttiva sembrano molto migliori! Questi, da come è scritto su quel link che ho postato, accettano i 5 v con una resistenza da 1 K Ohm fra Arduino e i display. Adesso provo senza, alimentando Arduino a 5 v sul pin RAW, poi proverò anche con 1 K Ohm.

Provo anche ad aumentare la tensione sul pin RAW e vedere sul pin VCC quanta tensione c'è, per vedere quindi se il MIC è bruciato o no e se è realmente la versione da 5 v come dicevi giustamente. Così tolgo ogni dubbio o perplessità.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 25, 2018, 01:52 pm
AGGIORNAMENTO:

ho dato 12 v al pin RAW (a monte del regolatore), il led di accensione (a valle del regolatore) si è spento gradualmente e il 32u4 non dava segni di vita. Credo di aver bruciato il MIC in maniera definitiva :D

I display hanno una resistenza da 1 K Ohm per i led della retroilluminazione e c'è un regolatore di tensione per alimentare a 5 v lo schermo. Quindi non mi sono fatto problemi ed ho alimentato lo schermo e la retroilluminazione a 5 v.

Per i pin logici ho alimentato con 5 v con resistenza da 1 K Ohm in serie ma i display rimangono bianchi.
Ri inserisco il link all'articolo di chi ha già provato con Arduino questi display: http://www.instructables.com/id/Beginner-Arduino-Using-a-18-Inch-TFT-Display/ (http://www.instructables.com/id/Beginner-Arduino-Using-a-18-Inch-TFT-Display/)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 27, 2018, 09:30 pm
Oggi ho provato e funziona tutto.

Ho messo 4 diodi tra il 12 v e il LM7805 ma in entrata al 7805 mi ritrovo 9.8 v e il 7805 si scalda fino a 74 gradi. Tutto il circuito consuma 170 mA.

Pensavo allora di fare in questa maniera: mi serve una bella resistenza e un diodo in serie. La resistenza sarà (12 - 0.7 - 5) / 0.2 = 31.5 Ohm, diciamo 29 Ohm, la prendo da 1 W. A questo punto dovrei trovarmi poco più di 6 v in entrata al LM7805 e dovrebbe andar bene.

I display funzionano ma sembrano lenti nell'aggiornamento.
Se definisco l'oggetto display con la notazione corta (senza dichiarare i pin sckl e mosi) il display sembra essere più veloce.

Infine gli ampere vengono stampati con una A in più. Questo non mi era mai successo prima.

(http://i63.photobucket.com/albums/h128/Riccardo_Tj_Pich/Elettronica/Voltmetro%20Pista%20Slot/FFCBB388-E16E-4916-B063-0657857FB4A9_zpsz9njgpad.jpg) (http://s63.photobucket.com/user/Riccardo_Tj_Pich/media/Elettronica/Voltmetro%20Pista%20Slot/FFCBB388-E16E-4916-B063-0657857FB4A9_zpsz9njgpad.jpg.html)

(http://i63.photobucket.com/albums/h128/Riccardo_Tj_Pich/Elettronica/Voltmetro%20Pista%20Slot/B88D7247-054E-4A5A-9CB1-8EC41BA29183_zpsbiks8k1g.jpg) (http://s63.photobucket.com/user/Riccardo_Tj_Pich/media/Elettronica/Voltmetro%20Pista%20Slot/B88D7247-054E-4A5A-9CB1-8EC41BA29183_zpsbiks8k1g.jpg.html)

(http://i63.photobucket.com/albums/h128/Riccardo_Tj_Pich/Elettronica/Voltmetro%20Pista%20Slot/53EAC404-E178-4EC9-9FE7-3150810266BC_zpsurt56yd7.jpg) (http://s63.photobucket.com/user/Riccardo_Tj_Pich/media/Elettronica/Voltmetro%20Pista%20Slot/53EAC404-E178-4EC9-9FE7-3150810266BC_zpsurt56yd7.jpg.html)

(http://i63.photobucket.com/albums/h128/Riccardo_Tj_Pich/Elettronica/Voltmetro%20Pista%20Slot/9B91F283-797C-4857-84A5-4C7ADC4C0061_zpsh2obayhe.jpg) (http://s63.photobucket.com/user/Riccardo_Tj_Pich/media/Elettronica/Voltmetro%20Pista%20Slot/9B91F283-797C-4857-84A5-4C7ADC4C0061_zpsh2obayhe.jpg.html)

Il problema comunque era perché avevo collegato in maniera sbagliata i pin.
Adesso vorrei provare i due pulsanti, rifacendo lo schema elettrico, per provare il codice.

Inoltre mi piacerebbe trovare le misure della scheda (vorrei evitare di prenderle io per evitare errori) così da poter cominciare a disegnare il pannello in alluminio.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 28, 2018, 10:29 am
Inoltre mi sembra comunque strano il fatto che ho bruciato il MIC5219, dal momento che dovrebbe accettare +20 v in entrata.
https://cdn-shop.adafruit.com/product-files/3081/mic5219.pdf (https://cdn-shop.adafruit.com/product-files/3081/mic5219.pdf)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 28, 2018, 01:28 pm
I display funzionano ma sembrano lenti nell'aggiornamento.
Se definisco l'oggetto display con la notazione corta (senza dichiarare i pin sckl e mosi) il display sembra essere più veloce.
Mi rispondo da solo, direttamente dall'Arduino Reference riguardo alla libreria TFT.

Quote
The screen can be configured for use in two ways. One is to use an Arduino's hardware SPI interface. The other is to declare all the pins manually. There is no difference in the functionality of the screen between the two methods, but using hardware SPI is significantly faster.
https://www.arduino.cc/en/Reference/TFTLibrary (https://www.arduino.cc/en/Reference/TFTLibrary)

Stavo pensando che magari è meglio cancellare lo schermo dopo ogni stampata, ma solo nella zona che potrebbe variare.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on May 28, 2018, 06:06 pm
Perche' una resistenza in serie ? ... con la resistenza, la caduta di tensione varierebbe in funzione dell'assorbimento ... usa semplicemente piu di 4 diodi, nulla ti vieta di metterne 6, o piu, in funzione di quanta tensione vuoi far cadere ... ed in quel modo, la caduta sarebbe piu o meno stabile, anche se l'assorbimento aumentasse ... ;)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 28, 2018, 06:19 pm
Qua comunque metto il video delle prove.

https://youtu.be/3GB7U7DbHMM (https://youtu.be/3GB7U7DbHMM)

Perche' una resistenza in serie ? ... con la resistenza, la caduta di tensione varierebbe in funzione dell'assorbimento ... usa semplicemente piu di 4 diodi, nulla ti vieta di metterne 6, o piu, in funzione di quanta tensione vuoi far cadere ... ed in quel modo, la caduta sarebbe piu o meno stabile, anche se l'assorbimento aumentasse ... ;)
Questo è vero, ma a me basta calcolare una resistenza che faccia passare poco più dell'assorbimento massimo che ho già calcolato essere 170 mA. La caduta di tensione secondo me può variare (tra quello che do in entrata e quello che mi ritrovo in uscita all'LM7805), l'importante è che non vari molto. Secondo me è un metodo semplice, senza aggiungere una miriade di diodi.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 03, 2018, 04:56 pm
Rettifico, ho provato la resistenza ma scalda molto. L'unica soluzione è mettere 7 diodi in serie. A questo punto credo che la scheda sia pronta per la realizzazione in Cina.

Per quanto riguarda il video invece? Sembrano esserci problemi con la temporizzazione delle funzioni.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 14, 2018, 05:49 pm
Buongiorno ragazzi! Mi sono accorto che i moduli che ho preso per leggere la corrente non vanno bene. Il chip è per 30A ma la morsettiera è sottodimensionata e non mi fido.
Vorrei passare a qualcosa di meno invasivo, cioè dei sensori di corrente ad effetto Hall. Esistono dei moduli con il toro già pronti e che tirano fuori un segnale per Arduino?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 16, 2018, 10:15 am
https://www.ebay.it/itm/30A-SCT-013-030-Non-invasive-AC-Current-Sensor-Split-Core-Current-Transformer/122632361474?hash=item1c8d755602:g:YQkAAOSwbihZ2DfQ (https://www.ebay.it/itm/30A-SCT-013-030-Non-invasive-AC-Current-Sensor-Split-Core-Current-Transformer/122632361474?hash=item1c8d755602:g:YQkAAOSwbihZ2DfQ)

Prendo questo. Ho visto che bisogna mettere un elettrolitico e una resistenza verso massa e una resistenza di pull-up su un capo della induttanza.

Il circuito posso farlo una volta sola e "alimentare" le induttanze tutte assieme, andando a leggere in uscita il valore con Arduino?

Ho fatto bene a temporeggiare a stampare il circuito stampato.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Jun 16, 2018, 10:54 am
Attenzione che quel "sensore" in realta' non e' altro che una bobina con in parallelo una resistenza ... quindi, in pratica, devi costruirgli un circuito esterno, ed inoltre funziona SOLO in AC, non in DC, che a te e' poi quello che serve ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Jun 16, 2018, 11:00 am
Troppi ripensamenti in questo progetto
Troppi tasti premuti e troppo poco stagno fuso
Se non cominci dal basso, a tirare fili e fare misure,  non ne esci più
E poi, scusa, il tuo problema è  leggere una tensione, misurare una corrente viene dopo
Comincia con leggere e loggare tensioni, per le correnti ci pensi dopo
E se il tuo problema è  che non ti fidi della morsettiera dissaldala e cambia la, o salda direttamente i fili, ma....
Comincia a tirar fuori risultati
Anche piccoli
Altrimenti non ne esci più
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 16, 2018, 01:51 pm
Si, sto facendo tutto questo casino perché mi sono preparato l'hardware da far stampare in Cina, per questo tanti ripensamenti ecc ecc
Il circuito su breadboard ce l'ho ed ho finalmente portato i cavi almeno per la parte di misura della tensione. Prossimo mercoledì, se non ho altri problemi, provo quello. Nel frattempo avevo già fatto altre prove ed erano sorti alcuni problemi che non so come risolvere, a livello software, ed ho messo anche un video.

Non so bene come muovermi ed alcuni problemi vengono fuori solo sul campo. Per esempio dovrò interrompere dei cavi da 6 mmq e il modulo ACS712 mi sembra un po' piccolo, anche se va fino a 30A.

Poi abbiamo notato alcuni problemi con il cablaggio della pista (cavi con sezioni diverse quando dovrebbero portare molta corrente) e comunque lo sbroglio delle matasse non è stato semplice. Oltretutto la pista non ce l'ho a casa e quindi, sommandosi a tutti i casini, non ho molto tempo materiale per fare le prove. Per questo motivo volevo arrivare la con una scheda con tutto l'hardware funzionante, sistemare i sensori e tirare i cavi e solo successivamente fare delle prove. Nel frattempo volevo sistemare la parte di visualizzazione.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Jun 16, 2018, 03:59 pm
Quale versione di schedina hai ? ... se e' tipo questa (https://www.aliexpress.com/item/AC-and-DC-30A-range-Current-Sensor-ACS712-Module-ACS712ELCTR-30A/32227296350.html) con i morsetti grandi per le forcelle, dovrebbero reggere senza problemi ... se sono quelle con i morsettini piccoli blu, ho dei dubbi anch'io che reggano i 30A ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 16, 2018, 04:22 pm
Eh esattamente, quelli con i morsetti blu.
https://www.ebay.it/itm/111689533182 (https://www.ebay.it/itm/111689533182)
Alla fine ho preso questi e o stagno sopra i cavi oppure tengo assieme con un occhiello.
Ho preso il modello bi direzionale da 50A che mi fa 40mV per ogni A. Forse è un po' poco come sensibilità ma vabbé proviamo. Praticamente però non devo cambiare nulla all'hardware già fatto.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Jun 16, 2018, 04:40 pm
ti rendi conto vero che in sei ore hai cambiato idea su una parte hardware "importante" del tuo progetto, scegliendo una soluzione sbagliata che NON ti era mai stata consigliata, quando potevi scegliere tra una moltitudine di soluzioni che ti erano state proposte ma hai rifiutato?
e poi sei tornato indietro adottando una soluzione semplicissima, ma che ti hanno dovuto consigliare?
e comunque sempre su una parte "laterale" del tuo progetto, mentre le funzioni principali sono al palo
questa situazione ha un nome ben preciso: "analisys paralisys"
che in italiano rende: troppa tastiera e troppo poco stagno, come ti ho scritto prima
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 18, 2018, 05:10 pm
Qua comunque metto il video delle prove.

https://youtu.be/3GB7U7DbHMM (https://youtu.be/3GB7U7DbHMM)

...

Non so se hai mai visto questo video, ma come puoi ben notare ho i due display (che ho capito come usare e che circuito fare SPORCANDOMI LE MANI E FACENDO PROVE, PROVE NELLE QUALI NE HO BRUCIATI DUE) ho i due pulsanti e tutto sembra funzionare correttamente, tranne la temporizzazione per quel che riguarda la tastiera e i display (secondo me).

Non ho mai programmato seriamente in vita mia e queste sono le mie prime esperienze. Non mi sembra di essermi tirato indietro davanti alle prove, prove anche stupide (vedi i diodi o la resistenza) che comunque mi sono servite a capire in futuro quali strade sono migliori di altre. Quello che attualmente non riesco a provare sono le misurazioni che devo fare in loco, dal momento che VOGLIO FINIRE LA PARTE SOFTWARE DI GESTIONE DEI DISPLAY E DELLE SCHERMATE, anche perché vorrei finire prima un problema e poi vedere che cosa succede con le misurazioni.

L'ultimo sketch del video lo allego a questo post.

Dal momento che, come ho già spiegato, non ho mai programmato pesantemente e alcune cose non mi sono chiare, potresti spiegarmi che cosa sto sbagliando, anziché dirmi che non mi brucio abbastanza le dita? Non chiedo la pappa pronta, chiedo soltanto di capire quali sono i miei errori e magari se mi fai capire come risolverli.
Se fossi nato "imparato" non credo avrei aperto un topic su questo forum...

Per quanto riguarda la "paralisi", beh si. Dal momento che non so come proseguire sulla gestione dei display, sono andato avanti con i lavori sulla pista per raccogliere i dati. Mi sono accorto del problema sul sensore di corrente ed ho chiesto aiuto, probabilmente non ricordandomi di che cosa si parlava nelle pagine precedenti. Ad ogni modo sto cercando di utilizzare questo topic come un diario per ricordarmi ogni cosa che ho fatto e ogni idea alternativa che potrei aver utilizzato per fare la stessa cosa. Ricordavo gli ACS758 ma non mi ricordavo di averne visti con basetta (molto più semplice per l'installazione) e cercavo qualcosa.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Jun 18, 2018, 06:01 pm
Tutto vero, hai ragione
Non dovevo esprimermi così, giusto
Semplicemente io avrei adottato una roadmap differente
Una UNO per misurare le tensioni, via subito, due ore di lavoro, letteralmente 5 fili posati, leggere da seriale
Dopo sarei passato a una MEGA, con 4 shunt per le correnti, e 4 operazionali per l'amplificazione, sempre su seriale
Fatto questo sarei passato a gestire i display, magari a casa con la UNO provare i display,  nei giorni possibili alla pista con la MEGA mettere a posto le correnti, in contemporanea, insomma
Da ultimo "giuntare" il tutto
poi, sembra che tu abbia le idee più  chiare delle mie,......
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 18, 2018, 07:03 pm
Beh sarebbe stata una buona idea, avrei dovuto fare una misurazione a monte della resistenza di shunt e a valle, in totale 8 misurazioni, 8 partitori di tensione e due convertitori analogico digitali a 16 bit. La caduta di tensione, a resistenza conosciuta, mi avrebbe dato la corrente passante. Inoltre avrei già effettuato le misure a monte in tensione per i regolatori.

Ottima idea, semplice ed efficace, ma ormai ho preso questa strada.

Per quanto riguarda invece i display? Che cosa c'è che non funziona come vorrei a livello software?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Silente on Jun 18, 2018, 08:23 pm
Tanto per cominciare non é "ormai ho preso questa strada", lo sarebbe se il progetto fosse concluso, ma non essendo tale la strada può ancora essere cambiata. Anzi, direi che sarebbe meglio cambiarla, vusto che la strada attuale non ti ha ancora portato a stendere neanche un filo.
Quindi ora capiamo TUTTO l'hardware che devi utilizzare, e se non lo possiedi ancora attendiamo che ti arrivi.
Dopo questo testiamo ogni conponente scoprendo in tal modo i suoi limiti e le sue esigenze.
Una volta fatto ciò si monta tutto in loco e si riverifica (non si sa mai)
Infine si scrive lo scatch completo, da caricare in loco.
Si fa così perché con il metodo attualmente in uso non pare si sia sortito l'effetto desiderato.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Jun 18, 2018, 09:36 pm
Per quanto riguarda invece i display? Che cosa c'è che non funziona come vorrei a livello software?
Non ne ho la più pallida idea, non sono interessato a display e robe simili
mi piace la programmazione "dura e pura", mi spiace
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 19, 2018, 12:18 am
Tanto per cominciare non é "ormai ho preso questa strada", lo sarebbe se il progetto fosse concluso, ma non essendo tale la strada può ancora essere cambiata. Anzi, direi che sarebbe meglio cambiarla, vusto che la strada attuale non ti ha ancora portato a stendere neanche un filo.
Quindi ora capiamo TUTTO l'hardware che devi utilizzare, e se non lo possiedi ancora attendiamo che ti arrivi.
Dopo questo testiamo ogni conponente scoprendo in tal modo i suoi limiti e le sue esigenze.
Una volta fatto ciò si monta tutto in loco e si riverifica (non si sa mai)
Infine si scrive lo scatch completo, da caricare in loco.
Si fa così perché con il metodo attualmente in uso non pare si sia sortito l'effetto desiderato.
E' vero, però preferisco usare quei modulini che sono piccoli rispetto a una resistenza di shunt da 50A.

L'unica cosa che mi deve ancora arrivare sono i moduli con l'ACS758, per il resto ho tutto. Il circuito con solo i display e i due pulsanti l'ho fatto su breadboard, ho anche i due moduli dei convertitori analogico digitale da collegare e i partitori di tensione. Ho collegato alla pista i cavi per leggere le tensioni. Posso intanto realizzare i partitori su breadboard e provare un solo canale, ma dal momento che per adesso funzionano solamente i display e la tastiera, e funzionano male da come si può vedere nel video, volevo risolvere questo problema software intanto, sennò poi le cose che non funzionano rischiano di essere troppe e dovrei maneggiare troppe cose di cui non ho la padronanza. Per questo mi sono fermato a questo punto.

Cioè se ho delle letture che sono lente oppure leggono cose totalmente sballate, come faccio a capire dove sta il problema se già la temporizzazione della tastiera e dei display può avere problemi? E' un errore nel codice di acquisizione oppure nel codice di gestione display e tastiera?

E' questo che sto dicendo ed è per questo che sono fermo. E sono fermo perché non so far funzionare queste cose e vi sto chiedendo un aiuto se non altro a capire dove sto sbagliando.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Silente on Jun 19, 2018, 08:33 am
Cioè se ho delle letture che sono lente oppure leggono cose totalmente sballate, come faccio a capire dove sta il problema se già la temporizzazione della tastiera e dei display può avere problemi? E' un errore nel codice di acquisizione oppure nel codice di gestione display e tastiera?
Ma allora non hai capito nulla. Io ti ho detto di PROVARE TUTTO SEPARATAMENTE proprio per far si che gli eventuali problemi non possano trovarsi da altre parti. Perché se il codice degli lcd NON fosse caricato li il problema NON potrebbe essere. Quindi per trovare il problema di un pezzo carica SOLO il suo codice.
Poi, ora sono al mare e non posso essere di aiuto attivo, ma so che se cerchi un problema in quel codice é come cercare un ago in un pagliaio
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 20, 2018, 06:37 pm
Ok allora, mi rendo conto che il programma può essere complicato.
In questo periodo sono un po' incasinato con gli esami ma oggi ho pulito un po' il codice per tenere solo quello che mi interessa per la gestione dei display e dei due tasti. Allego il codice.

In pratica ci sono vari problemi: intanto il refresh dei display, questo condiziona le letture. Succede la stessa cosa di quel che succedeva nel video, ovvero fa un refresh ogni mezzo secondo circa, e quindi una lettura della tastiera ogni mezzo secondo. Io ho impostato un refrsh per la tastiera, così se tengo premuto un tasto i valori non mi schizzano velocemente (avevo paura che tenendo premuto il tasto SEL per cambiare modalità, una volta cambiata modalità essa cambiava troppo velocemente per cambiarne solo una alla volta oppure comunque abbastanza lentamente da averne il controllo), però questo refresh avviene dopo 100 millisecondi.

Un altro "problema" è l'aggiornamento del display cancellando i valori precedenti:
Quando sono all'interno di una modalità a me serve aggiornare solamente i dati della lettura, del massimo e la X per la selezione di quale massimo voglio azzerare.
Ogni volta che cambio la modalità invece vorrei cancellare tutto quello che ho scritto tranne l'intestazione e il fondo dello schermo. Quelli rimangono. Questo perché in 3 modalità ho la suddivisione delle piste e il colore, mentre per la quarta modalità ho temperatura e umidità, quindi devo cancellare tutto lo schermo.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 23, 2018, 12:52 pm
allora, intanto ho cominciato a rivedere il codice per quel che riguarda la "tastiera" dei due tasti, in particolare la funzione "long press" per il tasto select.

Code: [Select]

unsigned long selectTime = 0;                         /* salva i millisecondi */
#define selectDelay 1000                              /* tempo in cui select deve rimanere acceso perché capiti qualcosa */
byte varSEL = 0;                                      /* variabile che contine il numero del canale in base a quante volte schiaccio il tasto select */
byte mode = 0;                                        /* cambia la modalità */
bool selectLong = false;                              /* variabile booleana per il pulsante select schiacciato per più tempo */
bool selectFlag = false;

void setSEL(){

  if (select) {                                       /* se schiaccio select e quindi la variabile booleana select è true */
   
    if (!selectFlag) {                                /* se la flag di select è false */
      selectFlag = true;                              /* porta la flag a true */
      selectTime = millis();                          /* salva il tempo di millis */
    }

    if ((millis() - selectTime > selectDelay) && (!selectLong)) {  /* se il tempo da quando ho iniziato a schiacciare select è maggiore del tempo impostato e la variabile booleana selectLong è false  */
      selectLong = true;                              /* porta a true la variabile booleana selectLong */
      if (mode < 3) {mode++;}                         /* esegui questo if. se mode è minore di 4, aggiungi uno a mode */
      else mode = 0;                                  /* altrimenti porta a 0 mode */
    }
 
  }
 
  else {                                              /* altrimenti se non schiacci select */
   
    if (selectFlag) {                                 /* se la flag di select è true */
     
      if (selectLong) {selectLong = false;}           /* se select long è true, portalo a false */
     
      else {                                          /* altrimenti se select long è false */
       
        if (varSEL < Channel - 1) {varSEL++;}         /* se varSEL è minore di Channel, aggiungi uno a varSEL */
        else varSEL = 0;                              /* altrimenti porta a 0 varSEL */
     
      }
   
      selectFlag = false;                             /* porta la flag di select a false */
   
    }
  }
}


Questa è tutta la funzione che gestisce solo il tasto select, mentre la funzione di "acquisizione" è questa:

Code: [Select]

unsigned long refreshKeyboardTime = millis();         /* salva i millisecondi una sola volta all'accensione del processore per il loop del refresh della tastiera */
#define refreshKeyboardLoop 100                       /* tempo di clock per il loop del refresh della tastiera */

#define KeyboardPin A0                                /* pin lettura tastiera */
byte varKeyboard = 0;                                 /* variabile byte che contiene il valore della lettura del pin anallogico della tastiera */
bool select = false;                                  /* variabile booleana per il pulsante select */
bool reset = false;                                   /* variabile booleana per il pulsante reset */

void keyboard(){
  varKeyboard = analogRead(KeyboardPin);              /* lettura del pin analogico della tastiera */
  if (varKeyboard < 127){select = true; return;}      /* se la lettura è minore del valore, la variabile booleana select è true. se l'if è true allora blocca qui la funzione con il return */
  if (varKeyboard < 255 && varKeyboard >= 127){reset = true; return;}  /* se l'if precedente non è vero, la funzione va avanti. se la lettura è compresa fra i valori allora la variabile booleana reset è true. se l'if è true allora blocca qui la funzione con il return */
  select = false;                                     /* nel caso in cui entrambi gli if non siano true, porta a false select */
  reset = false;                                      /* nel caso in cui entrambi gli if non siano true, porta a false reset */
}


E funziona rispetto a prima.
Nella parte di acquisizione ho scritto il codice semplice, come veniva a me.
Nella parte di gestione del long press mi sono aiutato con un sito ma ho capito che le azioni vanno fatte alla fine, quando il tasto non è più premuto. Quindi bisogna servirsi di una flag in modo da capire il cambiamento di stato. Appena schiaccio il pulsante salvo il tempo di millis e poi faccio un controllo sulla flag che porto a true, dopodiché quando trascorre il tempo che voglio allora mi succede quello che voglio far succedere con il long press. Quando invece mollo il pulsante, se la variabile booleana del long press è true, la porto a false e basta, sennò se non è "scattata" allora faccio le azioni dello short press.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Jun 23, 2018, 03:43 pm
... se tengo premuto un tasto i valori non mi schizzano velocemente ...
Mi auto-quoto da un'altro post (:D)

...
SE pulsante premuto E flag a zero, metti variabile = millis, e metti flag ad 1
SE pulsante premuto, E flag ad uno, E tempo trascorso (da controllare con millis), esegui comandi e metti flag a due
SE pulsante rilasciato E flag diversa da zero, metti flag a zero
 ...
In pratica, usa una flag ed una unsigned long, che gestisci con tre if consecutivi ...

il primo if (ma solo se il pulsante prima non era premuto) controlla se hai premuto il tasto, se si, imposta la variabile unsigned long uguale a millis (per poterla poi controllare con il secondo if) e mette la flag da 0 ad 1 ... da qui in poi non verra' piu eseguito finche' il pulsante non verra' rilasciato e la flag tornera' a 0 ...

il secondo if (che agisce solo dopo che il primo ha impostato variabile a millis e flag ad 1), controlla che il pulsante sia premuto, che la flag sia ancora ad 1 (pulsante ancora premuto, non e' stato rilasciato nel frattempo), e che il tempo di attesa (quello minimo in cui devi tenere il pulsante premuto) sia trascorso, se no non fa nulla, se si, esegue i comandi relativi (nel momento in cui il tempo scade, non quando rilasci il pulsante), e mette la flag a 2 (in modo da non rieseguire di nuovo il tutto al prossimo ciclo di loop) ...

Il terzo if si limita a resettare la flag, che sia o meno trascorso il tempo minimo non importa ...

E' perfino possibile inserire un quarto if che esegua dei comandi se il tempo minimo di pressione NON sia stato raggiunto (differenziare fra pressione lunga e pressione breve), ma in questo caso i relativi comandi (quelli del tempo breve) verranno eseguiti per forza dopo il rilascio del tasto ... pero' la cosa non ha molta importanza, dato che se uno imposta, tipo, un tempo minimo di 1 secondo, e le pressioni brevi sono piu corte, il ritardo sarebbe al massimo dei pochi decimi di secondo in cui il tasto rimane premuto per il tempo breve ...

Una cosa del genere, nel tuo caso, molto a spanne (pseudocodice, da correggere ovviamente)

Code: [Select]

...
   if ((varKeyboard<127)&&(miaflag==0))
   {
      variabileul=millis();
      miaflag=1;
   }
   if ((varKeyboard<127)&&(miaflag==1)&&(millis()-variabileul>1000)) \\un secondo, come esempio
   {
      (... codice da eseguire una volta, se il tasto e' rimasto premuto piu di un secondo ...)
      miaflag=2;
   }
   if ((varKeyboard=0)&&(miaflag==1) \\tasto rilasciato prima che passasse un secondo
   {
      (... codice da eseguire una volta, se il tasto e' rimasto premuto meno di un secondo ...)
      miaflag=2;
   }
   if ((varKeyboard=0)&&(miaflag==2) \\tasto rilasciato ed operazioni gia eseguite
   {
      (... nulla ... oppure codice da eseguire sempre al rilascio del tasto, se necessario ...)
      miaflag=0;
   }   


In questo caso, il terzo if viene eseguito solo nel momento in cui rilasci il pulsante, solo se il secondo if non ha gia messo la flag a 2 (quindi se il secondo di tempo non era ancora trascorso, mentre invece se trascorre, il secondo if esegue i suoi comandi alla scadenza del tempo ed imposta la flag a 2 lui, impedendo l'esecuzione del terzo) ... mentre il quarto resetta la flag al rilascio solo se uno dei precedenti ha messo la flag a 2, segno che o uno o l'altro hanno eseguito i rispettivi comandi ... (sarebbe perfino possibile inserire un'ulteriore if che restituisca un'errore se il pulsante viene rilasciato ma nessuno dei due precedenti if ha messo la flag a 2, segno che non e' stato eseguito qualcosa che invece doveva essere eseguito, ma qui andiamo nelle cose inutili per il tuo scopo, mi sa ;)

EDIT: nel quarto if, puoi mettere anche li un codice, ma solo se serve, che verra' eseguito in ogni caso al rilascio del tasto ... potrebbe essere, che so, una tone per fare il bip, o qualsiasi cosa dovesse essere necessaria da fare "sempre" al rilascio del tasto (sempre, nel senso sia che il tasto sia rimasto premuto poco o molto ... e' facoltativo, semplicemente una possibilita' in piu ;))

Come dicevo di la, a logica sembrerebbe perfino che possa funzionare ... resta da provarlo ;)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 24, 2018, 12:21 pm
Ei Etem! :D Grazie per la risposta e piano piano cerco di capire la logica del tuo codice.

Io per quello che ho fatto funziona, utilizzando uno stato del bottone, una flag del bottone, una flag long click del bottone e il tempo.

SE il bottone è premuto
  SE la flag del bottone è bassa (questo per il cambio di stato del bottone)
    porta la flag alta
    salva i millis
  SE è trascorso il tempo che ho impostato && la flag long click è bassa (cioè è trascorso il tempo e non sono entrato in long click)
    porta la flag long click alta
    cicla la variabile mode per cambiare modalità
ELSE (quindi se il bottone non è premuto)
  SE la flag è alta
    SE la flag long click è alta (cioè se ho appena rilasciato dopo aver tenuto premuto il pulsante per il tempo long click)
      porta la flag long click bassa
    ELSE (cioè se invece ho appena rilasciato dopo aver premuto normalmente il pulsante)
      cicla la variabile varSEL per selezionare quale componente dell'array dei valori del massimo voglio resettare
  porta la flag bassa

Code: [Select]

void setSEL(){
  if (select) {                                       /* se schiaccio select e quindi la variabile booleana select è true */
    if (!selectFlag) {                                /* se la flag di select è false */
      selectFlag = true;                              /* porta la flag a true */
      selectTime = millis();                          /* salva il tempo di millis */
    }
    if ((millis() - selectTime > selectDelay) && (!selectLong)) {  /* se il tempo da quando ho iniziato a schiacciare select è maggiore del tempo impostato e la variabile booleana selectLong è false  */
      selectLong = true;                              /* porta a true la variabile booleana selectLong */
      if (mode < 3) {mode++;}                         /* esegui questo if. se mode è minore di 3, aggiungi uno a mode */
      else mode = 0;                                  /* altrimenti porta a 0 mode */
    }
  }
  else {                                              /* altrimenti se non schiacci select */
    if (selectFlag) {                                 /* se la flag di select è true */
      if (selectLong) {selectLong = false;}           /* se select long è true, portalo a false */
      else {                                          /* altrimenti se select long è false */
        if (varSEL < Channel - 1) {varSEL++;}         /* se varSEL è minore di Channel - 1, aggiungi uno a varSEL */
        else varSEL = 0;                              /* altrimenti porta a 0 varSEL */
      }   
      selectFlag = false;                             /* porta la flag di select a false */
    }
  }
}
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 26, 2018, 11:48 am
Buongiorno!
Dopo aver risolto la questione del pulsante ho cominciato ad affrontare il problema refresh del display.

Ho letto qualcosina sul web anche, il problema è pulire il display ogni volta che qualche pixel cambia.

Ho cominciato intanto a dividere le cose da stampare sul display non come singola schermata (per esempio per la modalità 0 voglio vedere le tensioni, modalità 1 voglio vedere le correnti, modalità 2 gli errori, modalità 3 temperatura e umidità) ma le ho divise per "refresh". Per esempio non serve stampare ogni volta la schermata completa ma posso chiamare una singola funzione che stampa il nome delle piste, che rimangono "stazionarie" nelle prime 3 modalità. In questo modo ho ridotto il tempo di refresh del display, ma non sono ancora abbastanza veloce.

Ho poi pensato a togliere lo sfondo quando chiamavo la funzione per cambiare il colore del testo, in questo modo vado a scrivere solo i pixel del testo e non il "rettangolo" composto dal testo e dallo sfondo.

Per ogni funzione che scrive quello che voglio ho fatto una funzione gemella che scrive lo stesso testo ma in nero, colore dello sfondo. In questo modo cancello le scritte e cambio solo i pixel che mi servono, velocizzando tutto.

Mi restano da sistemare alcune parti fisse che devo cancellare soltanto quando cambio da un modo all'altro, con l'utilizzo di una flag, quindi cancellando una sola volta ed evitando un refresh continuo della funzione che cancella la stringa.

Il problema che credo avrò sarà quello relativo alle parti che per forza di cose devono aggiornarsi continuamente, ovvero i valori stampati degli array delle tensioni ecc ecc. Ho paura che mi rallentino non poso il refresh del display. Devo provare.

Il problema del refresh del display non è tanto il refresh in sè, piuttosto è che mi forza la velocità di clock delle operazioni. Per esempio in questo modo non riesco a comunicare attraverso la libreria DHT11 con il modulo e non ottengo dei valori corretti per avere una lettura di temperatura e umidità. Probabilmente se non risolvo questo problema poi me lo porto avanti non solo per il DHT11 ma anche per l'interrogazione ai due moduli ADC per tensioni e correnti, quindi sostanzialmente non potrò leggere nulla.

Io intanto nel frattempo continuo a dividere attraverso l'uso di funzioni le cose che voglio stampare, in maniera da cancellare il meno possibile dal display e renderlo veloce.

Un'altra cosa che non funziona come mi sarei immaginato è la funzione che mi scrive una X accanto al valore del massimo che seleziono attraverso la pressione normale del tasto select e con la variabile varSEL. Sulla stampa seriale vedo correttamente il numero della varSEL, ma stampando mi compaiono tutte le X.

Ho usato questo codice:

Code: [Select]

void printVarSEL(){
  switch (varSEL){
    case 0:
      display1.setTextColor(ST7735_WHITE);            /* imposta il colore bianco per il carattere */
      display1.setTextSize(1);                        /* imposta la dimensione 1 per il carattere */
      display1.setCursor(110, 58);                    /* punta al pixel 110, 58 */
      display1.print("X");                            /* scrivi X */
    case 1:
      display1.setTextColor(ST7735_WHITE);            /* imposta il colore bianco per il carattere */
      display1.setTextSize(1);                        /* imposta la dimensione 1 per il carattere */
      display1.setCursor(110, 125);                   /* punta al pixel 110, 125 */
      display1.print("X");                            /* scrivi X */
    case 2:
      display2.setTextColor(ST7735_WHITE);            /* imposta il colore bianco per il carattere */
      display2.setTextSize(1);                        /* imposta la dimensione 1 per il carattere */
      display2.setCursor(110, 58);                    /* punta al pixel 110, 58 */
      display2.print("X");                            /* scrivi X */
    case 3:
      display2.setTextColor(ST7735_WHITE);            /* imposta il colore bianco per il carattere */
      display2.setTextSize(1);                        /* imposta la dimensione 1 per il carattere */
      display2.setCursor(110, 125);                   /* punta al pixel 110, 125 */
      display2.print("X");                            /* scrivi X */
  }
}


E ricordo che varSEL "cicla" quando premo il pulsante normalmente attraverso questo codice:

Code: [Select]

void setSEL(){
  if (select) {                                       /* se schiaccio select e quindi la variabile booleana select è true */
    if (!selectFlag) {                                /* se la flag di select è false */
      selectFlag = true;                              /* porta la flag a true */
      selectTime = millis();                          /* salva il tempo di millis */
    }
    if ((millis() - selectTime > selectDelay) && (!selectLong)) {  /* se il tempo da quando ho iniziato a schiacciare select è maggiore del tempo impostato e la variabile booleana selectLong è false  */
      selectLong = true;                              /* porta a true la variabile booleana selectLong */
      if (mode < 3) {mode++;}                         /* esegui questo if. se mode è minore di 3, aggiungi uno a mode */
      else mode = 0;                                  /* altrimenti porta a 0 mode */
    }
  }
  else {                                              /* altrimenti se non schiacci select */
    if (selectFlag) {                                 /* se la flag di select è true */
      if (selectLong) {selectLong = false;}           /* se select long è true, portalo a false */
      else {                                          /* altrimenti se select long è false */
        if (varSEL < Channel - 1) {varSEL++; varSELclean = true;}  /* se varSEL è minore di Channel - 1, aggiungi uno a varSEL, porta a true la flag per cancellare le x */
        else varSEL = 0;                              /* altrimenti porta a 0 varSEL */
      }   
      selectFlag = false;                             /* porta la flag di select a false */
    }
  }
}


Ma come detto, il codice per il pulsante funziona correttamente, dal valore che stampo sulla seriale.

Allego un video per far vedere a che punto sono arrivato. Il codice lo condivido più tardi quando avrò finito di "dividere" le cose da stampare.

https://youtu.be/YMcqZVPqlds
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Jun 26, 2018, 11:57 am
Non ho quei display, pero' cosi ad occhio, non fai prima a cancellare il vecchio valore e scrivere il nuovo solo quando cambia ? (o solo una volta al secondo, se puoi) ... e per cancellare, forse e' piu veloce se scrivi il vecchio valore con il colore di sfondo prima del nuovo ... ad esempio, la cifra e' 1, se diventa 2, scrivi 1 con il colore di sfondo e poi 2, solo nella posizione del valore che cambia (se e' possibile dirgli il pixel di start, ovviamente) ... dovrebbe essere piu rapido che cancellare un riquadro o tutto lo schermo ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 26, 2018, 12:56 pm
E' infatti quello che sto facendo scrivendo la stessa stringa in nero. Per le scritte statiche o semi statiche è più semplice e appunto le "cancello" solo quando serve, mentre per i valori che cambiano spesso devo scriverli e "cancellarli" ogni volta, così parto con quella parte di schermo pulito.

Per esempio per il valore del massimo, siccome ho comunque una funzione che confronta il massimo con quello precedente e lo scrive se maggiore, posso fare una flag che se maggiore rispetto al massimo precedente va a true, se va a true scrivo in nero il valore precedente e scrivo nel colore desiderato il nuovo valore.

Stessa idea volevo utilizzare per il carattere "X".
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Jun 26, 2018, 04:03 pm
Mi viene, a questo punto, un dubbio diverso ... stai usando un solo arduino sia per le varie elaborazioni che per il pilotaggio dei display ? ... lo chiedo perche' ho visto in rete che gia quei "cosi" sono abbastanza lenti anche quando ce n'e' collegato uno solo ... non vorrei che fosse un problema di "sovraccarico" della MCU, in parte, il colpevole ...

Con un solo display pilotato, sono sempre cosi' lenti, o la cosa cambia ?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 26, 2018, 04:18 pm
Si ho un solo Arduino collegato. Con un solo display non ho provato. Per me è comunque un discorso di ottimizzazione. In più potrei comunque far fare un "clock" solo alla funzione che mi gestisce le modalità del display ogni secondo, così nel frattempo posso leggere la tastiera e fare tutto quello che devo fare in parallelo e non sono legato al refresh del display, giusto?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Jun 26, 2018, 04:46 pm
O quello, oppure, forse anche meglio, usare dei "mini", (o micro, o comunque il piu piccolo disponibile che funzioni) per ogni display ... trasformandoli in pratica in "display semi-intelligenti", a cui passi i dati e che si arrangiano a fare visualizzazioni e refresh ... non so a livello software, ma non credo sia complicatissimo (pero' devi chiedere ad un programmatore, cosa che io non sono, per questo) ... lato hardware, solleveresti l'arduino che fa tutto dal carico di dover gestire anche i display e dal dover usare un sacco di memoria extra solo per loro ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 26, 2018, 05:20 pm
Vorrei contenere le dimensioni di tutto il mobiletto, sennò avrei usato un display di dimensioni maggiori.

La soluzione un Arduino per ogni display è percorribile, con un Arduino minimo che legge tutto quello che portano i sensori e trasmette via i2c agli altri due Arduino. Questo a livello hardware, ma come ho già detto vorrei evitare questa soluzione per l'ingombro.

Per il momento sto percorrendo la strada dell'ottimizzazione dei pixel e del clock più lento così posso fare sia le operazioni dei display sia le operazioni di cui ho bisogno.

Sto finendo di dividere la parte statica dalla parte dinamica, con relative funzioni di pulizia dei caratteri. Dopodiché dovrò farmi venire in mente come cancellare le X di cui non ho bisogno.

Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Jun 26, 2018, 05:43 pm
Per l'ingombro, puoi farti anche un paio di "standalone" con due pezzi di millefori della stessa dimensione del display (o stampati su misura, volendo), saldati sotto a quelli, ognuno con una MCU con il suo quarzo o risuonatore e poco altro (tanto mica ti serve che siano arduino, dovendo solo gestire le schermate e visualizzare i dati che gli passi, basterebbe la MCU in configurazione minima ... ed avrebbero lo stesso ingombro del display ;))
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 26, 2018, 08:29 pm
Come promesso inserisco l'ultima versione del software, ottimizzata nei caratteri per cercare di avere una buona velocità.

Allego anche video. Adesso sono riuscito a far funzionare tutto tranne il fatto che abbia un refresh lento.

https://www.youtube.com/watch?v=cdS7R4X_ztg (https://www.youtube.com/watch?v=cdS7R4X_ztg)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Jun 27, 2018, 09:47 am
Ma le cifre che "flashano" nel video, sono cosi anche ad occhio, o e' un'effetto dovuto alla camera ? ... perche' cosi e' "leggermente" illeggibile ;)

... poi ... ma e' un dubbio personale ... dato che usi due display da 1.8 in verticale, affiancati come se fossero uno solo, mi viene da chiedermi perche' non ne hai semplicemente preso uno grosso il doppio (https://www.ebay.it/itm/New-3-5-Inch-LCD-Screen-Module-Supports-For-Mega2560-HD-320-480-for-Arduino-SV/253646431727) mettendolo in orizzontale ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 27, 2018, 11:06 am
Si, flashano esattamente come si vede anche ad occhio nudo, non è un effetto della camera.

Ne ho messi due per diversi motivi: costi inferiori, divisione delle corsie, ma soprattutto avevo paura che soltanto con una Mega sarei potuto stare dietro ad un display più grande.

Siccome non ne sapevo granché sui display tft (e non è che nel frattempo sono diventato un'esponente di spicco in questo campo :D) ed ho chiesto anche qui sul forum che cosa era meglio usare non ricevendo risposte, ho fatto questa scelta vedendo un po' in giro che cosa si utilizza.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Jun 27, 2018, 11:25 am
Vero, e neppure io sono un'esperto nel campo ... ma se usassi uno di quelli da 3.5, che costano sui 9 Euro, il prezzo non sarebbe eccessivo ... inoltre potresti sempre usare il sistema delle 2 MCU, magari con una scheda fatta su misura, dove ad una fai fare tutte le misure e le conversioni, ed all'altra fai fare tutto il lavoro del pilotaggio display, generazione maschere, posizionamento, eccetera ... cosi basterebbe che la prima si limitasse a "passare" i valori da visualizzare alla seconda, mentre la seconda decide, in base ai tuoi comandi, quali visualizzare e come ...

Lo dico perche', confrontati con diversi video in rete, i tuoi mi sembrano molto piu lenti, e mi viene davvero il dubbio che sia dovuto anche, o soprattutto, al fatto che fai fare tutto il lavoro ad una sola MCU, che finisca per incriccarsi da qualche parte ... ma qui serve il parere di chi se ne intende di piu a livello software di me ... io da "hardwarista" avrei probabilmente diviso il lavoro su due MCU gia da subito (magari poi diventando matto a cercare di farle lavorare insieme a livello software, ma io sono fatto cosi ... hardware per primo, hardware per secondo, hardware per dessert, poi se avanza tempo e voglia e proprio non riesco a risolverla solo con l'hardware, anche un po di software come digestivo :D)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 27, 2018, 12:00 pm
Mi hai fatto venire fame :D

Ad ogni modo ho paura che con un display più grande mi ritroverei comunque dei problemi ad usare anche un Arduino UNO. Nel frattempo però vorrei usare quello che ho, ovvero i due display da 1.8". Ho già preparato schema elettrico e board per fare una schedina sulla quale si collega sia il display sia l'Arduino Pro Micro, con le resistenze appropriate, nel caso in cui ci sia qualcuno che mi confermi il fatto che ci vuole un ATMega32U4 per ogni display.

In tal caso comunque la comunicazione volevo gestirla via i2c, da un Arduino Pro Micro MASTER e i due Arduino Pro Micro SLAVE che fanno solo da riceventi per la gestione display. La MASTER effettua tutte le richieste dati tramite sempre i2c ai due convertitori AD, la misura per i due pulsanti, la comunicazione tramite libreria con il DHT11. Che ne dici?

p.s.: sempre da internet guarda questo:
http://matthewcmcmillan.blogspot.com/2014/01/arduino-improving-refresh-rate-of-tft.html (http://matthewcmcmillan.blogspot.com/2014/01/arduino-improving-refresh-rate-of-tft.html)

http://matthewcmcmillan.blogspot.com/2014/08/arduino-tft-lcd-display-refresh-rate-part2.html (http://matthewcmcmillan.blogspot.com/2014/08/arduino-tft-lcd-display-refresh-rate-part2.html)

Lui aveva lo stesso mio problema ed ha risolto prima creando un rettangolo che si colorava dello stesso colore dello sfondo, poi colorando di nero solo le cifre che cambiavano. E non ha nessun tipo di "flash" sebbene ci sia una buona quantità di pixel da scrivere. Come dici anche tu, sembra quasi esserci un problema, ma non so dove andarlo a cercare. Non è che scrivendo continuamente e saltando dal display 1 al display 2 rallento la comunicazione? Spero nell'aiuto di qualcuno che ci capisca di più.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Jun 27, 2018, 03:03 pm
Mi hai fatto venire fame :D
Ti faccio venire ancora piu fame, allora ... perche' non una standalone grande esattamente come il display (da saldarci o impilarci sotto, in pratica), con a bordo due (dicasi "due" :D) 328P, uno che gestisce il display, ed uno che fa il resto, interconnessi direttamente ? (quasi quasi, mi viene voglia di aprire eagle solo per vedere se ci starebbero, magari in dip ... devo resistere)



Quote
.... Non è che scrivendo continuamente e saltando dal display 1 al display 2 rallento la comunicazione? ...
Infatti il mio dubbio principale era anche quello ... pero', come ho detto, non me ne intendo abbastanza a livello software, da poter "puntare il dito" e dirti "il problema e' li" ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 27, 2018, 04:20 pm
Infatti, ma se ho la possibilità di usare i 32u4, prendo direttamente una scheda piccola Arduino Pro Micro che sotto al display ci sta, faccio una scheda di collegamento tra il display e Arduino Pro Micro e metto un connettore a 4 pin per il positivo, il negativo, SCL e SDA e il gioco è fatto.

Più che altro perché dovrei poi programmare ogni singolo Mega e la cosa mi disturba, anche se assieme a te ho fatto il programmatore B)

Per quello che dicevo prima potrei provare eliminando tutti i riferimenti (sia il display che le scritture) sul secondo display di fatto gestendo solo un display. Se cambia il refresh allora può essere quello il problema. Nel frattempo invoco l'aiuto di qualcuno che ne sappia.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 27, 2018, 07:19 pm
Per quello che dicevo prima potrei provare eliminando tutti i riferimenti (sia il display che le scritture) sul secondo display di fatto gestendo solo un display. Se cambia il refresh allora può essere quello il problema. Nel frattempo invoco l'aiuto di qualcuno che ne sappia.
Ho commentato ogni riga che faceva riferimento al display2 ma lo sfarfallio è uguale. FORSE non è un problema di poca potenza di calcolo...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Jun 28, 2018, 10:19 am
Puoi fare un test ? ... scrivi da zero uno sketch minimo, usando lo stesso metodo di scrittura sul display che usi adesso, che si limita a far cambiare una cifra in mezzo allo sketch una volta al secondo (un banale for da 0 a 9, ad esempio, ripetuto all'infinito), e che non fa niente altro ... cosi si vede se dipende dal display in se, dallo sketch, dall'hardware, o da qualcos'altro, o almeno si ha qualche indicazione in piu su cosa potrebbe essere ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 28, 2018, 11:05 am
Ok, dimmi che cosa vuoi che scriva sul display, quali caratteri statici ecc ecc.

Ieri sera comunque ho pensato ad un'altra cosa. Io sto scrivendo e cancellando subito, da qui il "flash".
Ieri sera invece ho voluto provare un delay e un "eco" delay, cioè sostanzialmente la funzione di gestione del display (modalità e cosa stampare sul display, la funzione state() ) cicla ogni 500 millisecondi. Quando faccio il ciclo inizio a contare e dopo 450 millisecondi mi scatta la funzione "eco".

Nel primo delay stampo, nel secondo delay cancello. In questo modo non ho più dei flash ma numeri stabili, un flash "nero" del testo che cambia e poi il nuovo valore.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Jun 28, 2018, 12:20 pm
Non e' che voglio che scrivi qualcosa di specifico, basta un banale ciclo for da 0 a 9, dove scrivi in mezzo al display la variabile del for (tanto per vedere i numeri cambiare) ...

e no, non devi scrivere e cancellare subito, ne usare i delay che ti bloccherebbero tutto .. usa millis, e le due scritture (cioe' cancellazione col nero e scrittura col bianco) le fai una dopo l'altra senza ritardi nel for, tutto dentro un'if per controllare il tempo trascorso con millis ... ad esempio ...

parti con due variabili a zero (diciamo aaa e bbb ... si, lo so, che fantasia :D), una per il for ed una secondaria come "memoria" del numero precedente, ed una unsigned long per il valore precedente di millis (diciamo tempo) ... nel setup, tempo=millis ... nel loop, un'if millis meno tempo > 1000 ... nell'if, quando e' passato un secondo, bbb=aaa (per poterlo scrivere in nero cancellando), fai il for aaa eccetera, scrivi bbb in nero, subito dopo scrivi aaa in bianco ... if aaa>9 aaa=0 (tanto per far ciclare il for all'infinito) ... e cosi via ... e vediamo se sfarfalla anche con cosi poche istruzioni in questa sequenza ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 28, 2018, 03:43 pm
Si ho sbagliato a dire delay, ovviamente lo faccio con millis(). Ieri ne parlavo con un amico e lui la chiamava eco delay, per questo mi è rimasto in mente.

Code: [Select]

unsigned long displayTime = millis();                 /*  */
#define displayDelay 500                              /*  */
unsigned long displayTimeEco = 0;                     /*  */
#define displayDelayEco 450                           /*  */

if (millis() - displayTime > displayDelay) {
  displayTimeEco = millis();
  displayTime += displayDelay;
  state();                                          /* funzione di gestione mode sui display */
}

if (millis() - displayTimeEco > displayDelayEco){
    state_Clean();
    displayTimeEco = 0;
}


Per la stampa semplice appena ho un attimo libero stasera lo scrivo, tanto dovrebbe essere molto semplice
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 28, 2018, 03:53 pm
Anzi, l'ho scritto adesso:

Code: [Select]

unsigned long displayTime = millis();
#define displayDelay 500
unsigned long displayTimeEco = 0;
#define displayDelayEco 450

#define sclk 15
#define mosi 16
#define cs1 4
#define dc1 5
#define rst1 6

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>

Adafruit_ST7735 display1 = Adafruit_ST7735(cs1, dc1, rst1);

byte temp = 0;

void ciclo(){
  if (temp < 9){temp++;}
  else temp = 0;
}

void print_T(){
  display1.setTextColor(ST7735_WHITE);
  display1.setTextSize(3);
  display1.setCursor(50, 65);
  display1.print(temp);
}

void print_T_Clean(){
  display1.setTextColor(ST7735_BLACK);
  display1.setTextSize(3);
  display1.setCursor(50, 65);
  display1.print(temp);
}


void setup() {

  pinMode(sclk, OUTPUT);
  pinMode(mosi, OUTPUT);
  pinMode(cs1, OUTPUT);
  pinMode(dc1, OUTPUT);
  pinMode(rst1, OUTPUT);
 
  display1.initR(INITR_BLACKTAB);
  display1.fillScreen(ST7735_BLACK);

}

void loop() {
 
  ciclo();
 
  if (millis() - displayTime > displayDelay) {
    displayTimeEco = millis();
    displayTime += displayDelay;
    print_T();
  }

  if (millis() - displayTimeEco > displayDelayEco){
      print_T_Clean();
      displayTimeEco = 0;
  }
}


Questo sketch di prova va bene? E' così che intendevi?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Jun 28, 2018, 07:23 pm
non ne sono sicuro perche', come ho detto, quei display non li ho, quindi non so usarli bene ... intendevo una cosa del genere, molto a spanne e da completare *(dove ho messo il testo fra parentesi ed asterischi, i comandi precisi li devi mettere tu che conosci meglio il display e come l'hai inizializzato)*

Code: [Select]

#define sclk 15 
#define mosi 16
#define cs1 4
#define dc1 5
#define rst1 6
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
Adafruit_ST7735 display1 = Adafruit_ST7735(cs1, dc1, rst1);

void setup() {
   pinMode(sclk, OUTPUT);
   pinMode(mosi, OUTPUT);
   pinMode(cs1, OUTPUT);
   pinMode(dc1, OUTPUT);
   pinMode(rst1, OUTPUT);
   display1.initR(INITR_BLACKTAB);
   display1.fillScreen(ST7735_BLACK); //questi suppongo puliscano il display in nero
   unsigned long tempo = millis();
   byte stato = 0;
   byte prec = 0;
  *(qui stampa la variabile stato in bianco)*
}

//la parte sopra l'ho copiata quasi tutta dal tuo, spero sia corretta

void loop() {
   if (millis() - tempo >= 1000) {
      stato = stato++
      if(stato>9) stato=0;
      *(stampa la variabile prec in nero)*;
      *(stampa la variabile stato in bianco)*;
      prec=stato;
      tempo=millis();
   }
}


Ovviamente le varie stampe sempre nello stesso punto ... cosi in teoria (non posso provare io) dovrebbe continuare a stamparti un numero che cicla da 0 a 9 e poi si ripete, cambiando una volta al secondo ... se va, mi piacerebbe sapere se ti fa ancora i "flash neri", o se si riducono fra un numero e l'altro e diventa piu fluida la variazione fra i diversi numeri ... se va (sto incrociando tutte e 24 le dita :P)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 29, 2018, 09:23 am
Code: [Select]

#define sclk 15
#define mosi 16
#define cs1 4
#define dc1 5
#define rst1 6

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>

Adafruit_ST7735 display1 = Adafruit_ST7735(cs1, dc1, rst1);

unsigned long displayTime = millis();

byte Stato = 0;
byte pStato = 0;

void setup() {

  pinMode(sclk, OUTPUT);
  pinMode(mosi, OUTPUT);
  pinMode(cs1, OUTPUT);
  pinMode(dc1, OUTPUT);
  pinMode(rst1, OUTPUT);
 
  display1.initR(INITR_BLACKTAB);
  display1.fillScreen(ST7735_BLACK);

}

void loop() {
 
  if (millis() - displayTime > 1000) {
    Stato = Stato++;
    if (Stato > 9){Stato = 0;}
    display1.setTextColor(ST7735_BLACK);
    display1.setTextSize(3);
    display1.setCursor(50, 65);
    display1.print(Stato);
    display1.setTextColor(ST7735_WHITE);
    display1.print(Stato);
    pStato = Stato;
    displayTime = millis();
  }

}


Cioè così. Carico appena vedo la breadboard prometto!
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 29, 2018, 11:54 am
A parte che non si può scrivere
Code: [Select]
Stato = Stato++ il codice funziona, ma non cancella la cifra precedente.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Jun 29, 2018, 12:19 pm
il codice funziona, ma non cancella la cifra precedente.
Per forza ... invece di stampare pstato in nero e stato in bianco, stampi due volte di seguito stato, una in nero ed una in bianco ... ;)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 29, 2018, 12:33 pm
Si, mi ero accorto della svista ed ho sistemato. Però continua anche con questo codice:

Code: [Select]

  if (millis() - displayTime >= 1000) {
    display1.setTextColor(ST7735_BLACK);
    display1.setTextSize(3);
    display1.setCursor(50, 65);
    display1.print(pStato);
    Stato++;
    if (Stato > 9){Stato = 0;}
    display1.setTextColor(ST7735_WHITE);
    display1.print(Stato);
    pStato = Stato;
    displayTime = millis();
  }
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Jun 29, 2018, 04:02 pm
Uhm ... non devi rimettere setcursor anche nello stampare in bianco, per farlo ricominciare dal punto corretto ? ... puoi mettere un video anche di questo test su youtube ? (non googlecloud che non funziona)

poi, questa
Code: [Select]

    display1.setTextSize(3);


non basta farla una sola volta nel setup ? ... o bisogna specificarla per ogni comando di stampa anche se non cambi grandezza ? ... se si, la parte nell'if diventerebbe, tipo, una cosa del genere ...

Code: [Select]

   Stato++;
   if (Stato > 9){Stato = 0;}
   display1.setTextColor(ST7735_BLACK);
   display1.setCursor(50, 65);
   display1.print(pStato);
   display1.setTextColor(ST7735_WHITE);
   display1.setCursor(50, 65);
   display1.print(Stato);
   pStato = Stato;
   displayTime = millis();


E' dura cercare di indovinare cosa non va, non avendo un display con cui provare ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 29, 2018, 05:06 pm
Che errore scemo! Anche io non ci sto più con la testa. Effettivamente bisogna riposizionare settando il pixel da scrivere :D

Si, settare la dimensione una sola volta si può fare, ma ho preso l'abitudine di metterlo nelle funzioni che stampano per comodità.

https://www.youtube.com/watch?v=Q-CxMY8ObEg (https://www.youtube.com/watch?v=Q-CxMY8ObEg)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Jun 29, 2018, 05:23 pm
Be', cosi come cambiamento delle cifre mi sembra "leggermente" meglio di prima ... o no ? ... ;)

Ora, per controllare se usare due display rallenta i refresh di molto, riesci ad inserire anche il secondo display, lasciando tutto il resto invariato nello sketch ? ... (nel senso di inviare semplicemente i comandi di scrittura su entrambi i display, scrivi pstato nero su 1, scrivi stato bianco su 1, scrivi pstato nero su 2, scrivi stato bianco su 2, ovviamente dopo averli inizializzati entrambi nel setup eccetera ... per ora, limitiamoci a scrivere contemporaneamente lo stesso numero su entrambi e vediamo se il fatto di dover inviare i comandi a due invece che ad uno lo rallenta troppo o no)

nella tua prova del video, hai lasciato il settaggio della dimensione nell'if ? ... se no, prova a rimetterlo, giusto per "appesantirlo" un po di piu inviando anche un comando inutile ... cerco di capire se l'invio di piu comandi influisce troppo, se ti chiedevi il perche' ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 29, 2018, 05:32 pm
Interno o esterno all'if non cambia nulla.

Code: [Select]

#define sclk 15
#define mosi 16
#define cs1 4
#define dc1 5
#define rst1 6
#define cs2 7
#define dc2 8
#define rst2 9

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>

Adafruit_ST7735 display1 = Adafruit_ST7735(cs1, dc1, rst1);
Adafruit_ST7735 display2 = Adafruit_ST7735(cs2, dc2, rst2);

unsigned long displayTime = millis();

byte Stato;
byte pStato;

void setup() {

  pinMode(sclk, OUTPUT);
  pinMode(mosi, OUTPUT);
  pinMode(cs1, OUTPUT);
  pinMode(dc1, OUTPUT);
  pinMode(rst1, OUTPUT);
 
  display1.initR(INITR_BLACKTAB);
  display1.fillScreen(ST7735_BLACK);

  display1.setTextSize(3);

  display2.initR(INITR_BLACKTAB);
  display2.fillScreen(ST7735_BLACK);

  display2.setTextSize(3);

}

void loop() {
 
  if (millis() - displayTime >= 1000) {
    display1.setTextColor(ST7735_BLACK);
    display1.setCursor(50, 65);
    display1.print(pStato);
    display2.setTextColor(ST7735_BLACK);
    display2.setCursor(50, 65);
    display2.print(pStato);
    Stato++;
    if (Stato > 9){Stato = 0;}
    display1.setTextColor(ST7735_WHITE);
    display1.setCursor(50, 65);
    display1.print(Stato);
    display2.setTextColor(ST7735_WHITE);
    display2.setCursor(50, 65);
    display2.print(Stato);
    pStato = Stato;
    displayTime = millis();
  }

}


https://www.youtube.com/watch?v=a6RkkwLtouY (https://www.youtube.com/watch?v=a6RkkwLtouY)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Jun 29, 2018, 06:03 pm
E' decisamente meglio che con i flash neri :D

Pero' prova a cambiare l'ordine di invio dei comandi, per ridurre ancora di piu il tempo morto (tu nel tuo sketch prima scrivi in nero entrambi i display, poi fai alcune altre operazioni, poi scrivi in bianco entrambi i display ... con un solo numero probabilmente non si nota molto, ma se dovessi aggiornare piu roba, tutte le operazioni che fai fra le scritture in nero e le riscritture in bianco ti allungherebbero il tempo in cui rimane il nero, rendendo piu evidenti i flash ed i cambiamenti di cifra ...

vorrei provare a scriverti una cosa in due modi diversi per farti provare se ne hai voglia, ma mi serve sapere su quel display quanti caratteri ci puoi far stare ... o per essere piu precisi, quanti pixel in altezza tiene via un carattere, e qual'e' nel setcursor l'asse verticale (immagino il secondo, 65, giusto ?)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Jun 29, 2018, 06:34 pm
Oppure, ma qui tiro ad indovinare con le posizioni del cursore, prova addirittura queste due versioni della stessa cosa ... in entrambe ho aggiunto un delay(20) per simulare diverse operazioni senza eseguirle davvero ... giusto per vedere se la semplice differenza nell'ordine di invio degli stessi  comandi al display, crea molta differenza nel risultato finale ...

versione che in teoria dovrebbe essere peggiore
Code: [Select]

#define sclk 15
#define mosi 16
#define cs1 4
#define dc1 5
#define rst1 6
#define cs2 7
#define dc2 8
#define rst2 9

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>

Adafruit_ST7735 display1 = Adafruit_ST7735(cs1, dc1, rst1);
Adafruit_ST7735 display2 = Adafruit_ST7735(cs2, dc2, rst2);

unsigned long displayTime = millis();

byte Stato;
byte pStato;

void setup() {
  pinMode(sclk, OUTPUT);
  pinMode(mosi, OUTPUT);
  pinMode(cs1, OUTPUT);
  pinMode(dc1, OUTPUT);
  pinMode(rst1, OUTPUT);
  display1.initR(INITR_BLACKTAB);
  display1.fillScreen(ST7735_BLACK);
  display1.setTextSize(3);
  display2.initR(INITR_BLACKTAB);
  display2.fillScreen(ST7735_BLACK);
  display2.setTextSize(3);
}

void loop() {
  if (millis() - displayTime >= 1000) {
    display1.setTextColor(ST7735_BLACK);
    display1.setCursor(20, 35);
    display1.print(pStato);
    display1.setCursor(20, 65);
    display1.print(pStato);
    display1.setCursor(20, 95);
    display1.print(pStato);
    display1.setCursor(50, 35);
    display1.print(pStato);
    display1.setCursor(50, 65);
    display1.print(pStato);
    display1.setCursor(50, 95);
    display1.print(pStato);
    display1.setCursor(80, 35);
    display1.print(pStato);
    display1.setCursor(80, 65);
    display1.print(pStato);
    display1.setCursor(80, 95);
    display1.print(pStato);

    display2.setTextColor(ST7735_BLACK);
    display2.setCursor(20, 35);
    display2.print(pStato);
    display2.setCursor(20, 65);
    display2.print(pStato);
    display2.setCursor(20, 95);
    display2.print(pStato);
    display2.setCursor(50, 35);
    display2.print(pStato);
    display2.setCursor(50, 65);
    display2.print(pStato);
    display2.setCursor(50, 95);
    display2.print(pStato);
    display2.setCursor(80, 35);
    display2.print(pStato);
    display2.setCursor(80, 65);
    display2.print(pStato);
    display2.setCursor(80, 95);
    display2.print(pStato);

    Stato++;
    if (Stato > 9){Stato = 0;}

    delay(20); //tanto per simulare un'altra manciata di operazioni

    display1.setTextColor(ST7735_WHITE);
    display1.setCursor(20, 35);
    display1.print(Stato);
    display1.setCursor(20, 65);
    display1.print(Stato);
    display1.setCursor(20, 95);
    display1.print(Stato);
    display1.setCursor(50, 35);
    display1.print(Stato);
    display1.setCursor(50, 65);
    display1.print(Stato);
    display1.setCursor(50, 95);
    display1.print(Stato);
    display1.setCursor(80, 35);
    display1.print(Stato);
    display1.setCursor(80, 65);
    display1.print(Stato);
    display1.setCursor(80, 95);
    display1.print(Stato);

    display2.setTextColor(ST7735_WHITE);
    display2.setCursor(20, 35);
    display2.print(Stato);
    display2.setCursor(20, 65);
    display2.print(Stato);
    display2.setCursor(20, 95);
    display2.print(Stato);
    display2.setCursor(50, 35);
    display2.print(Stato);
    display2.setCursor(50, 65);
    display2.print(Stato);
    display2.setCursor(50, 95);
    display2.print(Stato);
    display2.setCursor(80, 35);
    display2.print(Stato);
    display2.setCursor(80, 65);
    display2.print(Stato);
    display2.setCursor(80, 95);
    display2.print(Stato);

    pStato = Stato;
    displayTime = millis();
  }
}


versione che in teoria dovrebbe essere migliore
Code: [Select]

#define sclk 15
#define mosi 16
#define cs1 4
#define dc1 5
#define rst1 6
#define cs2 7
#define dc2 8
#define rst2 9

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>

Adafruit_ST7735 display1 = Adafruit_ST7735(cs1, dc1, rst1);
Adafruit_ST7735 display2 = Adafruit_ST7735(cs2, dc2, rst2);

unsigned long displayTime = millis();

byte Stato;
byte pStato;

void setup() {
  pinMode(sclk, OUTPUT);
  pinMode(mosi, OUTPUT);
  pinMode(cs1, OUTPUT);
  pinMode(dc1, OUTPUT);
  pinMode(rst1, OUTPUT);
  display1.initR(INITR_BLACKTAB);
  display1.fillScreen(ST7735_BLACK);
  display1.setTextSize(3);
  display2.initR(INITR_BLACKTAB);
  display2.fillScreen(ST7735_BLACK);
  display2.setTextSize(3);
}

void loop() {
  if (millis() - displayTime >= 1000) {
    Stato++;
    if (Stato > 9){Stato = 0;}

    delay(20); //tanto per simulare un'altra manciata di operazioni

    display1.setTextColor(ST7735_BLACK);
    display1.setCursor(20, 35);
    display1.print(pStato);
    display1.setCursor(20, 65);
    display1.print(pStato);
    display1.setCursor(20, 95);
    display1.print(pStato);
    display1.setCursor(50, 35);
    display1.print(pStato);
    display1.setCursor(50, 65);
    display1.print(pStato);
    display1.setCursor(50, 95);
    display1.print(pStato);
    display1.setCursor(80, 35);
    display1.print(pStato);
    display1.setCursor(80, 65);
    display1.print(pStato);
    display1.setCursor(80, 95);
    display1.print(pStato);

    display1.setTextColor(ST7735_WHITE);
    display1.setCursor(20, 35);
    display1.print(Stato);
    display1.setCursor(20, 65);
    display1.print(Stato);
    display1.setCursor(20, 95);
    display1.print(Stato);
    display1.setCursor(50, 35);
    display1.print(Stato);
    display1.setCursor(50, 65);
    display1.print(Stato);
    display1.setCursor(50, 95);
    display1.print(Stato);
    display1.setCursor(80, 35);
    display1.print(Stato);
    display1.setCursor(80, 65);
    display1.print(Stato);
    display1.setCursor(80, 95);
    display1.print(Stato);

    display2.setTextColor(ST7735_BLACK);
    display2.setCursor(20, 35);
    display2.print(pStato);
    display2.setCursor(20, 65);
    display2.print(pStato);
    display2.setCursor(20, 95);
    display2.print(pStato);
    display2.setCursor(50, 35);
    display2.print(pStato);
    display2.setCursor(50, 65);
    display2.print(pStato);
    display2.setCursor(50, 95);
    display2.print(pStato);
    display2.setCursor(80, 35);
    display2.print(pStato);
    display2.setCursor(80, 65);
    display2.print(pStato);
    display2.setCursor(80, 95);
    display2.print(pStato);

    display2.setTextColor(ST7735_WHITE);
    display2.setCursor(20, 35);
    display2.print(Stato);
    display2.setCursor(20, 65);
    display2.print(Stato);
    display2.setCursor(20, 95);
    display2.print(Stato);
    display2.setCursor(50, 35);
    display2.print(Stato);
    display2.setCursor(50, 65);
    display2.print(Stato);
    display2.setCursor(50, 95);
    display2.print(Stato);
    display2.setCursor(80, 35);
    display2.print(Stato);
    display2.setCursor(80, 65);
    display2.print(Stato);
    display2.setCursor(80, 95);
    display2.print(Stato);

    pStato = Stato;
    displayTime = millis();
  }
}
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jul 01, 2018, 05:02 pm
E' decisamente meglio che con i flash neri :D

Pero' prova a cambiare l'ordine di invio dei comandi, per ridurre ancora di piu il tempo morto (tu nel tuo sketch prima scrivi in nero entrambi i display, poi fai alcune altre operazioni, poi scrivi in bianco entrambi i display ... con un solo numero probabilmente non si nota molto, ma se dovessi aggiornare piu roba, tutte le operazioni che fai fra le scritture in nero e le riscritture in bianco ti allungherebbero il tempo in cui rimane il nero, rendendo piu evidenti i flash ed i cambiamenti di cifra ...

vorrei provare a scriverti una cosa in due modi diversi per farti provare se ne hai voglia, ma mi serve sapere su quel display quanti caratteri ci puoi far stare ... o per essere piu precisi, quanti pixel in altezza tiene via un carattere, e qual'e' nel setcursor l'asse verticale (immagino il secondo, 65, giusto ?)
Decisamente si :D Io ho messo così l'ordine dei comandi non so bene per quale motivo, ma mi sembrava giusto prima cancellare tutto del clock precedente, fare le operazioni e poi scrivere. Buono a sapersi anche questo, per ottimizzare tutto.

Quanti pixel in altezza non lo so, un po' perché i pixel sono piccoli, un po' perché non so se i pixel neri fanno parte della stringa oppure no.

setcursor(orizzontale, verticale);

128x160 pixel

Più tardi provo i due sketch

EDIT:

Primo sketch (peggiore):
https://youtu.be/az7yQFbsLJ8 (https://youtu.be/az7yQFbsLJ8)

Secondo sketch (migliore):
https://youtu.be/_7M9ueu6YLw (https://youtu.be/_7M9ueu6YLw)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Jul 01, 2018, 07:09 pm
Come vedi, cambia il risultato anche solo mandando gli stessi comandi con sequenza diversa (anche se non so perche' scrive solo 6 cifre, io ne avevo inserite 9 ... magari ho semplicemente sbagliato il set del punto di start) ... ogni volta che scrivi una nuova cifra, il ritardo fra la cancellazione e la scrittura deve essere il piu breve possibile, per ridurre al massimo il flickering (sfarfallio) ...

Il risultato migliore credo lo si otterrebbe addirittura facendo ogni singola scrittura subito dopo la cancellazione, ma comporterebbe un sacco di setcolor ... a meno di non provare a fare un'altra cosa diversa, ma anche qui, serve vedere nella pratica il risultato finale ... voglio dire, tu hai, se non sbaglio, la necessita' di scrivere 4 gruppi di valori, uno per ogni traccia, giusto ?

Si potrebbe provare a creare 4 funzioni (funzioni a cui, oviamente, tu possa passare dei valori dallo sketch), una per ogni gruppo di valori, ognuna ovviamente con gia le posizioni delle cifre inserite, che scrivano sul display SOLO nel momento in cui vengono richiamate, e SOLO le cifre del proprio gruppo ... ed ovviamente lo sketch poi le richiamera' SOLO nel momento in cui uno di questi valori cambia ... oppure in sequenza, a tempi fissi, tipo aggiornare le scritte ogni mezzo secondo, dovrebbe essere piu che sufficente ...

Come struttura dovrebbero essere il piu "dirette" e semplici possibile ... e contenere solo i comandi necessari a cancellare la cifra in nero e riscriverla subito dopo in bianco, senza altre istruzioni in mezzo ... ad esempio, se un gruppo contiene 2 valori, se li devi cambiare, tu mandi alla funzione sia i vecchi che i nuovi valori ... in modo che la funzione che aggiorna le scritte non faccia "niente altro" che quello, il resto lo deve fare lo sketch all'esterno ...

cosi una funzione che stampa due valori, dovrebbe ricevere 4 variabili, le 2 con il vecchio valore e le 2 con il nuovo (diciamo ad esempio old1, new1, old2, new2 ... e limitarsi a fare

setcolor nero
setcursor posizione 1
stampa old1
setcursor posizione 2
stampa old2
setcolor bianco
setcursor posizione 1
stampa new1
setcursor posizione 2
stampa new2

e "niente altro", l'impostazione old1=new1 prima di cambiare new1, eccetera (ed ovviamente "qualsiasi" altra cosa) la deve fare lo sketch "fuori" dalle funzioni, prima di inviargli i dati ... credo questo sia il sistema piu semplice per avere cambi di cifre piu fluidi senza troppi casini ... altri non me ne vengono in mente ...

 

 
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jul 01, 2018, 07:39 pm
Forse adesso ho capito qual è il mio problema:

Guarda lo sketch che ho condiviso e cerca di seguirmi. Io ho fatto una funzione per ogni cosa nello schermo che si deve aggiornare "quando voglio io". Per esempio il nome delle piste ha una funzione a sè (e una funzione gemella per la cancellazione) e viene cancellata alla modalità 4 mentre viene scritta solamente alla modalità 1, quindi teoricamente una sola volta, ma non è così ma lo spiego meglio dopo.

Mentre i caratteri "variabili" vengono scritti e cancellati ogni volta. In questo modo non ho bisogno di trascrivere il valore precedente di una variabile in maniera tale da cancellarla se cambia. Da un certo punto di vista aumenterebbe la velocità, cancellando "solo se serve" ma in realtà i dati della tensione istantanea e della corrente istantanea si devono aggiornare solo nel momento in cui ho una "media" nuova. E spero sia molto veloce. Gli altri valori (v max, a max, errori) non li ho ottimizzati, anche se sono pochi pixel.

Adesso riprendo il discorso di prima: io come ho detto stampo le cose in base alla modalità e le cancello. Solo che stampando non lo faccio una sola volta ma lo faccio ad ogni ciclo. Anche per questo credo ci siano i rallentamenti.
Quindi provo a farmi venire un'idea (per esempio utilizzare le variabili booleane cleanX che già utilizzo per cancellare quando cambio modalità le cose che non voglio vengano visualizzate dalla modalità precedente) e carico.

In questo periodo sono un po' incasinato con gli esami e delle volte non rispondo dopo qualche giorno. Comunque non ho molto tempo da dedicarci.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jul 03, 2018, 06:11 pm
Aggiornamenti:

in velocità ho modificato il programma in modo che le cose "statiche" vengano scritte una sola volta, mentre le cose "dinamiche" vengono prima cancellate e poi scritte ad ogni "clock". Non ho ancora fatto nessun tipo di Flag per i valori "massimi" (siccome già faccio una funzione per salvare i massimi se cambiano rispetto al precedente, tanto vale metterci dentro una flag che diventa true quando cambia il valore. quando cambia il valore cancello il precedente e scrivo il nuovo valore, scrivendo il nuovo valore al posto del precedente. in questo modo ottimizzo anche quella scrittura. idem per il conteggio degli errori) mentre per le letture di tensione e corrente non posso fare molto secondo me, dal momento che cambiano in continuazione.

Sono riuscito ad avere un refresh molto più veloce (sotto i 250 millisecondi non vedo nessun cambiamento però) e soprattutto il refresh non è a caso come prima ma segue la velocità che imposto io.

Per quel che riguarda la funzione che gestisce il dht11, continua a non funzionare, stampandomi valori 0.

Come vedete ho qualche problema nella cancellazione completa dei valori sullo schermo, credo sia dovuto all'ordine delle funzioni che chiamo. La funzione che gestisce le modalità e cosa stampare e quando si chiama state() ed è vicino al void setup().

Code: [Select]

bool clean0;
bool clean1;
bool clean2;
bool clean3 = true;

void state(){
  switch (mode){
    case 0:
   
      if (clean3){
        clean3 = false;
        print_T_Static_Clean();
        print_H_Static_Clean();
        print_T_Clean();
        print_H_Clean();
        print_CH();
        print_V_Static();
        print_V_Max_Static();
      }
     
      if (varSelFlag){
        print_VarSel_Clean();
        print_VarSel();
      }
     
      print_V_Clean();
      print_V();
      print_V_Max_Clean();
      print_V_Max();
      reset_V_Max();
      clean0 = true;
      break;
    case 1:
   
      if (clean0) {
        clean0 = false;
        print_V_Static_Clean();
        print_V_Max_Static_Clean();
        print_V_Clean();
        print_V_Max_Clean();
        print_A_Static();
        print_A_Max_Static();
      }

      if (varSelFlag){
        print_VarSel_Clean();
        print_VarSel();
      }
     
      print_A_Clean();
      print_A();
      print_A_Max_Clean();
      print_A_Max();
      print_VarSel();
      reset_A_Max();
      clean1 = true;
      break;
    case 2:
   
      if (clean1) {
        clean1 = false;
        print_A_Static_Clean();
        print_A_Max_Static_Clean();
        print_A_Clean();
        print_A_Max_Clean();
        print_E_Static();
      }

      if (varSelFlag){
        print_VarSel_Clean();
        print_VarSel();
      }
     
      print_E_Clean();
      print_E();
      print_VarSel();
      reset_Error();
      clean2 = true;
      break;
    case 3:
   
      if(clean2){
        clean2 = false;
        print_CH_Clean();
        print_E_Static_Clean();
        print_E_Clean();
        print_VarSel_Clean();
        print_T_Static();
        print_H_Static();
      }
     
      print_T_Clean();
      print_T();
      print_H_Clean();
      print_H();
      clean3 = true;
      break;
  }
}


https://www.youtube.com/watch?v=HOyslvFBjY8 (https://www.youtube.com/watch?v=HOyslvFBjY8)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jul 04, 2018, 10:21 pm
Con questo codice sono riuscito ad avere gli aggiornamenti ogni 100 millisecondi.
Praticamente adesso ad ogni clock stampo e cancello le tensioni e le correnti, mentre la X per selezionare la pista e la tensione massima e la corrente massima vengono stampate e cancellate solamente quando cambiano, idem il numero degli errori.

Ho però alcuni problemi nella cancellazione dei valori, cosa che non posso prevedere nel momento in cui faccio il programma ma non sono a casa per collegare il circuito e provare.

Allego l'ultimo programma aggiornato così da vedere la funzione di gestione dei display e le nuove funzioni per quanto riguarda la stampa.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jul 06, 2018, 06:42 pm
Sistemato anche la parte di pulizia, adesso funziona perfettamente.

Gli unici problemi sono: flickering diminuito ma sempre presente, non mi legge il sensore DHT11.

Credo che più ottimizzato di così non si possa fare.

Allego video e programma del video.

https://youtu.be/f6mji4VyTyo (https://youtu.be/f6mji4VyTyo)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Jul 07, 2018, 04:06 pm
Purtropp oquei display non sono veloci piu di tanto, quindi un minimo di flickering lo avrai sempre ... puoi renderlo un po meno evidente facendo 4 aggiornamenti al secondo soltanto, se ti bastano ... e forse ridurlo leggermente anche facendo le scritture subito dopo le cancellazioni in una sola routine che "aggiorna" invece che in due separate, una che prima cancella tutto e l'altra che poi riscrive tutto ...

Voglio dire ... tu adesso hai per ogni impostazione una funzione che cancella tutti e 4 i display (le "clean"), ed un'altra che ristampa i nuovi valori, e le richiami in sequenza ogni volta che aggiorni questi valori ... questo significa che prima scrivi tutte e 4 le posizioni in nero, poi le riscrivi con i loro colori, per cui il tempo in cui rimane il nero e' leggermente lungo ...

Potresti provare, giusto per vedere se ti migliora la cosa, a tenere le "clean" per quando devi semplicemente cancellare, ma scrivere una nuova funzione per la stampa, fatta in questo modo:

colore nero
set posizione 1
stampa vecchio valore 1
colore verde
set posizione 1
stampa nuovo valore 1
colore nero
set posizione 2
stampa vecchio valore 2
colore giallo
set posizione 2
stampa nuovo valore 2
...

e cosi via ... cioe', in una sola funzione, fare sia la cancellazione del vecchio valore, che la riscrittura (immediatamente dopo la cancellazione) del nuovo, per ogni posizione ... e poi, quando devi aggiornare il valore, invece di richiamare prima la funzione "clean" e poi quella che stampa, richiami solo questa (chiamala "aggiorna", per non confonderla) ... se non ti velocizza il cambio riducendo lo sfarfallio in questo modo, non so proprio come altro si possa fare ...

Poi probabilmente eliminarlo del tutto sara' impossibile, e' gia un po lento di suo il display ... al masismo, lo riduce ... ma di quanto possa ridurlo, senza provare non lo so ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jul 07, 2018, 08:22 pm
Appena possibile provo. Però credo anche io che sono arrivato alla frutta in quanto a ottimizzazione. Si beh potrei riscrivere anche i 4 valori soltanto se vengono aggiornati rispetto al precedente... ma siccome varieranno sempre secondo me non ha molto senso.

Quello che mi preoccupa invece è la sincronizzazione con altre impostazioni, vedi per esempio la libreria che mi legge il DHT11. Non riesco proprio a leggere la temperatura!

Ho già provato a inserire tutto questo codice di gestione display all'interno del programma completo con le letture... il risultato non è compatibile con dei tempi buoni, ma qua ci sono le funzioni di acquisizione che mi rallentano il tutto. Ma di questo ne parleremo quando sarà risolto il capitolo display e sensore DHT11.

Nel frattempo provo quello che dici tu e vediamo.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jul 08, 2018, 05:55 pm
In questi giorni è venuto un temporale con fulmini molto vicini e mi sono reso conto che l'alimentatore a 12 v che utilizzavo per fare le prove è saltato. Per fare le prove però tenevo sempre il connettore a coccodrillo collegato al negativo, collegando il positivo al bisogno. Cambiato l'alimentatore il circuito ha ripreso a funzionare, solo che mi sono cambiati i valori di lettura per la "tastiera", cioè prima i due bottoni uno portava a 0 e l'altro portava a 127, con a vuoto 255. Adesso il tasto "medio" (che è il reset) mi porta i valori a 114, facendomi sudare freddo all'inizio per capire dove fosse l'errore. Può essere qualcosa di legato alla scarica atmosferica? Considerando che il "salvavita" (ovvero gli interruttori magnetotermici) sono giustamente saltati? Ad ogni modo amen.

Ho provato con la tua variante etem. Il flickering si è notevolmente ridotto! E devo dire di essere arrivato ad un risultato più che soddisfacente. La parte però relativa al DHT11 continua a non funzionare.

Io direi che dome display ci siamo.

https://youtu.be/ngYXfsU_UBM (https://youtu.be/ngYXfsU_UBM)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Jul 09, 2018, 08:44 am
Mi sa che piu di cosi lo sfarfallio non si possa ridurre, con quel tipo di display ... o almeno, a me non viene in mente nessun altro possibile sistema ... ma mi pare accettabile adesso ;)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jul 09, 2018, 10:15 am
Sisi è accettabile assolutamente!

Adesso il problema per me è capire come mai non funziona il DHT11. Se chiamo la funzione singolarmente funziona però.

Code: [Select]

#include <dht11.h>                                    /* libreria per DHT11 */

#define DHT11Pin 14                                   /* input digitale sensore temperatura e umidità */

dht11 DHT11;                                          /* creazione oggetto DHT11 per la libreria DHT11 di gestione del sensore */

float hum = 0.0;                                      /* variabile a virgola mobile per l'umidità, valore in percentuale */
float temp = 0.0;                                     /* variabile a virgola mobile per la temperatura, valore in gradi centigradi */
float preHum = 0.0;                                   /*  */
float preTemp = 0.0;                                  /*  */

void meteo(){
  byte chk = DHT11.read(DHT11Pin);                    /* leggi il DHT11 dal pin */
  hum = DHT11.humidity;                               /* scrivi la variabile dalla funzione */
  temp = DHT11.temperature;                           /* scrivi la variabile dalla funzione */
}


Questo codice funziona perché l'avevo provato sul codice di test dell'acquisizione dei convertitori AD e mi segnava la temperatura e l'umidità corretti.
Credo sia un problema di sincronia con tutta la gestione dei display, però non so come sistemare il problema. La funzione che mi gestisce i pulsanti e il "long press" invece non ha problemi.
Vorrei sistemare questo prima di passare allo step successivo che sarà quello di inserire l'acquisizione.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Jul 09, 2018, 07:01 pm
... non e' che lo leggi troppo di frequente ? ...

Considera che temperatura, ma soprattutto umidita', variano in genere piuttosto lentamente, per cui salvo in caso di esperimenti "da laboratorio", continuare a fare letture del sensore non avrebbe molto senso ... anche fare solo una lettura ogni 5 secondi o piu, o un tempo simile, puo essere piu che sufficente ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jul 09, 2018, 08:29 pm
Ma magari anche si ma la libreria, da quello che ho capito leggendo le funzioni, dovrebbe fare una lettura al secondo. Credo comunque che se facessi una lettura ogni secondo o ogni 5 secondi non cambierebbe nulla e non riuscirei comunque a leggere.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Jul 10, 2018, 09:19 am
Pero' se con solo il DHT te lo legge e ti stampa i valori, la libreria sembrerebbe funzionante ... bisognerebbe vedere se c'e' qualcos'altro che va in conflitto aggiungendo il resto ... oppure se e' lei che richiamandola una volta ogni giro del loop come fai adesso, si pianta ... prova a mettere un richiamo ogni 5 secondi a meteo() (con millis) nel loop invece di richiamarla in continuazione  ... non so, sto cercando di indovinare perche' i DHT11 io non li uso mai ... ed altro non mi viene in mente ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jul 10, 2018, 10:20 am
Ho provato a richiamarla ogni 5 secondi ed ho provato a togliere la parte nel loop che richiama con millis() la funzione di gestione dei display, comunque non funziona.

Mentre nella versione di codice dove ho soltanto la lettura dei convertitori senza la parte di display il DHT11 funziona. Provo a togliere riga per riga le dichiarazioni per la gestione dei display.

EDIT: ho provato ad eliminare le funzioni di stampa sui display e il DHT11 funziona, pur mantenendo l'intestazione e la creazione degli oggetti "display", cancellando anche la funzione state() che mi gestisce i display e cosa viene scritto.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Jul 10, 2018, 10:49 am
Ok che non funziona,
Ma cosa ti dice chk?
Timeout o checksum?
Che versione di libreria usi? Ce ne sono varie
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jul 10, 2018, 12:21 pm
Io sto utilizzando la libreria scritta da Adafruit: https://github.com/adafruit/DHT-sensor-library (https://github.com/adafruit/DHT-sensor-library)

Stampando CHK, quando funziona mi restituisce il valore 255, quando non funziona restituisce 254. Ora guardo un po' la libreria per capire cosa voglia dire.

Comunque mi sono reso conto che ogni cosa che stampo e ogni riferimento al display (per esempio le impostazioni in setup() per l'inizializzazione dei display e la funzione state() in loop() che gestisce le 4 modalità e cosa viene stampato sul display) non mi fa funzionare il DHT. Commentate quelle 6 righe in setup() e loop() non ho problemi.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Jul 10, 2018, 01:10 pm
Sbaglio io oppure gli esempi  d'uso  di quella libreria sono diversi da come la usi tu?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jul 10, 2018, 02:15 pm
Si hai ragione, e sinceramente non mi ricordo da dove li ho pescati. Però siccome funzionavano (e funzionano in determinate condizioni) non mi ero posto il problema.

Ora sto provando questo codice e funziona, ma non funziona se contemporaneamente faccio funzionare i display:

Code: [Select]

unsigned long dhtTime = millis();
#define dhtDelay 5000

#include "DHT.h"

#define DHTPin 14
#define DHTType DHT11

DHT dht(DHTPin, DHTType);

float temp;
float hum;

void meteo(){
  temp = dht.readTemperature();
  hum = dht.readHumidity();
}

void setup() {
  Serial.begin(9600);
  dht.begin();
  pinMode(DHTPin, INPUT);
}

void loop() {
  if (millis() - dhtTime > dhtDelay) {
    dhtTime = millis();
    meteo();
    Serial.print("Temperatura: "); Serial.print(temp, 1); Serial.print(" C"); Serial.print(" Umidità: "); Serial.print(hum, 1); Serial.println(" %");
  }
  if (isnan(hum) || isnan(temp)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
}
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Jul 10, 2018, 02:34 pm
Cioè esattamente cosa fa?
Non compila, ti stampa il messaggio di errore, oppure stampa valori a caso?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jul 10, 2018, 02:39 pm
Scusami hai ragione. Stampa il messaggio d'errore.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Jul 10, 2018, 02:55 pm
Perché fai la pinmode?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jul 10, 2018, 02:57 pm
Pensavo fosse meglio farlo. Credo comunque sia intrinseco alla libreria.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Jul 10, 2018, 03:00 pm
Sì, ma è input_pullup, e la fa la begin()
tu alla riga dopo la stroi
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Jul 10, 2018, 03:17 pm
Ma tu usi il pin 14 per il termometro?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jul 10, 2018, 03:18 pm
Anche togliendo quella riga il problema non cambia comunque.

Si, il pin 14 dell'Arduino Pro Micro che ha chip ATMega32u4
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Jul 10, 2018, 03:21 pm
Che è MISO, occupato dalla SPI
spostalo!
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jul 10, 2018, 05:34 pm
Errore da novizio! Per questo motivo scrivo molto nel forum :D

Grazie mille davvero!!

Adesso risolto anche questo problema volevo cercare un modo per snellire e cancellare le tante funzioni che ho creato per la stampa attraverso l'uso di funzioni parametriche. Vediamo che cosa riesco a fare.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Jul 10, 2018, 05:50 pm
Te l'avevo detto che qualcuno piu "softwarista" avrebbe probabilmente trovato il problema meglio di me ;)

... snellire e cancellare  ...
Solo come suggerimento ... quando cancelli tutto per passare a finestre completamente diverse, che dovresti comunque riscrivere (tipo, quando fai impostazioni o selezioni), invece di usare le varie funzioni "clear", fai semplicemente il clear dell'intero lcd ... poi al massimo ristampi una sola volta le parti statiche ... in questo modo, sara' un po piu lento durante i passaggi di schermata, ma puoi eliminare tutte le varie funzioni "clear" dedicate (tanto adesso la cancellazione delle scritte durante il funzionamento normale la fai con l'ultimo sistema, dentro alle funzioni di scrittura, giusto ?) ... ;)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jul 10, 2018, 06:03 pm
Io per le funzioni "clear" avevo in mente un'altra cosa: tengo la funzione generale e inserisco come argomento il colore, che per le funzioni clear sarà il nero.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jul 17, 2018, 07:11 pm
Buonasera a tutti!

Sotto consiglio di Silente sono passato a scrivere le funzioni inserendo i parametri che mi interessavano, generalizzando in questo modo le funzioni ed utilizzandone una per fare 4 stampe diverse. Che dire, il risultato è strepitoso perché sono passato dalle 1000 righe alle 500.

Oltretutto sono riuscito a capire come dare per parametro un oggetto (in questo caso i display) e sono riuscito a fare le stampe prima su un solo display e poi sull'altro. Devo dire che non cambia molto per quel che riguarda il flickering.

Ho aperto un topic nella sezione software per avere alcune delucidazioni appunto su come inserire alcuni parametri ed ho scoperto altre cose molto utili per far si che i propri codici funzionino :D

Dopo aver fatto tutti questi passi da gigante posso dire di aver completato la parte di stampa sui display e di averla ottimizzata al massimo. Se avete altre idee vi prego parlatemene :D

Visto che non vedevo l'ora di cominciare a misurare qualcosa, ho unito tutto (visto che funziona) al programma principale che svolge le letture e sono riuscito a farlo funzionare facendo qualche aggiustaggio.
Per il momento sto facendo le letture senza nessun tipo di media, così da velocizzare le letture.
Sembra funzionare!

Ho due problemi però:

-1: la variazione dei valori non viene cancellata nella maniera corretta;
-2: la stampa del valore massimo che cambia avviene soltanto nel canale in quel momento selezionato da varSel. La stampa però, perché invece il massimo viene salvato su tutti i canali in maniera diversa. Quindi sostanzialmente quando mi muovo con il tasto che cambia varSel mi si "aggiorna" la stampata del valore massimo.

Allego il codice, vorrei fare un video ma in questo momento non riesco.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Aug 10, 2018, 02:41 pm
Buongiorno a tutti!
Dopo un po' di tempo riscrivo su questo topic. Sono riuscito a sistemare il codice e a migliorarlo ancora un pochino su certi aspetti. Adesso funziona tutto a dovere. Ho provato la lettura delle tensioni ed è corretta e abbastanza veloce. La parte di rilevatori di corrente non l'ho ancora finita perché non li abbiamo ancora installati ma ho provato "al banco" gli ACS, 3 su 4 hanno caratteristiche corrette mentre uno solo ha una sensitivity di 0.40 mV/A anziché 0.30 mV/A. Non si sa perché ma rimane lineare nella curva. Vabbé vuol dire che ne terrò conto nel software.
Nel frattempo mi è arrivata la scheda dalla Cina che ho già stagnato (mi son dimenticato di comprare solamente una morsettiera da stampato a 45° da 2 poli sennò sarebbe già finito), ho fatto la plancia del mobiletto e appena posso farò il mobiletto completo con una stampante 3D.
Per il momento funziona tutto e sono molto soddisfatto. Volevo ringraziarvi.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Oct 23, 2018, 12:07 pm
Buongiorno a tutti!
Finalmente ho ritrovato un po' di tempo per concludere questo progetto. Purtroppo però ho cantato vittoria troppo presto.

Ho installato tutto sulla scheda come sulla breadboard, ho però scambiato i pin RST CS e D/C dei due display, sempre mantenendoli digitali ma non MOSI, MISO e SCK. Questo per non incrociare i cavi che ho saldato al connettore per i display. Questa è l'unica modifica che ho fatto e naturalmente ho cambiato i #define del codice per quanto riguarda questi pin. Ho quindi provato per la prima volta la scheda arrivata dalla Cina.

I display si accendono ma viene stampato il codice presente nella funzione "setup" di Arduino, mentre il "loop" non parte proprio. Ho fatto un debug semplicemente inserendo un Serial.println("Pippo"); nel loop ma non c'è nessun tipo di comunicazione.

Mi sembra molto strana questa cosa. Ho provato varie schede Arduino funzionanti e mi danno tutte lo stesso problema, se però tengo la scheda "volante" il loop funziona regolarmente dal momento che leggo su seriale "Pippo".

Potrei aver cambiato il pin sul quale porto i 5v del regolatore di tensione rispetto alla breadboard, non ricordo, ma anziché portare la tensione a monte del regolatore la porto a valle. Però mi sembra comunque strano che soltanto il "loop" sia bloccato. Magari devo ponticellare l'alimentazione sulla scheda Arduino. Non ricordo, devo tornare indietro nel topic a rileggere il discorso, è passato un po' di tempo.

Escludo comunque un problema nel software, il problema è della scheda che ho fatto io sicuramente. Bisogna "soltanto" trovare dove! Ed avere un po' di tempo per mettersi sotto e trovarlo.

Per il resto sto disegnando il mobiletto in SolidWorks per farmelo stampare in 3D, viene carino.

Intanto assieme a MightyPegas stiamo vedendo di migliorare un pochino la libreria Adafruit per i convertitori analogico digitali ADC1015 / ADC1115. Praticamente con gli ADC1115 è possibile avere un campionamento più veloce (anche per i 1015) cambiando alcuni #define, li ho inseriti quindi nella libreria .h ma questi #define sono "bloccati" nella libreria .cpp. Vorrei fare qualcosa di "generico", aggiungendo possibilità alla libreria senza riscriverla. Mi spiego meglio magari con il codice.

Questo è il pacco di #define relativi alla velocità di campionamento nel file .h:

Code: [Select]

#define ADS1015_REG_CONFIG_DR_MASK      (0x00E0) 
#define ADS1015_REG_CONFIG_DR_128SPS    (0x0000)  // 128 samples per second
#define ADS1015_REG_CONFIG_DR_250SPS    (0x0020)  // 250 samples per second
#define ADS1015_REG_CONFIG_DR_490SPS    (0x0040)  // 490 samples per second
#define ADS1015_REG_CONFIG_DR_920SPS    (0x0060)  // 920 samples per second
#define ADS1015_REG_CONFIG_DR_1600SPS   (0x0080)  // 1600 samples per second (default)
#define ADS1015_REG_CONFIG_DR_2400SPS   (0x00A0)  // 2400 samples per second
#define ADS1015_REG_CONFIG_DR_3300SPS   (0x00C0)  // 3300 samples per second


Ai quali ho aggiunto:

Code: [Select]

#define ADS1115_REG_CONFIG_DR_MASK      (0x00E0)
#define ADS1115_REG_CONFIG_DR_8SPS      (0x0000)  // 8 samples per second
#define ADS1115_REG_CONFIG_DR_16SPS    (0x0020)  // 16 samples per second
#define ADS1115_REG_CONFIG_DR_32SPS    (0x0040)  // 32 samples per second
#define ADS1115_REG_CONFIG_DR_64SPS    (0x0060)  // 64 samples per second
#define ADS1115_REG_CONFIG_DR_128SPS    (0x0080)  // 128 samples per second (default)
#define ADS1115_REG_CONFIG_DR_250SPS    (0x00A0)  // 250 samples per second
#define ADS1115_REG_CONFIG_DR_475SPS    (0x00C0)  // 475 samples per second
#define ADS1115_REG_CONFIG_DR_860SPS    (0x00E0)  // 860 samples per second


E fin qui tutto ok.
Nel file .cpp però tutte le funzioni hanno più o meno questa morfologia:

Code: [Select]

/**************************************************************************/
/*!
    @brief  Gets a single-ended ADC reading from the specified channel
*/
/**************************************************************************/
uint16_t Adafruit_ADS1015::readADC_SingleEnded(uint8_t channel) {
  if (channel > 3)
  {
    return 0;
  }
 
  // Start with default values
  uint16_t config = ADS1015_REG_CONFIG_CQUE_NONE    | // Disable the comparator (default val)
                    ADS1015_REG_CONFIG_CLAT_NONLAT  | // Non-latching (default val)
                    ADS1015_REG_CONFIG_CPOL_ACTVLOW | // Alert/Rdy active low   (default val)
                    ADS1015_REG_CONFIG_CMODE_TRAD   | // Traditional comparator (default val)
                    ADS1015_REG_CONFIG_DR_1600SPS   | // 1600 samples per second (default)
                    ADS1015_REG_CONFIG_MODE_SINGLE;   // Single-shot mode (default)

  // Set PGA/voltage range
  config |= m_gain;

  // Set single-ended input channel
  switch (channel)
  {
    case (0):
      config |= ADS1015_REG_CONFIG_MUX_SINGLE_0;
      break;
    case (1):
      config |= ADS1015_REG_CONFIG_MUX_SINGLE_1;
      break;
    case (2):
      config |= ADS1015_REG_CONFIG_MUX_SINGLE_2;
      break;
    case (3):
      config |= ADS1015_REG_CONFIG_MUX_SINGLE_3;
      break;
  }

  // Set 'start single-conversion' bit
  config |= ADS1015_REG_CONFIG_OS_SINGLE;

  // Write config register to the ADC
  writeRegister(m_i2cAddress, ADS1015_REG_POINTER_CONFIG, config);

  // Wait for the conversion to complete
  delay(m_conversionDelay);

  // Read the conversion results
  // Shift 12-bit results right 4 bits for the ADS1015
  return readRegister(m_i2cAddress, ADS1015_REG_POINTER_CONVERT) >> m_bitShift; 
}


Quello che vorrei fare è impostare anziché ADS1015_REG_CONFIG_DR_1600SPS la velocità che voglio io senza per forza scrivere ADS1115_REG_CONFIG_DR_860SPS nel file .cpp, rendendo valida questa libreria solo in questo caso specifico e non in "generale".

Conseguentemente ho la possibilità di variare anche il tempo di delay che aspetto per la conversione. La differenza sostanzialmente tra usare l 1015 e il 1115 è che nel primo ho un delay di 1 mS mentre nel secondo ho un delay di 8 mS. Ma con 860 SPS posso scendere a 2 mS. Anche qui, vorrei riuscire a capire come fare affinché il delay si regoli automaticamente in base alla velocità di campionamento scelta. Anche perché così ad occhio, la libreria è scritta per valori di default, mentre se cambio valori devo farlo sia per la velocità di campionamento sia per il delay.

Chiedo informazioni su come fare poiché di librerie ne so veramente poco, ed ho anche poca immaginazione derivante da poca pratica :D . Allego lo zip della libreria con il file .h al quale ho aggiunto le velocità per il 1115.

Grazie ragazzi!
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Oct 31, 2018, 08:54 am
Buongiorno a tutti!

L'Arduino continua a non far girare il "loop" e non ne so il motivo.
I 5v li porto al pin Vcc dell'Arduino Pro Micro (schema elettrico in allegato), cioè a valle del regolatore di tensione interno, esattamente come sulla breadboard, mi ritrovo però circa la stessa tensione (circa 0.1 - 0.2 V in meno) sul pin RAW che è quello in entrata al regolatore di tensione e che è alimentato dalla presa USB, che però non collego!
Sui pin digitali ed analogici mi ritrovo la tensione di alimentazione oppure delle tensioni da 1.20 V.

Non so proprio che pesci pigliare e come risolvere questo problema.
Come mai il "loop" non gira?

Ho proprio bisogno di un vostro aiuto!

Riccardo
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Etemenanki on Nov 03, 2018, 09:32 am
Le tensioni di cui parli le trovi sia con la scheda inserita nell'altra, sia con la scheda disinserita ? ... non e' che usi per sbaglio uno dei pin di comunicazione per qualcos'altro ? (non controllare solo come hardware, anche nel software) ...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: MightyPegas on Nov 05, 2018, 10:42 pm
Allora…
Ti rispondo qui nel thread perché è una cosa di interesse generale…

Ho letto delle tue ultime peripezie per quanto riguarda la grafica, l'aggiornamento dei dati e il flickering e ho guardato il source.
Da subito ho visto che, pur ottenendo il risultato voluto, sbagliavi il sistema per cancellare il contenuto precedente.
Il sistema più veloce è la fillRect che, a seconda del chip della scheda, utilizza sistemi ottimizzati per scrivere sullo schermo. Nel tuo caso purtroppo il chip non ha di queste facilitazioni, ma la fillRect rimane comunque più veloce perché non deve comporre i caratteri leggendo dalla PGM_MEM e fare una marea di moltiplicazioni per rapportare al textSize, il tutto poi in aggiunta ad un'altra conversione float->ASCII.

Poi… andando a curiosare sulla libreria gfx (io ne usavo un'altra) ho trovato questo:

Code: [Select]

    // NOTE: THERE IS NO 'BACKGROUND' COLOR OPTION ON CUSTOM FONTS.
    // THIS IS ON PURPOSE AND BY DESIGN.  The background color feature
    // has typically been used with the 'classic' font to overwrite old
    // screen contents with new data.  This ONLY works because the
    // characters are a uniform size; it's not a sensible thing to do with
    // proportionally-spaced fonts with glyphs of varying sizes (and that
    // may overlap).  To replace previously-drawn text when using a custom
    // font, use the getTextBounds() function to determine the smallest
    // rectangle encompassing a string, erase the area with fillRect(),
    // then draw new text.  This WILL infortunately 'blink' the text, but
    // is unavoidable.  Drawing 'background' pixels will NOT fix this,
    // only creates a new set of problems.  Have an idea to work around
    // this (a canvas object type for MCUs that can afford the RAM and
    // displays supporting setAddrWindow() and pushColors()), but haven't
    // implemented this yet.


In pratica usando la fonte interna della libreria a dimensione fissa (quella che usi tu se non sbaglio) la libreria già di suo cancella il contenuto precedente in quanto scrive sia il colore in primo piano (il carattere) che lo sfondo. Naturalmente se il nuovo testo risulta più corto del precedente sulla destra ti potranno rimanere uno o più caratteri.
Ad esempio
scrivi "12.34"
e poi allo stesso punto scrivi "0.00"
sullo schermo avrai "0.004"

Ma questo è un problema facilmente risolvibile in diverse maniere.
Il sistema più semplice sarebbe stato tramite la sprintf che (anche se un po' lenta) con gli opportuni parametri avrebbe provveduto a tutto, ma purtroppo la sua implementazione in AVR GCC non supporta i float (e double).
Si deve ricorrere quindi alla dtostrf che trasforma un float/double in stringa (ma senza le opzioni di allineamento della sprintf).
In pratica devi stabilire a priori il numero di cifre max (nel caso dei volt ad es. 6 caratteri: 1 per il segno, 2 per i volt, 1 per il punto e 2 decimali).
Poi con la dtostrf trasformi il float in ascii dentro un buffer e conti i caratteri del risultato
Poi o posti il testo all'interno del buffer a dx e riempi a sx con gli spazi, oppure scrivi sullo schermo n spazi (la differenza tra il num. max di cifre e quelle che hai), calcoli le nuove coordinate e fai la print.

Quando cambi schermata (ad es. dai volt agli ampere) con la fillRect cancelli le aree interessate e scrivi i nuovi valori.

E ti liberi di una marea di codice :)

Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Nov 05, 2018, 11:27 pm
Quindi il "riempiere un rettangolo" è più veloce del "coloro solo i pixel accesi in quel rettangolo" ?
Comunque la libreria di suo non cancella il testo precedente, per questo ho fatto funzioni generiche parametriche che chiamo inserendo il colore e da dove prendere i valori, così posso cancellare facilmente i caratteri.
Al momento l'unica cosa che varia velocemente e che ha un certo flickering sono i volt e gli ampere che aggiorno il più velocemente possibile. Per il resto non ho problemi. Vorrei cercare di risolvere questi problemi imprevisti, dopodiché potrei pensare ad un'ultima ottimizzazione delle stampate, così da migliorare ancor di più la visualizzazione. Grazie intanto!
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: MightyPegas on Nov 06, 2018, 12:04 am
Quindi il "riempiere un rettangolo" è più veloce del "coloro solo i pixel accesi in quel rettangolo" ?
in questo caso sì, perché ti risparmi tutto il lavoro di creazione del carattere da inviare e un'altra trasformazione float->ascii.

Poi guarda la differenza dei due loop principali della drawChar (richiamata per ogni carattere) e della fillRect (loop che nel nostro caso verrebbe eseguito 7*textSize volte)
Qualcosa mi dice che quello della fillRect sia più veloce :)
Anche perchè la stessa drawChar nel caso textSize sia maggiore di 1 richiama la fillRect per ogni punto del carattere da ingrandire...

Code: [Select]

    for(int8_t i=0; i<6; i++ ) {
      uint8_t line;
      if(i < 5) line = pgm_read_byte(font+(c*5)+i);
      else      line = 0x0;
      for(int8_t j=0; j<8; j++, line >>= 1) {
        if(line & 0x1) {
          if(size == 1) drawPixel(x+i, y+j, color);
          else          fillRect(x+(i*size), y+(j*size), size, size, color);
        } else if(bg != color) {
          if(size == 1) drawPixel(x+i, y+j, bg);
          else          fillRect(x+i*size, y+j*size, size, size, bg);
        }
      }


Code: [Select]

  for (; x0<=x1; x0++) {
    if (steep) {
      drawPixel(y0, x0, color);
    } else {
      drawPixel(x0, y0, color);
    }
    err -= dy;
    if (err < 0) {
      y0 += ystep;
      err += dx;
    }


Quote
Comunque la libreria di suo non cancella il testo precedente, per questo ho fatto funzioni generiche parametriche che chiamo inserendo il colore e da dove prendere i valori, così posso cancellare facilmente i caratteri.
strano... da quel che si vede nel loop che ho postato, lo sfondo viene scritto... a patto che il colore sia impostato diverso da quello di primo piano...

Massimo
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: MightyPegas on Nov 06, 2018, 12:17 am
Comunque la libreria di suo non cancella il testo precedente, per questo ho fatto funzioni generiche parametriche che chiamo inserendo il colore e da dove prendere i valori, così posso cancellare facilmente i caratteri.
Credo di aver scoperto il motivo...
Della setTextColor ne esistono due versioni, con uno o due parametri.
Quella che usi tu (1 parametro) imposta lo sfondo e il primo piano allo stesso colore (modalità "trasparente") e quindi ogni volta che scrivi traccia il solo carattere senza toccare lo sfondo...
Dovresti usare la versione a 2 parametri setTextColor (fgcolor, bgcolor) per impostare entrambi i colori...

Massimo
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Nov 06, 2018, 12:52 am
Usando la versione a due parametri, vado a rallentare molto la stampata? Comunque interessante, perché a questo punto tutto il lavoro di ottimizzazione del codice non mi serve più e non devo cancellare ogni volta o ad ogni cambio di pagina! Ancora meno righe e forse poso eliminare un po' di funzioni parametriche o parametri di funzione.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: MightyPegas on Nov 06, 2018, 03:04 am
Usando la versione a due parametri, vado a rallentare molto la stampata? Comunque interessante, perché a questo punto tutto il lavoro di ottimizzazione del codice non mi serve più e non devo cancellare ogni volta o ad ogni cambio di pagina! Ancora meno righe e forse poso eliminare un po' di funzioni parametriche o parametri di funzione.
Difficile a dirsi.
Prima in effetti scrivevi solo il carattere invece di tutto il quadretto che lo racchiudeva. Con questo sistema invece scriveresti molti più punti, ma faresti un solo passaggio invece di due e non dovrebbe più esserci il flickering.

Ottimizzando un po' il codice della drawChar per dimensioni >1 evitando di fargli fare call di call di call (sistema che hanno ideato per eventuale override da parte dei driver specifici dei chip ma che con il tuo display non ci sono) su 6 caratteri da scrivere a occhio si potrebbe recuperare 1 mS o più per ogni print...

Se poi fai il bravo, ti regalo un pezzetto di codice estratto dal mio display con il quale potresti ridurre tutte quelle pagine di display a poche righe ;)
Occuperesti però più ram (che in parte recupereresti non dovendo più memorizzare i valori precedenti come fai ora)

Massimo
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Nov 06, 2018, 08:30 am
Adesso più che altro devo trovare come mai ci sono questi problemi di sincronia per far funzionare tutto.
Alla fine, come uno stupido, avevo un problema con le periferiche ADC1115 che erano girate al contrario e bloccavano il loop. Girandole nella maniera corretta però funziona comunque male. Com'è possibile che ci siano questi problemi passando da breadboard a basetta finale?

https://youtu.be/XPAlHw_fqUA (https://youtu.be/XPAlHw_fqUA)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: MightyPegas on Nov 06, 2018, 03:23 pm
Adesso più che altro devo trovare come mai ci sono questi problemi di sincronia per far funzionare tutto.
Alla fine, come uno stupido, avevo un problema con le periferiche ADC1115 che erano girate al contrario e bloccavano il loop. Girandole nella maniera corretta però funziona comunque male. Com'è possibile che ci siano questi problemi passando da breadboard a basetta finale?
Bé, ma quante modifiche hai fatto sullo sketch?
Ti è rimasta una versione del programma di quando girava sulla breadboard?

Per il display, se puoi scambiare i connettori tra i due intanto puoi vedere se dipende dal display o da altro.
Se il problema si trasferisce da uno all'altro allora ricontrolla il collegamento dei segnali... Le piattine quando si saldano diventano delicate all'attaccatura sulla saldatura, si spezzano facilmente a causa delle piccole incisioni lasciate sui conduttori al momento della spellatura, e i connettori crimpati per le piattine non sono una certezza, può capitare un contatto difettoso...

Gli ADC1115 funzionano ancora entrambi?
Le sincronie se hai moduli o componenti che non rispondono correttamente è facile che vadano a pallino.

Massimo
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Nov 06, 2018, 04:04 pm
Lo sketch che girava su breadboard è quello attuale, solamente con i #define dei display cambiati e con l'aggiornamento della libreria degli ADC1115.

Gli ADC1115 funzionano entrambi.

Appena mi è possibile controllo i cavi variando i connettori.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Nov 06, 2018, 07:15 pm
Ho provato a invertire i cavi. I cavi non hanno problemi, il secondo display fa la neve. Anche se collegato da solo.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: MightyPegas on Nov 07, 2018, 12:55 pm
Ho provato a invertire i cavi. I cavi non hanno problemi, il secondo display fa la neve. Anche se collegato da solo.
Se invertendo i cavi la neve resta, sai cosa significa, vero? :(
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Nov 07, 2018, 01:01 pm
Che ho bruciato un display senza saperne il motivo?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: MightyPegas on Nov 07, 2018, 02:08 pm
Forse hai inavvertitamente provocato un corto tra un pin del display e la scheda principale spostando e poggiando il pannello, una cosa simile a quella che ti è capitata nel filmato quando ti si è bloccato tutto...
Ti conviene farti un piccolo supporto (anche di cartone ondulato) per reggere il pannello così che involontariamente non si appoggi sulla scheda principale...

Adesso che ci ripenso... stranamente quando ti si è bloccato entrambi gli schermi son diventati neri, niente più neve sul secondo...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Nov 07, 2018, 03:47 pm
... e se collego lo schermo dopo il setup iniziale lo schermo rimane bianco completamente. Questo succede con entrambi gli schermi.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 14, 2019, 02:20 am
Salve a tutti!

Dopo varie peripezie sono riuscito a fare la scatola stampata in 3D. E' venuta molto bene, anche se non ho tenuto conto di alcuni fori impossibili da raggiungere ma nulla di grave. Metterò le foto alla fine.

Ho fatto alcune modifiche al codice dal momento che i convertitori AD sono a 15 bit più il bit del segno. Questo mi portava ad avere valori strani. Ho sistemato tutto.

Il codice ora funziona, è da ottimizzare dal punto di vista dei calcoli (faccio calcoli in virgola mobile, mi piacerebbe calcolare tutto con gli interi e solo alla fine stampare il valore sullo schermo) ed è da ottimizzare dal punto di vista della gestione dei display, mi è stato consigliato di usare dei campi video, cosa che io non so proprio usare e non so nemmeno che cosa siano.

Ma il problema attuale è che i display rimangono bianchi!

Dal PCB che ho creato ho un connettore a 10 poli sul quale si chiude una piattina. La piattina poi si divide nei due display. Tra il connettore e i display c'è poco meno di 14 cm di piattina non schermata. Ma comunque i display funzionavano!

Prima che mi accadesse questo i display avevano soltanto una resistenza da 1 k Ohm tra l'uscita a 5 V di Arduino e il display. Inoltre se delle volte toccavo i contatti i display diventavano bianchi e solo con un reset potevo tornare alle condizioni iniziali. Delle volte i display divenivano bianchi anche senza toccarli.

Adesso proprio i display si accendono e rimangono bianchi.

Così ho provato a fare un partitore con 1 k Ohm in serie tra Arduino e i display e una resistenza da 1 k 8 Ohm dopo quella da 1 k Ohm ma verso GND, tra quella resistenza e i display per capirci.

Sulla breadboard provavo un solo display e funzionava, sia con la resistenza da 1 k, sia con il partitore 1 k / 1 k 8, sia con resistenza da 1 k 2 in serie (ho trovato su questo forum nella sezione inglese qualcuno che ci aveva già sbattuto la testa ed aveva messo questo valore e, non sapendo che pesci pigliare, ho provato come detto da lui). Tutto funziona su breadboard e con un solo display (non ho provato con due, ma funzionava anche con due nei primissimi tentativi) e i display non sono bruciati.

Può essere la lunghezza della piattina che mi da questi problemi? Mi sembra tutto sommato abbastanza corta per un collegamento SPI. Inoltre prima funzionava senza grandi problemi, anche se delle volte succedeva quello che ho già descritto.

Che cosa faccio?

Intanto allego l'ultima versione del software, con controllo della tensione di alimentazione.

Grazie a tutti
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Maurotec on May 14, 2019, 12:42 pm
Quote
Può essere la lunghezza della piattina che mi da questi problemi? Mi sembra tutto sommato abbastanza corta per un collegamento SPI. Inoltre prima funzionava senza grandi problemi, anche se delle volte succedeva quello che ho già descritto.
Sembrerebbe un problema di capacità distribuita, ma in tal caso abbassando la velocità di trasferimento SPI dovrebbe lavorare senza modifiche. In sostanza più velocemente transitano i dati più corto deve essere il cavo o comunque un cavo afflitto da una capacità minore.

PS: Il materiale isolante si comporta come un dielettrico (https://it.wikipedia.org/wiki/Isolante_elettrico) - Applicazioni.   

Ciao.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 17, 2019, 11:56 am
Mi sembra strano, poiché comunque prima funzionava con la stessa lunghezza.
Vorrei provare a mettere due cavi a 5 poli schermati, un cavo per display. Nel cavo faccio passare RST, DC, RS, CLCK e MISO. La calza la metto a GND lato display.

Non resta che comprare il cavo e provare
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Maurotec on May 17, 2019, 02:58 pm
Ricordi ATA 133 e il cavo necessario per collegare disco fisso al controller?


Estratto da wikipedia
Quote
Per la maggior parte della storia dell'ATA, i cavi a nastro o a fascia hanno avuto 40 conduttori, ma una versione da 80 conduttori è comparsa con l'introduzione dello standard Ultra DMA/66. Il cavo con 80 conduttori prevede un filo di messa a terra per ciascun conduttore che porta il segnale. Ciò riduce gli effetti dell'induzione elettromagnetica tra i conduttori adiacenti e permette il transfer rate (velocità di trasferimento) di 66 megabyte al secondo (MB/s), proprio del UDMA4. Le modalità ancor più veloci, UDMA5 e UDMA6 richiedono anch'esse cavi con 80 conduttori. Sebbene il numero di conduttori sia raddoppiato, il numero di pin dei connettori è rimasto lo stesso, dal momento che i connettori sono fisicamente identici.
Di recente ho letto che anche il layer pcb per la ISP andrebbe curato per massimizzare il transfer rate.

Ovviamente stiamo dando la colpa all'hardware non considerando il software, da quanto ho letto (il thread è lungo) qualche volta ti è capitato di toccare i conduttori ISP (o ricordo male) e notare il problema ai display, per questo trascuro il software per il momento.

Come dicevo riducendo la velocità di trasferimento il problema dovrebbe scomparire, ora non ho analizzato il codice e la libreria che usi per la ISP per cui non so se in poco tempo si può modificare la velocità di comunicazione.

Ciao.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 19, 2019, 03:23 pm
Nel software utilizzo le librerie:

- Wire (Originale Arduino per la connessione i2C);
- Adafruit_ADS1015 (Modificata per utilizzare gli ADS1115 con la loro velocità);
- DHT (Originale Arduino se non ricordo male);
- SPI (Originale Arduino);
- Adafruit_GFX (Originale Adafruit);
- Adafruit_ST7735 (originale Adafruit);

Ti dico la verità, non saprei dove andare a modificare la libreria SPI originale, ma a questo punto faccio una ricerca su internet e faccio un backup della libreria originale.

Io comunque vorrei ottimizzare l'hardware per quanto riguarda le connessioni, per il PCB, ho posizionato il connettore proprio accanto ad Arduino, per cui mi sento di escludere questo genere di problemi.

Pensandoci bene però, ho effettuato alcune modifiche al PCB per provare a mettere il partitore, quindi dissaldato, risaldato... insomma ho scaldato un po' la vetronite e non vorrei averla fatta diventare conduttiva. Provando la conduttività sui poli però dovrebbero essere tutti separati.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Maurotec on May 19, 2019, 07:25 pm
Mi sto documentando sulla SPI e sulle altre lib, potrebbe essere utile postare il setup() o dove inizializzi il display e tutto il resto.

Dalla lib SPI appare che è possibile modificare la velocità di trasmissione, ma il codice da leggere è quello del driver ST7735 di adafruit.

Tu sicuramente usi SPI hardware e non software che è più lento e può creare problemi, giusto?

Ciao.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 19, 2019, 09:11 pm
Si esatto, utilizzo la SPI hardware, quindi l'oggetto display che realizzo ha soltanto i 3 parametri di RST, CS, RS.

Questo è il mio setup():

Code: [Select]

void setup() {
 
  Serial.begin(9600);
 
  Vcc_Int_Setup();
 
  ads_V.begin();
  ads_V.setGain(GAIN_TWOTHIRDS);
 
  ads_A.begin();
  ads_A.setGain(GAIN_TWOTHIRDS);
 
  dht.begin();
 
  pinMode(KeyboardPin, INPUT);
 
  pinMode(cs1, OUTPUT);
  pinMode(dc1, OUTPUT);
  pinMode(rst1, OUTPUT);
  pinMode(cs2, OUTPUT);
  pinMode(dc2, OUTPUT);
  pinMode(rst2, OUTPUT);
 
  print_Header_Footer(&disp1);
  print_Header_Footer(&disp2);
 
}
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Maurotec on May 19, 2019, 11:08 pm
Tu hai tutte le lib in locale io no, seguire il codice delle lib tramite github è un incubo, comunque sono riuscito a trovare qualcosa.

Intanto tu crei istanza dei 2 display così:
Code: [Select]

Adafruit_ST7735 display1 = Adafruit_ST7735(cs1, rs1, rst1);   /* creazione oggetto display1 per la libreria Adafruit di gestione del chip del display */

Adafruit_ST7735 display2 = Adafruit_ST7735(cs2, rs2, rst2);   /* creazione oggetto display2 per la libreria Adafruit di gestione del chip del display */


Il costruttore di questa classe (Adafruit_ST7735(cs2, rs2, rst2)) si trova qui: https://github.com/adafruit/Adafruit-ST7735-Library/blob/master/Adafruit_ST7735.cpp (https://github.com/adafruit/Adafruit-ST7735-Library/blob/master/Adafruit_ST7735.cpp)

Code: [Select]

/*!
    @brief  Instantiate Adafruit ST7735 driver with default hardware SPI
    @param  cs   Chip select pin #
    @param  dc   Data/Command pin #
    @param  rst  Reset pin # (optional, pass -1 if unused)
*/
Adafruit_ST7735::Adafruit_ST7735(int8_t cs, int8_t dc, int8_t rst) :
  Adafruit_ST77xx(ST7735_TFTWIDTH_128, ST7735_TFTHEIGHT_160, cs, dc, rst) {
}



Si vede che eredita la classe Adafruit_ST77xx la quale si trova qui: https://github.com/adafruit/Adafruit-ST7735-Library/blob/master/Adafruit_ST77xx.cpp (https://github.com/adafruit/Adafruit-ST7735-Library/blob/master/Adafruit_ST77xx.cpp)

Il quale contiene questa define,
Code: [Select]

#define SPI_DEFAULT_FREQ 16000000 ///< Default SPI data clock frequency


Chi usa questa macro?

Code: [Select]

void Adafruit_ST77xx::begin(uint32_t freq) {
  if(!freq) {
    freq = SPI_DEFAULT_FREQ;
  }
  _freq = freq;

  invertOnCommand  = ST77XX_INVON;
  invertOffCommand = ST77XX_INVOFF;

  initSPI(freq, spiMode);
}


Se freq == 0 freq = SPI_DEFAULT_FREQ

Ora senza andare a vedere chi chiama la begin e come a te dovrebbe bastare ridurre questo valore, ma quale valore
minore di quello è corretto? Bhooo

Ci sarebbe anche da leggere questo e seguirlo: https://github.com/adafruit/Adafruit-GFX-Library/blob/master/Adafruit_SPITFT.cpp (https://github.com/adafruit/Adafruit-GFX-Library/blob/master/Adafruit_SPITFT.cpp)

Estratto,
Code: [Select]

// CLASS MEMBER FUNCTIONS --------------------------------------------------

// begin() and setAddrWindow() MUST be declared by any subclass.

/*!
    @brief  Configure microcontroller pins for TFT interfacing. Typically
            called by a subclass' begin() function.
    @param  freq  SPI frequency when using hardware SPI. If default (0)
                  is passed, will fall back on a device-specific value.
                  Value is ignored when using software SPI or parallel
                  connection.
    @param  mode  SPI mode when using hardware SPI. MUST be one of the
                  values SPI_MODE0, SPI_MODE1, SPI_MODE2 or SPI_MODE3
                  defined in SPI.h. Do NOT attempt to pass '0' for SPI_MODE0
                  and so forth...the values are NOT the same! Use ONLY the
                  defines! (Pity it's not an enum.)
    @note   Another anachronistically-named function; this is called even
            when the display connection is parallel (not SPI). Also, this
            could probably be made private...quite a few class functions
            were generously put in the public section.
*/
void Adafruit_SPITFT::initSPI(uint32_t freq, uint8_t spiMode) {

    if(!freq) freq = DEFAULT_SPI_FREQ; // If no freq specified, use default

    // Init basic control pins common to all connection types
    if(_cs >= 0) {
        pinMode(_cs, OUTPUT);
        digitalWrite(_cs, HIGH); // Deselect
    }
    pinMode(_dc, OUTPUT);
    digitalWrite(_dc, HIGH); // Data mode



che non ho riportato tutto perché molto lungo.

PS: Un tentativo con,
Code: [Select]

#define SPI_DEFAULT_FREQ 8000000 ///< Default SPI data clock frequency


lo farei per vedere cosa accade.

Ciao.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Datman on May 20, 2019, 09:55 am
Io provai ad allungare un po' la corta piattina del programmatore USB-ASP, ma dovetti rinunciare perché già poco più lunga non funzionava più. Quando sto troppo scomodo, prolungo l'USB...
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 20, 2019, 05:44 pm
PS: Un tentativo con,
Code: [Select]

#define SPI_DEFAULT_FREQ 8000000 ///< Default SPI data clock frequency


lo farei per vedere cosa accade.
Che metto nel mio software senza modificare la libreria. E lo metto nel mio software dopo aver richiamato la libreria Adafruit_ST7735.h . Corretto? Ho capito bene? Oppure devo chiamare questa #define dopo aver chiamato la libreria ma prima di chiamare tutte le altre #define che mi servono per il mio codice?

In pratica il mio blocco di inclusioni e definizioni è così composto:

Code: [Select]

#include <Wire.h>
#include <Adafruit_ADS1015.h>
#include <DHT.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>



#define VRIF32U4 1126.4                               /* 1024.0*1.1 = Tensione di riferimento per ATMega 32U4 */
#define VCC_INT_PERIOD 50
#define VCC_INT_SAMPLES 10
#define VCC_OFFSET 8                                  /* Calcolo dell'offset rispetto alla lettura con il tester. ( (Lettura ADC - Lettura Tester) / 0.023 ) con arrotondamento matematico */
#define VCC_RIFAVCC (1<<REFS0)                        /* Tensione rif presa dal pin AVcc */
#define VCC_MUXVBG 0x1E                               /* Canale 30 (Vbg) del multiplexer dell'ADC */

#define Samples 4
#define Channel 4
#define gain 0.1875                                   /* step di misura in mV del convertitore analogico - digitale */
#define coefficient 4.88                              /* coefficiente "abbondante" del partitore di tensione. la precisione nella conversione l'avrò con il potenziometro multigiro */
#define Vcc 4.9

#define KeyboardPin A0
#define selectDelay 1000
#define errorDelay 1000
#define errorDelay2 5000

#define dhtDelay 5000
#define DHTPin A1
#define DHTType DHT11

#define displayDelay 100                              /* provare ad abbassare il refresh del display */

#define rst1 4
#define cs1 5
#define dc1 6

#define rst2 7
#define cs2 8
#define dc2 9

#define SPI_DEFAULT_FREQ 8000000                      /* Abbasso la velocità del collegamento SPI */


E dopo vengono le variabili e le varie funzioni.
Chiedo perché non mi ricordo in quale discussione si parlava di dove inserire valori differenti per le librerie senza modificarle fisicamente ma "al volo". Mi sembra proprio qualche pagina fa.

Grazie intanto, a casa proverò. Io comunque vorrei modificare il collegamento hardware comunque.

Riccardo
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Maurotec on May 20, 2019, 07:20 pm
Quote
Che metto nel mio software senza modificare la libreria.
Non funziona come vuoi tu, devi per forza modificare la libreria ma ti basta copiare la riga e incollarla sotto, la prima la commenti e nella seconda ci modifichi il valore da 16000000 a 8000000.

Comunque ho dato uno sguardo al datasheet e in sostanza la velocità viene variata modificando il divisore.
Se F_CPU == 16000 0000 la mcu ha un quarzo da 16MHz, scegliendo il divisore 2 (il più basso divisore) il clock della SPI va 16MHz / 2 = 8MHz, se tu modifichi quella define poi dovrebbe andare a 4MHz.

Quote
Grazie intanto, a casa proverò. Io comunque vorrei modificare il collegamento hardware comunque.
Si ok, ma questo è solo un esperimento in mancanza di attrezzatura, a meno che tu non abbia una analizzatore di stati logici con protocollo ISP con cui analizzare cosa avviene su MOSI e CLK.

PS: ho letto da qualche parte (non ricordo più dove) che per minimizzare le capacità mettono un pull-down sui/sul pin. Valore della pull-down, su quali pin? booo.

Ciao.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 21, 2019, 12:52 am
Niente da fare, i display rimangono bianchi anche mentre faccio il caricamento del software e Arduino dovrebbe resettarsi... non è che sto sbagliando qualcosa? Ho controllato e ricontrollato l'abbinamento numero delle entrate e contatti reali sui display ma sono tutti in ordine, oltretutto non li ho cambiati dalla volta in cui funzionava tutto.

Sembra come se non inizializzasse i display. Essi rimangono bianchi, non si inizializzano e non si cancella il display. Questo sia quando carico un software sia quando accendo.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Maurotec on May 21, 2019, 04:53 pm
Quote
Sembra come se non inizializzasse i display. Essi rimangono bianchi, non si inizializzano e non si cancella il display. Questo sia quando carico un software sia quando accendo.
Aspe, senza fare modifiche al codice e all'hardware non funge più?
Oppure con la modifica che ti ho suggerito non funge?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 21, 2019, 09:38 pm
Sia prima che dopo non funziona. Ha lo stesso comportamento che ho descritto. Modificando la libreria SPI comunque non funziona.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Maurotec on May 21, 2019, 09:53 pm
Quote
Sia prima che dopo non funziona. Ha lo stesso comportamento che ho descritto. Modificando la libreria SPI comunque non funziona.
Bella rogna, ma se prima funzionava e ora no, tra prima e ora cosa è cambiato?

A questo punto proverei un solo display su una breadboard e del codice minimo per testarne il funzionamento.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 21, 2019, 11:35 pm
Eh appunto, non lo so! Ho fatto le mie prove con il codice, quando comunque era stabile con il codice i display hanno cominciato a divenire bianchi sempre più spesso finché non sono rimasti bianchi.

Pensando di averli bruciati ho provato a testarli al banco, su breadboard con resistenze in serie da 1 k Ohm sulle linee dati, un solo display e funzionava anche con il codice che avevo creato.

A questo punto, pensando di migliorare la situazione con un partitore, ho provato alcuni valori di partitori, 1k / 1k5 e 1k / 1k8 ed ho scelto 1k / 1k8 con una basetta che ho saldato sul PCB originale al posto delle resistenze.

Dopo tutti questi test ho riprovato sul mio PCB, questa volta con il partitore 1k / 1k8 ed entrambi i display e tutti e due i display rimangono bianchi.

Ho tolto così il partitore pensando fosse quello il problema ed ho messo delle resistenze da 1k2 perché ho trovato un topic di questo forum, in inglese, dove specifica che per il mio tipo di display bisogna usare una resistenza da 1k2 per le linee dati.

Facendo così comunque la situazione non cambia.

Ho scritto sul forum.

Ho cambiato quella stringa nel file della libreria SPI ma non è cambiato nulla.

Questo il cronologico :D
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Maurotec on May 21, 2019, 11:51 pm
Si più ho meno ho riletto tutta la discussione, tuttavia non so se il display in questione lavora a
3.0V 3.3V o  5V. Tu parli di resistenze sulla linea dati (MOSI e SCK) e quindi penso che il display non lavori a 5.0V, ma se è così allora anche si CS (chip select) ci vanno le resistenze.

Quote
Questo il cronologico :D
beh allora, condoglianze, sono passati a miglior vita.  :)

Servono altri due display a sto punto.

Ciao.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 22, 2019, 12:06 am
Le resistenze le ho messe su CLCK, MOSI, RST, CS, D/C. La parte logica del display è a 3.3 V, la parte di alimentazione è a 5 v. Il display ha a bordo un regolatore di tensione.

I display funzionano su breadboard e non funzionano invece sul PCB.

Se collego display nuovi mi succede la stessa cosa.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Maurotec on May 22, 2019, 12:30 am
Quote
I display funzionano su breadboard e non funzionano invece sul PCB.

Se collego display nuovi mi succede la stessa cosa.
Ok, allora su breadbord prova a scollegare un pin alla volta, quando diventa bianco lo ricolleghi e provi con gli altri.

Ci deve essere qualcosa nel PCB o nei cavetti. 

Ciao.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 24, 2019, 12:21 am
Su breadboard non ho ancora avuto il tempo di provare.
Comunque ho cambiato la piattina fissata al connettore a pressione con due cavi 5 poli schermati, schermatura al GND dei display ma non cambia nulla, i display rimangono bianchi. Ho provato con questo software minimale.

Code: [Select]

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>

#define cs2 8
#define dc2 9
#define rst2 7

Adafruit_ST7735 disp2(cs2, dc2, rst2);

void print_Header_Footer(Adafruit_ST7735 *disp) {
  disp->initR(INITR_BLACKTAB);
  disp->fillScreen(ST7735_BLACK);
  disp->setTextColor(ST7735_WHITE);
  disp->setTextSize(1);
  disp->setCursor(47, 0);
  disp->println("GOSLOT");
  disp->setCursor(8, 150);
  disp->println("vMAX 22 v aMAX 50 A");
}

void setup() {

  pinMode(cs2, OUTPUT);
  pinMode(dc2, OUTPUT);
  pinMode(rst2, OUTPUT);

  print_Header_Footer(&disp2);

}

void loop() {}
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Maurotec on May 24, 2019, 01:05 am
Due sono le cose, o sono guasti i display o è guasto arduino. Oppure peggio sono guasti sia display che arduino. Ad esempio se fosse guasta la ISP di arduino? Un display lo puoi anche provare con la SPI software, mi pare cambi il costruttore da richiamare che permette di passare come argomento i pin.

Ciao.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 24, 2019, 08:59 pm
Sono quasi certo che sia Arduino sia i display siano ok. Per togliermi ogni dubbio devo provare tutto su breadboard ma attualmente non ho molto tempo per fare queste prove. Ma le avevo già fatte, per questo sono così sicuro.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on May 30, 2019, 03:45 pm
Con un Arduino sulla breadboard ho sistemato le resistenze ed ho fatto i collegamenti con i cavi che ho cambiato (la parte finale è un connettore a 10 pin, sui quali ho saldato i contatti dei due cavi da 6 poli (di cui 5 usati) con la calza che ho messo a GND lato display).
Avendo i due display già montati sul pannello di alluminio ho usato questo collegamento mentre per l'alimentazione ho usato un'alimentazione esterna a 5 v, le masse non le ho messe in comune. Ho fatto partire un semplice script per provare un display è quel display mi ha risposto con la "neve", come nei vecchi televisori ai quali non arrivava il segnale.
A questo punto avendo visto che una comunicazione c'era anche se non era corretta (probabilmente per il discorso masse) ho voluto provare l'alimentazione con lo stesso Arduino. Ho collegato tutto ma il display è rimasto bianco, idem l'altro montato sul pannellino. Ho poi usato altri due display che avevo di scorta nuovi e anche loro sono rimasti bianchi, sia usando i cavi schermati che usando collegamenti sulla breadboard.

Mi sembra strano che 4 display che prima funzionavano alla stessa maniera adesso si siano "bruciati". Che cosa sto sbagliando?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 15, 2019, 01:16 pm
I display funzionano ancora nonostante l'aver collegato due masse differenti.

Ho provato i partitori ed ho notato che quando non alimento la scheda, le resistenze sono saldate correttamente (da GND a Vin vedo la somma delle due resistenze, poi mettendomi su Vout mi metto con l'altro puntale su Vin e GND per vedere i valori delle singole resistenze) e vedo i valori corretti mentre se alimento la scheda così non succede solo per la resistenza che va a GND da Vout del MOSI. In questo caso sembra come se la resistenza non fosse stata montata.

Così ho controllato tutte le tensioni in uscita dai partitori: tutte le tensioni dei vari RST, CS, DC sono a 3.17 v (in uscita da Arduino ho 4.93 v), la tensione in uscita da MOSI è di 4.93 v (in entrata ho 4.93 v) e la tensione in uscita da CLCK è 0.15 v (in entrata ho 0.17 v).

Ho provato a ri stagnare le resistenze ma non è cambiato nulla.

Che cosa dovrei fare?
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Maurotec on Jun 15, 2019, 03:35 pm
Quote
la tensione in uscita da MOSI è di 4.93 v (in entrata ho 4.93 v)
aiiii, dovrebbe essere attorno a 3.3V siamo lontani, questo assieme a SCK sono i canali di comunicazione da arduino verso il display.

Quote
e la tensione in uscita da CLCK è 0.15 v (in entrata ho 0.17 v).
Voglio capire se misuri con il tester la tensione di clock fornita da arduino o se hai fornito al partitore 4.93 e misurato in uscita.

Comunque li hai fatti funzionare su breadboard, sono sani?

A questo punto ti servono due circuito level shifter che puoi fare con 4 bjt NPN e un paio di resistenze, così da evitare i partitori resistivi.

Ora devo andare.

Ciao.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 16, 2019, 05:52 pm
Si so, il clock e la comunicazione MCU -> slave devono essere a 3.3 v esattamente come i pin di controllo di reset, cs e dc.

Io con Arduino fornisco 4.93 v e volevo abbassare a 3.3 v con un partitore 1k2 / 2k2.

All'inizio usavo delle resistenze da 1k, senza fare un partitore, però mi sono accorto che dal nulla i display perdevano la sincronia e rimanevano bianchi. Oltretutto ad un certo punto con questa configurazione i display mi rimanevano sempre bianchi, temevo di averli bruciati ma provandoli sulla breadboard non era così. La tensione in uscita dalla resistenza (tra i pin dei display e GND) era di 3.8 v, Arduino in uscita mi dava circa 5 v.

Così prima ho provato su breadboard diverse soluzioni, per esempio partitori di tensione con 1k / 1k8 oppure 1k / 1k5 e funzionavano. Così ho fatto una piccola basetta per sistemare al posto delle 6 resistenze a foro passante 6 partitori (12 resistenze) SMD, siccome non volevo farmi rifare dalla Cina tutta la scheda (con il senno di poi, con tutto il tempo perso, avrei potuto farmela rifare).
Tutte queste configurazioni mi davano circa 3.2 - 3.1 v e funzionavano su breaboard.
Nonostante i collegamenti giusti, i display continuavano a rimanere bianchi.

A questo punto sono tornato alla soluzione della semplice resistenza da 1k2 (siccome ho visto che tutti per questi display usano solo la resistenza per limitare la corrente) in SMD ma i display rimanevano bianchi. Oltre a questo, anziché usare la piattina a 10 cavi ho usato due cavi schermati, uno per display, saldati direttamente sul connettore e non bloccati a pressione come la piattina. Ma la situazione non è cambiata.
Le tensioni in questo caso erano le medesime in uscita da Arduino, 4.93 v in uscita da Arduino, 4.93 v tra i pin dei display e GND.

Ho provato i display su un'altra applicazione con Arduino dove uso lo stesso display (non su breadboard per evitare di rifare tutti i collegamenti) e i display non erano bruciati.

Adesso sto provando sulla basetta i partitori di tensione con resistenze in SMD 1k2 / 2k2 ma, a vuoto, le resistenze sono corrette e collegate correttamente, sotto tensione tutte le resistenze sono ok tranne il MOSI, dove ho il problema con la resistenza 2k2 che sembra non esserci (quindi non ho il partitore ed è giusto che mi arrivi al display 4.93 v, stessa tensione di uscita di Arduino).
Tutte le altre tensioni invece sembrano ok.

Mi sembra strano che a vuoto la resistenza c'è, mentre sotto carico non misuro nessuna resistenza.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Jun 16, 2019, 06:03 pm
Il concetto di misurare una resistenza sotto carico...
È assurdo

Non è nemmeno sbagliato
È avulso da ogni logica
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Maurotec on Jun 16, 2019, 07:48 pm
Quote
ok tranne il MOSI, dove ho il problema con la resistenza 2k2 che sembra non esserci
Saldata male? solo da un lato.

Ciao.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 16, 2019, 07:54 pm
Saldata male? solo da un lato.

Ciao.
Mi sembra di no. Non mi spiegherei sennò perché misurando tra GND e Vout trovo 2k2 di resistenza e misurando tra GND e Vin trovo 3k3 / 3k4. (Cioè le resistenze sono saldate e non sono bruciate)

Ho poi ripassato più volte la saldatura sia con un saldatore a punta fine per SMD, sia con l'aria calda. Il risultato è il medesimo.

Il concetto di misurare una resistenza sotto carico...
È assurdo

Non è nemmeno sbagliato
È avulso da ogni logica
Il punto non è "mi aspetto di leggere il valore della resistenza", il punto è che volevo cercare di capire come mai il partitore si comporta come se la resistenza non fosse collegata. Tutto qui.
Se tra Vout e GND misuro 4.93 v che è lo stesso valore di Vin, significa che la resistenza fra Vout e GND è aperta in qualche modo. Cosa che non mi succede invece con gli altri partitori.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Jun 16, 2019, 09:30 pm
sicuro sicuro di avere le masse in comune?
perchè quello che descrivi è semplicemnte impossibile
da qualche parte hai un errore
o hai sbagliato a misurare, o hai sbagliato a collegare
controlla la continuità tra il meno del partirore e la massa comune
comunque in prova la cosa si risolve facile facile, fai un partitore "al volo" con due resistenze normali, a cavallo sul cavo di connessione
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Sulimarco on Jun 17, 2019, 09:32 am
Quote
Se tra Vout e GND misuro 4.93 v che è lo stesso valore di Vin, significa che la resistenza fra Vout e GND è aperta in qualche modo. Cosa che non mi succede invece con gli altri partitori.
Se il partitore e' collegato correttamente significa che la tensione arriva dai display.
Prova a scollegare il filo di MOSI da Vout ai display, e misura la tensione su Vout.

Ciao
Marco
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Jun 17, 2019, 09:54 am
Ma si può vedere lo schema di sta roba?
In un formato semplice, e solo la parte che interessa, non tutto, sole connessione mcu display e alimentazioni
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 17, 2019, 07:44 pm
sicuro sicuro di avere le masse in comune?
...
controlla la continuità tra il meno del partirore e la massa comune
Si, le masse in comune le ho. Ho provato la continuità ed è ok.

Ho provato poi la continuità tra GND e Vout e tra GND e Vin.

Per i partitori che io ritengo funzionino, tra GND e Vout ho un valore di continuità di 1800, mentre tra GND e Vin ho un valore di 800.

Per il clock e il MOSI invece, tra GND e Vout ho un valore di 800 e tra GND e Vin non ho nessun valore.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 17, 2019, 07:44 pm
Se il partitore e' collegato correttamente significa che la tensione arriva dai display.
Prova a scollegare il filo di MOSI da Vout ai display, e misura la tensione su Vout.
Faccio le misure con i display scollegati.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 17, 2019, 08:00 pm
Che cosa posso utilizzare per caricare foto? Usavo photobucket tanto tempo fa ma ora ho visto che è a pagamento.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: gpb01 on Jun 17, 2019, 08:22 pm
Che cosa posso utilizzare per caricare foto?
... fino a 2KB le puoi semplicemente allegare.

Guglielmo
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 17, 2019, 08:55 pm
... fino a 2KB le puoi semplicemente allegare.

Guglielmo
Purtroppo sono fatte con il cellulare, sono un po' pesanti
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Jun 17, 2019, 10:20 pm
Per il clock e il MOSI invece, tra GND e Vout ho un valore di 800 e tra GND e Vin non ho nessun valore.
ma se pochi post fa misuravi 3k3 e 4k4?
Non confondermi le idee....
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 18, 2019, 01:09 am
Le resistenze sono 1k2 e 2k2, tra Vin e Vout ho 1k2, tra Vout e GND ho 2k2, per cui tra GND e Vin ho 1k2 + 2k2 perché sono in serie, quindi 3k4, per cui se misuro la resistenza tra GND e Vin mi ritrovo circa 3k4 (e mi ritrovo in realtà 3k3, considerando le tolleranze delle resistenze).

Misurando la continuità (non so in realtà cosa misuro, devo dire la verità. E' una modalità del multimetro dove si misura la continuità dei diodi) mi ritrovo quei valori.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Jun 18, 2019, 06:55 am
amico, scusa se te lo dico, ma è oltre un anno che seguo questo progetto, cosa ne penso lo ho scritto a maggio (del 18, però)
ma adesso che tu arrivi facendo delle misure e dando dei numeri, che per tua stessa ammissione NON sai cosa significano....
che cappero le hai fatte a fare? per confondere(ti) le idee?
se ti mettevi di buzzo buono e studiavi un po di teoria adesso avevi già finito, da un pezzo
e comunque io sto ancora aspettando di vedere quel pezzo di circuito, anche un semplice schizzo a mano

EDIT
tutto questo per dire cosa?
non ti sto facendo un pistolotto, anche se dopo, sono andato a controllare, 21 mesi di confusione un pistolotto te lo meriteresti, ma ti sto dicendo che se non ci aiuti ad aiutarti non ne usciamo, serve fare (molta) chiarezza, e quello vicino al problema sei tu, la chiarezza deve partire da te
quindi cominciamo con uno schema, in un formato leggibile, che io per lavoro non faccio PCB, quindi una foto, uno schizzo, una cosa semplice
la parola magica è: "semplice"
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Maurotec on Jun 18, 2019, 12:45 pm
Quote
E' una modalità del multimetro dove si misura la continuità dei diodi) mi ritrovo quei valori.
Ok, si ma tu perché la usi con le resistenze se si usa per diodi o bjt. :D

Aspettiamo foto per svelare il mistero.

Ciao.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 18, 2019, 09:51 pm
Ok, si ma tu perché la usi con le resistenze se si usa per diodi o bjt. :D

Aspettiamo foto per svelare il mistero.

Ciao.
Perché ho sempre pensato che così si facessero le misure di continuità, con il multimetro che "suona".

amico, scusa se te lo dico, ma è oltre un anno che seguo questo progetto, cosa ne penso lo ho scritto a maggio (del 18, però)
ma adesso che tu arrivi facendo delle misure e dando dei numeri, che per tua stessa ammissione NON sai cosa significano....
che cappero le hai fatte a fare? per confondere(ti) le idee?
se ti mettevi di buzzo buono e studiavi un po di teoria adesso avevi già finito, da un pezzo
e comunque io sto ancora aspettando di vedere quel pezzo di circuito, anche un semplice schizzo a mano

EDIT
tutto questo per dire cosa?
non ti sto facendo un pistolotto, anche se dopo, sono andato a controllare, 21 mesi di confusione un pistolotto te lo meriteresti, ma ti sto dicendo che se non ci aiuti ad aiutarti non ne usciamo, serve fare (molta) chiarezza, e quello vicino al problema sei tu, la chiarezza deve partire da te
quindi cominciamo con uno schema, in un formato leggibile, che io per lavoro non faccio PCB, quindi una foto, uno schizzo, una cosa semplice
la parola magica è: "semplice"

Hai completamente ragione, anche io mi sono perso e ripreso più e più volte. Purtroppo non riesco a dare una continuità ai lavori, sia per questioni di tempo sia per questioni di concentrazione ma voglio portarli fino infondo. Più e più volte mi son ritrovato a concentrarmi ma a trovarmi davanti dei problemi inspiegabili, accantonando momentaneamente il problema per questione di tempo.
Cerco di risolvere le cose ragionandoci su, ma diversi comportamenti "strani" non me li so spiegare e li esterno qui sul forum in cerca di aiuto.
Non so qual è il problema, so i sintomi e magari non sono chiaro nella spiegazione. In più ci metto del mio. Insomma capisco le incomprensioni e la frustrazione sia mia sia vostra.

Allego il pdf con lo schema elettrico completo.

La parte con i partitori in uscita da Arduino non è sulla board, ma su una board separata. Questo perché la scheda elettronica originale non prevedeva i partitori ma solo delle resistenze per limitare la corrente, resistenze da 1k. In quel caso, a valle delle resistenze misuravo 3.8 v mentre in uscita da Arduino avevo circa 5 v, esattamente come adesso. Ma in quel caso avevo i problemi che ho spiegato prima. Per questo motivo ho voluto provare soluzioni differenti e mi sono fatto una scheda elettronica che ho applicato al posto delle 8 resistenze, sulla quale per motivi di ingombro ho dovuto usare delle resistenze SMD. Lo schema elettrico comunque è uguale al circuito elettronico.

Credo comunque che il problema sia nell'hardware, nelle resistenze che sembrano saldate bene ma che in realtà sono saldate male, sebbene abbia cercato più volte di risaldare tutto.

Non mi resta che togliere le resistenze incriminate, pulire tutto il circuito stampato e ristagnarle con l'aria calda.

Purtroppo, anche nelle spiegazioni, ho la tendenza a complicarmi la vita. Spero di essermi chiarito almeno in parte.
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Jun 18, 2019, 11:32 pm
Allego il pdf con lo schema elettrico completo.

La parte con i partitori in uscita da Arduino non è sulla board, ma su
completo?
ma se tu stesso dici che manca proprio la parte che ci interessa.....
come potrei io capire se volutamente non mi metti lo schema...
anzi, peggio, mi metti uno schema che sai che non mi serve......... e lo  sai...
sono basito......
seriamente, ma tu vuoi essere aiutato in questo problema?
oppure stai solo passando il tuo tempo? e incidentalmente sprecando il nostro (mio)
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Jun 18, 2019, 11:36 pm
nuova scoperta, nuovo post

ma le resistenze ci sono, sullo schema....
vabbe'
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: ricki158 on Jun 19, 2019, 06:58 pm
Questa è la scheda

(https://i.ibb.co/L09CYqC/3-A7-EB6-DA-A862-469-C-9-A8-A-6-A22-F5-CF9-A3-E.jpg) (https://ibb.co/XWFzjdz)

Questo è il retro della scheda, si vede la basetta sulla quale ho saldato le resistenze SMD e dalla quale parte un cavo nero per la massa comune

(https://i.ibb.co/9v5nD8k/904118-BF-4-B3-A-4-A5-F-88-BE-96-DC4061907-D.jpg) (https://ibb.co/wLmyk0F)

Qua invece è il top, sotto l'Arduino. Originariamente c'erano le 8 resistenze, poi sostituite dagli 8 partitori con la scheda della foto precedente

(https://i.ibb.co/FnwbHv9/1-B98-E250-CC31-4299-9-D67-09049426-CFB7.jpg) (https://ibb.co/KmqjKZY)

Qua invece sono i cavi nuovi che ho fatto.

(https://i.ibb.co/tHbBXst/46-F9-D955-E6-C3-4-A99-B506-43-E89896-E699.jpg) (https://ibb.co/D174pCy)

(https://i.ibb.co/Sc6hCrk/4-F8-BAEAF-7-B34-4-E1-F-AB75-AE352-C33-F166.jpg) (https://ibb.co/PMr7HQ2)

Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Maurotec on Jun 19, 2019, 09:27 pm
Non sapendo lo schema del display non si può dire se il partitore è la soluzione compatibile.
Il MOSI è uscita che dovrebbe essere collegato al MISO presente nella scheda display, questo pin
potrebbe avere un pull-up a 3.3V.

L'ideale è usare dei level shifter attivi.

Ricorda inoltre che un diodo 1N4148 ha una caduta di tensione di circa 0.6Vdc, tre di questi in serie
0.6 * 3 = 1.8V, 5 - 1.8 = 3.2V, pertanto potresti usarli al posto delle resistenze serie.

Mantenendo gli stessi partitori e usando un diodo per uscire dal partitore elimina il rischio che il
circuito del display possa interferire con i partitori.

Capisco che hai dei vincoli legati al PCB che hai fatto produrre, ora però l'obbiettivo è di fare
funzionare correttamente i display su bread board (uno solo basta), ovviamente resistenze e diodi, bjt ecc
inseriti nella breadboard, e tutto ciò che gli colleghi deve essere tecnicamente valido e funzionante altrimenti
ci perdiamo di casa.

Tieni conto che di prototipi di PCB prima di arrivare a quello conclusivo alle volte ne servono 2, 3 ecc.

Ciao. 
Title: Re: Misuratore Ampere / Volt / Continuità per pista Slot
Post by: Standardoil on Jun 19, 2019, 09:50 pm
Non capisco, sono veramente confuso
Stando a quello che vedo non dovrebbe accadere quello che accade...

Per maurotec:
Io non consiglierei di usare leve shifter a diodi o altro, per adesso, quelli a partitore devono andare, non aggiungerei confusione
E poi MISO su MISO, MOSI su MOSI, non si incrociano. MISO sta per Master input slave output, che evidentemente è già previsto per essere tirato diritto...