Vai al contenuto
PLC Forum


Pic help!


Condor57

Messaggi consigliati

Prima di tutto ,visto che mi sono appena registrato,un saluto a tutti

Ora avrei due cose da chiedere,ho realizzato una scheda elettronica per controllare un'apparecchiatura sulla quale sono montati due microcontrollori pic un 16F876 e un 18F8520,il primo l'ho usato per creare una specie di encoder per rilevare la posizione di una piattaforma in pratica ho montato sull'albero del motoriduttore un disco di circa 140mm di diametro con una serie di fori del diametro di 5mm equidistanti sul bordo poi con un sensore ottico vado a leggere questi fori ed il 16F876 provvede a contarli e quindi calcolare la posizione e di conseguenza far fermare la piattaforma dove mi serve.La prima cosa che volevo chiedere è più o meno che frequenza di lettura riesco a raggiungere con questo sistema sul disco ci sono 44 fori e questo ruota a circa 60 giri al minuto ed ho usato un quarzo da 20MHz.

La seconda invece riguarda un difetto ossia il motore viene gestito da un inverter che comando tramite il secondo pic su questo motore è montato un freno elettromagnetico in cc che chiaramente devo aprire prima di far avviare il motore,ogni tanto "ma molto spesso" nel momento in cui comando il freno mi si blocca il 16F876 solo questo nonl'altro e quindi devo resettare il tutto per ripristinare il funzionamento

da che cosa può essere provocato questo blocco?

Grazie

Link al commento
Condividi su altri siti


Partiamo da qui. Sicuramente il blocco è causato da un disturbo. Da quello che scrivi non ci sono informazioni sufficienti per capire se è un disturbo irradiato o condotto, e da dove. Il generatore è sicuramente il freno che è un dispositivo elettromagnetico. prima cosa inserisci, in parallelo all'elettromagnete del freno, gli appositi filtri e, magari, anche dei transzorb (due zener in antiparallelo).

Verifica anche le alimentazioni, percorsi di massa e separazioni galvaniche tra alimentazione micro e alimentazione circuiti di potenza.

Relativamente alla massima frequnza di conteggio.

Mancono dati per dare una risposta certa. Non spieghi come conti gli impulsi. La via per avere la freqaunza più elevata è realizzare il rivelatore di up-down esterno, poi inviare il clock a RB0. Sul relativo interrupt controlli lo stato della lina Up-Down eincrementi o decrementi un registro. In questo modo bastano 4 istruzioni. Avendo un quarzo da 20MHz impieghi 800ns per servire l'interrupt, il che corrisponde alla massima frequanza teorica di 1,25 MHz; però il micro sarebbe impegnato solo a contare sad.gif . Tu dici che la velocità della ruota è circa 60 rpm, con 44 impulsi al giro hai una frequenza di 44Hz, diciamo che <50Hz. Con questa frequenza puoi permetterti di usare due interrupt per rilevare il senso di rotazione ed avanzare un sacco di tempo CPU per fare tutto il resto, anche una comunicazione seriale biggrin.gif

Link al commento
Condividi su altri siti

Dunque,la scheda la alimento con un alimentatore switch da 6.5A con il quale alimento anche altre cose,il motore è un trifase controllato da un inverter che ha una sua alimentazione il quale è controllato a sua volta dalla mia scheda,il freno invece è a se è un freno elettromagnetico in cc 200/400v,tramite i contatti di un rele della scheda alimento questo ponte radrizzatore che a sua volta alimenta il freno.L'alimentatore switch in uscita mi da 24v che mi servono per altre applicazioni poi sulla scheda ho costruito un alimentatore/riduttore con il quale prima abbasso a 12v per alimentare tutti i rele e poi abbasso e stabilizzo a 5v questi 5 volt li ho divisi in due linee una per alimentare dei fotoaccoppiatori transistor degli sn74ls244 ecc. e l'altra ulteriormente filtrata per i 2 micro.

Per quanto riguarda il conteggio ho chiesto quale poteva essere la frequenza max raggiungibile perchè ho degli errori su ogni spostamento di qualche centimetro che corrisponde a 4/5 fori.ho optato per questa opzione in quanto non avevo bisogno di una grandissima precisione e poi per correggere eventuali errori ho inserito in un punto della corsa un sensore,ogni volta che la piattaforma lo attraversa faccio azzerare il contatore e quindi ripristino la posizione corretta per il conteggio ho fatto in questo modo ho collegato il collettore del fototransistor IR ad una porta del micro B0 con un resistenza di pullUp Cambiando lo stato logico di un pin le dico se deve incrementare o decrementare a seconda del senso di rotazione e quindi leggo continuamente B0 quindi ogni volta che lo stato logico diventa alto incremento o decremento un contatore e subito dopo confronto il valore del contatore con una serie di valori che ho in memoria se il valore del contatore non corrisponde a nessuno di quelli in memoria vado a rileggere B0,appena invece corrisponde con uno di quelli in memoria modifico lo stato di quattro bit di una porta che è collegata all'atro micro in pratica con un codice binario comunico all'altro micro dove si trova la piattaforma e quindi quest'ultimo esegue tutta una serie di operazioni in pratica il 16F876 deve solamente contare e comunicare la posizione.

Link al commento
Condividi su altri siti

Probabilmente, anzi direi sicuramente, gli errori di conteggio sono dovuti a disturbi. Vista la frequnza sarebbe opportuno fare un filtraggio pesante, ti risparmieresti un sacco di guai.

Idem per le alimentazioni. Gli alimentatori di tipo SMPS offrono una scarsa reiezione ai disturbi in ingresso, a meno che siano pesantemente e correttamente filtrati in ingresso.

poi c'è il problema delle insistenti separazioni galvaniche tra la logica (micro) e periferia di potenza (relè).

Separa e scherma le alimentazioni, metti filtri sulle alimentazioni dei micro "appiccicate" al micro, cura le masse e vedrai che i blocchi di CPU saranno eliminati.

Link al commento
Condividi su altri siti

Prima di tutto ti ringrazio per la tua pazienza....

il problema del blocco del micro l'ho risolto mi è bastato mettere un diodo in parallelo all'elettromagnete del freno ed ho eliminato quel malefico disturbo,ora mi rimane sempre l'altro problema secondo te il fatto di aver usato quel tipo di sensore pensi sia giusto oppure no? ho controllato con oscilloscopio l'ingresso sulla porta del micro e in effetti pare proprio che sia il sensore che salta delle letture,questa mattina ho acquistato alla RS un tipo di sensore che oltre ad avere un filtro per la luce ha anche un filtro antiribalzo e l'uscita è gia una ttl ha solo un pin in più per l'alimentazione,pensi che con questo tipo di sensore vada meglio?

Viste le operazioni che deve fare tra una lettura e l'altra,credi possa andare bene a livello firmware o credi che debba cambiare sistema?

Link al commento
Condividi su altri siti

Ti auguro che il problema dell'elettromagnete sia risolto sul serio, però sulla base di un'esperianza di circa 4 decadi (perchè 40 anni suona male tongue.gif ) ho paura che sia solo minimizzato.

Il rpoblema del conteggio degli impulsi à che ....i contatori contano. Sono aggeggi stupidi, se gli arriva un impulso lo contano.

Personalmente non userei un un sensore ottico ma, vista la freqaunza molto bassa, userei un induttivo, tipo proximity. Forse costa un poco di più ma è molto più affidabile. Ci metti un proximity a 24v, poi fai anche un bel partitore 24v-5v che non fa male, e le cose sono molto più sicure.

Visto che il micro fa solo il conteggio usalo anche per filtrare. Usi l'interrupt RB0 per rivelare il fronte, poi fai partire un timer (timer0, p.e., cosa sta facendo?) con un tempo pari alla durata minima richiesta all'impulso, scaduto il tempo riverifichi la linea RB0: deve essere ancora nel medesimo stao (0 o 1); se non lo è non consideri l'impulso perchè è uno spike.

Link al commento
Condividi su altri siti

Spero proprio che sia risolto, oggi pomeriggio l'ho provato un numero notevole di volte e quel problema non si è più verificato.

Non ci avevo pensato al proximity ai proprio ragione domattina vado a prenderne uno e provo grazie worthy.gif

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