Adafruit 16ch ServoDriver non funziona?

Ciao ragazzi aiuto!! Ho collegato l'Adafruit 16ch servo driver alla mia MEGA2560. Ho seguito passo dopo passo le istruzioni di assemblaggio e collegamento dei cavi nel sito Adafruit utilizzando un solo servo (futaba S3003). Ho usato questa immagine per collegare i cavi, esattamente negli stessi pin (immagine dove potete notare viene usata un'Arduino uno). Scaricata e installata la libreria Adafruit, testandola compilando il codice e ottenendo tutto ok dal compilatore.

NIENTE! il servo sta bello che immobile :(

Il monitor seriale scrive varie cose e sembra che tutto stia andando ok ma comunque il servo sta immobile. Il servo che sto usando, funzionava perfettamente oggi quand'era collegato direttamente all'Arduino. L'alimentatore che sto usando e' un 6V 4A (che funzionava perfettamente oggi, usando 2 servi collegati direttamente all'Arduino) Altra cosa, quando eseguo il codice la lucina TX lampeggia circa ogni secondo.

Spero di aver fatto bene le saldature ma mi pare proprio di si

Aiuto ragazzi!

Primo NON hai messo l'immagine e quindi non possiamo vedere il collegamento, secondo NON hai messo un link al prodotto e la gente non sa di che parli e terzo ... ... se hai fatto [u]esattamente gli stessi collegamenti[/u] della UNO NON funzionerà mai !!!

Vatti a studiare nel reference dei prodotti come sono collegati i pin della UNO e come quelli della MEGA ]:D ]:D ]:D

Guglielmo

gpb01: Primo NON hai messo l'immagine e quindi non possiamo vedere il collegamento, secondo NON hai messo un link al prodotto e la gente non sa di che parli e terzo ... ... se hai fatto [u]esattamente gli stessi collegamenti[/u] della UNO NON funzionerà mai !!!

Vatti a studiare nel reference dei prodotti come sono collegati i pin della UNO e come quelli della MEGA ]:D ]:D ]:D

Guglielmo

