sto svolgendo una tesi in automazione e mi trovo a dover mandare un segnale analogico da Arduino ad un drive di motori stepper.
Il drive in questione accetta solo segnali line drive 5V e non i segnali TTL quindi la domandona è:
le uscite di arduino sono line drive o TTL?
Se fossero TTL come le converto in line drive?
Non ho mai sentito parlare di TTL prima d'ora, ammetto la mia ignoranza.
Tutte le porte logiche funzionanti a 5V, in genere, vengono definite "TTL" (anche se ormai la maggior parte delle porte e' cmos ;)), ed in genere si indica con "livelli TTL" tutto quello che funziona in digitale fra 0 e +5V ... i "line drivers" di solito non sono altro che porte TTL con un buffer di uscita, per poter dare un po piu corrente e pilotare qualcosa di piu delle solite poche porte successive ...
Secondo me', la corrente erogabile dai pin di Arduino e' gia piu che sufficente, se proprio per sicurezza vuoi metterci dei buffer in serie (magari anche solo per separare le due cose, anche se non dovrebbe servire), puoi usare dei 74HCT241 (se non devi invertire i segnali, se invece devi invertirli ci sono i 74HCT240)
Grazie Etemenanki!
quindi potrei provare senza niente e nel caso non funzionasse aggiungere un buffer?
ho trovato online lo schema del 74HCT241.
mi potreste spiegare cosa indicano i codici 1y1, 2a1 ecc ecc?
Io esco con due segnali da Arduino, un digitale che uso come enabler e un analogico che da la direzione e velocità allo stepper.
Come dovrei collegare il buffer?
Nemokim:
Il drive in questione accetta solo segnali line drive 5V e non i segnali TTL quindi la domandona è:
le uscite di arduino sono line drive o TTL?
I GPIO di Arduino non sono TTL, sono cmos, i livelli logici sono compatibili con quelli TTL sia in uscita che in ingresso.
Line drive TTL significa un out a livelli TTL a bassa impedenza d'uscita, protetto contro le esd e in grado di erogare almeno 10 mA, ovvero un out digitale pensato specificatamente per inviare stati logici attraverso dei fili.
Tutti i GPIO di Arduino hanno caratteristiche elettriche da line driver quando settati como out digitale quindi puio collegarli direttamente al tuo driver.
La tua affermazione che devi inviare un "segnale analogico line driver 5V" è un nonsenso in quanto gli ingressi degli stepper driver sono tipicamente digitali e non analogici, salvo casi molto particolari, però in questo caso ti serve un DAC con buffer.
io collego Arduino ad un drive che ha 4 ingressi, due vengono usati dell'encoder incrementale (per controllare il motore in anello chiuso), un ingresso viene utilizzato come enabler (digitale, logica booleana) e l'ultimo ingresso del drive serve a dare un riferimento di direzione e velocità allo stepper.
+5V = Vmax
0V= velocità nulla
-5V= -Vmax
con tutte le vie di mezzo possibili.
Il drive riconosce il segnale analogico, ho parlato ieri con il produttore ed è stato lui a suggerirmi questa tecnica.
Nemokim:
io collego Arduino ad un drive che ha 4 ingressi, due vengono usati dell'encoder incrementale (per controllare il motore in anello chiuso), un ingresso viene utilizzato come enabler (digitale, logica booleana) e l'ultimo ingresso del drive serve a dare un riferimento di direzione e velocità allo stepper.
Sei sicuro che stiamo parlando di uno stepper ?
Per me quello è un controller per motori DC dotati di encoder, presumibilmente un controller per sistemi industriali dove è necessario far girare il motore ad una ben precisa velocità.
Arduino non possiede nessuna uscita analogica, se ti serve una tensione +/-5V ti serve un idoneo DAC con relativa alimentazione duale.
Si sono sicuro sia uno stepper, nella scheda del driver che ho postato c'è anche la voce "risoluzione passo"
Questo è il motore in questione: Link motore
astrobeed:
Arduino non possiede nessuna uscita analogica, se ti serve una tensione +/-5V ti serve un idoneo DAC con relativa alimentazione duale.
questo è un bel problema! ero convinto che avesse le uscite analogiche.
a questo punto mi conviene utilizzare un pin PWM per comandare il motore e rinunciare alla possibilità di far girare il motore al contrario (utile ma non indispensabile per la mia applicazione).
Ma l'interfaccia RS232 indica solo il tipo di porta di comunicazione o anche il tipo di segnale che ci passa?
Posso usare uno shield RS232 su arduino per comunicare con il driver ma poi che segnali gli mando dentro?
//scusa queste domande da profano ma ho sempre preferito la meccanica all'elettronica.
ti serve un interfaccia RS485 per arduino, costa pochi euro, poi la colleghi mediante 2 fili D+ e D- al driver SW1A4080N361 e tramite il protocollo modbus, (si trovano delle librerie pronte per arduino) invii i comandi di movimento
Nemokim:
Ma l'interfaccia RS232 indica solo il tipo di porta di comunicazione o anche il tipo di segnale che ci passa?
Posso usare uno shield RS232 su arduino per comunicare con il driver ma poi che segnali gli mando dentro?
//scusa queste domande da profano ma ho sempre preferito la meccanica all'elettronica.
Ma nella documentazione del Driver (che non é scaricabile pubblicamente) dovrebbe essere spiegato tutto.
@icio
una RS232 é piú facile da gestire visto che é full duplex.