Vai al contenuto
PLC Forum


Contatori veloci


roberto8303

Messaggi consigliati

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.

Link al commento
Condividi su altri siti


  • Risposte 127
  • Created
  • Ultima risposta

Top Posters In This Topic

  • roberto8303

    56

  • ilguargua

    32

  • Livio Orsini

    26

  • GiRock

    9

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.

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

 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 ??

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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?

Link al commento
Condividi su altri siti

 

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

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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?

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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

×
×
  • Crea nuovo/a...