BaroneRosso.it - Forum Modellismo

BaroneRosso.it - Forum Modellismo (https://www.baronerosso.it/forum/)
-   Circuiti Elettronici (https://www.baronerosso.it/forum/circuiti-elettronici/)
-   -   Servocomandi e PLC (https://www.baronerosso.it/forum/circuiti-elettronici/226130-servocomandi-e-plc.html)

fulvico 12 ottobre 11 12:22

Servocomandi e PLC
 
Ciao a tutti !
Esiste qualche interfaccia per comandare uno o più servocomandi con un plc ?
Ogni consiglio è ben accetto !!!
Grazie

marcosinatti 12 ottobre 11 19:35

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

fulvico 13 ottobre 11 09:16

:hail:
Oggi parlo con l' elettricista e vedo cosa riesco a fare :P

Grazie 1000

fulvico 13 ottobre 11 13:02

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:

marcosinatti 13 ottobre 11 13:19

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.

marcosinatti 13 ottobre 11 13:31

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

jrox92 13 ottobre 11 19:30

Ma perche prorprio un PLC?? utilizza Arduino!! costa meno ed e modulabile
:huh:

fulvico 13 ottobre 11 23:21

Citazione:

Originalmente inviato da jrox92 (Messaggio 2817136)
Ma perche prorprio un PLC?? utilizza Arduino!! costa meno ed e modulabile
:huh:

Perché ho già un sistema con plc motori fotocellule pneumatica ecc .. E vorrei sperimentare utilizzando dei servi anche mini.. Ma non escludo affatto di utilizzare arcuino, anzi in primis magari come interfaccia :D

fulvico 13 ottobre 11 23:23

Citazione:

Originalmente inviato da marcosinatti (Messaggio 2816471)
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...

Grazie ancora Marco !
Ora inizio a ragionare :wink:

faustog_2 16 ottobre 11 00:25

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:

Originalmente inviato da marcosinatti (Messaggio 2815221)
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


romoloman 16 ottobre 11 11:14

Citazione:

Originalmente inviato da faustog_2 (Messaggio 2820867)
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..

Scusa se ti correggo io... a seconda di come è implementato il PWM ovvero se hai la possibilità di settare la frequenza, fra PWM e segnale servo non c'è molta differenza....
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.

marcosinatti 16 ottobre 11 15:59

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:

marcosinatti 16 ottobre 11 20:08

Ahhh scusa Romoloman, non era indirizzato a te ovviamente...

romoloman 16 ottobre 11 21:50

Citazione:

Originalmente inviato da marcosinatti (Messaggio 2821785)
Ahhh scusa Romoloman, non era indirizzato a te ovviamente...

Mi sembrava ovvio....
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...

faustog_2 17 ottobre 11 00:42

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

Originalmente inviato da romoloman (Messaggio 2821099)
Scusa se ti correggo io... a seconda di come è implementato il PWM ovvero se hai la possibilità di settare la frequenza, fra PWM e segnale servo non c'è molta differenza....
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.


romoloman 17 ottobre 11 00:49

Citazione:

Originalmente inviato da faustog_2 (Messaggio 2822373)
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

Si sta parlando di PLC.... ti sfugge ? Mi spieghi cosa centrano CCPR1L e TRM2 con un PLC ?
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....

romoloman 17 ottobre 11 01:16

Citazione:

Originalmente inviato da faustog_2 (Messaggio 2822373)
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

Cosa vuol dire che un PWM ha una tempistica diversa ??? Mai sentito che nei PWM si può regolare la frequenza ?

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

marcosinatti 17 ottobre 11 12:56

Pwm = Pulse Width Modulation (modulazione di larghezza di impulso)


:wink:

faustog_2 21 ottobre 11 00:48

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

Originalmente inviato da romoloman (Messaggio 2822394)
Cosa vuol dire che un PWM ha una tempistica diversa ??? Mai sentito che nei PWM si può regolare la frequenza ?

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


romoloman 21 ottobre 11 10:17

Citazione:

Originalmente inviato da faustog_2 (Messaggio 2829744)
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

Ammettere i propri errori è sintomo di intelligenza e per me la faccenda si chiude qui, amici come prima...
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.

marcosinatti 21 ottobre 11 13:29

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

romoloman 21 ottobre 11 13:35

Citazione:

Originalmente inviato da marcosinatti (Messaggio 2830280)
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

Esattamente quello che cercavo di dire, magari non sono stato chiaro.... (se in questa risposta ce l'avevi con me)

marcosinatti 21 ottobre 11 17:56

No no io non ce l'avevo con nessuno! :D
Era solo per specificare...

faustog_2 25 ottobre 11 20:56

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:

Originalmente inviato da marcosinatti (Messaggio 2830700)
No no io non ce l'avevo con nessuno! :D
Era solo per specificare...


faustog_2 27 marzo 12 11:47

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:

Originalmente inviato da romoloman (Messaggio 2822037)
Mi sembrava ovvio....
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...


ElNonino 27 marzo 12 12:00

Citazione:

Originalmente inviato da faustog_2 (Messaggio 3116858)
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

Un loop da 3ms ripetuto 5 volte ? :wink:

:yeah:

faustog_2 27 marzo 12 16:17

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:

Originalmente inviato da ElNonino (Messaggio 3116882)
Un loop da 3ms ripetuto 5 volte ? :wink:

:yeah:



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