minihidro Inserito: 11 marzo 2016 Segnala Share Inserito: 11 marzo 2016 Salve , avrei la necessita' di controllare il numero di impulsi di un sensore induttivo ( abbinato ad una ruota fonica ) La frequenza massima raggiunta dovrebbe aggirarsi intorno ai 600 Hz... Ho a disposizione un CJ1M CPU21 che ha tra le altre cose ha a bordo degli ingressi a risposta rapida. La mia domanda e' come conteggiare questi impulsi ? con un normale contatore ? il tempo di ciclo puo' influire ? come fate in genere a conteggiare gli impusi/sec. ? Esiste in commercio ( o in alternativa ditemi come fate ) un'apparato per simulare il numero di impulsi/sec da mandare sull'ingresso della CJ1M per verificare l'effettivo funzionamento del programma ? Grazie. Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 14 marzo 2016 Segnala Share Inserita: 14 marzo 2016 Usa il contatore veloce interno, fa tutto lui. Vai in Impostazioni, poi scegli il tab Ingresso Integrato, e per esempio attiva il contatore veloce 0. Lo imposti a 60kHz, lineare, Reset Software e Ingresso a Impulsi Incrementale. A quel punto leggerai negli appositi registri il conteggio e potrai anche reimpostarlo o azzerarlo. Per queste operazioni, leggi il manuale W395 al paragrafo 5-2 per le istruzioni, altri per il cablaggio. Altrimenti per la tua velocità potresti usare anche la modalità Ingresso Interrupt Contatore, ma è un po' più farraginoso (vedi par. 6-1) Link al commento Condividi su altri siti More sharing options...
minihidro Inserita: 15 marzo 2016 Autore Segnala Share Inserita: 15 marzo 2016 Quindi sconsigli l'utilizzo di un contatore tipo cntx abbinato ad un tmhhx? Utilizando l'ingresso ad interrupt dovrei settare un valore sul contatore e non leggerlo.... Ti domando cio' perche' avrei tre ingressi ( cioe' tre letture da fare) da utilizzare .... Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 15 marzo 2016 Segnala Share Inserita: 15 marzo 2016 Non è che sconsiglio, non so se ce la fai. A 600Hz, te hai un impulso ogni 1.666ms, e dovresti avere al massimo un tempo di ciclo inferiore a ciò (diciamo intorno al ms) per essere sicuro di non perderlo. Tra l'altro, se non impostati diversamente, gli ingressi hanno un filtro a 8ms, per cui sopra 125Hz non vedresti nulla. Potresti però fare così: associ a ogni ingresso un interrupt normale, e nella routine di ciascuno metti una istruzione di incremento (++) su una word (o doppia word), Questo ti funzionerà da contatore semplice incrementale. Nel tuo programma poi avrai (asincrono) il controllo di quanti impulsi ci sono per ciascuno, e la rimessa a zero se necessaria. Se poi usi un flag, nella stessa routine puoi mettere il decremento (--) che selezionerai col flag, ottenendo un bidirezionale semplice. Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora