|
6526
|
International / Italiano / Re: Arduino Mega2560 e porte seriali
|
on: July 24, 2011, 11:02:09 am
|
Le porte seriali del Mega2560 si possono connettere direttamente a quella porta o mi consigliate di farmi l'adattatore per l' rs485??
Ti consiglio di usare la RS485 collegando un driver alla normale seriale, p.e. un SN75176 o un MAX485, questa scheda è pensata apposta per risolvere questo genere di problemi.
|
|
|
|
|
6527
|
International / Italiano / Re: Problem uploading to board
|
on: July 24, 2011, 10:58:51 am
|
Strano, io non uso mai un delay in quel modo ma riesco a uppare lo stesso il mio codice... Questo almeno con arduino diecimila, duemilanove, con firmware standard e con versione di ladyada.
Il problema del blocco dell'upload si ha solo in casi estremi dove il micro invia in continuazione ad alta velocità i dati, in questo caso si può incorrere in problemi di buffer overun sulla seriale virtuale del pc che comportano difficoltà nella sua apertura e utilizzo. Se si a che fare con uno di questi casi limite basta tenere premuto il tasto di reset e rilasciarlo non appena appare la prima scritta nell'ide dopo aver aver premuto il tasto di upload. Rammento che non appena si avvia l'upload la prima cosa che viene eseguita è l'apertura della Vcom con succesivo reset del micro, quindi poco importa cosa stava facendo prima, però se la Vcom è in condizione di errore questa operazione fallisce.
|
|
|
|
|
6528
|
International / Italiano / Re: Controllare Infrarossi
|
on: July 24, 2011, 05:16:19 am
|
Riciclare il codice d'esempio che ti avevo dato per generare i 40kHz per le capsule ultrasoniche ? /* Generatore di impulsi 40 kHz */
byte i,j,stato=0;
void setup() { pinMode(13, OUTPUT); pinMode(2, OUTPUT); digitalWrite(13, HIGH); }
void loop() { for(j=0;j<255;j++) { stato ^= 1; digitalWrite(2,stato); for(i=0;i<9;i++) { asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop"); } } //delay(25); }
Agendo sul numero delle nop e dei cicli for puoi ottenere una frequenza di 38 kHz esatti.
|
|
|
|
|
6529
|
International / Italiano / Re: serial modem
|
on: July 24, 2011, 04:50:04 am
|
|
E' un jumper a saldare, ti permette di selezionare se In e Out sono collegati assieme oppure utilizzano canali separati.
|
|
|
|
|
6530
|
International / Italiano / Re: Sottomarino radiocomandato
|
on: July 24, 2011, 04:47:32 am
|
quello che più ti aggrada,
Nessuno dei due, primo perché sono per uso in aria, se li metti dentro un liquido li danneggi, secondo perché serve un sensore di pressione che misuri svariate atmosfere, una per ogni dieci metri di profondità, e deve essere per l'uso in immersione in fluidi, in particolare compatibile con l'acqua marina.
|
|
|
|
|
6531
|
International / Italiano / Re: ROV (Underwater Remotely Operated Vehicle)
|
on: July 24, 2011, 01:43:44 am
|
2)Sono perplesso sul motore brushless che intendi utilizzare per muoverti verticalmente, da quello che ho capito non credo che si possa invertire il movimento del motore se non invertendo i cavi. Ma spero di sbagliarmi....
Tutti i motori elettrici DC possono invertire il senso di rotazione, BLDC inclusi, semmai il limite è nell'ESC che non prevede l'inversione del senso di rotazione, cosa che si può ottenere anche girando due dei tre cavi. Del resto se l'ESC è previsto per l'uso su modelli volanti non ha alcun senso che preveda l'inversione del senso di rotazione, mentre per quelli utilizzati sui modelli di auto è la norma. -Le batterie al piombo sono pesanti ed è quello che ci serve, perchè comprare delle lipo, leggere e costose,
Posso anche essere d'accordo sul fatto che sul rov ti fa comodo avere più peso sulle batterie come zavorra e che le batterie al piombo sono più economiche di quelle LiPo, per contro sono molto più ingombranti, e prevedere maggiore spazio per le batterie vuole dire maggiore volume che si traduce in maggiore spinta verso l'alto, e non permettono la stessa erogazione di corrente delle LiPo. Esempio pratico un pacco LiPo da 4.5Ah 20C può erogare senza problemi fino a 90A continui e oltre 130A di picco, una batteria al piombo da 4.5Ah al massimo eroga una ventina di Ampere prima di cominciare a bollire e danneggiarsi irreparabilmente. Su un rov di potenza ne serve molta e anche se non utilizzata tutta quanta costantemente ci sono spesso e volentieri picchi di utilizzo, in pratica ogni volta che devi fare manovra l'assorbimento arriva al massimo, rimane relativamente basso solo quando avanzi a velocità costante. -Il caricatore delle batterie al piombo costa 18 euro, quello delle lipo? supera i 60...
Le LiPo richiedono un sistema di ricarica molto simile a quello delle batterie al piombo, un buon caricabatterie per le Pb costa quanto quello delle LiPo, se pensi di usare i caricabatterie da due soldi per le batterie auto è il modo migliore per distruggere le tue batterie al piombo. Un caricatore buono per le LiPo costa meno di 25 Euro, p.e. questo che ha pure l'equilizzatore. -Hai parlato di autonomia, ti dirò che io ho attaccato i miei motori alla batteria da 4,5 ah per 20 minuti e non si è scaricata devo ancora capire bene perche i parametri che leggi sono quelli di potenza massima
Consumano poco perché hai sbagliato elica, ovvero gira ma non crea spinta, sei in cavitazione. Un motore BLDC da 187 W massimi, quelli che stai usando, diciamo che può erogare circa 140W continui, se utilizzato correttamente quando lo spingi al massimo assorbe almeno 12A , se non è così vuol dire che non c'è carico meccanico, ovvero non stai sfruttando il motore. -Sempre nel mio post ho trovato sconveniente alimentare il tutto dall'esteno, ci sono persone che ci hanno provato ma devi avere un voltaggio della batteria esteno altissimo quindi te lo sconsiglio, se ti servono altre info vedi il post.
Chissà perché tutti i rov, e parlo di quelli "veri", sono alimentati tramite cavi. Te lo spiego io il motivo, per ottenere una autonomia decente dovresti mettere a bordo una tonnellata di batterie, oltre a costare non è molto pratico, quindi a meno di particolari esigenze è meglio alimentare il rov dalla superficie se si vuole girare sott'acqua per tempi che non siano pochi minuti. Le tensioni alte si usano solo con i cavi molto lunghi, parliamo di centinaia di metri, non è certo il vostro caso, con qualche decina di metri di cavo non ci sono particolari problemi e si parte tranquillamente con i 12V, o al massimo con 24V. Conta che se ci sono corpuscoli accendendo dei led luminosi credo che peggioreresti la situazione dato che illumineresti loro senza vedere oltre.
Vale anche per i led IR, quindi tanto vale usare la normale visione a colori, per le piccole profondità non ci sono particolari problemi di luce, non servono fari superpotenti, una banale lampada led da 3 Watt (equivalente a una lampadina alogena da circa circa 20 Watt) basta e avanza. Per il discorso qualità camera sicuramente è meglio spendere qualche Euro in più e acquistarne una buona, serve anche il cavo coassiale per portare il segnale in superficie e pure questo deve essere ottimo altrimenti la qualità dell'immagine sarà scadente. Un cavo che si presta benissimo, e costa poco, per portare i vari segnali è quello UTP, dentro ci sono 4 coppie twistate che sono perfette per l'uso con la RS485, tramite appositi adattatori è possibile farci passare anche il segnale video con ottimi risultati.
|
|
|
|
|
6532
|
International / Italiano / Re: Official topic: multicotteri con arduino!
|
on: July 23, 2011, 03:30:20 pm
|
Perdonatemi una domanda da profano sul WMP (che è il WiiMote, giusto?), se ho capito è quello che ho io, cioè quello che si collega bluetooth.
No il WMP è il WiiMote PLUS, cioè un'estensione che colleghi al WiiMote alla porta che ha sul fondo, in particolare il WMP è un giroscopio a 3 assi che viene utilizzato dal WiiMote per migliorare la precisione di alcuni movimenti. se è così, vorrei sapere se la porta che ha 'sotto', serve solo a collegare i moduli aggiuntivi, o si può usare anche per leggere direttamente i segnali I2C del Wiimote stesso.
Per quanto ne so io la porta sotto è di tipo master e non puoi leggere i dati del WiiMote, quelli li prendi solo tramite Bluetooth. lo chiedo, perchè su linux ho difficoltà ad interfacciarlo in bluetooth con processing
Se ti può consolare è un problema anche con Windows. Attenzione che non tutti i bluetooth sono compatibili con il WiiMote sia come hardware che come software, p.e. io ho due key usb bluetooth, entrambi di Sitecom anche se di diversi modelli, una funziona perfettamente con il WiiMote, l'altra lo vede, ma non si riesce a comunicare.
|
|
|
|
|
6533
|
International / Italiano / Re: Serial1.available() dopo un po' satura. problema.
|
on: July 23, 2011, 03:08:37 pm
|
Pensavo che i due Serial non fossero correlati, sono ancora alle prime armi e quindi devo fare un po' di pratica
Anche se le due seriali hardware del micro sono tra loro indipendenti rimane il fatto che i dati li porti via meno velocemente di come arrivano. Ti faccio un esempio banale, immagina di avere un secchio da 128 litri, sul fondo c'è uno scarico che porta via 1 litro ogni secondo, sopra c'è una mandata che immette 6 litri ogni secondo, dopo 28.5 secondi il secchio è pieno e l'acqua tracima fuori. Quanto sopra è quello che succede al tuo buffer, dopo un po di tempo si riempie e se non azzeri il puntatore questo comincia a indirizzare la memoria oltre il limite, cioè i dati vengono scritti sulle locazioni di ram oltre il buffer, col risultato che sporchi la memoria di sistema e conseguente crash del programma. . Per quanto riguarda la velocità lo xbee mi aveva dato dei problemi settandolo a più baud, ad ogni modo riprovo il prima possibile e vi faccio sapere se va bene.  ) Gli Xbee funzionano benissimo a 57600, volendo anche di più, se c'è un problema è nel software che riceve i dati.
|
|
|
|
|
6534
|
International / Italiano / Re: Official topic: multicotteri con arduino!
|
on: July 23, 2011, 07:39:09 am
|
a questo punto si potrebbe usarequesto invece che il multiwii + nunchuk???'
Il WMP + Nunchuk è solo un modo per risparmiare qualche Euro, in particolare il WMP ha un rapporto prezzo prestazioni ottimo, con circa 20 Euro ti ritrovi con un giroscopio a tre assi, già filtrato, tutto sommato decente e sufficiente per lo scopo, però c'è di meglio. Per quanto riguarda l'utilizzo dell'accelerometro del Nunchuk lo sconsiglio sia perché la conversione è fatta solo a 10 bit, tanto vale usare direttamente l'ADC dell'ATmega, sia perchè un ADXL335 già saldato su una breakout board costa di meno ed è meno ingombrante. Usano dei normali giroscopi per elicotteri, esattamente come fa GAUI 330, ottenendo solo la stabilizzazione degli assi, non hanno l'autolivellamento per il quale serve anche l'accelerometro.
|
|
|
|
|
6535
|
International / Italiano / Re: Official topic: multicotteri con arduino!
|
on: July 23, 2011, 07:19:41 am
|
per quello che posso capire computa l'orientamento dell'elicottero tramite due giroscopi: uno per le due direzioni X-Y - uno per la direzione Z
Nello schema a blocchi dell'elettronica c'è n giroscopio a tre assi, un accelerometro a tre assi e un processore ARM Cortex M3, praticamente la stessa cosa che si fa con un WMP più un Nunchuk, o altro accelerometro a 3 assi, e Arduino dotato di software MultiWii con la differenza che loro usano un buon processore a 32 bit.
|
|
|
|
|
6537
|
International / Italiano / Re: Official topic: multicotteri con arduino!
|
on: July 23, 2011, 07:08:28 am
|
un magnetometro ti ritorna la posizione assoluta rispetto ad un punto quindi hai un punto fisso e tu hai un'inclinazione rispetto a questo punto
Ti hanno spiegato molto male  Il magnetometro, come dice il nome stesso, misura un campo magnetico, nel caso specifico quello terrestre, combinando la misura di due assi, X e Y, si ottiene una bussola elettronica che ti dice dove si trova il nord magnetico, però è fortemente influenzata dai campi magnetici e dalle masse ferromagnetiche presenti nei dintorni. Una bussola elettronica è precisa solo se è perfettamente in bolla, l'eventuale inclinazione su uno degli assi influenza molto la direzione misurata del nord magnetico, per ovviare si utilizza un inclinometro per misurare il fuori bolla e correggere di conseguenza la lettura per ottenere il vero nord magnetico. Nelle IMU il magnetometro si usa sia come inclinometro assoluto, molto efficace e non è influenzato dalle accelerazioni del mezzo, sia come bussola elettronica quando l'assetto non è troppo inclinato utilizzando i dati dell'accelerometro e del giroscopio per compensare l'errore dovuto all'inclinazione. Lo so che sembra complicato, infatti lo è  , mentre nel gioroscopio il punto sarebbe quello di partenza, hai un delta e non valore assoluto ovvero una variazione di inclinazione.
Il giroscopio misura la velocità angolare, è possibile ottenere l'angolo di rotazione integrando le letture, ma in brevissimo tempo, poche decine di secondi, si perde l'esatta misura dell'angolo di rotazione per tutta una serie di problemi legati al drift del sensore, il rumore, la quantizzazione, la velocità di campionamento etc. Per ovviare si ricorre alla sensor fusion, cioè si utilizzano i dati di più sensori tra loro complementari per estrapolare il dato corretto e compensato, nel caso della IMU si utilizza un giroscopio e un accelerometro per ogni asse come minimo, se poi se si aggiunge anche il magnetometro, viene usato come inclinometro assoluto, si ottiene un'ottima precisione, e stabilità, nel rilevamento dell'assetto. Una IMU fatta bene, sia come hardware che come software che gestisce i dati, permette di conoscere l'assetto del mezzo, la velocità di spostamento, la direzione di marcia e di stimare la posizione del mezzo nello spazio, cioè dove si trova rispetto al punto di partenza.
|
|
|
|
|
6538
|
International / Italiano / Re: analogReference(INTERNAL) mi serve spiegazione
|
on: July 23, 2011, 05:43:45 am
|
si, sono piu' stabili, ma se vuoi un riferimento preciso non c'e' da fidarsi, puoi trovarti 5,05 come 4,94 o +, e un piccolo errore poi s'amplifica, ho fatto delle prove e il riferimento interno e' la scelta migliore
Ovviamente anche il regolatore a 5V presente su Arduino ha le sue tolleranze e la tensione non è mai 5V esatti, però non ha tutto il rumore che c'è sui 5V della USB, ed è quest'ultimo a creare i maggiori problemi con l'ADC. Un errore di qualche decina di mV come riferimento sull'ADC è un errore assoluto e costante in modo raziometrico su tutte le letture, può essere facilmente compensato misurando la tensione di uscita del regolatore a 5V e utilizzare questo valore per la conversione tra count ADC e tensione reale se necessario. Se la lettura ADC non deve essere visualizzata in tensione reale per noi umani è inutile convertire i count dell'ADC in Volt, conviene lavorare direttamente con i count, se occorre inserire nel programma tensioni reali come riferimenti si usa una define dove viene eseguito il calcolo per la conversione dal compilatore e non dal processore durante il run time.
|
|
|
|
|