Pc non riconosce memoria USB alimentata con Arduino

Buonasera, provo ad essere sintetico.

SET UP (foto):

  • Ho un PC al quale é collegato un cavo USB 2.0, questo cavo si divide in rosso, nero, verde e bianco
  • Il cavo rosso e il cavo nero sono collegati all'alimentazione di Arduino,
  • I cavi verde e bianco sono collegati ad una porta USB (per circuiti stampati).
  • A questa porta é connesso un lettore di micro SD e di conseguenza una scheda micro SD
  • La porta USB del punto 3 é alimentata da un pin di Arduino
  • Il GND della porta USB del punto 3 é collegato al pin GND di Arduino

PERCHÉ:
Lo scopo del progetto é quello di connettere e disconnettere dal computer la scheda SD controllando un pin di Arduino il quale é collegato all'alimentazione della porta USB del punto 3 del SET UP.

PROBLEMA!
Il Pc non riconosce la scheda SD.
Quando il pin alimenta la porta USB il PC riconosce che é connessa una memoria (su gestione dispositivi) e su "Computer" viene visualizzato il disco removibile E:, se provo ad aprirlo compare il messaggio "inserire un disco nell'unità E:" e quindi non riesco ad accedere alla memoria.

COSA HO PROVATO:

  • Se provo ad aprire o aprire le proprietà del disco removibile E: il computer va in palla
  • Disinstallato il dispositivo da "gestione dispositivi" e riavviato il computer, ed é scomparso il messaggio di errore "dispositivo sconosciuto", ma il problema non é risolto
  • Se connetto l'adattatore SD direttamente al PC viene riconosciuto correttamente
  • Su gestione dispositivi>scheda SD>proprietà>eventi c'é un errore "migrazione non avvenuta", ma é presente anche se connetto l'adattatore direttamente al computer (quando la SD viene letta correttamente)
  • I driver da dispositivi>scheda SD>proprietà>driver sono gli stessi sia se l'adattatore é connesso direttamente al PC sia tramite la porta USB del progetto
  • Formattato la scheda SD in exfat

Confido nella comunità di Arduino

Benvenuto! :slight_smile:

Per cortesia, come da regolamento, per prima cosa presentati nell'apposita discussione spiegando bene quali esperienze hai in elettronica e programmazione, affinché possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.

Poi leggi attentamente tutto il regolamento, in particolare leggi bene i punti 15.3 e 17.1, e impegnati a rispettarlo.

Ti ricordo che, purtroppo, fino a quando non avrai fatto la presentazione, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto.

Grazie per le info, avevo letto le FAQ del sito, non sapevo ci fossero regolamenti nella categoria Italiano.
È la prima volta che scrivo in un forum, sembrava semplice, ma ho toppato subito!

I pin di I/O di Arduino NON sono fatti per "alimentare", ma per dare un segnale "logico" o per leggerlo!

Ti rammento inoltre che ogni pin di Arduino (UNO/MEGA/Leonardo/Yún)può dare al massimo, a Vcc, 40 mA (... ma quello è veramente un limite, nel normale funzionamento occorre stare al 60-70% di detto valore) ed inoltre la somma di tutti i pin e dell'assorbimento del chip, non deve superare al massimo i 200 mA (... e anche qui massimo va considerato come valore limite, ma nel normale funzionamento occorre stare al 60-70% di detto valore). Assorbimenti oltre detti limiti possono danneggiare irrimediabilmente il chip.

Quindi, trova un'altro modo per alimentare quel lettore ... ad esempio utilizzando il pin di I/O per comandare un MOSFET (logic level) con il quale accendi e spegni ciò che vuoi.

Guglielmo

1 Like

Considera anche che il connettore USB ha i contatti +5 e Gnd più lunghi degli altri due proprio per collegare l'alimentazione prima dei dati!

1 Like

:+1: ... infatti ... ci sono vari oggetti che, se ricevono tensione sui pin di dati, prima dell'alimentazione, tendono a guastarsi.

E NON solo nella USB, basta pensare ai famosi Neopixel (WS2812) in cui, se arriva tensione sul pin dei dati, prima che su quello di alimentazione ... inesorabilmente saltano ... :confused:

Guglielmo

1 Like

Ragazzi grazie presto vi aggiorno!

[AGGIORNAMENTO]

Come suggerito

Ho modificato il setup iniziale alimentando la USB femmina dal pc, quindi a 5V, interrompendo e attivando l'alimentazione con un MOSFET controllato da Arduino.

Chiaramente senza il MOSFET, con il collegamento diretto tra il pin di alimentazione della USB femmina e la porta USB del PC (la quale alimenta anche Arduino), la scheda viene letta senza errori.

Ma se uso il MOSFET come interruttore (vedi foto), si ripresenta il problema iniziale:

Credo che il problema sia che in entrata al MOSFET ho 5V, ma in uscita solo 1,5V.
Se la USB femmina ricevesse 5V funzionerebbe tutto!

Sto usando un MOSFET sbagliato ? (IRF520 Y51K AI)

Grazie ancora per l'interesse!

si, ma oltretutto è collegato in modo errato.

e comunque usa un mosfet a canale P

Buongiorno, quindi il modello che mi consigli è IRF520N ? Fa passare più corrente ?

Perché consigli un MOSFET a canale P ? Io preferirei che normalmente il passaggio di corrente sia interrotto,
c'è qualche motivo per cui lo consigli aperto ?

Grazie

Perché per interrompere una tensione positiva e avere una minima cdt in conduzione serve un mosfet a canale P comandato a livello basso.

Su internet ho trovato questi, potrebbero andare bene ?


Non so se la resistenza è abbastanza bassa.

Devono essere logic level. Alcuni hanno una "L" nella sigla.
https://www.google.com/search?q=mosfet+logic+level+p+channel

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.