Torna indietro   BaroneRosso.it - Forum Modellismo > Elettronica > Circuiti Elettronici


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 18 maggio 17, 19:34   #51 (permalink)  Top
User
 
L'avatar di aero330
 
Data registr.: 03-09-2012
Residenza: Gubbio-Ravenna
Messaggi: 1.771
Citazione:
Originalmente inviato da andore Visualizza messaggio
C'è un modo per collegare questo display touch resistivo con flat a 40pin ?

Sto cercando qualche adattatore ma non trovo nulla

PS. il circuito lo script ottimizzato funziona alla grande e le spiegazioni sono state chiarissime!
Ottimo!
Ci son tanti display in giro per la rete, proprio uno con 40 pin ???
__________________
Divertirsi insieme e con poco? Prova il combat! Curtman Squadron Combat
Sito Web: https://sites.google.com/site/curtmansquadroncombat/
aero330 non è collegato   Rispondi citando
Vecchio 18 maggio 17, 20:07   #52 (permalink)  Top
User
 
L'avatar di aero330
 
Data registr.: 03-09-2012
Residenza: Gubbio-Ravenna
Messaggi: 1.771
Citazione:
Originalmente inviato da dex1 Visualizza messaggio
Ho letto l'articolo, interessante.
In cosa avresti bisogno nello specifico?
__________________
Divertirsi insieme e con poco? Prova il combat! Curtman Squadron Combat
Sito Web: https://sites.google.com/site/curtmansquadroncombat/
aero330 non è collegato   Rispondi citando
Vecchio 18 maggio 17, 21:34   #53 (permalink)  Top
User
 
L'avatar di andore
 
Data registr.: 20-04-2009
Residenza: Potenza
Messaggi: 934
Citazione:
Originalmente inviato da aero330 Visualizza messaggio
Ottimo!
Ci son tanti display in giro per la rete, proprio uno con 40 pin ???
Eh beh questo ho trovato a casa
__________________
FIUMI DI PENSIERI VAGANO NELLA MIA MENTE IGNORANDO LA PERCEZIONE DELLA REALTA' IMPOSTA
andore non è collegato   Rispondi citando
Vecchio 18 maggio 17, 21:39   #54 (permalink)  Top
User
 
L'avatar di aero330
 
Data registr.: 03-09-2012
Residenza: Gubbio-Ravenna
Messaggi: 1.771
Citazione:
Originalmente inviato da andore Visualizza messaggio
Eh beh questo ho trovato a casa
Il problema è poter mettere in comunicazione il controller del display con arduino. Forse il tuo ha un protocollo proprietario per cui è inutilizzabile (suppongo)...se c'è qualche sigla prova a digitarla su google per vedere se c'è una compatibilità (al di là di un adattatore)
__________________
Divertirsi insieme e con poco? Prova il combat! Curtman Squadron Combat
Sito Web: https://sites.google.com/site/curtmansquadroncombat/
aero330 non è collegato   Rispondi citando
Vecchio 18 maggio 17, 22:04   #55 (permalink)  Top
User
 
L'avatar di ElNonino
 
Data registr.: 06-05-2007
Residenza: Tre Ville (Preore)
Messaggi: 3.605
Invia un messaggio via MSN a ElNonino
Alcuni suggerimenti di valenza generale ed indipendenti dal hw o linguaggio di programmazione usato:

- quando è necessario leggere una tensione (anche quella fornita da un sensore) utilizzando un AD converter, sia esso integrato nel microprocessore od anche esterno è bene usare un circuito d'ingresso (con partitore) simile a questo:



il condensatore C1 andrebbe posto fisicamente il più vicino possibile al relativo piedino d'ingresso analogico del convertitore.

L'insieme R3-C1 è un primitivo filtro bassa basso che garantisce una tensione stabile ed a bassa impedenza al convertitore AD e filtra eventuali spike.

- per ottenere una buona precisione di lettura è anche consigliato usare come Vref per il convertitore AD (se è disponibile un pin dedicato del micro) quella fornita da uno 'zener' apposito, ottimo per i convertitori AD a 12 bit usarne uno da 4,096V in modo che ogni step del convertitore corrisponda ad 1mV o multipli precisi dati dal partitore d'ingresso. Questo trucco consente anche di usare interi per le conversioni e l'elaborazione dei valori ottenuti anzichè con virgola che nei piccoli micro rallenta molto il tempo d'esecuzione. Naturalmente nel caso di ingresso ratiometrico (potenziometro o sensore con uscita equivalente) va benissimo usare i +5V di alimentazione del micro.

