| | #51 (permalink) Top | |
| User Data registr.: 03-09-2012 Residenza: Gubbio-Ravenna
Messaggi: 1.771
| Citazione:
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/ | |
| | |
| | #52 (permalink) Top | |
| User Data registr.: 03-09-2012 Residenza: Gubbio-Ravenna
Messaggi: 1.771
| Citazione: 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/ | |
| | |
| | #53 (permalink) Top | |
| User Data registr.: 20-04-2009 Residenza: Potenza
Messaggi: 934
![]() | Citazione:
__________________ FIUMI DI PENSIERI VAGANO NELLA MIA MENTE IGNORANDO LA PERCEZIONE DELLA REALTA' IMPOSTA | |
| | |
| | #54 (permalink) Top |
| User Data registr.: 03-09-2012 Residenza: Gubbio-Ravenna
Messaggi: 1.771
| 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/ |
| | |
| | #55 (permalink) Top |
| User |
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) |
| | |
| | #56 (permalink) Top | |
| User Data registr.: 19-01-2005 Residenza: 33170 e dintorni
Messaggi: 10.447
| Citazione:
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 | |
| | |
| | #57 (permalink) Top | |
| User Data registr.: 20-04-2009 Residenza: Potenza
Messaggi: 934
![]() | Citazione:
![]() 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 | |
| | |
| | #58 (permalink) Top | |
| User Data registr.: 03-09-2012 Residenza: Gubbio-Ravenna
Messaggi: 1.771
| Citazione:
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/ | |
| | |
| | #59 (permalink) Top | |
| User Data registr.: 03-09-2012 Residenza: Gubbio-Ravenna
Messaggi: 1.771
| Citazione:
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;
}
} 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
__________________ 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 | |
| | |
| | #60 (permalink) Top |
| User |
@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) |
| | |
![]() |
| Bookmarks |
| |
Discussioni simili | ||||
| Discussione | Autore discussione | Forum | Commenti | Ultimo Commento |
| arduino uno e ..... | FLYTS | Circuiti Elettronici | 3 | 23 settembre 14 15:50 |