![](https://www.baronerosso.it/img/t.gif)
![]() | #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 |
| |
![]() | ||||
Discussione | Autore discussione | Forum | Commenti | Ultimo Commento |
arduino uno e ..... | FLYTS | Circuiti Elettronici | 3 | 23 settembre 14 15:50 |