- per ottenere un dato stabile ed attendibile sul display è anche bene filtrare il segnale del ADC utilizzando una semplice media mobile su più campionamenti, se poi la media mobile è eseguita su un multiplo di 2 ci sono trucchetti (che se vi interessa dirò in altro intervento) per renderla estremamente veloce e semplice da implementare.

- non vedo troppo bene per andore la regolazione 'brutale' ON/OFF della ventola, meglio sarebbe renderla proporzionale alla temperatura usando una semplice regolazione PD o PI se non proprio PID, con poche righe di codice eviteresti la continua oscillazione della stessa.

__________________
Peace & Love
Fate le cose nel modo più semplice possibile, ma senza semplificare. (A. Einstein)
ElNonino non è collegato   Rispondi citando
Vecchio 19 maggio 17, 13:06   #56 (permalink)  Top
User
 
L'avatar di dex1
 
Data registr.: 19-01-2005
Residenza: 33170 e dintorni
Messaggi: 10.447
Citazione:
Originalmente inviato da aero330 Visualizza messaggio
Ho letto l'articolo, interessante.
In cosa avresti bisogno nello specifico?
la compilazione e successive modifiche del software.
per esempio:
nel progetto ci sono tre varianti,
una lettura
due letture
quattro letture

pero solo su quella a due letture ce il valore minimo e massimo letti
almeno cosi mi sembra.
vorrei in futuro poterla implementare anche sulle altre.

a livello schematico,collegamenti partitori ecc ecc non ho problemi.
__________________
Trattiamo bene la terra su cui viviamo: essa non ci è stata donata dai nostri padri, ma ci è stata prestata dai nostri figli
dex1 non è collegato   Rispondi citando
Vecchio 19 maggio 17, 15:45   #57 (permalink)  Top
User
 
L'avatar di andore
 
Data registr.: 20-04-2009
Residenza: Potenza
Messaggi: 934
Citazione:
Originalmente inviato da ElNonino Visualizza messaggio
Alcuni suggerimenti di valenza generale ed indipendenti dal hw o linguaggio di programmazione usato:

- quando è necessario leggere una tensione (anche quella fornita da un sensore) utilizzando un AD converter, sia esso integrato nel microprocessore od anche esterno è bene usare un circuito d'ingresso (con partitore) simile a questo:



il condensatore C1 andrebbe posto fisicamente il più vicino possibile al relativo piedino d'ingresso analogico del convertitore.

L'insieme R3-C1 è un primitivo filtro bassa basso che garantisce una tensione stabile ed a bassa impedenza al convertitore AD e filtra eventuali spike.

- per ottenere una buona precisione di lettura è anche consigliato usare come Vref per il convertitore AD (se è disponibile un pin dedicato del micro) quella fornita da uno 'zener' apposito, ottimo per i convertitori AD a 12 bit usarne uno da 4,096V in modo che ogni step del convertitore corrisponda ad 1mV o multipli precisi dati dal partitore d'ingresso. Questo trucco consente anche di usare interi per le conversioni e l'elaborazione dei valori ottenuti anzichè con virgola che nei piccoli micro rallenta molto il tempo d'esecuzione. Naturalmente nel caso di ingresso ratiometrico (potenziometro o sensore con uscita equivalente) va benissimo usare i +5V di alimentazione del micro.

- per ottenere un dato stabile ed attendibile sul display è anche bene filtrare il segnale del ADC utilizzando una semplice media mobile su più campionamenti, se poi la media mobile è eseguita su un multiplo di 2 ci sono trucchetti (che se vi interessa dirò in altro intervento) per renderla estremamente veloce e semplice da implementare.

- non vedo troppo bene per andore la regolazione 'brutale' ON/OFF della ventola, meglio sarebbe renderla proporzionale alla temperatura usando una semplice regolazione PD o PI se non proprio PID, con poche righe di codice eviteresti la continua oscillazione della stessa.

Infatti, l'unico problema che ho appena notato è questo: dopo qualche secondo che il motore dc è acceso, il display e il led di arduino, oltre al led del modulo di alimentazione esterno, cominciano a sfarfallare

Lo script funziona alla grande ma forse c'è qualcosa da modificare nel progetto, per renderlo più stabile.
__________________
FIUMI DI PENSIERI VAGANO NELLA MIA MENTE IGNORANDO LA PERCEZIONE DELLA REALTA' IMPOSTA
andore non è collegato   Rispondi citando
Vecchio 19 maggio 17, 17:39   #58 (permalink)  Top
User
 
L'avatar di aero330
 
Data registr.: 03-09-2012
Residenza: Gubbio-Ravenna
Messaggi: 1.771
Citazione:
Originalmente inviato da andore Visualizza messaggio
Infatti, l'unico problema che ho appena notato è questo: dopo qualche secondo che il motore dc è acceso, il display e il led di arduino, oltre al led del modulo di alimentazione esterno, cominciano a sfarfallare

Lo script funziona alla grande ma forse c'è qualcosa da modificare nel progetto, per renderlo più stabile.
Il motore a spazzole è una brutta bestia...le commutazioni delle spazzolle sul collettore producono scintille e quindi picchi di tensione (leggi disturbi) che potrebbero dar fastidio a tutto il circuito. Probabilmente la tensione non è ben stabilizzata, io metterei un condensatore elettrolitico da qualche uF sull'alimentazione, ma ElNonino saprebbe indirizzarti meglio.

Per curiosità, questo modulo di alimentazione esterno com'è fatto? riesci a dare più info? tensione in uscita, corrente max fornita....
__________________
Divertirsi insieme e con poco? Prova il combat! Curtman Squadron Combat
Sito Web: https://sites.google.com/site/curtmansquadroncombat/
aero330 non è collegato   Rispondi citando
Vecchio 19 maggio 17, 18:33   #59 (permalink)  Top
User
 
L'avatar di aero330
 
Data registr.: 03-09-2012
Residenza: Gubbio-Ravenna
Messaggi: 1.771
Citazione:
Originalmente inviato da dex1 Visualizza messaggio
la compilazione e successive modifiche del software.
per esempio:
nel progetto ci sono tre varianti,
una lettura
due letture
quattro letture

pero solo su quella a due letture ce il valore minimo e massimo letti
almeno cosi mi sembra.
vorrei in futuro poterla implementare anche sulle altre.

a livello schematico,collegamenti partitori ecc ecc non ho problemi.
Allora:
1) collega la scheda arduino al PC
2) apri l'IDE di arduino, vai su "Strumenti ->Scheda" e selezioni quella che utilizzi
e poi "Strumenti -> Programmatore -> AVRISP mkII"
3) scarica i due file ZIP che ti ho messo in allegato
4) vai su "Strumenti -> Sketch -> #includi libreria -> Aggiungi libreria da file .ZIP"
e cerca i due file "Adafruit_GFX.ZIP" e "Adafruit_ST7735".
5) chiudi tutto e riapri l'IDE di arduino
6) "File -> Nuovo", cancelli tutto e incolli questo:
Codice:
#define sclk 13
#define mosi 11
#define cs   10
#define dc   9
#define rst  8  //  reset

#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library
#include <SPI.h>

Adafruit_ST7735 tft = Adafruit_ST7735(cs, dc, rst);

// number of analog samples to take per reading, per channel
#define NSAMP 100 // number of samples to take befor displaying

// voltage divider calibration values
#define Dv1    11.00
#define Dv2    11.001
#define Dv3    11.00
#define Dv4    10.985

// ADC reference voltage / calibration value
#define VREF    5.00

int sum[4] = {0};                // sums of samples taken
unsigned char Scount = 0;  // current sample number
float AVvolts[4] = {0.0};        // calculated voltages
char cnt1 = 0;                  // used in 'for' loops

float V_max[4] = {0.00 ,0.00, 0.00, 0.00};
float V_min[4] = {100.00, 100.00, 100.00, 100.00};

