![]() |
Servocomandi e PLC Ciao a tutti ! Esiste qualche interfaccia per comandare uno o più servocomandi con un plc ? Ogni consiglio è ben accetto !!! Grazie |
Esistono schede per plc utili a generare segnali pwm, alcune cpu hanno delle uscite pwm intergate, per esempio sull'Allen Bradley serie micrologix quasi su tutte le trovi. Il problema è che probabilmente non riesci ad arrivare alla definizione dell'impulso che ti serve per modulare un servocomando. Dal momento che serve un impulso da 1 a 2ms su un periodo di 20mS si parla si modulare il pwm dal 5 al 10%, se hai un uscita pwm con risoluzione 10 bit (1023) dovrai usare valori che vanno circa da 50 a 100, questo significa che avrai solo 50 step di posizione durante lo spostamento del servo. Generalmente i plc hanno uscite a 24V PNP. per pilotare il servo a 5V è possibile usare un semplice partitore resistivo calcolato in maniera corretta |
:hail: Oggi parlo con l' elettricista e vedo cosa riesco a fare :P Grazie 1000 |
invece un circuito tipo arduino da utilizzare come "azionamento" cosa ne pensi ? Anche perchè credo che piccoli servi un plc possa gestirli ma se c'è bisogno di un minimo di potenza ho paura che non regga.. :wacko: |
Il plc in uscita non deve avere potenza, l'unico segnale che prelevi da lui è quello per pilotare il servo e non per alimentarlo. L'alimentazione devi prenderla a parte anche perchè avrai bisogno di una sorgente adeguata alla tensione del servo.. E' ovvio che se puoi scegliere tra plc e arduino (pic, atmel o qualsiasi altro micro) è meglio la seconda, il plc è ampiamente sprecato per una cosa del genere oltre a non essere propio adatto. Se hai un plc da buttare via e vuoi utilizzarlo allora la cosa cambia. |
Dimenticavo... Se invece sei obbligato ad usare un plc che non ha il pwm, puoi usare 8 uscite del plc per tirare fuori un valore binario a 8 bit, collegarle ad un pic (sempre con dei partitori o degli optoisolatori per adattare il livello) che in base al valore binario letto genera il pwm adatto a pilotare il servo. Altra alternativa è quella di usare la porta seriale del plc per trasmettere una stringa ad un pic con il valore del pwm da generare e poi far pilotare a lui il servo. Insomma di soluzioni ce ne sono molte, c'è solo da capire quali componenti hai a disposizione e quali sono queli che conosci meglio... |
Ma perche prorprio un PLC?? utilizza Arduino!! costa meno ed e modulabile :huh: |
Citazione:
|
Citazione:
Ora inizio a ragionare :wink: |
Pwm scusami, se correggo, per muovere i servo non si usa il PWM, esso è un concetto leggermente diverso, il PWM può essere usato per muovere un motore DC, se accoppiato ad un ponte H come per esempio L298. Mentre per muovere un servo serve un onda quadra che può variare da circa 900 uS a circa 2,2 mS. Per muovere un servo sicuramente è ideale un 16F628 va benissimo visto che non ha bisogno di quarzo esterno, con una spesa di qualche euro e una buona lettura del Tanzilli.. Il PWM è diverso, è realizzato attraverso il Duty Cycle, un onda quadra che può essere generata sempre dai PIC ... ...pone sullo stato alto (uno) quando il TMR2 raggiunge lo stesso valore PR2 = la frequanza, poi invece confronta il CCPR1L associato ad altri due bit per decidere quando porre il segnale sul valore basso ( zero). giusto ieri in laboratorio con i ragazzi abbiamo creato un driver pilotato da un 16F876.. .abbiam usato anche un 74hc14N per avere avere il segnale invertito.. ..il 16F876 legge da un applicazione scritta in JAva i valori catturati da un interfaccia grafica.. che li trasmette attraverso la seriale al PIC, poi lo stesso genera un PWM che pilota un motore elettrico abbiamo usato un DC classe 700! della Graupner devo dire simpatico come esperimento , la cosa bella è che può essere pilotato anche sulla rete... a dopo Citazione:
|
Citazione:
Il segnale di un servo non è altro che un'segnale PWM con frequenza di PWM di 50hz e duty cycle max del 10% e mi minimo 5%. Vedi anche: Servomechanism - Wikipedia, the free encyclopedia PS: Lo standard prevede durata minima 1000us e massima di 2000us 900 e 2100 sono le corse estese non garantite. |
Grazie Romoloman per la risposta, io non capisco se quando uno risponde ad una discussione legge tutti i post prima di rispondere oppure legge solo le righe pari o quelle dispari. Io ho scritto: Dal momento che serve un impulso da 1 a 2ms su un periodo di 20mS si parla si modulare il pwm dal 5 al 10% Mi sembra una frase chiara e che non da modo di fraintedere. Pwm = Pulse Width Modulation (modulazione di larghezza di impulso) Poi se il pwm lo usi da 0 a 100% o da 5 a 10% sempre pwm è! Stop. Dimenticavo... penso di aver chiaro il concetto di ponte H, pwm etc... come puoi vedere sul mio sito Elettronica - Software - Marco Sinatti :fiu: |
Ahhh scusa Romoloman, non era indirizzato a te ovviamente... |
Citazione:
La cosa più tragica è che certa gente ha a che fare con gli studenti... Se ha certe convinzioni mi chiedo cosa insegni..... Speriamo sia stata una svista da mente in relax per il weekend... Prendere abbagli capita a tutti... |
-- si ok corretto, il fatto è che appunto nel moviemtno dei servi questa onda quadra può variare tra i 900uS ma anche 850 e i 2200 mS infatti vi sono gli estensori, poi il segnale va adormire circa 20 mS.. max 30 mS, e poi ricomincia, non ho mai provato con un PWM a smuover un servo, quando a vrò modo ci voglio provare.. rimane il fatto che con i PWM ci piloti i motori DC, mentre i servo con un segnale simile ma che ha una tempistica diversa, 50 Hz significa che in ogni ciclo disponiamo di 20.000 uS, il 10% come da te suggerito corrisponde a 2 mS perfetto minimo 5% sono 1 mS anche questo perfetto, quindi quale prescaler al TMR2 ? quale valore a PR2.. per determinare la frequenza? che valori poter far osciollare CCPR1L ? a dopo fausto Citazione:
|
Citazione:
Grazie.... Hai detto una cosa errata e questa è una :climb: Il servo si comanda con un segnale PWM. PUNTO!!!! Comunque a 8 Mhz: T2CON |= 120; T2CON.TMR2ON = 1; T2CON.T2CKPS1 = 1 T2CON.T2CKPS0 = 0; PR2=120 Questo per far si che Timer2 abbia una frequenza di interrupt di 50.08Hz Se i calcoli a mente non mi fregano.... |
Citazione:
Un segnale impulsato a duty cycle variabile per definizione si chiama PWM. Quindi per tua stessa ammissione un servo si comanda con un segnale PWM (come del resto riportato ovunque). Considerazione prima di andare a dormire visto che domattina alle 6 sono in piedi... Questo post dimostra incontrovertibilmente come ormai trovare qualcuno che avendo detto una cosa errata abbia il coraggio di ammetterlo è cosa rara..... Lascio perdere ulteriori considerazioni.... |
Pwm = Pulse Width Modulation (modulazione di larghezza di impulso) :wink: |
-- ciao romoloman ti scrivo adesso perchè ho avuto un casino di cose da fare.. ..vedo che sei un tipo un pò suscettibile, non ti arrabbiare non c'è motivo. Ok ammetto la mia leggerezza nell'aver dato una risposta frettolosa, con un il PWM ci piloti un servo. X il discorso della tempistica.. volevo dire in altre parole x creare impulsi relativi a 4 ch , oppure 6 ch ecc.. ..ovvero x gestire piu di un servo, tra un segnale e l'altro passa circa un millisecondo, poi alla fine dei 4 oppure 6 ch una pausa piu lunga e poi si ricomincia. ..ciò ovviamente nn puo' essere gestito con un PWM se dovessi dire qualche fesseria, accomodati pure non ho problemi ad ammettere d'aver sbagliato, anzi grazie per le delucidazioni. hai esperienza con i motori passo passo? a presto Citazione:
|
Citazione:
Il discorso che fai tu sulla tempistica ha senso solo se fai una codifica sequenziale sullo stesso canale (in questo caso è una sequenza di segnali pwm e non un PWM puro). Altrimenti il discorso non cambia, supponi di dover gestire 6 canali, avrai una routine di interrupt che scatta ogni 20ms... all'interno di questa routine vai a gestire in sequenza timer1 per il primo canale, finito di gestire il primo gestisci il secondo e via così per le 6 uscite del PIC relative ai 6 servocomandi. Avrai 6 segnali PWM distinti su 6 uscite distinte (è così fra l'altro che lavora una RX). Ovvio che in questo caso i fronti di salita non sono tutti allo stesso T.. Tuttavia se tu volessi averli allo stesso T sarebbe sufficiente ordinare i canali per larghezza di impulso crescente e gestire i delta T (potrebbe diventare una rogna gestire delta molto piccoli a bassa frequenza di clock della CPU). Tuttavia la sincronicità dei fronti di salita non è una cosa obbligatoria, considerando i tempi di risposta meccanici di un servo ed infatti se provi a vedere con un'oscilloscopio le uscite di una RX te ne renderai conto tu stesso... Con i passo passo ci ho lavorato, ultimamente mi sono solo capitati lavori in cui c'erano brushless con encoder o resolver. |
Credo si stia facendo confusione confondendo il segnale di pilotaggio di un servo che è un PWM con quello di un frame di una ricevente he è un PPM dove è la distanza tra due impulsi che specifica quale sarà l'impulso da generare per ogni servo, quello delle riceventi tanto per capirsi. Qui c'è una breve descrizione e un segnale visto all'oscilloscopio Hitec Optic6 Modifica a 8 canali (Compatibile con Eclipse) - Marco Sinatti Questa è più dettagliata RC PPM signal |
Citazione:
|
No no io non ce l'avevo con nessuno! :D Era solo per specificare... |
allievo maestro si avevo ben chiaro il sistema ppm, ho fatto in passato qualche esperimento in merito, era questo che tentavo di dire.. per differirlo dal PWM, comunque è interessante l'articolo inviato. A me mi prudevano le dita per produrre lo stesso segnale ma dalla presa allievo- maestro, al posto del classico slave vorrei mettere un PC con un software che pilota l'aereo. Quindi l'allievo diventa il PC che esegue un programma di volo, mentre il master rimane la radio classica che invia il segnale sulla RX dell'aereo. Nella presa allievo maestro il livelli 0 - 1 hanno valori diversi, 10 Volt -10 Volt ..sempre se non sbaglio. PEr cui serve un opportuno convertitore TTL --> PPM per allievo presa maestro. io premetto che non sono un elettronico, ho esperienza nel software, qualunque linguaggio di programmazione.. a dopo a dopo Citazione:
|
delucidazione ciao romoloman.. scusa se ti scrivo dopo tutto questo tempo, volevo una delucidazione, allora davo per scontato che si parlasse di Pic, ecco scusandomi se esco leggermente fuori tema.. per generare un PWM opportuno per un servo devo creare una pausa di almeno 15.000 mS però con il TMR2 che è un registro da 8 bit, usando un prescaler massimo 16 posso arrivare mx ad un ritardo di appena 4096 mS ...come faccio? scusa anticipatamente se la domanda è formulata in breve .. vado di fretta Citazione:
|
Citazione:
:yeah: |
PWM via software ..ok ..quindi occore generare un segnale d'onda quadra che oscilla dal 50% duty cycle (un millisencondo) fino al 100% (due milli secondo) , terminato il quale si ggiunge un' attesa di 15 mS ovvreo 5 x 3mS = 15 mS .. e cosi via ciclico.. a dopo Citazione:
|
Tutti gli orari sono GMT +2. Adesso sono le 15:05. |
Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002