Problemi con una pcb realizzata

Salve ragazzi, ho realizzato un piccolo radiocomando (non wireless) sviluppando una pcb. punto della situazione:
7805 con condensatori di disaccoppiamento di tipo elettrolitico
ho un atmega328p-pu a 8 MHz
porta per aggiornare gli sketch (che funziona correttamente)
Un display oled i2c da 0.96 pollici monocromatico (che funziona correttamente)
Un joystick (da pcb tipo PlayStation) il quale ho solo collegato l'asse orizzontale (era l'unica cosa che mi serviva)
Un encoder (quello a 5 pin per intenderci di cui 3 sul lato inferiore e 2 sul superiore per il btn)
3 pulsanti per poter cambiare marcia (D N R)

A livello di programmazione funziona tutto in modo eccellente il problema lo riscontro nel momento in cui collego la pcb ai vari componenti esterni quale 2 servo digitali (da 20kg waterproof a 6,6v con batteria dedicata al piombo) e 4 relay (2 shield da 2 relay l'una)

IL FUNZIONAMENTO:
Joystick -》 attiva e disattiva le coppie di relay per poter attivare un motoriduttore telescopico
i 3 pulsanti muovono il servo 1 per il cambio marcia
l'encoder gestisce il servo 2 (accelerazione)

IL PROBLEMA:
Il problema sta nel fatto che quando giro l'encoder per l'acceleratore il servo sul cambio marcia fa dei piccoli movimenti (di circa 5 gradi penso) anziché rimanere perfettamente fermo (cosa che fa in qualsiasi altra condizione di utilizzo). quindi penso che l'encoder crei qualche specie di disturbo al mcu che ovviamente si manifesta in questo spostamento del servo (che poi ovviamente ritorna alla posizione desiderata quindi è come se tremasse ma solo quando utilizzo l'encoder).
L'encoder ha 2 resistenze in pullup sui 2 pin esterni dei 3 che ci sono sul lato inferiore mentre il pin centrale a massa.

Qualche idea? illuminatemi.

Qualche idea

Scusate l'aggiornamento a distanza di breve tempo, ma sto cercando a 360° il possibile problema. Volevo solo aggiungere che l'encoder viene gestito con 2 interrupt ovviamente, il che mi desta qualche sospetto... il fatto è che su breadboard non mi dava alcun problema.... :confused: Aiutino?

Come e quanto hai filtrato la varie alimentazioni ? ... non solo quella di arduino, anche quella dei servo e dei rele' ... poi magari hai cavi di potenza che vanno a servo e rele' che viaggiano insieme a cavi segnale dell'encoder e simile ? ...

Ciao etemenanki, allora essendo ancora una prima pcb "prototipo" diciamo che non ho applicato filtri sull'alimentazioni. ripeto ho solo 2 condensatori elettrolitici uno a monte del 7805 e uno a valle, vicino alla sua pedinatura, con un 1n4007 in serie sulla vcc unregolated a monte del 7805.
l'encoder è saldato sul pcb quindi non ha alimentazioni esterne, è alimentato dall'atmega (ha 2 resistenze in pullup per non usare le interne del micro).
L'alimentazione dei servo è esterna alla pcb quindi per quanto riguarda i servo ho solo le piste per i pin pwm per il loro controllo. diciamo che al momento condivido l'alimentazione con i servo ma esternamente alla scheda (la batteria al piombo alimenta i servo e il 7805 della pcb per intenderci quindi ne condivide la massa con il micro).
i relay invece sono alimentati dall'out del 7805 e controllati dai digitali del 328. Etemenanki quanto può centrare questo con il mio progetto? perché mi sembra di capire che sulle correnti ad alte frequenze serve il bypass (spero di non dire castronate). sono a tutte orecchie.

Ma l'alimentatore che usi prima del 7805 quanta corrente puó fornire?

Ciao Uwe

Ciao Uwe il 7805 è alimentato direttamente dalla batteria al piombo da 6v...adesso non ricordo bene l'amperaggio ma dovrebbe essere una 4,5Ah...
edit: la batt è la stessa che alimenta i servo. mentre per i relay la 5v è fornita dal 7805 che alimenta anche il 328.

PER completezza vi posto i servo che utilizzo (6,6v 2,6 A o giù di li)
le due schede relay sono come questa ma senza jumper per l'utilizzo dell'alimentazione esterna.

Giusto per sicurezza ... scollega i rele' dal 7805 ed alimentali dalla batteria, con un diodo tipo 1N4007 o simile in serie al positivo, cosi abbassa la tensione, ed un paio di condensatori dopo il diodo, diciamo 100u piu 100n in parallelo, per eliminare picchi e disturbi ...