void setup()
{
   tft.initR(INITR_BLACKTAB);   // initialize a ST7735S chip, black tab
   tft.fillScreen(ST7735_BLACK); //  clear screen
   tft.setTextColor(ST7735_WHITE);
   tft.drawRoundRect(2, 20, 120, 110, 5,ST7735_WHITE);
   tft.setTextSize(1);
   tft.setCursor(5,0);
   tft.println("4 channel voltmeter");
   tft.setTextColor(0XFF00);
   tft.setCursor(0,140);
   tft.println(" Caution max voltage         55vdc");
}

        
void loop()
{
    // take a number of analog samples and add them up
    while (Scount < NSAMP) {
        // sample each channel A0 to A3
        for (cnt1 = 0; cnt1 < 4; cnt1++) {
            sum[cnt1] += analogRead(A0 + cnt1);
        }
        Scount++;
        delay(10);
    }
    
    // calculate the voltage for each channel
    for (cnt1 = 0; cnt1 < 4; cnt1++) {
        AVvolts[cnt1] = ((float)sum[cnt1] / (float)NSAMP * VREF) / 1024.0;
        if(AVvolts[cnt1] > V_max[cnt1]){ //get MAX value of sample
          V_max[cnt1] = AVvolts[cnt1];
        }
        if(AVvolts[cnt1] < V_min[cnt1]){ //get MIN value of sample
          V_min[cnt1] = AVvolts[cnt1];
        }         
    }
    // display voltages on TFT LCC Display
   
    // voltage 1 - V1(pin A0)  
    tft.setTextColor(ST7735_YELLOW,ST7735_BLACK); // set color for V1
    tft.setTextSize(2);
    tft.setCursor(15, 40);
    tft.print("V1 ");
    tft.print(AVvolts[0] * Dv1, 1);
    tft.print("V ");
    // voltage 2 - V2(pin A1)
    tft.setTextColor(ST7735_GREEN,ST7735_BLACK);// set color for V2
    tft.setCursor(15, 60);
    tft.print("V2 ");
    tft.print(AVvolts[1] * Dv2, 1);
    tft.print("V ");
    // voltge 3 - V3(pin A2)
    tft.setTextColor(ST7735_CYAN,ST7735_BLACK);// set color for V3
    tft.setCursor(15, 80);
    tft.print("V3 ");
    tft.print(AVvolts[2] * Dv3, 1);
    tft.print("V ");
    // voltage 4 - V4(pin A3)
    tft.setTextColor(ST7735_WHITE,ST7735_BLACK);// set color for V4
    tft.setCursor(15, 100);
    tft.print("V4 ");
    tft.print(AVvolts[3] * Dv4, 2);
    tft.print("V ");
    tft.drawRoundRect(2, 20, 120, 110, 5,ST7735_WHITE);
    // reset count and sums
    Scount = 0;
    for (cnt1 = 0; cnt1 < 4; cnt1++) {
        sum[cnt1] = 0;
    }
}
7)clicca in alto sulla freccia a destra ("carica")
8)se tutto è andato a buon fine non ottieni nessun errore ma solo "caricamento "completato"
9) fatto

Ho preso il codice quello completo con le 4 tensioni lette e aggiunto il calcolo dei valori massimi/minimi per ciascun canale.
L'unica cosa è che non li visualizzi perchè non c'è abbastanza spazio sul display, a meno che tu non mi dica come fare (esempio: visualizzo ogni singolo canale ciclicamente con sotto il max/min relativo, oppure i 4 canali contemporaneamente ma con i valori max/min scrittti a fianco più piccoli ecc ecc)

P.s. non ho il display in questione per cui sto facendo tutto al buio
Files allegati
Tipo file: zip Adafruit_GFX.zip‎ (289,2 KB, 8 visite)
Tipo file: zip Adafruit_ST7735.zip‎ (27,0 KB, 8 visite)
__________________
Divertirsi insieme e con poco? Prova il combat! Curtman Squadron Combat
Sito Web: https://sites.google.com/site/curtmansquadroncombat/

Ultima modifica di aero330 : 19 maggio 17 alle ore 18:38
aero330 non è collegato   Rispondi citando
Vecchio 19 maggio 17, 21:46   #60 (permalink)  Top
User
 
L'avatar di ElNonino
 
Data registr.: 06-05-2007
Residenza: Tre Ville (Preore)
Messaggi: 3.605
Invia un messaggio via MSN a ElNonino
@andore: per il problema dei disturbi prova a mettere un condensatore in parallelo al motorino, meglio due: un elettrolitico da 22uF..47uF ed un altro ceramico da 10nF, od anche tre, l'elettrolitico e due da 10nF saldati fra i fili di alimentazione del motore e la carcassa dello stesso.

@aero330: per mediare il valore letto dal convertitore AD è meglio usare una media mobile in potenza di 2 lavorando con interi e poi usare lo shift a destra al posto della divisione, solo alla fine fare un unico casting in float che ci sarebbe anche il modo di evitarlo (forse).

Il casting in float, i calcoli in float ed i prinf sono estremamente lenti sui piccoli micro ad 8 bit come quello di arduino 1.

Un altro suggerimento: è buona norma nel assegnare nomi alle variabili usare un prefisso che identifichi il formato della stessa, ad esempio:

- count è meglio chiamarla u8count od u8_count se si usa un intero ad 8 bit senza segno, etc.

__________________
Peace & Love
Fate le cose nel modo più semplice possibile, ma senza semplificare. (A. Einstein)
ElNonino non è collegato   Rispondi citando
Rispondi

Bookmarks




Regole di scrittura
Non puoi creare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks è Disattivato
Pingbacks è Disattivato
Refbacks è Disattivato


Discussioni simili
Discussione Autore discussione Forum Commenti Ultimo Commento
arduino uno e ..... FLYTS Circuiti Elettronici 3 23 settembre 14 15:50



Tutti gli orari sono GMT +2. Adesso sono le 13:53.


Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002