Ciao Guglielmo :( si hai ragione, haha =( Ho cercato con google un'eventuale immagine di riferimento per il cablaggio con l'Arduino MEGA ma non ho trovato nulla!, zero! quindi ho utilizzato quella d'esempio convinto che fosse giusta anche per la mega dato che nelle istruzioni dell'Adafruit da nessuna parte tratta il cablaggio con le varie Arduino :sweat_smile:

comunque gia' mi stai dando la speranza di non aver causato cortocircuiti o danni vari...

La pagina dell'Adafruit 16ch ServoDriver: https://learn.adafruit.com/16-channel-pwm-servo-driver

La pagina delle istruzioni step-by-step nella quale si trova l'immagine di riferimento del cablaggio: https://learn.adafruit.com/16-channel-pwm-servo-driver/hooking-it-up

In effetti nell'immagine si vede l'Adafruit collegata all'Arduino uno tramite gli ingressi analogici 4 e 5... mmmm magari la MEGA utilizza altri pin... dal link che mi hai dato dei pin della mega, qualcosa mi dice che l'Adafruit la dovrei collegare sui pin serial??... o comunication forse... Spero di non aver danneggiato nulla utilizzando i pin di riferimento della UNO...

comunque qualcosa mi dice, leggendo il link postato sui pin della mega che invece dei PIN 4 e 5 analogici d'ingresso devo usare i pin seriali 0 e 1??? RX e TX.. :grin:

aldoz ... cosa c'entrano i pin seriali ??? :astonished: :astonished: :astonished:

Quel modulo usa l'interfaccia I2C che sulla UNO è sui pin A4 e A5, ma sulla MEGA è sui pin 20 e 21 !!!

Ripeto, STUDIATI i references e le piedinature perché tra le varie schede cambiano parecchie cose !!! :roll_eyes:

Guglielmo

P.S. : Il bus I2C lo trovi indicato come TWI

gpb01: aldoz ... cosa c'entrano i pin seriali ??? :astonished: :astonished: :astonished:

Quel modulo usa l'interfaccia I2C che sulla UNO è sui pin A4 e A5, ma sulla MEGA è sui pin 20 e 21 !!!

Ripeto, STUDIATI i references e le piedinature perché tra le varie schede cambiano parecchie cose !!! :roll_eyes:

Guglielmo

P.S. : Il bus I2C lo trovi indicato come TWI

Pin 20 e pin 21 ----> SDA e SCL proprio quelli che sono collegati sull'Adafruit! hehe okok, in effetti sarebbe bastato leggere..

E che dici del cablaggio del 5v e del GND? quelli dovrebbero essere giustamente gli stessi.. ;)

@aldo Qui le pinput delle varie schede: http://forum.arduino.cc/index.php?topic=151646.0 il sito di Pighi è down ma c'e' lo zip da scaricare. Io per la mega e uno me le sono stampate e sono [u]utilissime[/u] soprattutto all'inizio.

Allora…
Dopo l’utilizzo dei pin 20 e 21 come suggerito da Guglielmo e’ cambiato qualcosa:

Ora l’Adafruit ha la spia verde accesa ma ancora il servo sta immobile :frowning:
Continua a lampeggiare la spia TX nell’Arduino
e nel monitor seriale, scorre il testo come se il programma stesse funzionando correttamente…

Ma qualcosa ancora non va…

Ecco il codice dell’esempio dell’Adafruit, magari qualcosa vi salta in mente!

/*************************************************** 
  This is an example for our Adafruit 16-channel PWM & Servo driver
  Servo test - this will drive 16 servos, one after the other

  Pick one up today in the adafruit shop!
  ------> http://www.adafruit.com/products/815

  These displays use I2C to communicate, 2 pins are required to  
  interface. For Arduino UNOs, thats SCL -> Analog 5, SDA -> Analog 4

  Adafruit invests time and resources providing this open source code, 
  please support Adafruit and open-source hardware by purchasing 
  products from Adafruit!

  Written by Limor Fried/Ladyada for Adafruit Industries.  
  BSD license, all text above must be included in any redistribution
 ****************************************************/

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

// called this way, it uses the default address 0x40
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
// you can also call it with a different address you want
//Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x41);

// Depending on your servo make, the pulse width min and max may vary, you 
// want these to be as small/large as possible without hitting the hard stop
// for max range. You'll have to tweak them as necessary to match the servos you
// have!
#define SERVOMIN  150 // this is the 'minimum' pulse length count (out of 4096)
#define SERVOMAX  600 // this is the 'maximum' pulse length count (out of 4096)

// our servo # counter
uint8_t servonum = 0;

void setup() {
  Serial.begin(9600);
  Serial.println("16 channel Servo test!");

  pwm.begin();
  
  pwm.setPWMFreq(60);  // Analog servos run at ~60 Hz updates
}

// you can use this function if you'd like to set the pulse length in seconds
// e.g. setServoPulse(0, 0.001) is a ~1 millisecond pulse width. its not precise!
void setServoPulse(uint8_t n, double pulse) {
  double pulselength;
  
  pulselength = 1000000;   // 1,000,000 us per second
  pulselength /= 60;   // 60 Hz
  Serial.print(pulselength); Serial.println(" us per period"); 
  pulselength /= 4096;  // 12 bits of resolution
  Serial.print(pulselength); Serial.println(" us per bit"); 
  pulse *= 1000;
  pulse /= pulselength;
  Serial.println(pulse);
  pwm.setPWM(n, 0, pulse);
}

void loop() {
  // Drive each servo one at a time
  Serial.println(servonum);
  for (uint16_t pulselen = SERVOMIN; pulselen < SERVOMAX; pulselen++) {
    pwm.setPWM(servonum, 0, pulselen);
  }
  delay(500);
  for (uint16_t pulselen = SERVOMAX; pulselen > SERVOMIN; pulselen--) {
    pwm.setPWM(servonum, 0, pulselen);
  }
  delay(500);

  servonum ++;
  if (servonum > 15) servonum = 0;
}

Metti lo schema ESATTO di come TU hai fatto i collegamenti e possibilmente una foto (nitida mi raccomando) in cui si vedono ... ... sai com'è ... fidarsi è bene, non fidarsi è meglio XD

Guglielmo

gpb01: Metti lo schema ESATTO di come TU hai fatto i collegamenti e possibilmente una foto (nitida mi raccomando) in cui si vedono ... ... sai com'è ... fidarsi è bene, non fidarsi è meglio XD

Guglielmo

Lo faccio subito!

… ho ritoccato le saldature per essere sicuro che fossero bene staccate l’una dall’altra e ora la spia dell’Adafruit non s’accende piu’ :frowning:

Ok ragazzi, ho troppa fretta.
Ora ricontrollo bene le saldature… ho il terrore di aver bruciato l’Adafruit con 2 saldature che si sfioravano…

Appena ho controllato bene, vi faccio sapere e posto la foto dei collegamenti

aldoz: Ok ragazzi, ho troppa fretta.

Pessima cosa ... il modo migliore per fare danni !!! :roll_eyes:

Guglielmo

gpb01:

aldoz: Ok ragazzi, ho troppa fretta.

Pessima cosa ... il modo migliore per fare danni !!! :roll_eyes:

Guglielmo

Si pero' devo dare anche un po la colpa al costruttore di questa scheda.. cioe' bisogna fare saldature davvero microscopiche... la punta del saldatore (che e' il saldatore con la punta piu' sottile che ho trovato) e' troppo grossa e nonostante stia usando filo di stagno molto fine e' quasi un odissea fare queste saldature...

Comunque ora la spia dell'adafruit (quando e' tutto alimentato ma in IDLE) e' spenta ma se eseguo il codice, inizia a lampeggiare.. Comunque ricontrollo tutto e posto una foto delle saldature.. A dopo :(

aldoz: Si pero' devo dare anche un po la colpa al costruttore di questa scheda.. cioe' bisogna fare saldature davvero microscopiche...

Microscopiche quelle ???

Sono normalissime saldature a passo 0.1" ... aspetta di dover saldare SOIC ... poi ne riparliamo ! ]:D

Quelle di queste schede sono le più banali in assoluto ... ... preparatici per il futuro perché sono la cosa più semplice che dovrai saldare !!!

Guglielmo

aldoz:
la punta del saldatore (che e’ il saldatore con la punta piu’ sottile che ho trovato) e’ troppo grossa

Probabilmente stai usando un saldatore NON adatto a lavori di elettronica o non sufficientemente accessoriato …
… ad esempio :

Con i Weller guarda QUI
Con Aoyue guarda QUI

Come vedi … all’occorrenza, esistono punte sottilissime … :roll_eyes:

Guglielmo

gpb01:

aldoz:
Si pero’ devo dare anche un po la colpa al costruttore di questa scheda… cioe’ bisogna fare saldature davvero microscopiche

Microscopiche quelle ???

Sono normalissime saldature a passo 0.1" … aspetta di dover saldare SOIC … poi ne riparliamo ! ]:smiley:

Quelle di queste schede sono le più banali in assoluto …
… preparatici per il futuro perché sono la cosa più semplice che dovrai saldare !!!

Guglielmo

Ecco… boh per me è stato un’inferno…
Ho chiesto nel forum adafruit se sia giusto o sbagliato che in IDLE e tutto alimentato, la spia verde sia accesa…
Perche’ ora rimane spenta e solo durante l’esecuzione del codice inizia a lampeggiare… (spia power)
Che dici Guglielmo, puzza da danni irreparabili da come la sto descrivendo?

Ecco la foto delle saldature (purtroppo meglio di cosi’ non esce la foto)… non ridere ti prego…

aldoz: Ecco la foto delle saldature (purtroppo meglio di cosi' non esce la foto)... non ridere ti prego..

Non è questione di ridere è questione, come ti rendi conto da solo, che è totalmente sfocata e quindi non si vede alcun dettaglio.

  1. Illumina sempre bene l'oggetto in modo che quando fai lo scatto vengano usati tempi più bassi e ci sia meno rischio di mosso

  2. Stai ad una distanza superiore alla minima, altrimenti la fotocamera/telefonino NON riesce a mettere a fuoco

  3. Nel momento dello scatto devi stare veramente fermo con la mano

Vedi se riesci a fare di meglio e ... mi raccomando, lo schema (anche disegnato su carta) di come TU hai fatto i collegamenti ... che non si capisce ...

Guglielmo

Ma poi scusa ... ma perché hai saldato i fili direttamente in quel modo e non hai usato le "headers" (i pin) e la morsettiera a vite ???

Se saldavi le "headers" i collegamenti li facevi direttamente con dei jumper maschio/femmina e l'alimentazione dei servo sul morsetto a vite ... così come hai fatto è una bella porcheria e ... ad ogni modifica o prova rischi di danneggiare lo schedino !!!

Mah ... e si che il tutorial di Adafruit è fatto piuttosto bene ... :roll_eyes:

Guglielmo

aldoz: Ecco la foto delle saldature (purtroppo meglio di cosi' non esce la foto)... non ridere ti prego..

Sulla mia fotocamera digitale (di quelle piccoline che fan tutto da sole) c'e' un pulsante per le foto [u]macro[/u]. Con quel settaggio e una buona illuminazione riesci a fare foto molto ravvicinate ed a fuoco.

Allora ragazzi, ho tagliato la testa al toro, ho portato la schedina Adafruit con lo schifo di saldature che ho fatto da un mio conoscente (tecnico riparatore di tv) che rimuovera' il mio orrore e rifara' le saldature. A quel punto, sapro' se ho bruciato l'Adafruit e stasera vi faro' sapere :)

Per ora GRAZIE a tutti per il supporto!!

Allora ragazzi, fortunatamente il malfunzionamento era dovuto solo alle mie ridicole saldature, ora funziona tutto perfettamente :)

Solo un dettaglio che ho notato, magari mi sapete dire di cosa dovrebbe trattarsi: Come attacco l'Arduino al PC via usb (con alimentatore servi acceso) noto un leggerissimo bzzzz che proviene dal servo. Sembra che rimanga "in tiro" :grin: Se lo si tocca si avverte una leggerissima vibrazione.. Secondo voi e' tutto ok? considerando che il codice d'esempio di Adafruit funziona perfettamente. Ah, anche se carico uno sketch vuoto nell'Arduino, il leggero bzzz continua