PCB TribeBot

Aggiunto da Michele Vece circa 2 anni fa

http://dev.hacklabterni.org/attachments/download/1083/TribeBot1.3.png
Questo il lavoro che ho fatto finora
questi i file eagle http://dev.hacklabterni.org/attachments/download/1082/TribeBot1.3.zip

Andrea Belloni ha scritto:

@Michele
Avevamo già deciso insieme a Moreno alcune modifiche da fare al PCB (partendo dalla 1.2)
- spostare C3 in alto a sinistra del IR RX per averlo più vicino possibile ai +5 del componente da filtrare (IR RX)

rivedendo il progetto C3 è il più vicino possibile al IrRX (che va ripiegato in basso) se lo sposto sopra come suggerisci il montaggio dei componenti diventa estremamente difficile. (fatto comunque)

- aggiungere switch (http://www.tme.eu/it/details/esp2010/interruttori-a-slitta/ece/#) usato come deviatore: in una posizione V+ della batteria alimenta il circuito, nell'altra va verso connettore per caricabatteria

Ho risolto usando dei fori compatibili.
Sono alla ricerca di librerie per eagle, in alternativa bisogna disegnarla noi basandoci su questo datasheet (vedi mail su mailman).
Oppure potremmo usare un jumper e 3 pin strep che funga contemporaneamente da connettore per il caricatore e da switch
PIN Funzione carica/OFF ON
pin1 GND GNDcaricabatteria
pin2 +Vbatteria +Vcaricabatteria jumper
pin3 +Vcircuito jumper

- aggiungere predisposizione per CR2032 o 3032, il porta batterie è questo (http://www.tme.eu/it/details/sn2032/batterie-porta-batterie-e-custodie/#) ma non so se esistono batterie a bottone di quel formato ricaricabili

Le ricaricabili si chiamano LIR2032 ma secondo me ci sono dei problemi di potenza vedi questo datasheet http://www.powerstream.com/p/Lir2032.pdf questo http://www.conrad.it/ce/it/product/252279/Batteria-ricaricabile-a-bottone-LIR-2032-Litio-Conrad-energy-LIR2032-45-mAh-36-V-1-pz un venditore (prezzo esorbitante).
Fermo restando il vantaggio di avere un sistema più rigido, le batterie a bottone pesano 4g il portabatterie 2g c'è da capire quanto peso risparmiamo pesando i pacchi batterie già in nostro possesso.

- spostare le piazzole per la connessione dei motori verso i pin 3, 2 da un lato e a3, a4 dall'altro

fatto

- modificare connettore per batteria con uno angolato tipo questo (http://www.tme.eu/it/details/mx-22-05-3021/connettori-di-segnale-passo-254mm/molex/22-05-3021/) o toglierlo del tutto come dici te per saldare direttamente i cavetti della batteria

fatto

- aggiungere un connettore per caricabatteria sul lato componenti, per averlo sotto e non tra il lilypad e la nostra scheda, più comodo da usare


Risposte (33)

RE: PCB TribeBot - Aggiunto da Moreno Petrucci circa 2 anni fa

Ottimo Mik.

Dovremmo ora farne stampare un paio da un Service per vedere se sono ok.

Da chi si potrebbe far fare?

RE: PCB TribeBot - Aggiunto da Michele Vece circa 2 anni fa

Andrea aveva suggerito un service pcb italiano, quello che abbiamo usato per i ChaoticRobot (non ricordo il nome).

Io farei prima una serie di revisioni.
Prendendo a riferimento i componenti usati l'altra volta http://dev.hacklabterni.org/attachments/download/862/tribebots_modificato.jpg ci sono da fare dei controlli sul pakaging dei componenti:
(sul pcb)
  • C3 è più piccolo
  • C1 e C2 va verificato ma sembra piccolo
  • T1 e T2 hanno un soket differente
  • D1 e D2 sono più grandi, ma non trovo nelle librerie eagle un diodo più piccolo
  • SV1 va verificato se la dimensione dei fori è compatibile con lo switch
Poi riguardo la distribuzione componenti volevo sapere se:
  • il connettore per caricare la batteria può essere disposto al di sopra dei pin 6 e 7 in posizione più esterna di modo da facilitarne l'inserimento?
  • posso rimettere C3 in una posizione più comoda tipo a sinistra di R2?

Devo realizzare un piano di massa anche dall'altro lato?
Revisioniamo il piano di massa per evitare ground-loop.

Per la cronaca per come è disegnato il circuito tutti i componenti sono disposti verso il basso (mi riferisco alla posizione che assumeranno una volta montati) ad eccezione del portabatteria e del connettore di ricarica.

p.s. Tempo fa Andrea aveva proposto delle batterie a bottone ricaricabili tipo questa http://www.tme.eu/it/details/bat-vl3032_hf5n/batterie-ricaricabili/panasonic/vl-3032hf5n/ da 100mAh 3V che costa 3,40€(iva incl.) e non ha bisogno del portabatteria. (tutte le specifiche tecniche http://industrial.panasonic.com/ww/products/batteries/primary-batteries/lithium-batteries/coin-type-rechargeable-lithium-batteries-vl-series/VL3032 )

RE: PCB TribeBot - Aggiunto da Moreno Petrucci circa 2 anni fa

@mik

C3 con sigla ".1J63" 1 micro farad poliestere, è fondamentale che sia il più attaccato possibile al componente TSOP, perchè fa da filtro antidisturbo. Io non lo sposterei da li.

Il connettore per caricare la batteria non vorrei farlo sporgere dal bordo, ho paura che poi potrebbe disturbare il movimento degli altri TribeBots quando si muovono. Comunque sto guardando ora i prototipi e mi sembra che non ci siano problemi se il connettore vada ad occupare la zona dei pin 6 e 7, ma possibilmente senza sporgere fuori.

Per T1 e T2 non preoccuparti, i transistor hanno i piedini che si muovono bene, in caso li adattiamo.

Stessa cosa per C1 e C2, si adattano bene anche se i fori sono vicini.

I diodi anche. Ora se quelli sul PCB sono poco più grandi ritengo che non succeda niente. Adatteremo quelli che abbiamo.

I componenti sono no rivolti tutti verso il basso, la batteria, se a bottone o normale è nella parte superiore.

Allora per adesso grazie Mik, stai facendo un gran lavoro da progettista PCB.

ci aggiorniamo.

ciao

RE: PCB TribeBot - Aggiunto da Michele Vece circa 2 anni fa

Oggi ci siamo visti in sede, dal confronto con Andrea è scaturito che:
  • si può eliminare switch e connettore sostituendoli con delle pinstreep (ALIM e ON/OFF)
  • i condensatori vanno tutti bene essendo come questi
  • il service italiano è http://www.mdsrl.it e riapre lunedì quindi proviamo a finire le modifiche per quella data.
  • dobbiamo decidere ancora come alimentare i circuiti le batterie candidate sono LIR2032 o VR3032 o qualche pacco batteria lipo più piccolo.
@Moreno
  • potresti provare a misurare quanto assorbono i tribebot a motori accesi al massimo?
  • ricordi quanto duravano i pacchi batteria lipo che ci sono adesso sui TribeBot?
@Andrea
  • condividi la lista componenti?

http://dev.hacklabterni.org/attachments/download/1085/TribeBot16.png
Questo il lavoro fatto
[[ http://dev.hacklabterni.org/attachments/download/1084/TribeBot1.6.zip ]]

RE: PCB TribeBot - Aggiunto da Moreno Petrucci circa 2 anni fa

@mik
Bene Mik.
Solo una cosa. Il connettore della batteria non darà fastidio all'alloggiamento della batteria. Giusto?
Perchè mi sembra molto in mezzo non vorrei che poi la batteria poggia male.
Che ne pensi?

RE: PCB TribeBot - Aggiunto da Michele Vece circa 2 anni fa

Il connettore della batteria é sulla faccia che guarda in basso, la batteria sull'altra

RE: PCB TribeBot - Aggiunto da Michele Vece circa 2 anni fa

Signore e signori,
ecco l'ultimo aggiornamento.

http://dev.hacklabterni.org/attachments/download/1087/TribeBot18.png
  • Ho deciso di mettere tutte le connessioni sulla sinistra (pin3-10), ho spostato i pin 10 su 6 e 11 su 4,
  • ho spostato i pin dei motori,
  • invertito la posizione della batteria,
  • ho predisposto il fori per la connessione dei pacchi lipo sulla destra e
  • ho cambiato i transistor,
  • ho allargato le piste di alimentazione e verso i motori,
  • ho ribaltato tutto top/bottom.(è importante altrimenti ci trovavamo tutto specchiato)

Ieri si era parlato di come disporre la batteria lipo perfettamente lungo la bisettrice dei due motori.
Per ottenere questo obiettivo ho pensato a 4 viti disposte simmetricamente, si crea così un vano batteria che ci permette di regolare la posizione della batteria a mano, e contemporaneamente ci permette di fissarla stabilmente.
I distanziali necessari sono da 10mm ma non so se resta lo spazio per la batteria (dobbiamo provare).

https://lh3.googleusercontent.com/b2cuWN2d0yi7FT_rYMTvBf9h3Fc6_CDbBoxa7FZTA9SY=w240-h320-no
https://lh3.googleusercontent.com/z9nJ0PjY4gZ-4qWYWebxHDDnWSzprtYLRJ7a_IC0JT4d=w240-h320-no
disposizione distanziatori e posizione connessioni motori

http://dev.hacklabterni.org/attachments/download/1088/cablaggioTop.jpg
http://dev.hacklabterni.org/attachments/download/1089/cablaggioFull.jpg
cablaggio

https://lh3.googleusercontent.com/Ndm35oNxPeJwW_iGB-aij5KBt-DlvkfbkrWV4-_zL-qN=w240-h320-no
https://lh3.googleusercontent.com/UYT3F7tszHkjw2D00X1Sajrzp0DIvQUVy4xUmf6XMzBY=w240-h320-no https://lh3.googleusercontent.com/70LzSmxqTRO2eP1RIj7snGmJ84tonha3FjY9525ZkmPv=w240-h320-no
disposizione e connessione batteria

https://lh3.googleusercontent.com/9hpRowtAgXu3T29YytZuaBAhBHFChvsCcLSgKeyABUKD=w240-h320-no https://lh3.googleusercontent.com/AIovhqP5ApRiT4ysg9XLjecYCAGjP3Bb_ii2jHVQLHMB=w240-h320-no
https://lh3.googleusercontent.com/LqhCyvbcp8YT4DMlNmYVWfYSaLXnsF_6GpYlSZyZCJBv=w240-h320-no
test bilanciamento

In sostituzione al righello si potrebbe costruire una piccola "altalena" con dei fori per i piedini da usare come test per correggere la posizione della batteria (un piano, con tre piccoli buchi e con al di sotto un rialzo lungo la bisettrice tra i fori per i piedini-motore).

eagle file[[http://dev.hacklabterni.org/attachments/download/1086/TribeBot18.zip]]

RE: PCB TribeBot - Aggiunto da Andrea Belloni circa 2 anni fa

ho un mezzo ricordo di qualcosa letto e l'altra metà è una vocina interiore:
mettere tutti i segnali nello stesso layer di V+ (rosso) tranne quelli utili a ottimizzare il routing

dovrebbe essere semplice e veloce da fare, vedi te Miche'

ciao

RE: PCB TribeBot - Aggiunto da Michele Vece circa 2 anni fa

Ho chiamato http://www.mdsrl.it/mdcontact.html per chiedere se effettuano il milling (taglio) circolore e mi hanno confermato che non ci sono problemi.

A questo punto chiedo il via libera per l'ordine.

@Andrea
1. Se metto anche V+ sul bottom interrompo il piano di massa. Come da file invece sul top c'è tutto il +V e le ottimizzazioni.
Faccio un altro piano di massa anche sul top?

2. IMPORTANTE Risultano degli errori nell`ERC puoi fare un controllo?

3. Si deve allargare il foro +V del portabatteria per permettere anche ai cavi delle batterie LiPo di essere saldate
chi lo fa/come si fa/0,8mm bastano?

RE: PCB TribeBot - Aggiunto da Moreno Petrucci circa 2 anni fa

@mik

Ottimo Mik.
Fantastico lavoro.

Ieri sera ho montato il robot kit [[http://www.dfrobot.com/index.php?route=product/product&product_id=1287#.VeVI4CXtkb0]]

Ho notato che per le connessioni dei motori hanno utilizzato sul PCB dei PAD senza fori, in modo che la saldatura venga agevolata per i fili molto piccoli.

Eventualmente sarebbe possibile mettere questo tipo di PAD sul PCB?

ciao

Moreno

RE: PCB TribeBot - Aggiunto da Michele Vece circa 2 anni fa

http://www.mdsrl.it/mdpcborder/3.html

5 giorni
martedì 8 settembre
€ 33,72

10 giorni
martedì 15 settembre
€ 27,36

che scelgo?
quando arrivano i componenti?
ne abbiamo in sede per completarne almeno 2?

RE: PCB TribeBot - Aggiunto da Moreno Petrucci circa 2 anni fa

@mik

Io farei l'ordine per averli l'8 settembre, per 5 euro anticipiamo di una settimana.

I componenti ci sono, al massimo li hackeriamo dagli altri.

ciao

RE: PCB TribeBot - Aggiunto da Moreno Petrucci circa 2 anni fa

@mik v.

Primo TEST PCB:

- Il PIN 4 per la ricezione messaggi IR sembra non andar bene. Con il PIN 11 funziona bene.
- La trasmissione e ricezione dati funziona bene.
- I motori non partono, devo verificare il motivo.

quanto prima farò ulteriori prove.

moreno

RE: PCB TribeBot - Aggiunto da Michele Vece circa 2 anni fa

Ciao Moreno,
io ho fatto qualche test con dei motori dc (quelli dei lettori cd-rom) con la seguente configurazione:
pin funzione
3 irSend
4 irRecev
5 motoreSX
6 motoreDX

a me il pin 11 con questi motori dava dei problemi ad alcune velocità, il tsop riceveva raffiche di valori a caso, ma il 4 no.
C'è da dire che sto usando un protocollo differente (NEC)

Stasera possiamo provare a fare dei test insieme, se Luca porta l'oscilloscopio ci togliamo anche qualche dubbio.

RE: PCB TribeBot - Aggiunto da Michele Vece circa 2 anni fa

Ho riscontrato anche io alcune interferenze che bloccano la comunicazione quando i motori sono attivi a valori PWM tra 170 e 230

Per evitare disconnessioni dei motori dovute alle vibrazioni dei motori consiglio di fissare i cavetti con la colla a caldo.

Per testare le interferenze dei motori sul tsop ho usato questo sketch:

#include <IRremote.h>

int RECV_PIN = 4;
IRrecv irrecv(RECV_PIN);
int mDX = 6; motore DX
int mSX = 5; motore SX
int velDX = 0; velocità DX
int velSX = 0; velocità SX
int gradino = 5; valore che incrementa la velocità
decode_results results;

void setup()
{
  Serial.begin(19200);
  irrecv.enableIRIn(); // Start the receiver
  pinMode(mDX, OUTPUT);
  pinMode(mSX, OUTPUT);
}

void loop() {
  if (irrecv.decode(&results))
  {
    //    Serial.println(results.value, HEX); //per stampare i valori di HEX
    irrecv.resume(); // Receive the next value

    if (results.value == 0xFF7887) //pulsante VOL+ [DX]
    {
      Serial.println("DX");
      velDX = 255; //motore dx  ON
      velSX = 0;   //motore sx  OFF
    }

    else if (results.value == 0xFF6897) //pulsante VOL- [SX]
    {
      Serial.println("SX");
      velDX = 0;    //motore dx  OFF
      velSX = 255;  //motore sx  ON
    }

    else if (results.value == 0xFF708F) //pulsante CH/P+ [ON]
    {
      Serial.println("ON TUTTI");
      velDX = 255;  //motore dx  ON
      velSX = 255;  //motore sx  ON
    }

    else if (results.value == 0xFF28D7) //pulsante CH/P- [OFF]
    {
      Serial.println("OFF");
      velDX = 0;   //motore dx  OFF
      velSX = 0;   //motore sx  OFF
    }

    else if (results.value == 0xFFDA25) //pulsante 1 [velocitàSX +]
    {
      Serial.println("velocitàSX +");
      velDX = velDX;          //motore dx  =
      velSX = velSX + gradino;    //motore sx  +25
    }

    else if (results.value == 0xFFF20D) //pulsante 2 [velocità +]
    {
      Serial.println("velocità +");
      velDX = velDX + gradino; //motore dx  +25
      velSX = velSX + gradino; //motore sx  +25
    }

    else if (results.value == 0xFFCA35) //pulsante 3 [velocitàDX +]
    {
      Serial.println("velocitàDX +");
      velDX = velDX + gradino;    //motore dx  +25
      velSX = velSX;        //motore sx  =
    }

    else if (results.value == 0xFF5AA5) //pulsante 4 [velocitàSX -]
    {
      Serial.println("velocitàSX -");
      velDX = velDX;        //motore dx  =
      velSX = velSX - gradino;    //motore sx  -25
    }

    else if (results.value == 0xFFF00F) //pulsante 5 [velocità -]
    {
      Serial.println("velocità -");
      velDX = velDX - gradino; //motore dx  -25
      velSX = velSX - gradino; //motore sx  -25
    }

    else if (results.value == 0xFF7A85) //pulsante 6 [velocitàDX -]
    {
      Serial.println("velocitàDX -");
      velDX = velDX - gradino;    //motore dx  -25
      velSX = velSX;        //motore sx =
    }

  }
  analogWrite(mDX, velDX);  //motore dx  ON
  analogWrite(mSX, velSX);  //motore sx  OFF

  Serial.print(velSX);
  Serial.print("\t");
  Serial.print(velDX);
  Serial.print("\t");
  Serial.println(results.value, HEX);

}

Per provare cosa accade se uso in contemporanea IRsend e IRrecive ho usato questo sketch:

#include <IRremote.h>
IRsend irsend;
int RECV_PIN = 4;
IRrecv irrecv(RECV_PIN);
int mDX = 6;
int mSX = 5;
int velDX=0;
int velSX=0;
int gradino=5;

unsigned long lastVal;
decode_results results;

void setup()
{
  Serial.begin(19200);
  irrecv.enableIRIn(); // Start the receiver
  pinMode(mDX, OUTPUT);
  pinMode(mSX, OUTPUT);
}

void loop() {
  if (irrecv.decode(&results)) {
    irrecv.resume(); // Receive the next value
    // 0xFFFFFFFF è il valore letto se tengo premuto un pulsante sul telecomando
    unsigned long currVal = results.value;
    if (currVal == 0xFFFFFFFF) {
      currVal = lastVal;
    }
    else{
      lastVal = currVal;
    }
//    Serial.print(currVal, HEX);
//    Serial.print("\t");
//    Serial.println(results.value, HEX);
    if (results.value == 0xFFEA15) {   // pulsante [OFF]
      for (int x=0; x<3; x++) {
        irsend.sendNEC(0xFFEA15, 38);  // spegne decoder
        irsend.sendNEC(0x2FD48B7, 38); // spegne TV
        velDX = 0;   //motore dx  OFF
        velSX = 0;   //motore sx  OFF       

      }
      delay(1000); // evita di inviare ulteriori segnali per 1" 
    }
    else if (currVal == 0xFF7887) {    // pulsante [V+]
      for (int x=0; x<3; x++) {
        irsend.sendNEC(0x2FD58A7, 38); // aumenta volume TV
        velDX = 255; //motore dx  ON
        velSX = 0;   //motore sx  OFF
      }    
    }
    else if (currVal == 0xFF6897) {    // pulsante [V-]
      for (int x=0; x<3; x++) {
        irsend.sendNEC(0x2FD7887, 38); // diminuisce volume TV
        velDX = 0;    //motore dx  OFF
        velSX = 255;  //motore sx  ON
      }    
    }  
    else if (results.value == 0xFFFA05) { // pulsante [mute]
      irsend.sendNEC(0x2FD08F7, 38);   // mute TV
    }
    else if (currVal == 0xFF708F) {    // pulsante [P+]
      irsend.sendNEC(currVal, 38);     // canale successivo TV
      velDX = 255;  //motore dx  ON
      velSX = 255;  //motore sx  ON
    }
    else if (currVal == 0xFF28D7) {    // pulsante [P-]
      irsend.sendNEC(currVal, 38);     // canale precedente TV
      velDX = 0;   //motore dx  OFF
      velSX = 0;   //motore sx  OFF
    }
    else {                             // in tutti gli altri casi
      irsend.sendNEC(results.value, 38); // ripete il codice ricevuto
    }

    analogWrite(mDX, velDX);  //motore dx
    analogWrite(mSX, velSX);  //motore sx

    Serial.print(velSX);
    Serial.print("\t");
    Serial.print(velDX);
    Serial.print("\t");
    Serial.println(results.value, HEX);

    irrecv.enableIRIn();               // Start the receiver
    delay(80);
  }
}

RE: PCB TribeBot - Aggiunto da Andrea Belloni circa 2 anni fa

"Ho riscontrato anche io alcune interferenze che bloccano la comunicazione quando i motori sono attivi a valori PWM tra 170 e 230"

potrebbe essere un problema legato ad un filtraggio non adeguato sull'alimentazione, nel datasheet del TSOP
http://www.tme.eu/it/Document/e8450ca7c0738f49b458f4ffd9fb2f09/tsop48.pdf

usano un filtraggio più "tosto" del solo condensatore da 100nF usato da noi

TSOP48.png - Filtraggio alimentazione TSOP48 (30,7 KB)

RE: PCB TribeBot - Aggiunto da Moreno Petrucci circa 2 anni fa

Volevo provare il condensatore utilizzato per i TribeBots precedenti - sigla ".1J63" 1 micro farad poliestere .

I TribeBots 1.0 non danno nessun problema con la comunicazione utilizzando il condensatore ".1J63".

Devo dire che ieri provando il funzionamento del TribeBot con PCB non ho rilevato problemi nella comunicazione, ho notato che il TribeBot 2.0 ha un raggio d'azione IR inferiore rispetto al TribeBot 1.0, forse dovuti alle zampe più larghe ed ad un altezza inferiore.

L'adattatore seriale per programmare il LillyPad non mi funziona più... ufff!!! devo passare in sede, probabile domani, per prenderne uno.

RE: PCB TribeBot - Aggiunto da Andrea Belloni circa 2 anni fa

Moreno il condensatore con sigla .1J63 è da 100nF come quelli che abbiamo montato sui PCB solo che è in poliestere invece che ceramico e, secondo me, non dovrebbe esserci differenza per il nostro utilizzo

quello che invece potrebbe fare la differenza è il circuito proposto nel datasheet con una R da 100ohm e un C da 4.7uF (circe 50 volte superiore)

per avere un condensatore da 4.7uF compatto occorre usarne uno al tantalio tipo questo:
http://www.tme.eu/it/details/t350b475m016at/condesatori-di-tantalio-tht/kemet/

RE: PCB TribeBot - Aggiunto da Moreno Petrucci circa 2 anni fa

OK, bene. allora occorre provare a mettere una resistenza da 100 ohm in serie all'alimentazione e prima del condensatore.

RE: PCB TribeBot - Aggiunto da Andrea Belloni circa 2 anni fa

Si e provare anche con un condensatore più grande, per fare le prove va bene anche uno elettrolitico da 4.7uF (ce li abbiamo in sede) messo in parallelo con quello ceramico già montato

RE: PCB TribeBot - Aggiunto da Andrea Belloni circa 2 anni fa

Mettere la resistenza in serie non è facile, bisognerebbe tagliare la pista che porta +V al TSOP e saldare la R tra la pista tagliata e il piedino +V del TSOP

si potrebbe prima valutare se basta il condensatore più grande, poi semmai provare anche la R da 100ohm, e poi semmai modificare il PCB

1 2 (1-25/33)