Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Contatori veloci


Messaggi consigliati

Inserita:
13 minuti fa, GiRock scrisse:

@ilguargua hai usato un simulatore??? :whistling:

No, ma solo perché non ce l'ho, non perché sia contrario. Comunque il Simulino sembra che ci azzecca, e parecchio....:)

 

17 minuti fa, GiRock scrisse:

Ho trovato pure io l'errore, quel maledetto ndx<<=i; non c'entrava proprio... :superlol:

Infatti, quello invece non c'azzeccava per niente...:superlol:

 

Ciao, Ale.


  • Risposte 127
  • Created
  • Ultima risposta

Top Posters In This Topic

  • roberto8303

    56

  • ilguargua

    32

  • Livio Orsini

    26

  • GiRock

    9

Inserita:

Finalmente ho capito che......non ci siamo capiti. :)

 

L'uso di digitalRead è perchè è di più fcile comprensione che leggere la porta e si può usare anche per leggere segnali su porte differenti.

Se i segnali sono adiacenti sulla stessa porta allora vale la pena di leggere la porta.

 

La differenza di velocità sta tutta nel modo di selezionare il bit.

Se si fanno di seguito uno per uno si allunga il codice ma si risparmaia tempo.

Se fa un loop con un for o un while si risparmiano righe ma si allungano i tempi.

 

Spero che ora sia chiaro e senza incomprensioni.

 

Poi io uso, per arduino, una funzione parametrica che, sfruttando digitalRead, mi è comoda per poter leggere ingressi sparsi.

Anche il "C" di PICC, che uso per i pic, ha una funzione similare si chiama test_bit (o bit_ test); però quando devo stressare i tempi uso la mia macro in ASM che legge il bit della porta.

Inserita:

mi sono arrivati i display a segmenti adafruit che utilizzano una loro libreria si puo stampare una variabile sia in decimale o in  esadecimale,

ma la cosa che piu mi interessa è avere due valori da 0 a 15 letti da due potenziometri sullo stesso display come fosse un orologio ore : e minuti.

Ho utilizzato questo esempio per scrivere in ordine l ora a due cifre nel display nelle posizioni 0 e 1 (i primi due led a segmento) e poi i minuti nelle posizioni 3-4(gli ultimi due led del display)

Condivido il codice qui sotto

 

 

matrix.clear();
     
      int h1 = pot1 / 10;              //pot1=6
      int h2 = pot1 - h1 * 10;
      int m1 = pot2/ 10;               //pot2=11
      int m2 = pot2 - m1 * 10;
      
  // Send data to display
      
      matrix.writeDigitNum(0, h1, false);       // qui segna 0 primo led
      matrix.writeDigitNum(1, h2, false);       // qui segna 6 secondo led
      
      matrix.drawColon(1);       // due punti centrali
      
      matrix.writeDigitNum(3, m1, false);  / /qui segna 1
      matrix.writeDigitNum(4, m2, false);  //qui segna 1
      matrix.writeDisplay();    

  delay(500);n 

image-26-01-18-11-34.jpeg

Inserita:

 int h1 = pot1 / 10;              //pot1=6
 int h2 = pot1 - h1 * 10;

 

chi mi aiuta a capire come in h2 risulta 6?

h1= 6/10=0,6

h2= 6-0,6*10= 6-6=0 ??

Inserita:
1 ora fa, roberto8303 scrisse:

int h1 = pot1 / 10;              //pot1=6
 int h2 = pot1 - h1 * 10;

Se pot1 è 6, h1 è 0 , stai usando gli int(eger) cioè numeri interi, la parte decimale viene persa.

 

1 ora fa, roberto8303 scrisse:

h2= 6-0,6*10= 6-6=0 ??

Questo non viene eseguito così, ma come pot1 - (h1 * 10). Usa le parentesi sempre, così non avrai sorprese.

 

Ciao, Ale.

Inserita:

ahh ecco quindi nella seconda espressione h1 vale 0 :thumb_yello: grazie ale

Inserita:

Rieccomi, allora devo andare avanti userò dei sensori pnp ma volevo chiedere una cosa, le alimentazioni di tutti i sensori saranno a 12volt dalla batteria posso costruire un filtro anche sull ingresso della 12volt? cosi da alimentare con una tensione piu pulita i sensori pnp e anche i sensori di temperatura cioe tipo questo

http://www.lamiaspecialcar.com/prodotto-143806/SENSORE-TEMPERATURA-ACQUA---M14X15---120C--VDO--DOPPIO-CONTATTO.aspx

che mi da un valore di resistenza in funzione della temperatura.

Ci saranno14 arduino su una basetta millefori ognuno con il suo filtro a 9volt  con regolatore l7809 come dicemmo.

Inserita:

Filtrare l'alimentazione dei sensori è doveroso.:)

Inserita:
Quote

Filtrare l'alimentazione dei sensori è doveroso.:)

mi puoi consigliare quali componenti utilizzare Livio? e inoltre vabbene uno solo filtro e all uscita alimento tutti i sensori sia induttivi che di temperatura sul motore a scoppio?

grazie

Inserita:

si inizia, ho pensato di disporre un filtro con regolatore 7809 che alimenta due arduino per dimezzare i regolatori e condensatori su 14 arduino.

Tra vcc e gnd è utile avere ancora un condensatore da 100nf? come da foto

 

image-02-02-18-19-34.jpeg

Inserita:

devo dire che resta pochissimo spazio...

image-06-02-18-23-00.jpeg

Inserita:

Per alimentare i sensori induttivi a 12volt è meglio utilizzare un regolatore 7812 oppure posso alimentarli direttamente da batteria? poi il segnale pnp tramite partitore con due resistenze passo dal trigger di smith ed entro nell arduino.

Inserita:

Puoi filtrare il 12V della batteria con un filtro C-L-C, così da pulire l'alimentazione dei sensori.

Mettere un 7812 alimentato dalla batteria non va bene; anche se usi un Low drop avresti sempre troppo poco margine.

Inserita:

Primi test e primo problema, devo implementare una funzione che ricevendo un segnale +12volt dai fari del mezzo, devo poter variare la luminosità di tutti e 10 gli lcd, da programma tutto ok, Ho su ogni arduino programmato che se il pin 8 è a +5v regolo la luminosità attraverso un potenziometro unico da 10k su tutte le porte A0 e funziona.

Il problema sorge con le due resistenze a partitore di tensione una da 10k e una da 4,7k sulla +12v al centro delle resistenze con il tester ho 4 volt e qualcosa. 

Ma il pin 8 su arduino riceve solo 1,8 volt:wacko: questi 4 volt del partitore li sto mandando per adesso su 4 arduino tutti insieme e ho tra il pin 8 e gnd una resistenza da 10k per non lasciare aperto l ingresso.

Potrebbero essere queste resistenze a farmi abbassare i volt da 4 sul partitore a 1,8 su tutti gli ingressi pin8? oppure il fatto di aver tutti i pin8 collegati insieme su un solo partitore?

Se non è di semplice soluzione metto un relè +12 e uso i contatti per chiudere direttamente sulla 5volt di arduino perchè cosi funziona.

Inserita:

image-10-02-18-13-02.jpeg

image-10-02-18-13-03.jpeg

image-10-02-18-13-02-1.jpeg

image-10-02-18-13-05.jpeg

la temperatura del regolatore 9v è sui 30 gradi, alimenta due arduino un regolatore 5v che alimenta i due display

Inserita:
46 minuti fa, roberto8303 scrisse:

Il problema sorge con le due resistenze a partitore di tensione una da 10k e una da 4,7k sulla +12v al centro delle resistenze con il tester ho 4 volt e qualcosa. 

Ma il pin 8 su arduino riceve solo 1,8 volt:wacko: questi 4 volt del partitore li sto mandando per adesso su 4 arduino tutti insieme e ho tra il pin 8 e gnd una resistenza da 10k per non lasciare aperto l ingresso.

Quindi, riassumendo, se non ho capito male te hai un partitore con 10k e 4.7k che colleghi ai pins 8 (??! non mi è chiaro questo riferimento) dove hai anche una resistenza da 10k verso massa. Conclusione, la resistenza bassa del partitore diventa 4 resistenze da 10k in parallelo (quindi 2.5k) con il parallelo 4.7k, uguale a 1632 ohm circa. Se fai un calcolo di un partitore siffato (10k + 1,632k) dovresti avere 1,684 V, non molto distante dal valore che misuri considerando le tolleranze dei componenti. Dov'è il problema? :)

Togli le resistenze da 10k, gli ingressi rimangono comunque collegati verso massa dalla resistenza da 4.7k del partitore.

 

Ciao, Ale.

Inserita:

Si proprio cosi ti metto uno schizzo, il problema è che avro 10 display quindi 10 pin8 dove leggere la presenza del segnale +12v fari accesi.

ard.jpg

Inserita:

mi sa che devo toglierle tutte come dici tu Ale... le ho spezzate dal pin 8 e ora funziona bene!! quindi avere quella da 4,7k verso massa vabbene o è un valore troppo basso? penso non cambia nulla rispetto alla 10k?

Inserita:

 

Funziona bene, prima regolo con il potenziometro con il +12 attivo, poi attacco e stacco il morsetto per simulare il +12 per avere la luminosita quasi al max di giorno quando i fari sono spenti

Inserita:
18 minuti fa, roberto8303 scrisse:

quindi avere quella da 4,7k verso massa vabbene o è un valore troppo basso? penso non cambia nulla rispetto alla 10k?

Si, va più che bene, io la lascerei così. Le resistenze da 10k che volevi usare come pull-down non servono, il partitore ti assicura già 2 stati certi, 0 con assenza di tensione (il pin è collegato a massa dalla resistenza da 4.7k) e 1 quando applichi i 12V alla resistenza da 10k, quindi non sarà mai flottante.

 

Ciao, Ale.

Inserita:

andiamo avanti, 

devo utilizzare gli ultimi 4 arduino contatori rpm per controllare delle rotazioni e se una di questa scende al di sotto di una soglia per "cinghia rotta" devo far accendere un led di segnalazione.

Ma solo se il quinto arduino degli rpm motore è al di sopra di 2600 rpm

Consigli? avevo pensato di attivare 5 uscite e collegarle tutte in serie in modo da accendere il led solo se rpm motore è al di sopra di 2600 e gli altri al di sotto delle loro singole soglie.

Elettronicamente qual è il modo piu semplice per collegare i 5 pin dei 5 arduino in serie tra loro per accendere un led?

Inserita:

Qualcosa del genere? :

itv44.jpg.4524d27da86c000cb1b331a08c71613a.jpg

 

Se devi solo accendere un led dovrebbe andare bene, altrimenti per il lato alto va usato un PNP e l'uscita deve andare bassa per attivarlo.

 

Ciao, Ale.

Inserita:

Ripensandoci, se devi solo accendere un led i transistor non ti servono proprio, puoi collegare direttamente il led (con la resistenza in serie) tra l'uscita RPM in alto e le altre in basso, invertendo i diodi e la logica delle uscite FAULT, o al limite puoi lasciare solo quello in basso se non vuoi invertire la logica dell'uscita.

 

Ciao, Ale.

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




×
×
  • Crea nuovo/a...