Poi, se la batteria e' da 6V ed usi un 7805, non potrai mai avere i 5V in uscita, perche' il 7805 ha un dropout (caduta interna) maggiore del volt di differenza che hai fra ingresso ed uscita, per cui l'uscita sara' instabile ... serve un LDO con caduta il piu bassa possibile ... LF50CV ... MCP1825S-5002E/AB ... o un'altro simile ... oppure in alternativa un SEPIC o buck-boost in grado di darti in uscita i 5V sia con piu che con meno di 5V in ingresso, ovviamente poi ben filtrato in uscita ...

A proposito, sui regolatori lineari bisogna sempre mettere anche due condensatori da 100n, ingresso ed uscita, il piu vicino possibile al regolatore, per evitare autooscillazioni ...

Poi, se la batteria e' da 6V ed usi un 7805, non potrai mai avere i 5V in uscita, perche' il 7805 ha un dropout (caduta interna) maggiore del volt di differenza che hai fra ingresso ed uscita, per cui l'uscita sara' instabile ...

Questo l'ho appreso proprio ieri leggendo il ds del 7805 ! Grazie per averlo puntualizzato!

A proposito, sui regolatori lineari bisogna sempre mettere anche due condensatori da 100n, ingresso ed uscita, il piu vicino possibile al regolatore, per evitare autooscillazioni ...

Questo è proprio il discorso che leggevo qui.
Siccome il test l'ho fatto collegando tutto sulla 6v della batteria al piombo per comodità, dovrò provare con le tensioni che il progetto finale prevede ovvero 12v sul 7805 e i servo con la batteria a 6v oppure con uno stepdown da almeno 10A alimentato sempre dalla 12v.
Comunque proverò come mi hai suggerito etem, se non lo farei continuerei a non imparare :wink:
Scusami se adesso allargo un attimo il discorso, ma il link che ho messo leggendo la tua risposta inerente ai condensatori (ceramici) che vanno nella prossimità della pedinatura del 7805 parla anche dei condensatori di bypass e ad un certo punto sottolinea
"Ogni pin di un dispositivo attivo, derivato dalla tensione di alimentazione, dovrebbe avere un proprio condensatore di disaccoppiamento."
Ecco, quanto questo è da ritenersi giusto tenendo conto di un progetto finito realizzato con un 328p?
Anche perché dovrei ritenere dalla predetta affermazione che tutti i pin (almeno quelli utilizzati in OUTPUT dall'mcu) dovrebbero avere un condensatore dedicato almeno da 0.1uF.

No, intendono probabilmente dire che e' meglio filtrare ogni pin di alimentazione di una MCU, anche se non e' assolutamente indispensabile (ad esempio, il 328P ha due pin da collegare al VCC, ma essendo distanti solo pochi mm, basta che il condensatore ceramico sia su uno, se posto il piu vicino possibile ai pin (o in mezzo allo zoccolo, usando un ceramico SMD) ... se invece ci sono piu integrati, e' sempre meglio mettere, dove possibile, un condensatore per ogni integrato, almeno ... ovvio che se non ci stanno, non ci stanno, ma se la possibilita' c'e', meglio metterli ...

Etemenanki:
No, intendono probabilmente dire che e' meglio filtrare ogni pin di alimentazione di una MCU, anche se non e' assolutamente indispensabile (ad esempio, il 328P ha due pin da collegare al VCC, ma essendo distanti solo pochi mm, basta che il condensatore ceramico sia su uno, se posto il piu vicino possibile ai pin (o in mezzo allo zoccolo, usando un ceramico SMD) ... se invece ci sono piu integrati, e' sempre meglio mettere, dove possibile, un condensatore per ogni integrato, almeno ... ovvio che se non ci stanno, non ci stanno, ma se la possibilita' c'e', meglio metterli ...

Ok, il concetto è chiaro,anche se è un po difficile dire che non trovo il posto per un ceramico 0603 o 0805 :wink:
perfetto vi tengo aggiornati provando appena posso.

miky_police:
... è un po difficile dire che non trovo il posto per un ceramico 0603 o 0805 :wink:
...

... perche' non hai mai visto alcuni dei miei prototipi ... :smiley:

miky_police:
Ok, il concetto è chiaro,anche se è un po difficile dire che non trovo il posto per un ceramico 0603 o 0805 :wink:
perfetto vi tengo aggiornati provando appena posso.

:smiley: :smiley: :smiley: