Ho praticamente trovato fumata nera in qualsiasi luogo, ma io lo chiedo per sicurezza
È possibile avere due PIN analogici interrupt?
Grazie.
Ho praticamente trovato fumata nera in qualsiasi luogo, ma io lo chiedo per sicurezza
È possibile avere due PIN analogici interrupt?
Grazie.
Mica si capisce. Tutti i pin di arduino sono digitali, inclusi quelli A0÷An che in più sono anche collegati al convertitore ADC.
Su tutti i pin è possibile abilitare un tipo di interrupt detto PIN_CHANGED, quindi anche su A0 ecc ma ovviamente lavoreranno in digitale. In aggiunta questo tipo di interrupt non sono configurabile su fronte di salita o discesa ma solo su cambiamento di stato, ovviamente ci sono anche altre differenze, ma per adesso può bastare.
PS: navighi nel buio assoluto, questa è l'impressione.
Sulla MEGA ci sono solo 4 pin INT0÷INT3, sulla UNO solo INT0 e INT1.
La sparo li, si tratta sempre dell'encoder? Se si puoi anche usare i pin A0÷An ma in digitale ma serve una libreria che per quel che ne so non ha mai funzionato bene e io ho sempre fatto a meno della libreria configurando i registri della MCU.
Ciao,
ci speravo ^^'
fuori argomento: l'encoder ha uscita 2,5v a quanto pare arduino non la rileva come stato logico digitale, quindi dovrei prima dotare le uscite dell'encoder con un qualche amplificatore di segnale (il manuale dell'encoder suggerisce un mc3486, anche se non sono pienamente convinto, vedrò domani con la mente più frsca) o forse devo abbandonare l'idea di dare priorità alla lettura dell'encoder... più che brancolare nel buio sto pianificando.
grazie comunque della conferma
Inusuale tensione di uscita, hai un link all'encoder?
Se è così non è conforme con le specifiche TTL. Arduino invece è conforme con TTL.
è un encoder di 30 anni fa presumo che sia conforme con lo standard ttl solo che ha bisogno di una spintarella come si faceva 30 anni fa
non sono mai certo di quello che dico in materia, ma mi espongo:
l'encoder è un rod 420 (datasheet rod 420
a pagina 7 suggerisce di usare l'mc3486 per avere il segnale 5v..... dopo tutti questi anni non ricordo più nemmeno le leggi di ohm quasi figurati se devo ricordarmi come funziona un line riceiver (mc3486 datasheet )
tecnicamente dovrei collegare Ua1 e Ua1(negato) al pin 1-2 e avere la ttl in uscita sul pin 3 [oramai non sono sicuro di niente]
Vai così, certe volte ci si prende e altre no. L'encoder ha illuminatore a filamento, cioè una lampadina che lavora a 5V e assorbe circa 200mA, per cui alimentandolo dovresti misurare la corrente e se assorbe circa 200mA è ok, diversamente se non assorbe nulla, la lampadina è guasta.
Il circuito proposto serve a fare viaggiare il segnale dell'encoder via cavo riducendo a minimo le interferenze che il cavo stesso capta lungo il suo percorso.
Nel caso specifico consigliano di trasformare il segnale single ended in uno differenziale RS422. Nel cavo viaggiano bit con protocollo seriale nello standard RS422 e alla fine del cavo c'è il convertitore da RS422 a TTL.
Se il cavo non deve essere lungo più di 1 metro puoi sicuramente farlo funzionare con arduino. Il segnale è conforme con TTL, quindi ci dovrebbe essere in uscita tra a1 e gnd una tensione poco meno di 5V. Serve misurarla per avere certezza, in ogni caso quando il segnale va basso la tensione tra a1 e GND si riduce a 0.6V ed è sufficiente questo poiché gli ingressi sono configurati in pull-up.
Misurando la tensione di uscita di a1 e a2 rispetto a gnd ci si può fare una idea su come collegarlo ad arduino. Nel caso in cui la tensione non fosse superiore a 3.3V si dovrà usare un transistor oppure un accoppiatore ottico, ma di questo ci preoccuperemo dopo la misurazione.
Riguardo alla spintarella, secondo il manuale è conforme TTL e per di più le uscite si possono caricare fino a 20mA che sono abbondanti pure per accendere un led dell'accoppiatore ottico.
Ciao.
Per precisione secondo il manuale la lampadina consuma 120mA , gli altri 80mA li consuma la scheda, quindi a lampada interrotta il consumo crolla a 80mA non a zero
a riposo mi da 0v se lo muovo mi da sempre 0v, io penso che ci sia bisogno di un oscilloscopio che ovviamente non ho.
mi sono creato questo codice [per l'appunto delaymicrosecond() non funziona], ma se ruoto l'encoder non si accendono i led, quindi mi è venuta l'idea "ok ora lo attacco all'analogica e registro i valori di tensione, vediamo se riesco a beccare l'impulso e a capire qualcosaltro...magari attraverso il monitor riesco a capire in tempo reale qualcosa
int encoderPinA = 2;
int encoderPinB = 3;
int LED_DX = 26;
int LED_SX = 30;
int LED_STOP = 34;
void setup() {
pinMode(LED_BUILTIN, OUTPUT); //può sempre tornare utile
pinMode(encoderPinA, INPUT);
pinMode(encoderPinB, INPUT);
pinMode(LED_DX, OUTPUT);
pinMode(LED_SX, OUTPUT);
pinMode(LED_STOP, OUTPUT);
attachInterrupt(digitalPinToInterrupt(encoderPinA), doEncoderA, CHANGE);
attachInterrupt(digitalPinToInterrupt(encoderPinB), doEncoderB, CHANGE);
}
void loop() {
digitalWrite(LED_DX, LOW);
digitalWrite(LED_SX, LOW);
digitalWrite(LED_STOP, HIGH);
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_STOP, LOW);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
void doEncoderA() {
digitalWrite(LED_DX, HIGH);
delayMicroseconds(1000);
}
void doEncoderB() {
digitalWrite(LED_SX, HIGH);
delayMicroseconds(1000);
}
io non riesco a smontare l'encoder perche ci sta quel benedetto controdado troppo sottile e non ho la chiave, quindi non so a monte dell'encoder cosa ci sia se il se rs422 o ttl, sulla vecchia scheda non c'è presente niente di simile a valle, so solo che ho 6 pin ua1 ua1(negato) ua2 ua2 (negato) ua0 ua0(negato)...recap collegando ua1 e ua2 arduino non legge niente...il cavo è sicuramente più lungo di un metro, si dilunga nella carcassa (io non so a che anno corrisponde quel manuale io ho un rod 420 c 250 h4, almeno il pinout corrisponde con un mezzo shcema elettrico del macchinario)
Come ti ha detto Maurotec devi controllare l'assorbimento, devi dare 5V sui pin 2 e 12 e gnd su 10 e 11, ruotandolo sui canali 1 e 2 troverai dei segnali da 0,5 a 3,5 V circa , attento che variano con spostamenti angolari minimi
Il livello MINIMO di segnale in uscita, quello che hai quando viene caricato a 20mA , a vuoto è circa 3.5V
Quanti impulsi per giro ha?
Come ti ha detto Maurotec devi controllare l'assorbimento, devi dare 5V sui pin 2 e 12 e gnd su 10 e 11, ruotandolo sui canali 1 e 2 troverai dei segnali da 0,5 a 3,5 V circa , attento che variano con spostamenti angolari minimi
trovo 0v fra pin 5/gnd stessa cosa su pin8/gnd.....ovviamente mentre ruoto l'encoder
Se non hai nulla nemmeno sulle uscite negate hai problemi all'encoder
domada: a riposo che stati devono avere? se è "un impulso" non muovol'encoder dovbrebbe segnare 0 su qualsiasi pin, appena lo muovo mi dovrebbe dare +5 per una frazione di secondo (tale da non essere misurata) il mio dubbio è: sicuri che non serva un oscilloscopio?
Il data sheet dice che le uscite negate sono opposte alle uscite dirette
In effetti ci sarebbe da domandarsi cosa altro potrebbe dire...
Quindi se hai zero in una devi avere alta la sua negata
L'oscilloscopio sarebbe utile
Come la serie di attrezzi necessari a lavorare
Hai misurato la corrente assorbita dall'encoder?
@Ducembarr tutto quello descritto da ieri fino ad oggi verrà messo in pratica stasera o nel primo tempo utile è solo un progetto didattico appena avrò tempo mi scervellerò e vi aggiornerò (vi state appassionando peggio di me
)
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.